Development #50278
ajouter une zone "meta" à la réponse datetimes
0%
Description
Aujourd'hui dans les valeurs retournées on a toutes les date·heures, certaines marquées "disabled": true, ça fait qu'on ne peut pas faire un ...data|length == 0 pour voir s'il y a des créneaux dispos.
Ce ticket pour étendre l'API pour retourner :
{ "data": [...], # comme maintenant "err": 0, # pareil "meta": { ... # des infos en plus } }
En information supplémentaire, immédiatement en réponse au besoin initial, il y aurait une clé permettant de savoir s'il y a des créneaux, peut-être un booléen "no-bookable-datetimes": true, ou alors le compte, "bookable-datetimes-number": 23 (et ainsi pouvoir afficher un message quand c'est presque plein).
Thomas notait aussi qu'on pourrait avoir « le nombre de créneaux total, le nombre de créneaux ouverts, la 1ere date possible, etc. ».
Fichiers
Révisions associées
Historique
Mis à jour par Thomas Noël il y a plus de 3 ans
Note : dans meta, je propose d'éviter des noms de clé avec des "-" (donc éviter "no-bookable-datetimes") car ça en rendra l'usage peu simple dans les appels du style webservice.foo.meta.key
Ici on pourrait avoir "empty": true s'il n'y a aucune place disponible.
Mis à jour par Frédéric Péters il y a plus de 3 ans
Oui j'ai écrit empty dans l'autre ticket mais en fait je ne suis pas fan parce que trop imprécis, je préfère une clé plus longue, mais tout à fait avec des underscores et pas des tirets.
Mis à jour par Nicolas Roche il y a plus de 3 ans
- Statut changé de Nouveau à En cours
- Assigné à mis à Nicolas Roche
Mis à jour par Nicolas Roche il y a plus de 3 ans
- Fichier 0002-api-add-a-meta-dict-on-datetimes-endpoints-50278.patch 0002-api-add-a-meta-dict-on-datetimes-endpoints-50278.patch ajouté
- Fichier 0001-api-change-comprehension-list-to-loop-50278.patch 0001-api-change-comprehension-list-to-loop-50278.patch ajouté
- Statut changé de En cours à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par Frédéric Péters il y a plus de 3 ans
Je préférerais un seul commit, pris isolément le 0001 amène trop de questions qui sont sans doute répondues quand se trouve en même temps considéré le contenu de 0002.
- response = {'data': [get_event_detail(request, x, agenda=agenda) for x in entries]} + response = { + 'data': [get_event_detail(request, x, agenda=agenda) for x in entries], + }
Ta configuration black ne doit pas correspondre à chrono, ce changement ne devrait pas apparaître.
'no_bookable_datetimes': bookable_datetimes_number_available == 0,
affaire perso mais sur ce genre je préfère un explicite bool() qui indique l'affaire dès le début de la lecture, i.e.
'no_bookable_datetimes': bool(bookable_datetimes_number_available == 0),
Mis à jour par Nicolas Roche il y a plus de 3 ans
- Fichier 0001-api-add-a-meta-dict-on-datetimes-endpoints-50278.patch 0001-api-add-a-meta-dict-on-datetimes-endpoints-50278.patch ajouté
Remarques prises en compte (j'avais oublié de passer black ; pour la configuration j'ai pris celle donnée dans le README avec py35).
Mis à jour par Frédéric Péters il y a plus de 3 ans
# we do not have the := operator, so we do that
Il était là avant et pas bien clair mais il me semble que c'est tout à fait inutile désormais, que le truc d'appeler make_id() c'était pour ne pas recalculer deux fois le slot_id dans la list comprehension, mais que comme elle a été dégagée, il deviendrait bien plus simple et lisible de :
for slot in generator_of_unique_slots: # Make virtual id for a slot, combining meeting_type.id and # iso-format of date and time. # !!! The datetime must always be in the local timezone and the local # timezone must not change if we want the id to be stable. # It MUST be a garanty of SharedTimePeriod.get_time_slots() !!! slot_id = ... data.append( { 'id': slot_id,
et à nouveau à parler de commentaire je ne comprends pas la dernière ligne de celui-ci, soit on explicite/complète, soit on dégage.
Mis à jour par Nicolas Roche il y a plus de 3 ans
- Fichier 0001-api-add-a-meta-dict-on-datetimes-endpoints-50278.patch 0001-api-add-a-meta-dict-on-datetimes-endpoints-50278.patch ajouté
(fait)
... soit on explicite/complète, soit on dégage.
Le commentaire une redite du cartouche de SharedTimePeriod.get_time_slots()
:
"""... Generated start_datetime MUST be in the local timezone as the API needs it to generate stable ids. """
Je propose de remplacer le commentaire par :
# (SharedTimePeriod.get_time_slots() generate datetime in fixed local timezone, # in order to make slot_id stable.)
et de rajouter l'obligation de ne pas changer de fuseau horaire dans le cartouche de get_time_slots()
:
Generated start_datetime MUST be in the local timezone, and the local timezone must not change, as the API needs it to generate stable ids.
Mis à jour par Lauréline Guérin il y a plus de 3 ans
Est-ce que pour les tests que tu ajoutes, l'utilisation des fixtures mock_now ou utilisant mock_now (virtual_meetings_agenda, some_data) est utile ?
Est-ce qu'on a vraiment besoin de tester les timezones et l'heure courante ?
Ces fixtures multiplient les tests (x9), j'ai tendance à éviter de les utiliser quand on peut s'en passer.
Mis à jour par Nicolas Roche il y a plus de 3 ans
- Fichier 0001-api-add-a-meta-dict-on-datetimes-endpoints-50278.patch 0001-api-add-a-meta-dict-on-datetimes-endpoints-50278.patch ajouté
(fait : juste 3 tests)
Mis à jour par Frédéric Péters il y a plus de 3 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Frédéric Péters il y a plus de 3 ans
- Statut changé de Solution validée à Résolu (à déployer)
J'ai poussé pour pouvoir tagguer/déployer ce matin,
commit 446ca922bef238e8ce2b053d36429511362d5dea Author: Nicolas ROCHE <nroche@entrouvert.com> Date: Mon Jan 18 18:00:50 2021 +0100 api: add a meta dict on datetimes endpoints (#50278)
Mis à jour par Frédéric Péters il y a plus de 3 ans
- Statut changé de Résolu (à déployer) à Solution déployée
api: add a meta dict on datetimes endpoints (#50278)