Development #48078
API datetimes : permettre de restreindre les résultats sur des bornes min/max de dates
0%
Description
Des paramétrés min_datetime max_datetime à accepter dans l'URL, pour filtrage.
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Emmanuel Cazenave il y a plus de 3 ans
- Statut changé de Nouveau à En cours
- Assigné à mis à Emmanuel Cazenave
Mis à jour par Emmanuel Cazenave il y a plus de 3 ans
- Fichier 0001-agendas-add-date-filter-params-on-datetimes-api-4807.patch 0001-agendas-add-date-filter-params-on-datetimes-api-4807.patch ajouté
- Statut changé de En cours à Solution proposée
- Patch proposed changé de Non à Oui
Par dessus #48185.
Contrairement à ce que j'écrivais dans la description, des dates attendues en paramètre et non des datetime, date_start
et date_end
, comme sur les évènements, avec date_end
borne supérieure exclue, comme il se doit.
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
J'ai pas tout lu mais get_min/max_datetime sont devenus pas mal alambiqués, est-ce que ça ne serait pas plus clair comme ça :
def get_min_datetime(agenda, start_datetime=None): if agenda.minimal_booking_delay is None: return start_datetime else: # constrain start_datetime by agenda.minimal_booking_delay min_datetime = now() + datetime.timedelta(days=agenda.minimal_booking_delay) min_datetime = min_datetime.replace(hour=0, minute=0, second=0, microsecond=0) if start_datetime is None: return min_datetime else: return max(min_datetime, start_datetime)
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
Benjamin Dauvergne a écrit :
J'ai pas tout lu mais get_min/max_datetime sont devenus pas mal alambiqués, est-ce que comme ça ne serait pas plus clair comme ça :
[...]
Bon je continue quand même, ici faire une 400 propre avec APIError plutôt qu'une trace si la date est mal formatée :
+ start_datetime = None + if 'date_start' in request.GET: + start_datetime = make_aware( + datetime.datetime.combine(parse_date(request.GET['date_start']), datetime.time(0, 0)) + ) + + end_datetime = None + if 'date_end' in request.GET: + end_datetime = make_aware( + datetime.datetime.combine(parse_date(request.GET['date_end']), datetime.time(0, 0)) + )
Rien d'autre.
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Emmanuel Cazenave il y a plus de 3 ans
- Statut changé de Solution validée à Résolu (à déployer)
J'ai tenu compte.
commit 6d0e8a57ad51f22d41784f4014035c51e613a855 Author: Emmanuel Cazenave <ecazenave@entrouvert.com> Date: Mon Nov 2 13:55:48 2020 +0100 agendas: add date filter params on datetimes api (#48078)
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
Mis à jour par Nicolas Roche il y a plus de 3 ans
- Lié à Bug #48726: Test qui ne passe que le lundi, le mardi, le samedi et le dimanche ajouté
agendas: add date filter params on datetimes api (#48078)