From eefbe709440e0ac6428c0ec6e061f5e2e9c8b124 Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Tue, 30 Jan 2024 11:47:57 +0100 Subject: [PATCH] =?UTF-8?q?Fix:=20Assiduit=C3=A9:=20saisie/=C3=A9ditiion?= =?UTF-8?q?=20date=20d=C3=A9p=C3=B4t=20justif.=20Fix=20#852?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/forms/assiduite/ajout_assiduite_etud.py | 12 +++++++++++- app/models/assiduites.py | 2 +- app/scodoc/sco_archives_justificatifs.py | 4 ++-- .../assiduites/pages/ajout_assiduite_etud.j2 | 2 +- .../assiduites/pages/ajout_justificatif_etud.j2 | 6 +++--- app/views/assiduites.py | 16 ++++++++++++++-- 6 files changed, 32 insertions(+), 10 deletions(-) diff --git a/app/forms/assiduite/ajout_assiduite_etud.py b/app/forms/assiduite/ajout_assiduite_etud.py index d5783e2d..4ece2b5b 100644 --- a/app/forms/assiduite/ajout_assiduite_etud.py +++ b/app/forms/assiduite/ajout_assiduite_etud.py @@ -102,7 +102,7 @@ class AjoutAssiOrJustForm(FlaskForm): ) entry_date = StringField( - "Date de dépot ou saisie", + "Date de dépôt ou saisie", validators=[validators.Length(max=10)], render_kw={ "class": "datepicker", @@ -110,6 +110,16 @@ class AjoutAssiOrJustForm(FlaskForm): "id": "entry_date", }, ) + entry_time = StringField( + "Heure dépôt", + default="", + validators=[validators.Length(max=5)], + render_kw={ + "class": "timepicker", + "size": 5, + "id": "assi_heure_fin", + }, + ) submit = SubmitField("Enregistrer") cancel = SubmitField("Annuler", render_kw={"formnovalidate": True}) diff --git a/app/models/assiduites.py b/app/models/assiduites.py index 89ab7fe6..e08a9211 100644 --- a/app/models/assiduites.py +++ b/app/models/assiduites.py @@ -418,7 +418,7 @@ class Justificatif(ScoDocModel): entry_date = db.Column(db.DateTime(timezone=True), server_default=db.func.now()) "date de création de l'élément: date de saisie" - # pourrait devenir date de dépot au secrétariat, si différente + # pourrait devenir date de dépôt au secrétariat, si différente user_id = db.Column( db.Integer, diff --git a/app/scodoc/sco_archives_justificatifs.py b/app/scodoc/sco_archives_justificatifs.py index abdb9fff..0b3ff913 100644 --- a/app/scodoc/sco_archives_justificatifs.py +++ b/app/scodoc/sco_archives_justificatifs.py @@ -19,7 +19,7 @@ class Trace: """gestionnaire de la trace des fichiers justificatifs Role des fichiers traces : - - Sauvegarder la date de dépot du fichier + - Sauvegarder la date de dépôt du fichier - Sauvegarder la date de suppression du fichier (dans le cas de plusieurs fichiers pour un même justif) - Sauvegarder l'user_id de l'utilisateur ayant déposé le fichier (=> permet de montrer les fichiers qu'aux personnes qui l'on déposé / qui ont le rôle AssiJustifView) @@ -116,7 +116,7 @@ class JustificatifArchiver(BaseArchiver): TOTALK: - oid -> etudid - - archive_id -> date de création de l'archive (une archive par dépot de document) + - archive_id -> date de création de l'archive (une archive par dépôt de document) justificatif └── diff --git a/app/templates/assiduites/pages/ajout_assiduite_etud.j2 b/app/templates/assiduites/pages/ajout_assiduite_etud.j2 index 7871bf90..59ba761f 100644 --- a/app/templates/assiduites/pages/ajout_assiduite_etud.j2 +++ b/app/templates/assiduites/pages/ajout_assiduite_etud.j2 @@ -100,7 +100,7 @@ div.submit > input { {{ form.description() }} {{ render_field_errors(form, 'description') }} - {# Date dépot #} + {# Date dépôt #} {{ form.entry_date.label }} : {{ form.entry_date }} laisser vide pour date courante {{ render_field_errors(form, 'entry_date') }} diff --git a/app/templates/assiduites/pages/ajout_justificatif_etud.j2 b/app/templates/assiduites/pages/ajout_justificatif_etud.j2 index 3aee67d0..4088bbac 100644 --- a/app/templates/assiduites/pages/ajout_justificatif_etud.j2 +++ b/app/templates/assiduites/pages/ajout_justificatif_etud.j2 @@ -123,9 +123,9 @@ div.submit > input { {{ render_field_errors(form, 'fichiers') }} - {# Date dépot #} - {{ form.entry_date.label }} : {{ form.entry_date }} - laisser vide pour date courante + {# Date dépôt #} + {{ form.entry_date.label }} : {{ form.entry_date }} à {{ form.entry_time }} + laisser vide pour date courante {{ render_field_errors(form, 'entry_date') }} {# Submit #} diff --git a/app/views/assiduites.py b/app/views/assiduites.py index bd6a1b12..01990658 100644 --- a/app/views/assiduites.py +++ b/app/views/assiduites.py @@ -334,7 +334,7 @@ def _get_dates_from_assi_form( dt_fin = datetime.datetime.combine(date_fin or date_debut, heure_fin) if dt_fin <= dt_debut: form.set_error("dates début/fin incohérentes") - # La date de dépot (si vide, la date actuelle) + # La date de dépôt (si vide, la date actuelle) try: dt_entry_date = ( datetime.datetime.strptime(form.entry_date.data, "%d/%m/%Y") @@ -344,7 +344,16 @@ def _get_dates_from_assi_form( except ValueError: dt_entry_date = None form.set_error("format de date de dépôt invalide", form.entry_date) - + # L'heure de dépôt + try: + entry_time = datetime.time.fromisoformat( + form.entry_time.data or datetime.datetime.now().time().isoformat("seconds") + ) + except ValueError: + dt_entry_date = None + form.set_error("format d'heure de dépôt invalide", form.entry_date) + if dt_entry_date: + dt_entry_date = datetime.datetime.combine(dt_entry_date, entry_time) # Ajoute time zone serveur dt_debut_tz_server = scu.TIME_ZONE.localize(dt_debut) dt_fin_tz_server = scu.TIME_ZONE.localize(dt_fin) @@ -576,6 +585,9 @@ def edit_justificatif_etud(justif_id: int): form.entry_date.data = ( justif.entry_date.strftime("%d/%m/%Y") if justif.entry_date else "" ) + form.entry_time.data = ( + justif.entry_date.strftime("%H:%M") if justif.entry_date else "" + ) form.etat.data = str(justif.etat) redirect_url = url_for(