aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlban Gruin2018-01-23 20:45:16 +0100
committerAlban Gruin2018-01-23 20:58:51 +0100
commitc2e4dc75c49378a3e53b28c40972ee0a6f99a020 (patch)
tree05b2f8e06c94d8530225072f0395a06ad54e6fde
parent32cfe5e60b60d7859f6e4fb3b4cba03d47293918 (diff)
Bon fuseau horaire dans les ICS.
Les bases de données stockent et renvoient seulement des dates en UTC. Django inscrit cette information dans les objets datetime, par conséquent les dates inscrites sur les templates étaient automatiquement converties à l’heure indiquée dans la configuration. Or, les ICS sont générées avec une librairie tierce (icalendar), et ne tient donc pas compte de la configuration de Django. Le module inscrit donc des dates UTC dans les ICS. C’est sans conséquences, car l’heure est correcte, juste décalée avec une information de fuseau horaire. Un bon client iCalendar est censé convertir les heures de lui-même en fonction des préférences du systèmes. Seulement certains d’entre eux affichent aussi le fuseau horaire d’origine.
-rw-r--r--feeds.py7
1 files changed, 4 insertions, 3 deletions
diff --git a/feeds.py b/feeds.py
index aced5e6..da077f0 100644
--- a/feeds.py
+++ b/feeds.py
@@ -21,6 +21,7 @@ from django.db.models.functions import ExtractWeek, ExtractYear
from django.template import loader
from django.urls import reverse
from django.utils.feedgenerator import Atom1Feed, SyndicationFeed
+from django.utils.timezone import localtime
from icalendar import Calendar, Event
@@ -85,9 +86,9 @@ class IcalFeed(Feed):
def item_extra_kwargs(self, item):
return {"uid": "{0}@celcatsanitizer".format(item.id),
- "dtstart": item.begin,
- "dtend": item.end,
- "dtstamp": item.last_update,
+ "dtstart": localtime(item.begin),
+ "dtend": localtime(item.end),
+ "dtstamp": localtime(item.last_update),
"summary": self.item_summary(item),
"location": format_rooms(item.rooms.all())}