From 094008f9f492112ff5370205777b97a904473829 Mon Sep 17 00:00:00 2001 From: Nicolas Selva Date: Tue, 7 Mar 2023 12:18:12 +0100 Subject: [PATCH] [MTELECHAA-139]add condition salle and fix indisponibilites_for_a_date --- .../templatetags/imio_teleservices.py | 55 ++++++++++++++++--- 1 file changed, 46 insertions(+), 9 deletions(-) diff --git a/imio_teleservices_templatetags/templatetags/imio_teleservices.py b/imio_teleservices_templatetags/templatetags/imio_teleservices.py index ae62f56..e1e26b3 100644 --- a/imio_teleservices_templatetags/templatetags/imio_teleservices.py +++ b/imio_teleservices_templatetags/templatetags/imio_teleservices.py @@ -278,24 +278,61 @@ def distinct_list(value): @register.filter def indisponibilites_for_a_date(date_debut_fin, indisponibilites): """ - start_end_date : str start_date|end_date + date_debut_fin : str date_debut|date_fin indisponibilites : json """ if date_debut_fin == "|": return [] - date_debut = datetime.datetime.strptime(str(date_debut_fin).split("|")[0], "%d/%m/%Y").date() - date_fin = datetime.datetime.strptime(str(date_debut_fin).split("|")[1], "%d/%m/%Y").date() + + format_date_demande = "%d/%m/%Y" + format_date_location = "%Y-%m-%dT%H:%M:%S" + + date_debut = datetime.datetime.strptime(str(date_debut_fin).split("|")[0], format_date_demande).date() + date_fin = datetime.datetime.strptime(str(date_debut_fin).split("|")[1], format_date_demande).date() date_indisponibles = [] for indisponibilite in indisponibilites["data"]: - StartDate = datetime.datetime.strptime(indisponibilite["StartDate"], "%Y-%m-%dT%H:%M:%S").date() - EndDate = datetime.datetime.strptime(indisponibilite["EndDate"], "%Y-%m-%dT%H:%M:%S").date() + StartDate = datetime.datetime.strptime(indisponibilite["StartDate"], format_date_location).date() + EndDate = datetime.datetime.strptime(indisponibilite["EndDate"], format_date_location).date() if ( - (StartDate <= date_debut and date_debut <= EndDate) - or (StartDate <= date_fin and date_fin <= EndDate) - or (date_debut <= StartDate and StartDate <= date_fin) - or (date_debut <= EndDate and EndDate <= date_fin) + StartDate <= date_debut <= EndDate + or StartDate <= date_fin <= EndDate + or date_debut <= StartDate <= date_fin + or date_debut <= EndDate <= date_fin ): date_indisponibles.append(indisponibilite) return date_indisponibles + + +@register.filter +def condition_salle(date_heure_debut_fin, indisponibilites): + """ + date_heure_debut_fin : str date_debutTheure_debut|date_finTheure_fin + indisponibilites : json + """ + if date_heure_debut_fin == "T|T": + return False + + format_date_heure_demande = "%d/%m/%YT%H:%M" + format_date_heure_location = "%Y-%m-%dT%H:%M:%S" + + date_heure_debut_demande = datetime.datetime.strptime( + str(date_heure_debut_fin).split("|")[0], format_date_heure_demande + ) + date_heure_fin_demande = datetime.datetime.strptime( + str(date_heure_debut_fin).split("|")[1], format_date_heure_demande + ) + + for indisponibilite in indisponibilites["data"]: + StartDate = datetime.datetime.strptime(indisponibilite["StartDate"], format_date_heure_location) + EndDate = datetime.datetime.strptime(indisponibilite["EndDate"], format_date_heure_location) + if ( + StartDate <= date_heure_debut_demande <= EndDate + or StartDate <= date_heure_fin_demande <= EndDate + or date_heure_debut_demande <= StartDate <= date_heure_fin_demande + or date_heure_debut_demande <= EndDate <= date_heure_fin_demande + ): + return False + + return True