|
|
|
@ -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
|
|
|
|
|