diff options
author | Alban Gruin | 2017-09-05 19:17:53 +0200 |
---|---|---|
committer | Alban Gruin | 2017-09-05 19:17:53 +0200 |
commit | 3363152e79991c9a6d86da819b758dacab33b16a (patch) | |
tree | 82be2ab3138889838efdf05ef350a0882897e1bc /feeds.py | |
parent | 0426214423e7a43c31d62ecd4e7d8f29cb65d251 (diff) |
Squelette de syndication au format ICS
Diffstat (limited to 'feeds.py')
-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) |