浏览代码

Add event page link and reminder to calendar invites (#466)

Roxanna Coldiron 3 年之前
父节点
当前提交
50a509ccfa
共有 1 个文件被更改,包括 13 次插入0 次删除
  1. 13 0
      coderedcms/models/page_models.py

+ 13 - 0
coderedcms/models/page_models.py

@@ -31,6 +31,7 @@ from django.utils.html import strip_tags
 from django.utils.safestring import mark_safe
 from django.utils.safestring import mark_safe
 from django.utils.translation import gettext_lazy as _
 from django.utils.translation import gettext_lazy as _
 from eventtools.models import BaseEvent, BaseOccurrence
 from eventtools.models import BaseEvent, BaseOccurrence
+from icalendar import Alarm
 from icalendar import Event as ICalEvent
 from icalendar import Event as ICalEvent
 from modelcluster.fields import ParentalKey, ParentalManyToManyField
 from modelcluster.fields import ParentalKey, ParentalManyToManyField
 from modelcluster.tags import ClusterTaggableManager
 from modelcluster.tags import ClusterTaggableManager
@@ -875,6 +876,9 @@ class CoderedEventPage(CoderedWebPage, BaseEvent):
     def convert_to_ical_format(self, dt_start=None, dt_end=None, occurrence=None):
     def convert_to_ical_format(self, dt_start=None, dt_end=None, occurrence=None):
         ical_event = ICalEvent()
         ical_event = ICalEvent()
         ical_event.add('summary', self.title)
         ical_event.add('summary', self.title)
+        # needs to get full page url, not just slug
+        desc_str = _('Details')
+        ical_event.add('description', f'{desc_str}: {self.full_url}')
         if self.address:
         if self.address:
             ical_event.add('location', self.address)
             ical_event.add('location', self.address)
 
 
@@ -884,6 +888,15 @@ class CoderedEventPage(CoderedWebPage, BaseEvent):
             if dt_end:
             if dt_end:
                 ical_event.add('dtend', dt_end)
                 ical_event.add('dtend', dt_end)
 
 
+            # Add a reminder alarm
+            reminder_mins = 15
+            alarm = Alarm()
+            alarm.add("action", "DISPLAY")
+            alarm.add('description', "Reminder")
+            # Sets the reminder alarm
+            alarm.add("TRIGGER;RELATED=START", "-PT{0}M".format(reminder_mins))
+            ical_event.add_component(alarm)
+
         if occurrence:
         if occurrence:
             freq = occurrence.repeat.split(":")[1] if occurrence.repeat else None
             freq = occurrence.repeat.split(":")[1] if occurrence.repeat else None
             repeat_until = occurrence.repeat_until.strftime(
             repeat_until = occurrence.repeat_until.strftime(