Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion config/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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(
Expand Down
5 changes: 2 additions & 3 deletions mpicms/events/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
14 changes: 11 additions & 3 deletions mpicms/events/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -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")