# 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(): if key in __ical_names: event.add(__ical_names[key], value)