1
0
forked from ScoDoc/ScoDoc

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( entry_date = StringField(
"Date de dépot ou saisie", "Date de dépôt ou saisie",
validators=[validators.Length(max=10)], validators=[validators.Length(max=10)],
render_kw={ render_kw={
"class": "datepicker", "class": "datepicker",
@ -110,6 +110,16 @@ class AjoutAssiOrJustForm(FlaskForm):
"id": "entry_date", "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") submit = SubmitField("Enregistrer")
cancel = SubmitField("Annuler", render_kw={"formnovalidate": True}) 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()) entry_date = db.Column(db.DateTime(timezone=True), server_default=db.func.now())
"date de création de l'élément: date de saisie" "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( user_id = db.Column(
db.Integer, db.Integer,

View File

@ -19,7 +19,7 @@ class Trace:
"""gestionnaire de la trace des fichiers justificatifs """gestionnaire de la trace des fichiers justificatifs
Role des fichiers traces : 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 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) - 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: TOTALK:
- oid -> etudid - 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 justificatif
<dept_id> <dept_id>

View File

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

View File

@ -123,9 +123,9 @@ div.submit > input {
{{ render_field_errors(form, 'fichiers') }} {{ render_field_errors(form, 'fichiers') }}
</div> </div>
</div> </div>
{# Date dépot #} {# Date dépôt #}
{{ form.entry_date.label }}&nbsp;: {{ form.entry_date }} {{ form.entry_date.label }}&nbsp;: {{ form.entry_date }} à {{ form.entry_time }}
<span class="help">laisser vide pour date courante</span> <span class="help" style="margin-left: 12px;">laisser vide pour date courante</span>
{{ render_field_errors(form, 'entry_date') }} {{ render_field_errors(form, 'entry_date') }}
{# Submit #} {# 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) dt_fin = datetime.datetime.combine(date_fin or date_debut, heure_fin)
if dt_fin <= dt_debut: if dt_fin <= dt_debut:
form.set_error("dates début/fin incohérentes") 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: try:
dt_entry_date = ( dt_entry_date = (
datetime.datetime.strptime(form.entry_date.data, "%d/%m/%Y") datetime.datetime.strptime(form.entry_date.data, "%d/%m/%Y")
@ -344,7 +344,16 @@ def _get_dates_from_assi_form(
except ValueError: except ValueError:
dt_entry_date = None dt_entry_date = None
form.set_error("format de date de dépôt invalide", form.entry_date) 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 # Ajoute time zone serveur
dt_debut_tz_server = scu.TIME_ZONE.localize(dt_debut) dt_debut_tz_server = scu.TIME_ZONE.localize(dt_debut)
dt_fin_tz_server = scu.TIME_ZONE.localize(dt_fin) 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 = ( form.entry_date.data = (
justif.entry_date.strftime("%d/%m/%Y") if justif.entry_date else "" 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) form.etat.data = str(justif.etat)
redirect_url = url_for( redirect_url = url_for(