Fix: Assiduité: saisie/éditiion date dépôt justif. Fix #852

This commit is contained in:
Emmanuel Viennet 2024-01-30 11:47:57 +01:00
parent 5446ac0ed2
commit eefbe70944
6 changed files with 32 additions and 10 deletions

View File

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

View File

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

View File

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

View File

@ -100,7 +100,7 @@ div.submit > input {
{{ form.description() }}
{{ render_field_errors(form, 'description') }}
</div>
{# Date dépot #}
{# Date dépôt #}
{{ form.entry_date.label }}&nbsp;: {{ form.entry_date }}
<span class="help">laisser vide pour date courante</span>
{{ render_field_errors(form, 'entry_date') }}

View File

@ -123,9 +123,9 @@ div.submit > input {
{{ render_field_errors(form, 'fichiers') }}
</div>
</div>
{# Date dépot #}
{{ form.entry_date.label }}&nbsp;: {{ form.entry_date }}
<span class="help">laisser vide pour date courante</span>
{# Date dépôt #}
{{ form.entry_date.label }}&nbsp;: {{ form.entry_date }} à {{ form.entry_time }}
<span class="help" style="margin-left: 12px;">laisser vide pour date courante</span>
{{ render_field_errors(form, 'entry_date') }}
{# Submit #}

View File

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