Assiduites : Permissions

This commit is contained in:
iziram 2023-06-30 17:24:16 +02:00
parent ff2b27e1d9
commit 467c29d947
10 changed files with 47 additions and 65 deletions

View File

@ -345,8 +345,7 @@ def count_assiduites_formsemestre(
@scodoc
@as_json
@login_required
@permission_required(Permission.ScoView)
# @permission_required(Permission.ScoAssiduiteChange)
@permission_required(Permission.ScoAssiduiteChange)
def assiduite_create(etudid: int = None):
"""
Création d'une assiduité pour l'étudiant (etudid)
@ -395,8 +394,7 @@ def assiduite_create(etudid: int = None):
@scodoc
@as_json
@login_required
@permission_required(Permission.ScoView)
# @permission_required(Permission.ScoAssiduiteChange)
@permission_required(Permission.ScoAssiduiteChange)
def assiduites_create():
"""
Création d'une assiduité ou plusieurs assiduites
@ -523,8 +521,7 @@ def _create_singular(
@login_required
@scodoc
@as_json
@permission_required(Permission.ScoView)
# @permission_required(Permission.ScoAssiduiteChange)
@permission_required(Permission.ScoAssiduiteChange)
def assiduite_delete():
"""
Suppression d'une assiduité à partir de son id
@ -569,8 +566,7 @@ def _delete_singular(assiduite_id: int, database):
@login_required
@scodoc
@as_json
@permission_required(Permission.ScoView)
# @permission_required(Permission.ScoAssiduiteChange)
@permission_required(Permission.ScoAssiduiteChange)
def assiduite_edit(assiduite_id: int):
"""
Edition d'une assiduité à partir de son id
@ -646,8 +642,7 @@ def assiduite_edit(assiduite_id: int):
@login_required
@scodoc
@as_json
@permission_required(Permission.ScoView)
# @permission_required(Permission.ScoAssiduiteChange)
@permission_required(Permission.ScoAssiduiteChange)
def assiduites_edit():
"""
Edition d'une assiduité à partir de son id

View File

@ -135,8 +135,7 @@ def justificatifs_dept(dept_id: int = None, with_query: bool = False):
@scodoc
@login_required
@as_json
@permission_required(Permission.ScoView)
# @permission_required(Permission.ScoAssiduiteChange)
@permission_required(Permission.ScoJustifChange)
def justif_create(etudid: int = None):
"""
Création d'un justificatif pour l'étudiant (etudid)
@ -251,8 +250,7 @@ def _create_singular(
@login_required
@scodoc
@as_json
@permission_required(Permission.ScoView)
# @permission_required(Permission.ScoAssiduiteChange)
@permission_required(Permission.ScoJustifChange)
def justif_edit(justif_id: int):
"""
Edition d'un justificatif à partir de son id
@ -343,8 +341,7 @@ def justif_edit(justif_id: int):
@login_required
@scodoc
@as_json
@permission_required(Permission.ScoView)
# @permission_required(Permission.ScoAssiduiteChange)
@permission_required(Permission.ScoJustifChange)
def justif_delete():
"""
Suppression d'un justificatif à partir de son id
@ -405,8 +402,7 @@ def _delete_singular(justif_id: int, database):
@scodoc
@login_required
@as_json
@permission_required(Permission.ScoView)
# @permission_required(Permission.ScoAssiduiteChange)
@permission_required(Permission.ScoJustifChange)
def justif_import(justif_id: int = None):
"""
Importation d'un fichier (création d'archive)
@ -450,8 +446,7 @@ def justif_import(justif_id: int = None):
@api_web_bp.route("/justificatif/<int:justif_id>/export/<filename>", methods=["POST"])
@scodoc
@login_required
@permission_required(Permission.ScoView)
# @permission_required(Permission.ScoAssiduiteChange)
@permission_required(Permission.ScoJustifView)
def justif_export(justif_id: int = None, filename: str = None):
"""
Retourne un fichier d'une archive d'un justificatif
@ -482,8 +477,7 @@ def justif_export(justif_id: int = None, filename: str = None):
@scodoc
@login_required
@as_json
@permission_required(Permission.ScoView)
# @permission_required(Permission.ScoAssiduiteChange)
@permission_required(Permission.ScoJustifChange)
def justif_remove(justif_id: int = None):
"""
Supression d'un fichier ou d'une archive
@ -547,8 +541,7 @@ def justif_remove(justif_id: int = None):
@scodoc
@login_required
@as_json
@permission_required(Permission.ScoView)
# @permission_required(Permission.ScoAssiduiteChange)
@permission_required(Permission.ScoJustifView)
def justif_list(justif_id: int = None):
"""
Liste les fichiers du justificatif
@ -579,8 +572,7 @@ def justif_list(justif_id: int = None):
@scodoc
@login_required
@as_json
@permission_required(Permission.ScoView)
# @permission_required(Permission.ScoAssiduiteChange)
@permission_required(Permission.ScoJustifChange)
def justif_justifies(justif_id: int = None):
"""
Liste assiduite_id justifiées par le justificatif

View File

@ -6,6 +6,7 @@ from datetime import datetime
from app import db
from app.models import ModuleImpl
from app.models.etudiants import Identite
from app.auth.models import User
from app.scodoc.sco_utils import (
EtatAssiduite,
EtatJustificatif,
@ -67,9 +68,15 @@ class Assiduite(db.Model):
def to_dict(self, format_api=True) -> dict:
"""Retourne la représentation json de l'assiduité"""
etat = self.etat
username = self.user_id
if format_api:
etat = EtatAssiduite.inverse().get(self.etat).name
if self.user_id is not None:
user: User = User.query.get(self.user_id)
if user is None:
username = "Non renseigné"
else:
username = user.get_prenomnom()
data = {
"assiduite_id": self.id,
"etudid": self.etudid,
@ -79,7 +86,7 @@ class Assiduite(db.Model):
"etat": etat,
"desc": self.desc,
"entry_date": self.entry_date,
"user_id": self.user_id,
"user_id": username,
"est_just": self.est_just,
}
return data
@ -212,9 +219,16 @@ class Justificatif(db.Model):
"""transformation de l'objet en dictionnaire sérialisable"""
etat = self.etat
username = self.user_id
if format_api:
etat = EtatJustificatif.inverse().get(self.etat).name
if self.user_id is not None:
user: User = User.query.get(self.user_id)
if user is None:
username = "Non renseigné"
else:
username = user.get_prenomnom()
data = {
"justif_id": self.justif_id,
@ -225,7 +239,7 @@ class Justificatif(db.Model):
"raison": self.raison,
"fichier": self.fichier,
"entry_date": self.entry_date,
"user_id": self.user_id,
"user_id": username,
}
return data

View File

@ -57,6 +57,10 @@ _SCO_PERMISSIONS = (
(1 << 29, "ScoUsersChangeCASId", "Paramétrer l'id CAS"),
#
(1 << 40, "ScoEtudChangePhoto", "Modifier la photo d'un étudiant"),
# Permissions du module Assiduité)
(1 << 50, "ScoAssiduiteChange", "Modifier des assiduités"),
(1 << 51, "ScoJustifChange", "Modifier des justificatifs"),
(1 << 52, "ScoJustifView", "Visualisation des fichiers justificatifs"),
# Attention: les permissions sont codées sur 64 bits.
)
@ -71,7 +75,7 @@ class Permission:
@staticmethod
def init_permissions():
for (perm, symbol, description) in _SCO_PERMISSIONS:
for perm, symbol, description in _SCO_PERMISSIONS:
setattr(Permission, symbol, perm)
Permission.description[symbol] = description
Permission.permission_by_name[symbol] = perm

View File

@ -1317,29 +1317,6 @@ function generateAllEtudRow() {
// <<== Gestion de la récupération d'informations ==>>
/**
* Récupération d'un nom d'utilisateur à partir d'un identifiant
* @param {Number} id identifiant de l'utilisateur
* @returns {String} le nom de l'utilisateur ou son pseudo ou "Non Renseigné"
*/
function getUserFromId(id) {
if (id == "") {
return "Non Renseigné";
}
let name = "Non Renseigné";
sync_get(getUrl() + `/api/user/${id}`, (data) => {
if (data.nom != "" && data.prenom != "") {
name = `${data.nom} ${data.prenom}`;
} else {
name = data.user_name;
}
});
return name;
}
/**
* Récupération des ids des groupes
* @returns la liste des ids des groupes

View File

@ -207,7 +207,7 @@
).textContent = `saisi le ${formatDateModal(
assiduite.entry_date,
"à"
)} \npar ${getUserFromId(assiduite.user_id)}`;
)} \npar ${assiduite.user_id}`;
document.getElementById("modal-assiduite-module").textContent =
assiduite.moduleimpl_id;
document.getElementById("modal-assiduite-deb").textContent = formatDateModal(
@ -438,7 +438,7 @@
userIdDiv.textContent = `saisi le ${formatDateModal(
assiduite.entry_date,
"à"
)} \npar ${getUserFromId(assiduite.user_id)}`;
)} \npar ${assiduite.user_id}`;
infoContainer.appendChild(userIdDiv);
el.appendChild(infoContainer);

View File

@ -162,7 +162,7 @@
userIdDiv.textContent = `saisi le ${formatDateModal(
assiduite.entry_date,
"à"
)} \npar ${getUserFromId(assiduite.user_id)}`;
)} \npar ${assiduite.user_id}`;
bubble.appendChild(userIdDiv);
bubble.style.left = `${event.clientX - bubble.offsetWidth / 2}px`;

View File

@ -124,7 +124,7 @@
async_get(
path,
(data) => {
const user = getUserFromId(data.user_id);
const user = data.user_id;
const module = getModuleImpl(data.moduleimpl_id);
const date_debut = moment.tz(data.date_debut, TIMEZONE).format("DD/MM/YYYY HH:mm");

View File

@ -119,7 +119,7 @@
async_get(
path,
(data) => {
const user = getUserFromId(data.user_id);
const user = data.user_id;
const date_debut = moment.tz(data.date_debut, TIMEZONE).format("DD/MM/YYYY HH:mm");
const date_fin = moment.tz(data.date_fin, TIMEZONE).format("DD/MM/YYYY HH:mm");
const entry_date = moment.tz(data.entry_date, TIMEZONE).format("DD/MM/YYYY HH:mm");

View File

@ -122,7 +122,7 @@ class HTMLBuilder:
@bp.route("/")
@bp.route("/index_html")
@scodoc
@permission_required(Permission.ScoView)
@permission_required(Permission.ScoJustifChange)
def index_html():
"""Gestionnaire assiduités, page principale"""
H = [
@ -174,7 +174,7 @@ def index_html():
@bp.route("/SignaleAssiduiteEtud")
@scodoc
@permission_required(Permission.ScoAbsChange)
@permission_required(Permission.ScoAssiduiteChange)
def signal_assiduites_etud():
"""
signal_assiduites_etud Saisie de l'assiduité d'un étudiant
@ -242,7 +242,7 @@ def signal_assiduites_etud():
@bp.route("/ListeAssiduitesEtud")
@scodoc
@permission_required(Permission.ScoAbsChange)
@permission_required(Permission.ScoView)
def liste_assiduites_etud():
"""
liste_assiduites_etud Affichage de toutes les assiduites et justificatifs d'un etudiant
@ -284,7 +284,7 @@ def liste_assiduites_etud():
@bp.route("/BilanEtud")
@scodoc
@permission_required(Permission.ScoAbsChange)
@permission_required(Permission.ScoView)
def bilan_etud():
"""
bilan_etud Affichage de toutes les assiduites et justificatifs d'un etudiant
@ -338,7 +338,7 @@ def bilan_etud():
@bp.route("/AjoutJustificatifEtud")
@scodoc
@permission_required(Permission.ScoAbsChange)
@permission_required(Permission.ScoJustifChange)
def ajout_justificatif_etud():
"""
ajout_justificatif_etud : Affichage et création/modification des justificatifs de l'étudiant
@ -423,7 +423,7 @@ def calendrier_etud():
@bp.route("/SignalAssiduiteGr")
@scodoc
@permission_required(Permission.ScoAbsChange)
@permission_required(Permission.ScoAssiduiteChange)
def signal_assiduites_group():
"""
signal_assiduites_group Saisie des assiduités des groupes pour le jour donnée
@ -641,7 +641,7 @@ def get_etat_abs_date():
@bp.route("/SignalAssiduiteDifferee")
@scodoc
@permission_required(Permission.ScoAbsChange)
@permission_required(Permission.ScoAssiduiteChange)
def signal_assiduites_diff():
group_ids: list[int] = request.args.get("group_ids", None)
formsemestre_id: int = request.args.get("formsemestre_id", -1)