agendas: replace vobject by icalendar & recurring_ical_events (#88806) #251
No reviewers
Labels
No Label
No Milestone
No Assignees
2 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: entrouvert/chrono#251
Loading…
Reference in New Issue
No description provided.
Delete Branch "wip/88806-change-ics-lib"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
b50e4fb222
to74e342f117
74e342f117
to6d4959924c
6d4959924c
toc73ca64ecd
c73ca64ecd
to418abfe49d
418abfe49d
to33431632f2
33431632f2
to5ad5306a87
5ad5306a87
to959aa4814f
959aa4814f
to37c56d10c7
37c56d10c7
to637509db8a
637509db8a
to025bbb0983
025bbb0983
toe9490901fe
e9490901fe
to0afe62894b
0afe62894b
to7bd03c5c70
7bd03c5c70
to308fbb5e19
308fbb5e19
to5a01ccd1db
5a01ccd1db
to296d6e1acc
@ -3933,1 +3945,4 @@
# considered as ending the same day leading in "strange"
# ics files with a DTEND set at 23:59:59.999999 meaning
# that the event ends at 23:59:59.999998 (DTEND is excluded)
end_dt = make_aware(datetime.datetime.combine(start_dt, datetime.datetime.max.time()))
Si les
TimePeriodException
fonctionnent comme ics (avec le "moment" de DTEND exclue de l’événement) il faudrait peut être se caler sur ce qui est fait dans ics :Est un évènement qui fini 1 seconde avant la fin de la journée du 2024-01-01
On voudrait plutôt peut être plutôt :
un évènement qui finie avec la fin de la journée du 2024-01-01
Ce n'est pas lié à l'objet de ce ticket mais oui je pense qu'on pourrait faire ce changement, même si ça m'a l'air surtout cosmétique/anecdotique ou bien tu vois un souci possible avec un évènement s'arrêtant à 23:59 plutôt que 00:00 le lendemain ? Sachant qu'on ne s'intéresse qu'a des créneaux calé sur des multiples de 5 minutes en général, ça ne changera pas grand chose il me semble.
Ok, cool, c'est aussi ce qu'il me semblait
A vrai dire je m'inquiétais presque plutôt de l'inverse : avec le comportement par défaut de "finir le même jour", est-ce qu'il n'y aurait pas un problème avec une exception qui dure 1 jour (par exemple avec
DURATION:P1D
) et qui se retrouve avec une date de fin différente de la date de début : s'il existe un endroit dans le code qui vérifie que le début et la fin sont au même jour/même date, ça pourrait ne pas produire le résultat attendu.WIP: agendas: replace vobject by icalendar & recurring_ical_events (#88806)to agendas: replace vobject by icalendar & recurring_ical_events (#88806)296d6e1acc
to357ab90271
@ -1680,3 +1680,2 @@
ics = app.get(resp.json['api']['ics_url']).text
assert 'DTSTART:20170519T231200Z' in ics
assert 'DTEND:' not in ics
assert 'DTSTART;VALUE=DATE-TIME:20170519T231200Z' in ics
Ce changement est-il nécessaire ? Est-ce que ça indique que icalendar serait par ailleurs moins tolérant à des .ics non conforme comparé à vobject ? Parce que ça pourrait éventuellement poser un souci (ou alors ce sont juste les tests qui sont non conformes et ça n'est pas un souci).
Oui ce changement était nécessaire. Il me semble qu'ici on test plutôt les ics produits par icalendar : il a l'air aussi permissif à la lecture, mais plus précis à la production.
@ -655,0 +670,4 @@
PRODID:-//foo.bar//EN
BEGIN:VEVENT
DTSTART:20180101
DURATION:P1D
Ajouter un commentaire pour expliquer que la différence c'est DTEND / DURATION, pas évident au premier coup d’œil.
ok ! Merci :)
@ -677,2 +727,4 @@
resp = resp.form.submit(status=302).follow()
assert TimePeriodException.objects.filter(desk=desk).count() == 2
expt_start = '2018-01-01T00:00:00+0100', '2019-01-01T00:00:00T+0100'
expt_end = '2018-01-01T23:59:59.999999+0100', '2019-01-01T23:59:59.999999T+0100'
Remettre le commentaire de plus haut sur le fonctionnement quand duration / dtend est absent / invalide.
Ok, merci :)
@ -63,6 +63,100 @@ SEQUENCE:2
END:VEVENT
END:VCALENDAR"""
BAD_ICS_SAMPLES = [
Utiliser https://docs.pytest.org/en/6.2.x/reference.html?highlight=pytest%20param#pytest.param pour documenter le souci avec chaque exemple.
Ah oui cool ! Bonne idée :)
@ -27,6 +27,8 @@ deps =
pylint
pylint-django
django-webtest
icalendar<=4.0.3
Changement à faire dans setup.py plutôt que tox.ini, en retirant vobject. aussi
Merci, bien vu !
357ab90271
toc7bfa384c5
c7bfa384c5
todcc1eb9112
dcc1eb9112
to1aca9c2a66