aboutsummaryrefslogtreecommitdiff
path: root/feeds.py
diff options
context:
space:
mode:
authorAlban Gruin2018-01-23 20:45:16 +0100
committerAlban Gruin2018-01-23 20:58:10 +0100
commite2bc777f7f988cba945c027aaa27d98aa3913a71 (patch)
treee6f1074093eec59b4330d309ef50ab2e502ec0e8 /feeds.py
parent7a4bdfda6df3ca46f4805c145a42793cacc0809f (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.
Diffstat (limited to 'feeds.py')
-rw-r--r--feeds.py7
1 files changed, 4 insertions, 3 deletions
diff --git a/feeds.py b/feeds.py
index dde051b..bcbf7f9 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
@@ -86,9 +87,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())}