plages libres, permettre de créer un pointage sans réservation (#80369) #149

Merged
vdeniaud merged 1 commits from wip/80369-plages-libres-permettre-de-creer into main 2023-10-02 10:11:33 +02:00
Owner
No description provided.
vdeniaud force-pushed wip/80369-plages-libres-permettre-de-creer from 3fa5eda2a1 to 40b5868c6f 2023-09-19 11:20:35 +02:00 Compare
vdeniaud force-pushed wip/80369-plages-libres-permettre-de-creer from 40b5868c6f to 6a730c0555 2023-09-19 11:30:34 +02:00 Compare
vdeniaud force-pushed wip/80369-plages-libres-permettre-de-creer from 6a730c0555 to 173799869e 2023-09-19 15:36:08 +02:00 Compare
vdeniaud force-pushed wip/80369-plages-libres-permettre-de-creer from 173799869e to a9d7ccbec0 2023-09-19 16:30:53 +02:00 Compare
vdeniaud force-pushed wip/80369-plages-libres-permettre-de-creer from a9d7ccbec0 to 6b1bba75aa 2023-09-19 17:06:30 +02:00 Compare
vdeniaud force-pushed wip/80369-plages-libres-permettre-de-creer from 6b1bba75aa to 5d21b7ac3f 2023-09-19 17:14:46 +02:00 Compare
vdeniaud force-pushed wip/80369-plages-libres-permettre-de-creer from 5d21b7ac3f to fe7b0f32b0 2023-09-20 15:33:36 +02:00 Compare
vdeniaud force-pushed wip/80369-plages-libres-permettre-de-creer from fe7b0f32b0 to e2d4653ca3 2023-09-20 15:44:33 +02:00 Compare
vdeniaud changed title from WIP: plages libres, permettre de créer un pointage sans réservation (#80369) to plages libres, permettre de créer un pointage sans réservation (#80369) 2023-09-20 15:50:37 +02:00
Author
Owner

Gros morceau, pas d'opposition à envisager une autre approche si il y a mieux (rappel qu'il y a aussi #80371 dans l'équation).

Gros morceau, pas d'opposition à envisager une autre approche si il y a mieux (rappel qu'il y a aussi #80371 dans l'équation).
vdeniaud changed title from plages libres, permettre de créer un pointage sans réservation (#80369) to plages libres, permettre de créer un pointage sans réservation (#80369) 2023-09-21 14:35:24 +02:00
vdeniaud changed target branch from main to je-rebase-quand-cest-bon 2023-09-21 14:35:25 +02:00
lguerin reviewed 2023-09-22 16:24:44 +02:00
@ -2788,1 +2801,3 @@
self.secondary_booking_set.update(user_was_present=None)
if self.user_check:
self.user_check.delete()
self.user_check = None
Owner

pas de reset des user_check des secondary_bookings ?

pas de reset des user_check des secondary_bookings ?
Author
Owner

L'objet BookingCheck est partagé entre résa primaire et secondaire, donc le self.user_check.delete() au dessus vaut pour les deux.

Je pense que le self.user_check = None est utile car on s'attend à ce que cette méthode enlève l'attribut user_check. En revanche le self.save() en dessous est inutile.

L'objet BookingCheck est partagé entre résa primaire et secondaire, donc le `self.user_check.delete()` au dessus vaut pour les deux. Je pense que le `self.user_check = None` est utile car on s'attend à ce que cette méthode enlève l'attribut user_check. En revanche le `self.save()` en dessous est inutile.
@ -393,0 +396,4 @@
app = 'agendas'
migrate_from = [(app, '0160_add_booking_check_model')]
migrate_to = [(app, '0161_migrate_booking_check_data')]
Owner

Dans le 3e commit il y a un changement là-dessus:

-    migrate_from = [(app, '0159_add_booking_check_model')]
-    migrate_to = [(app, '0160_migrate_booking_check_data')]
+    migrate_from = [(app, '0160_add_booking_check_model')]
+    migrate_to = [(app, '0161_migrate_booking_check_data')]

Possible de poser ça directement dans le 2e commit ?

Dans le 3e commit il y a un changement là-dessus: ``` - migrate_from = [(app, '0159_add_booking_check_model')] - migrate_to = [(app, '0160_migrate_booking_check_data')] + migrate_from = [(app, '0160_add_booking_check_model')] + migrate_to = [(app, '0161_migrate_booking_check_data')] ``` Possible de poser ça directement dans le 2e commit ?
Author
Owner

Bien vu je vais le faire

Bien vu je vais le faire
Owner

J'hésite pour le 0004, dans le pointage classique (hors plage libre), quand on a une souscription sans réservation, on peut la pointer, et alors cela crée un objet Booking classique, comme si ça avait été réservé via une démarche de réservation.
Là tu crées un objet BookingCheck avec des FK sur Suscription et Event.

On pourrait harmoniser, et faire pareil pour le pointage classique, mais:

L'api qui moissonne les agendas pour la facturation, s'appuie sur Booking pour trouver le pointage, sans booking il se peut qu'on ne puisse pas facturer. (et du coup là pour le cas plages libres, il doit y avoir un trou pour la facturation)

Aussi, il faudrait vérifier comme ça remonte dans le widget de réservation et dans la cellule calendrier, si on voit bien une présence ou une absence.

Je préfèrerais, pour le cas plages libres, faire comme le cas classique, créer un Booking et un BookingCheck (avec des heures de pointage mais pas d'heures de réservation).
Note: avec la journalisation des pointages, on pourra retracer l'origine d'un objet Booking créé à la suite du pointage d'une Subscription.

Autre note: les calculs des dates de début et fin de période de pointage (arrondis par rapport aux unités de facturation et tolérance), fonctionnent si on a des heures de pointage mais pas d'heures de réservation.

J'hésite pour le 0004, dans le pointage classique (hors plage libre), quand on a une souscription sans réservation, on peut la pointer, et alors cela crée un objet Booking classique, comme si ça avait été réservé via une démarche de réservation. Là tu crées un objet BookingCheck avec des FK sur Suscription et Event. On pourrait harmoniser, et faire pareil pour le pointage classique, mais: L'api qui moissonne les agendas pour la facturation, s'appuie sur Booking pour trouver le pointage, sans booking il se peut qu'on ne puisse pas facturer. (et du coup là pour le cas plages libres, il doit y avoir un trou pour la facturation) Aussi, il faudrait vérifier comme ça remonte dans le widget de réservation et dans la cellule calendrier, si on voit bien une présence ou une absence. Je préfèrerais, pour le cas plages libres, faire comme le cas classique, créer un Booking et un BookingCheck (avec des heures de pointage mais pas d'heures de réservation). Note: avec la journalisation des pointages, on pourra retracer l'origine d'un objet Booking créé à la suite du pointage d'une Subscription. Autre note: les calculs des dates de début et fin de période de pointage (arrondis par rapport aux unités de facturation et tolérance), fonctionnent si on a des heures de pointage mais pas d'heures de réservation.
Author
Owner

quand on a une souscription sans réservation, on peut la pointer, et alors cela crée un objet Booking classique

Aïe, j'avais raté que ça existait déjà, et ça n'a pas été dit en eoday famille :/

Je préfèrerais, pour le cas plages libres, faire comme le cas classique, créer un Booking et un BookingCheck (avec des heures de pointage mais pas d'heures de réservation).

Ça me va mais il n'y a plus d'intérêt immédiat à avoir ce nouveau modèle BookingCheck, non ?

> quand on a une souscription sans réservation, on peut la pointer, et alors cela crée un objet Booking classique Aïe, j'avais raté que ça existait déjà, et ça n'a pas été dit en eoday famille :/ > Je préfèrerais, pour le cas plages libres, faire comme le cas classique, créer un Booking et un BookingCheck (avec des heures de pointage mais pas d'heures de réservation). Ça me va mais il n'y a plus d'intérêt immédiat à avoir ce nouveau modèle BookingCheck, non ?
Owner

Ça me va mais il n'y a plus d'intérêt immédiat à avoir ce nouveau modèle BookingCheck, non ?

Pour anticiper le pointage avec deux motifs différents ? une présence sur une partie de la journée, une absence sur le reste ?
Ou tu préfères sortir ça de la PR et l'introduire plus tard quand tu traiteras le sujet ?

> Ça me va mais il n'y a plus d'intérêt immédiat à avoir ce nouveau modèle BookingCheck, non ? Pour anticiper le pointage avec deux motifs différents ? une présence sur une partie de la journée, une absence sur le reste ? Ou tu préfères sortir ça de la PR et l'introduire plus tard quand tu traiteras le sujet ?
vdeniaud force-pushed wip/80369-plages-libres-permettre-de-creer from e2d4653ca3 to e6ac54edd9 2023-09-26 11:39:28 +02:00 Compare
vdeniaud force-pushed wip/80369-plages-libres-permettre-de-creer from e6ac54edd9 to 5840c15139 2023-09-26 11:49:49 +02:00 Compare
vdeniaud changed title from plages libres, permettre de créer un pointage sans réservation (#80369) to WIP: plages libres, permettre de créer un pointage sans réservation (#80369) 2023-09-26 11:50:15 +02:00
vdeniaud changed title from WIP: plages libres, permettre de créer un pointage sans réservation (#80369) to WIP: plages libres, permettre de créer un pointage sans réservation (#80369) 2023-09-26 11:50:50 +02:00
vdeniaud changed target branch from je-rebase-quand-cest-bon to main 2023-09-26 11:50:51 +02:00
Author
Owner

Ou tu préfères sortir ça de la PR et l'introduire plus tard quand tu traiteras le sujet ?

Yep j'ai fait ça, revoici un seul commit qui suit ce qui est fait pour le pointage classique.

Point d'attention, ça crée des bookings « fantômes », si on pointe/dépointe une inscription : c'est géré par lingo ou il faut les nettoyer au moment du dépointage ?

> Ou tu préfères sortir ça de la PR et l'introduire plus tard quand tu traiteras le sujet ? Yep j'ai fait ça, revoici un seul commit qui suit ce qui est fait pour le pointage classique. Point d'attention, ça crée des bookings « fantômes », si on pointe/dépointe une inscription : c'est géré par lingo ou il faut les nettoyer au moment du dépointage ?
vdeniaud changed title from WIP: plages libres, permettre de créer un pointage sans réservation (#80369) to plages libres, permettre de créer un pointage sans réservation (#80369) 2023-09-26 12:14:08 +02:00
Owner

Point d'attention, ça crée des bookings « fantômes », si on pointe/dépointe une inscription : c'est géré par lingo ou il faut les nettoyer au moment du dépointage ?

J'ai un ticket à créer pour permettre de revenir à l'état initial sur la page de pointage, c'est à dire supprimer un Booking pour revenir à une inscription sans réservation, je prendrai en compte le cas plages libres à ce moment-là

> Point d'attention, ça crée des bookings « fantômes », si on pointe/dépointe une inscription : c'est géré par lingo ou il faut les nettoyer au moment du dépointage ? J'ai un ticket à créer pour permettre de revenir à l'état initial sur la page de pointage, c'est à dire supprimer un Booking pour revenir à une inscription sans réservation, je prendrai en compte le cas plages libres à ce moment-là
lguerin reviewed 2023-09-26 15:23:13 +02:00
@ -629,0 +631,4 @@
self.fields['user_check_start_time'].widget = widgets.TimeWidget(step=60)
self.fields['user_check_end_time'].widget = widgets.TimeWidget(step=60)
self.fields['user_was_present'].widget.choices = ((None, _('Not checked')), (True, _('Present')))
self.fields.pop('absence_check_type', None)
Owner

Il faudrait pouvoir préciser un motif, pour pointer l'enfant en "présence non prévue" et facturer en conséquence
(j'ai un ticket à créer plus tard, pour automatiser le set d'un motif paramétré pour être le motif appliqué sur un pointage sans réservation)

Il faudrait pouvoir préciser un motif, pour pointer l'enfant en "présence non prévue" et facturer en conséquence (j'ai un ticket à créer plus tard, pour automatiser le set d'un motif paramétré pour être le motif appliqué sur un pointage sans réservation)
Author
Owner

Mais ici ce qu'on retire c'est absence_check_type, il reste bien presence_check_type pour le motif (ça part du principe qu'on ne pointera jamais un enfant pas réservé comme absent, peut-être y a-t-il un cas d'usage tordu que j'ignore)

Mais ici ce qu'on retire c'est absence_check_type, il reste bien presence_check_type pour le motif (ça part du principe qu'on ne pointera jamais un enfant pas réservé comme absent, peut-être y a-t-il un cas d'usage tordu que j'ignore)
Owner

oups pardon, mal lu :)
yes en effet un motif d'absence pour une inscription sans réservation n'a pas de sens

oups pardon, mal lu :) yes en effet un motif d'absence pour une inscription sans réservation n'a pas de sens
lguerin reviewed 2023-09-26 16:53:28 +02:00
@ -407,0 +464,4 @@
resp.form['user_was_present'] = ''
resp = resp.form.submit().follow()
assert len(resp.pyquery('.registrant--bar')) == 0
Owner

est-ce que tu peux juste ajouter quelques tests, vérifier qu'un objet Booking a été créé et contient bien les bonnes données dans user_external_id etc ?

est-ce que tu peux juste ajouter quelques tests, vérifier qu'un objet Booking a été créé et contient bien les bonnes données dans user_external_id etc ?
Author
Owner

Ajouté !

Ajouté !
vdeniaud force-pushed wip/80369-plages-libres-permettre-de-creer from 5840c15139 to 118c067050 2023-09-27 12:06:41 +02:00 Compare
lguerin approved these changes 2023-09-28 09:50:12 +02:00
vdeniaud merged commit ec86a9bbcc into main 2023-10-02 10:11:33 +02:00
vdeniaud deleted branch wip/80369-plages-libres-permettre-de-creer 2023-10-02 10:11:33 +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#149
No description provided.