diff --git a/config/urls.py b/config/urls.py index 7c0438e1..71102718 100644 --- a/config/urls.py +++ b/config/urls.py @@ -14,7 +14,7 @@ from mpicms.base.views import search, LogoutView, add_subpage, subscribe, unsubscribe from mpicms.base.api import api_router from mpicms.personal.views import ContactListView, RawContactListView -from mpicms.events.views import ics_view +from mpicms.events.views import ics_view, ics_external_view from mpicms.publications.views import PublicationsFeedView from mpicms.publications.views import PublicationsRssFeedView @@ -47,6 +47,7 @@ path('chat/', include('mpicms.chat.urls')), path('events/ics', ics_view, name='ics'), + path('events/ics-external', ics_external_view, name='ics_external'), path('feed/last_publications_xml', PublicationsFeedView.as_view()), path('feed/last_publications', PublicationsRssFeedView.as_view()), ] + static( diff --git a/mpicms/events/models.py b/mpicms/events/models.py index 05b634b3..a0494aac 100644 --- a/mpicms/events/models.py +++ b/mpicms/events/models.py @@ -120,10 +120,9 @@ def clean(self): # Prevent more than one event index if (model.objects.count() > 0 and self.pk != model.objects.get().id): raise ValidationError("Can only create 1 %s instance" % model.__name__) - @property - def ics(self): + def get_ics(self, external=False): c = Calendar() - for event in self.events.filter(external=False): + for event in self.events.filter(external=external): e = ICSEvent( name=event.title, begin=event.start, diff --git a/mpicms/events/views.py b/mpicms/events/views.py index bbf5b982..4fe00755 100644 --- a/mpicms/events/views.py +++ b/mpicms/events/views.py @@ -3,8 +3,16 @@ from .models import EventIndex -def ics_view(request): +def _ics_response(external, filename): index = EventIndex.objects.first() - response = HttpResponse(index.ics, content_type="text/calendar") - response["Content-disposition"] = "attachment; filename=calendar.ics" + response = HttpResponse(index.get_ics(external=external), content_type="text/calendar") + response["Content-disposition"] = "attachment; filename=%s" % filename return response + + +def ics_view(request): + return _ics_response(False, "calendar.ics") + + +def ics_external_view(request): + return _ics_response(True, "calendar-external.ics")