From eaf79b1abcaf6ac4eec8055a71bf793a31e810c7 Mon Sep 17 00:00:00 2001 From: Oliver Ni Date: Thu, 5 Oct 2023 14:07:06 -0700 Subject: [PATCH] Add dummy event for sync frequency --- hknweb/events/models/ical_view.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/hknweb/events/models/ical_view.py b/hknweb/events/models/ical_view.py index d665cae8..5739c6f1 100644 --- a/hknweb/events/models/ical_view.py +++ b/hknweb/events/models/ical_view.py @@ -1,10 +1,13 @@ +import random import uuid +from datetime import datetime, timedelta import icalendar from django.conf import settings from django.db import models from django.urls import reverse +from hknweb.events.models import Event from hknweb.events.utils import get_events @@ -31,4 +34,30 @@ def to_ical_obj(self): for event in events: cal.add_component(event.to_ical_obj()) + cal.add_component(self.dummy_event()) return cal + + def dummy_event(self): + # Google Calendar doesn't let you configure how often to sync iCal feeds + # like Apple's Calendar app does. They say this can take up to 24 hours. + + # According to https://webapps.stackexchange.com/a/66686, they probably + # look at how often the iCal feed itself changes and syncs more or less + # frequently based on that. + + # So we add a dummy event in the far future that's randomized every time + # the feed is requested in hopes of making Google Calendar sync faster. + + dt = datetime(3000, 1, 1) + timedelta(days=random.randrange(365)) + + event = icalendar.Event() + event.add("uid", "dummy") + event.add("summary", "Dummy Event") + event.add( + "description", + "Randomized dummy event to make Google Calendar sync faster", + ) + event.add("dtstart", dt) + event.add("dtend", dt) + event.add("dtstamp", dt) + return event