diff options
| -rw-r--r-- | feeds.py | 42 | 
1 files changed, 42 insertions, 0 deletions
| diff --git a/feeds.py b/feeds.py new file mode 100644 index 0000000..913e337 --- /dev/null +++ b/feeds.py @@ -0,0 +1,42 @@ +#    Copyright (C) 2017  Alban Gruin +# +#    celcatsanitizer is free software; you can redistribute it and/or modify +#    it under the terms of the GNU General Public License as published by +#    the Free Software Foundation; either version 2 of the License, or +#    (at your option) any later version. +# +#    celcatsanitizer is distributed in the hope that it will be useful, +#    but WITHOUT ANY WARRANTY; without even the implied warranty of +#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +#    GNU General Public License for more details. +# +#    You should have received a copy of the GNU General Public License along +#    with celcatsanitizer; if not, write to the Free Software Foundation, Inc., +#    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +from django.contrib.syndication.views import Feed +from django.utils.feedgenerator import SyndicationFeed + +from icalendar import Calendar, Event + + +class IcalFeed(SyndicationFeed): +    content_type = "text/calendar; charset=utf-8" +    __ical_names = {"name": "summary", +                    "notes": "description", +                    "rooms": "location", +                    "begin": "dtbegin", +                    "end": "dtend"} + +    def write(self, outfile, encoding): +        calendar = Calendar() +        calendar.add("version", "2.0") + +        write_events(calendar) +        outfile.write(calendar.to_ical()) + +    def write_events(self, calendar): +        for item in items: +            event = Event() +            for key, value in item.items(): +                event.add(__ical_names[key], value) | 
