1
0
forked from ScoDoc/ScoDoc

ajout_justificatif_etud: upload fichiers + corrige permissions

This commit is contained in:
Emmanuel Viennet 2023-12-16 22:53:02 +01:00
parent 48bce33329
commit 1699febab8
6 changed files with 19 additions and 14 deletions

View File

@ -1,6 +1,6 @@
# ScoDoc - Gestion de la scolarité - Version ScoDoc 9 # ScoDoc - Gestion de la scolarité - Version ScoDoc 9
(c) Emmanuel Viennet 1999 - 2022 (voir LICENCE.txt). (c) Emmanuel Viennet 1999 - 2024 (voir LICENCE.txt).
Installation: voir instructions à jour sur <https://scodoc.org/GuideInstallDebian11> Installation: voir instructions à jour sur <https://scodoc.org/GuideInstallDebian11>

View File

@ -651,10 +651,11 @@ def justif_import(justif_id: int = None):
) )
@scodoc @scodoc
@login_required @login_required
@permission_required(Permission.AbsJustifView) @permission_required(Permission.ScoView)
def justif_export(justif_id: int | None = None, filename: str | None = None): def justif_export(justif_id: int | None = None, filename: str | None = None):
""" """
Retourne un fichier d'une archive d'un justificatif Retourne un fichier d'une archive d'un justificatif.
La permission est ScoView + (AbsJustifView ou être l'auteur du justifcatif)
""" """
# On récupère le justificatif concerné # On récupère le justificatif concerné
query: Query = Justificatif.query.filter_by(id=justif_id) query: Query = Justificatif.query.filter_by(id=justif_id)
@ -662,6 +663,13 @@ def justif_export(justif_id: int | None = None, filename: str | None = None):
query = query.join(Identite).filter_by(dept_id=g.scodoc_dept_id) query = query.join(Identite).filter_by(dept_id=g.scodoc_dept_id)
justificatif_unique: Justificatif = query.first_or_404() justificatif_unique: Justificatif = query.first_or_404()
# Vérification des permissions
if not (
current_user.has_permission(Permission.AbsJustifView)
or justificatif_unique.user_id == current_user.id
):
return json_error(401, "non autorisé à voir ce fichier")
# On récupère l'archive concernée # On récupère l'archive concernée
archive_name: str = justificatif_unique.fichier archive_name: str = justificatif_unique.fichier
if archive_name is None: if archive_name is None:

View File

@ -423,7 +423,7 @@ class Justificatif(db.Model):
) )
db.session.add(nouv_justificatif) db.session.add(nouv_justificatif)
db.session.commit()
log(f"create_justificatif: etudid={etud.id} {nouv_justificatif}") log(f"create_justificatif: etudid={etud.id} {nouv_justificatif}")
Scolog.logdb( Scolog.logdb(
method="create_justificatif", method="create_justificatif",

View File

@ -1,8 +1,5 @@
# Module "Avis de poursuite d'étude" # Module "Avis de poursuite d'étude"
Conçu et développé sur ScoDoc 7 par Cléo Baras (IUT de Grenoble) pour le DUT. Conçu et développé sur ScoDoc 7 par Cléo Baras (IUT de Grenoble) pour le DUT.
Actuellement non opérationnel dans ScoDoc 9. Actuellement non opérationnel dans ScoDoc 9.

View File

@ -131,9 +131,9 @@ class RowAssi(tb.Row):
def _get_etud_stats(self, etud: Identite) -> dict[str, list[str, float, float]]: def _get_etud_stats(self, etud: Identite) -> dict[str, list[str, float, float]]:
# XXX TODO @iziram commentaire sur la fonction et la var. retour # XXX TODO @iziram commentaire sur la fonction et la var. retour
retour: dict[str, tuple[str, float, float]] = { retour: dict[str, tuple[str, float, float]] = {
"present": ["Présences", 0.0, 0.0],
"retard": ["Retards", 0.0, 0.0],
"absent": ["Absences", 0.0, 0.0], "absent": ["Absences", 0.0, 0.0],
"retard": ["Retards", 0.0, 0.0],
"present": ["Présences", 0.0, 0.0],
} }
assi_metric = scu.translate_assiduites_metric( assi_metric = scu.translate_assiduites_metric(

View File

@ -34,7 +34,7 @@ div.submit > input {
</div> </div>
{% endfor %} {% endfor %}
<form id="ajout-justificatif-etud" method="post"> <form id="ajout-justificatif-etud" method="post" enctype="multipart/form-data">
<fieldset> <fieldset>
{{ form.hidden_tag() }} {{ form.hidden_tag() }}
{# Dates et heures #} {# Dates et heures #}
@ -66,10 +66,10 @@ div.submit > input {
{{ render_field_errors(form, 'assi_raison') }} {{ render_field_errors(form, 'assi_raison') }}
</div> </div>
{# Fichier(s) justificatif(s) #} {# Fichier(s) justificatif(s) #}
<div><em>chargement fichier désactivé (travaux en cours), passer ensuite par "modifier le justificatif"</em> <div>
{# <div>{{ form.fichiers.label }}</div> <div>{{ form.fichiers.label }}</div>
{{ form.fichiers() }} {{ form.fichiers() }}
{{ render_field_errors(form, 'fichiers') }} #} {{ render_field_errors(form, 'fichiers') }}
</div> </div>
{# Date dépot #} {# Date dépot #}
{{ form.entry_date.label }}&nbsp;: {{ form.entry_date }} {{ form.entry_date.label }}&nbsp;: {{ form.entry_date }}