From 3363152e79991c9a6d86da819b758dacab33b16a Mon Sep 17 00:00:00 2001 From: Alban Gruin Date: Tue, 5 Sep 2017 19:17:53 +0200 Subject: Squelette de syndication au format ICS --- feeds.py | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 feeds.py 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) -- cgit v1.2.1