diff --git a/mpicms/events/models.py b/mpicms/events/models.py index a0494aa..bc7fa3e 100644 --- a/mpicms/events/models.py +++ b/mpicms/events/models.py @@ -122,9 +122,14 @@ def clean(self): # Prevent more than one event index def get_ics(self, external=False): c = Calendar() - for event in self.events.filter(external=external): + # ics 0.7 keeps events in a set, which serializes in random order. + # The serializer only iterates over it, so a list keeps our order. + c.events = [] + events = self.events.filter(external=external).order_by('-start_date', '-start_time', '-pk') + for event in events: e = ICSEvent( name=event.title, + uid='event-%d@intranet.molgen.mpg.de' % event.pk, begin=event.start, end=event.end, description=event.search_description, @@ -133,7 +138,7 @@ def get_ics(self, external=False): ) if type(event.start) is date: e.make_all_day() - c.events.add(e) + c.events.append(e) return c