forked from ScoDoc/ScoDoc
Assiduites : Permissions
This commit is contained in:
parent
ff2b27e1d9
commit
467c29d947
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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`;
|
||||
|
@ -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");
|
||||
|
@ -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");
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user