Projette les cibles en temps réel et corrige le fuseau horaire
Calcule les heures travaillées et cibles d'entrée/sortie même quand une demi-journée est en cours (pas encore de pointage de sortie), au lieu d'attendre la fin de journée. Ajoute un endpoint /refresh pour rafraîchir l'affichage sans repointer. Désambiguïse les libellés de semaine sur plusieurs années et force TZ=Europe/Paris dans le conteneur. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
19
app/main.py
19
app/main.py
@ -123,7 +123,13 @@ def _oob_week_extras(result):
|
||||
else:
|
||||
cumul_inner = '<span class="delta-zero">—</span>'
|
||||
html += f'<span id="calc-{date}-cumul" hx-swap-oob="true">{cumul_inner}</span>'
|
||||
cible = jour.get("sortie_cible") if not jour.get("is_complete") else None
|
||||
cible = None
|
||||
if not jour.get("is_complete"):
|
||||
if jour.get("entree_cible"):
|
||||
suffix = "→12:00" if "aprem" in jour.get("conge", set()) else "→17:00"
|
||||
cible = f'{jour["entree_cible"]}{suffix}'
|
||||
elif jour.get("sortie_cible"):
|
||||
cible = jour.get("sortie_cible")
|
||||
cible_inner = f'<span class="cible-num">{cible}</span>' if cible else '<span class="delta-zero">—</span>'
|
||||
html += f'<span id="calc-{date}-cible" hx-swap-oob="true">{cible_inner}</span>'
|
||||
return html
|
||||
@ -310,6 +316,17 @@ def save_pointage(
|
||||
return _htmx_calc_and_soldes(request, date, d, conges, heures_jour_min(), user_id)
|
||||
|
||||
|
||||
@app.get("/refresh/{date}", response_class=HTMLResponse)
|
||||
def refresh_pointage(request: Request, date: str):
|
||||
user_id = _get_user(request)
|
||||
if not user_id:
|
||||
return RedirectResponse("/login", status_code=302)
|
||||
|
||||
d = datetime.strptime(date, "%Y-%m-%d").date()
|
||||
conges = load_conges(user_id)
|
||||
return _htmx_calc_and_soldes(request, date, d, conges, heures_jour_min(), user_id)
|
||||
|
||||
|
||||
@app.post("/conge/{date}/{type_conge}", response_class=HTMLResponse)
|
||||
def toggle_conge_route(date: str, type_conge: str, request: Request):
|
||||
user_id = _get_user(request)
|
||||
|
||||
Reference in New Issue
Block a user