agendas: replace vobject by icalendar & recurring_ical_events (#88806) #251

Merged
yweber merged 1 commits from wip/88806-change-ics-lib into main 2024-04-30 14:47:46 +02:00
Owner
No description provided.
yweber added 1 commit 2024-04-23 15:22:54 +02:00
yweber force-pushed wip/88806-change-ics-lib from b50e4fb222 to 74e342f117 2024-04-23 15:23:24 +02:00 Compare
yweber force-pushed wip/88806-change-ics-lib from 74e342f117 to 6d4959924c 2024-04-23 15:30:08 +02:00 Compare
yweber force-pushed wip/88806-change-ics-lib from 6d4959924c to c73ca64ecd 2024-04-23 15:30:48 +02:00 Compare
yweber force-pushed wip/88806-change-ics-lib from c73ca64ecd to 418abfe49d 2024-04-23 17:37:05 +02:00 Compare
yweber force-pushed wip/88806-change-ics-lib from 418abfe49d to 33431632f2 2024-04-23 17:43:20 +02:00 Compare
yweber force-pushed wip/88806-change-ics-lib from 33431632f2 to 5ad5306a87 2024-04-23 17:45:47 +02:00 Compare
yweber force-pushed wip/88806-change-ics-lib from 5ad5306a87 to 959aa4814f 2024-04-24 09:04:35 +02:00 Compare
yweber force-pushed wip/88806-change-ics-lib from 959aa4814f to 37c56d10c7 2024-04-24 09:33:32 +02:00 Compare
yweber force-pushed wip/88806-change-ics-lib from 37c56d10c7 to 637509db8a 2024-04-24 09:36:08 +02:00 Compare
yweber force-pushed wip/88806-change-ics-lib from 637509db8a to 025bbb0983 2024-04-24 09:39:33 +02:00 Compare
yweber force-pushed wip/88806-change-ics-lib from 025bbb0983 to e9490901fe 2024-04-24 09:40:32 +02:00 Compare
yweber force-pushed wip/88806-change-ics-lib from e9490901fe to 0afe62894b 2024-04-24 09:43:15 +02:00 Compare
yweber force-pushed wip/88806-change-ics-lib from 0afe62894b to 7bd03c5c70 2024-04-24 09:44:28 +02:00 Compare
yweber force-pushed wip/88806-change-ics-lib from 7bd03c5c70 to 308fbb5e19 2024-04-24 10:22:48 +02:00 Compare
yweber force-pushed wip/88806-change-ics-lib from 308fbb5e19 to 5a01ccd1db 2024-04-24 10:29:29 +02:00 Compare
yweber force-pushed wip/88806-change-ics-lib from 5a01ccd1db to 296d6e1acc 2024-04-24 10:29:58 +02:00 Compare
yweber reviewed 2024-04-24 10:47:05 +02:00
@ -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()))
Author
Owner

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 :

DTEND:20240101T235959

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 :

DTEND:20240102T000000

un évènement qui finie avec la fin de la journée du 2024-01-01

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 : ``` DTEND:20240101T235959 ``` 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 : ``` DTEND:20240102T000000 ``` un évènement qui finie avec la fin de la journée du 2024-01-01
Owner

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.

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.
Author
Owner

ça m'a l'air surtout cosmétique/anecdotique

Ok, cool, c'est aussi ce qu'il me semblait

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.

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.

> ça m'a l'air surtout cosmétique/anecdotique Ok, cool, c'est aussi ce qu'il me semblait > 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. 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.
yweber changed title from WIP: agendas: replace vobject by icalendar & recurring_ical_events (#88806) to agendas: replace vobject by icalendar & recurring_ical_events (#88806) 2024-04-24 10:47:19 +02:00
yweber force-pushed wip/88806-change-ics-lib from 296d6e1acc to 357ab90271 2024-04-24 11:00:46 +02:00 Compare
bdauvergne requested changes 2024-04-24 12:09:16 +02:00
Dismissed
@ -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
Owner

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).

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).
Author
Owner

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.

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.
bdauvergne marked this conversation as resolved
@ -655,0 +670,4 @@
PRODID:-//foo.bar//EN
BEGIN:VEVENT
DTSTART:20180101
DURATION:P1D
Owner

Ajouter un commentaire pour expliquer que la différence c'est DTEND / DURATION, pas évident au premier coup d’œil.

Ajouter un commentaire pour expliquer que la différence c'est DTEND / DURATION, pas évident au premier coup d’œil.
Author
Owner

ok ! Merci :)

ok ! Merci :)
yweber marked this conversation as resolved
@ -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'
Owner

Remettre le commentaire de plus haut sur le fonctionnement quand duration / dtend est absent / invalide.

Remettre le commentaire de plus haut sur le fonctionnement quand duration / dtend est absent / invalide.
Author
Owner

Ok, merci :)

Ok, merci :)
yweber marked this conversation as resolved
@ -63,6 +63,100 @@ SEQUENCE:2
END:VEVENT
END:VCALENDAR"""
BAD_ICS_SAMPLES = [
Owner

Utiliser https://docs.pytest.org/en/6.2.x/reference.html?highlight=pytest%20param#pytest.param pour documenter le souci avec chaque exemple.

Utiliser https://docs.pytest.org/en/6.2.x/reference.html?highlight=pytest%20param#pytest.param pour documenter le souci avec chaque exemple.
Author
Owner

Ah oui cool ! Bonne idée :)

Ah oui cool ! Bonne idée :)
yweber marked this conversation as resolved
tox.ini Outdated
@ -27,6 +27,8 @@ deps =
pylint
pylint-django
django-webtest
icalendar<=4.0.3
Owner

Changement à faire dans setup.py plutôt que tox.ini, en retirant vobject. aussi

Changement à faire dans setup.py plutôt que tox.ini, en retirant vobject. aussi
Author
Owner

Merci, bien vu !

Merci, bien vu !
yweber marked this conversation as resolved
yweber force-pushed wip/88806-change-ics-lib from 357ab90271 to c7bfa384c5 2024-04-24 12:31:57 +02:00 Compare
yweber force-pushed wip/88806-change-ics-lib from c7bfa384c5 to dcc1eb9112 2024-04-24 12:33:44 +02:00 Compare
yweber requested review from bdauvergne 2024-04-24 12:42:29 +02:00
bdauvergne approved these changes 2024-04-26 13:22:59 +02:00
yweber force-pushed wip/88806-change-ics-lib from dcc1eb9112 to 1aca9c2a66 2024-04-30 14:41:06 +02:00 Compare
yweber merged commit 1aca9c2a66 into main 2024-04-30 14:47:46 +02:00
yweber deleted branch wip/88806-change-ics-lib 2024-04-30 14:47:46 +02:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: entrouvert/chrono#251
No description provided.