forked from ScoDoc/ScoDoc
Assiduites : Permissions
This commit is contained in:
parent
ff2b27e1d9
commit
467c29d947
@ -345,8 +345,7 @@ def count_assiduites_formsemestre(
|
|||||||
@scodoc
|
@scodoc
|
||||||
@as_json
|
@as_json
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoAssiduiteChange)
|
||||||
# @permission_required(Permission.ScoAssiduiteChange)
|
|
||||||
def assiduite_create(etudid: int = None):
|
def assiduite_create(etudid: int = None):
|
||||||
"""
|
"""
|
||||||
Création d'une assiduité pour l'étudiant (etudid)
|
Création d'une assiduité pour l'étudiant (etudid)
|
||||||
@ -395,8 +394,7 @@ def assiduite_create(etudid: int = None):
|
|||||||
@scodoc
|
@scodoc
|
||||||
@as_json
|
@as_json
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoAssiduiteChange)
|
||||||
# @permission_required(Permission.ScoAssiduiteChange)
|
|
||||||
def assiduites_create():
|
def assiduites_create():
|
||||||
"""
|
"""
|
||||||
Création d'une assiduité ou plusieurs assiduites
|
Création d'une assiduité ou plusieurs assiduites
|
||||||
@ -523,8 +521,7 @@ def _create_singular(
|
|||||||
@login_required
|
@login_required
|
||||||
@scodoc
|
@scodoc
|
||||||
@as_json
|
@as_json
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoAssiduiteChange)
|
||||||
# @permission_required(Permission.ScoAssiduiteChange)
|
|
||||||
def assiduite_delete():
|
def assiduite_delete():
|
||||||
"""
|
"""
|
||||||
Suppression d'une assiduité à partir de son id
|
Suppression d'une assiduité à partir de son id
|
||||||
@ -569,8 +566,7 @@ def _delete_singular(assiduite_id: int, database):
|
|||||||
@login_required
|
@login_required
|
||||||
@scodoc
|
@scodoc
|
||||||
@as_json
|
@as_json
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoAssiduiteChange)
|
||||||
# @permission_required(Permission.ScoAssiduiteChange)
|
|
||||||
def assiduite_edit(assiduite_id: int):
|
def assiduite_edit(assiduite_id: int):
|
||||||
"""
|
"""
|
||||||
Edition d'une assiduité à partir de son id
|
Edition d'une assiduité à partir de son id
|
||||||
@ -646,8 +642,7 @@ def assiduite_edit(assiduite_id: int):
|
|||||||
@login_required
|
@login_required
|
||||||
@scodoc
|
@scodoc
|
||||||
@as_json
|
@as_json
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoAssiduiteChange)
|
||||||
# @permission_required(Permission.ScoAssiduiteChange)
|
|
||||||
def assiduites_edit():
|
def assiduites_edit():
|
||||||
"""
|
"""
|
||||||
Edition d'une assiduité à partir de son id
|
Edition d'une assiduité à partir de son id
|
||||||
|
@ -135,8 +135,7 @@ def justificatifs_dept(dept_id: int = None, with_query: bool = False):
|
|||||||
@scodoc
|
@scodoc
|
||||||
@login_required
|
@login_required
|
||||||
@as_json
|
@as_json
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoJustifChange)
|
||||||
# @permission_required(Permission.ScoAssiduiteChange)
|
|
||||||
def justif_create(etudid: int = None):
|
def justif_create(etudid: int = None):
|
||||||
"""
|
"""
|
||||||
Création d'un justificatif pour l'étudiant (etudid)
|
Création d'un justificatif pour l'étudiant (etudid)
|
||||||
@ -251,8 +250,7 @@ def _create_singular(
|
|||||||
@login_required
|
@login_required
|
||||||
@scodoc
|
@scodoc
|
||||||
@as_json
|
@as_json
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoJustifChange)
|
||||||
# @permission_required(Permission.ScoAssiduiteChange)
|
|
||||||
def justif_edit(justif_id: int):
|
def justif_edit(justif_id: int):
|
||||||
"""
|
"""
|
||||||
Edition d'un justificatif à partir de son id
|
Edition d'un justificatif à partir de son id
|
||||||
@ -343,8 +341,7 @@ def justif_edit(justif_id: int):
|
|||||||
@login_required
|
@login_required
|
||||||
@scodoc
|
@scodoc
|
||||||
@as_json
|
@as_json
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoJustifChange)
|
||||||
# @permission_required(Permission.ScoAssiduiteChange)
|
|
||||||
def justif_delete():
|
def justif_delete():
|
||||||
"""
|
"""
|
||||||
Suppression d'un justificatif à partir de son id
|
Suppression d'un justificatif à partir de son id
|
||||||
@ -405,8 +402,7 @@ def _delete_singular(justif_id: int, database):
|
|||||||
@scodoc
|
@scodoc
|
||||||
@login_required
|
@login_required
|
||||||
@as_json
|
@as_json
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoJustifChange)
|
||||||
# @permission_required(Permission.ScoAssiduiteChange)
|
|
||||||
def justif_import(justif_id: int = None):
|
def justif_import(justif_id: int = None):
|
||||||
"""
|
"""
|
||||||
Importation d'un fichier (création d'archive)
|
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"])
|
@api_web_bp.route("/justificatif/<int:justif_id>/export/<filename>", methods=["POST"])
|
||||||
@scodoc
|
@scodoc
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoJustifView)
|
||||||
# @permission_required(Permission.ScoAssiduiteChange)
|
|
||||||
def justif_export(justif_id: int = None, filename: str = None):
|
def justif_export(justif_id: int = None, filename: str = None):
|
||||||
"""
|
"""
|
||||||
Retourne un fichier d'une archive d'un justificatif
|
Retourne un fichier d'une archive d'un justificatif
|
||||||
@ -482,8 +477,7 @@ def justif_export(justif_id: int = None, filename: str = None):
|
|||||||
@scodoc
|
@scodoc
|
||||||
@login_required
|
@login_required
|
||||||
@as_json
|
@as_json
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoJustifChange)
|
||||||
# @permission_required(Permission.ScoAssiduiteChange)
|
|
||||||
def justif_remove(justif_id: int = None):
|
def justif_remove(justif_id: int = None):
|
||||||
"""
|
"""
|
||||||
Supression d'un fichier ou d'une archive
|
Supression d'un fichier ou d'une archive
|
||||||
@ -547,8 +541,7 @@ def justif_remove(justif_id: int = None):
|
|||||||
@scodoc
|
@scodoc
|
||||||
@login_required
|
@login_required
|
||||||
@as_json
|
@as_json
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoJustifView)
|
||||||
# @permission_required(Permission.ScoAssiduiteChange)
|
|
||||||
def justif_list(justif_id: int = None):
|
def justif_list(justif_id: int = None):
|
||||||
"""
|
"""
|
||||||
Liste les fichiers du justificatif
|
Liste les fichiers du justificatif
|
||||||
@ -579,8 +572,7 @@ def justif_list(justif_id: int = None):
|
|||||||
@scodoc
|
@scodoc
|
||||||
@login_required
|
@login_required
|
||||||
@as_json
|
@as_json
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoJustifChange)
|
||||||
# @permission_required(Permission.ScoAssiduiteChange)
|
|
||||||
def justif_justifies(justif_id: int = None):
|
def justif_justifies(justif_id: int = None):
|
||||||
"""
|
"""
|
||||||
Liste assiduite_id justifiées par le justificatif
|
Liste assiduite_id justifiées par le justificatif
|
||||||
|
@ -6,6 +6,7 @@ from datetime import datetime
|
|||||||
from app import db
|
from app import db
|
||||||
from app.models import ModuleImpl
|
from app.models import ModuleImpl
|
||||||
from app.models.etudiants import Identite
|
from app.models.etudiants import Identite
|
||||||
|
from app.auth.models import User
|
||||||
from app.scodoc.sco_utils import (
|
from app.scodoc.sco_utils import (
|
||||||
EtatAssiduite,
|
EtatAssiduite,
|
||||||
EtatJustificatif,
|
EtatJustificatif,
|
||||||
@ -67,9 +68,15 @@ class Assiduite(db.Model):
|
|||||||
def to_dict(self, format_api=True) -> dict:
|
def to_dict(self, format_api=True) -> dict:
|
||||||
"""Retourne la représentation json de l'assiduité"""
|
"""Retourne la représentation json de l'assiduité"""
|
||||||
etat = self.etat
|
etat = self.etat
|
||||||
|
username = self.user_id
|
||||||
if format_api:
|
if format_api:
|
||||||
etat = EtatAssiduite.inverse().get(self.etat).name
|
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 = {
|
data = {
|
||||||
"assiduite_id": self.id,
|
"assiduite_id": self.id,
|
||||||
"etudid": self.etudid,
|
"etudid": self.etudid,
|
||||||
@ -79,7 +86,7 @@ class Assiduite(db.Model):
|
|||||||
"etat": etat,
|
"etat": etat,
|
||||||
"desc": self.desc,
|
"desc": self.desc,
|
||||||
"entry_date": self.entry_date,
|
"entry_date": self.entry_date,
|
||||||
"user_id": self.user_id,
|
"user_id": username,
|
||||||
"est_just": self.est_just,
|
"est_just": self.est_just,
|
||||||
}
|
}
|
||||||
return data
|
return data
|
||||||
@ -212,9 +219,16 @@ class Justificatif(db.Model):
|
|||||||
"""transformation de l'objet en dictionnaire sérialisable"""
|
"""transformation de l'objet en dictionnaire sérialisable"""
|
||||||
|
|
||||||
etat = self.etat
|
etat = self.etat
|
||||||
|
username = self.user_id
|
||||||
|
|
||||||
if format_api:
|
if format_api:
|
||||||
etat = EtatJustificatif.inverse().get(self.etat).name
|
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 = {
|
data = {
|
||||||
"justif_id": self.justif_id,
|
"justif_id": self.justif_id,
|
||||||
@ -225,7 +239,7 @@ class Justificatif(db.Model):
|
|||||||
"raison": self.raison,
|
"raison": self.raison,
|
||||||
"fichier": self.fichier,
|
"fichier": self.fichier,
|
||||||
"entry_date": self.entry_date,
|
"entry_date": self.entry_date,
|
||||||
"user_id": self.user_id,
|
"user_id": username,
|
||||||
}
|
}
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
@ -57,6 +57,10 @@ _SCO_PERMISSIONS = (
|
|||||||
(1 << 29, "ScoUsersChangeCASId", "Paramétrer l'id CAS"),
|
(1 << 29, "ScoUsersChangeCASId", "Paramétrer l'id CAS"),
|
||||||
#
|
#
|
||||||
(1 << 40, "ScoEtudChangePhoto", "Modifier la photo d'un étudiant"),
|
(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.
|
# Attention: les permissions sont codées sur 64 bits.
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -71,7 +75,7 @@ class Permission:
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def init_permissions():
|
def init_permissions():
|
||||||
for (perm, symbol, description) in _SCO_PERMISSIONS:
|
for perm, symbol, description in _SCO_PERMISSIONS:
|
||||||
setattr(Permission, symbol, perm)
|
setattr(Permission, symbol, perm)
|
||||||
Permission.description[symbol] = description
|
Permission.description[symbol] = description
|
||||||
Permission.permission_by_name[symbol] = perm
|
Permission.permission_by_name[symbol] = perm
|
||||||
|
@ -1317,29 +1317,6 @@ function generateAllEtudRow() {
|
|||||||
|
|
||||||
// <<== Gestion de la récupération d'informations ==>>
|
// <<== 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
|
* Récupération des ids des groupes
|
||||||
* @returns la liste des ids des groupes
|
* @returns la liste des ids des groupes
|
||||||
|
@ -207,7 +207,7 @@
|
|||||||
).textContent = `saisi le ${formatDateModal(
|
).textContent = `saisi le ${formatDateModal(
|
||||||
assiduite.entry_date,
|
assiduite.entry_date,
|
||||||
"à"
|
"à"
|
||||||
)} \npar ${getUserFromId(assiduite.user_id)}`;
|
)} \npar ${assiduite.user_id}`;
|
||||||
document.getElementById("modal-assiduite-module").textContent =
|
document.getElementById("modal-assiduite-module").textContent =
|
||||||
assiduite.moduleimpl_id;
|
assiduite.moduleimpl_id;
|
||||||
document.getElementById("modal-assiduite-deb").textContent = formatDateModal(
|
document.getElementById("modal-assiduite-deb").textContent = formatDateModal(
|
||||||
@ -438,7 +438,7 @@
|
|||||||
userIdDiv.textContent = `saisi le ${formatDateModal(
|
userIdDiv.textContent = `saisi le ${formatDateModal(
|
||||||
assiduite.entry_date,
|
assiduite.entry_date,
|
||||||
"à"
|
"à"
|
||||||
)} \npar ${getUserFromId(assiduite.user_id)}`;
|
)} \npar ${assiduite.user_id}`;
|
||||||
infoContainer.appendChild(userIdDiv);
|
infoContainer.appendChild(userIdDiv);
|
||||||
|
|
||||||
el.appendChild(infoContainer);
|
el.appendChild(infoContainer);
|
||||||
|
@ -162,7 +162,7 @@
|
|||||||
userIdDiv.textContent = `saisi le ${formatDateModal(
|
userIdDiv.textContent = `saisi le ${formatDateModal(
|
||||||
assiduite.entry_date,
|
assiduite.entry_date,
|
||||||
"à"
|
"à"
|
||||||
)} \npar ${getUserFromId(assiduite.user_id)}`;
|
)} \npar ${assiduite.user_id}`;
|
||||||
bubble.appendChild(userIdDiv);
|
bubble.appendChild(userIdDiv);
|
||||||
|
|
||||||
bubble.style.left = `${event.clientX - bubble.offsetWidth / 2}px`;
|
bubble.style.left = `${event.clientX - bubble.offsetWidth / 2}px`;
|
||||||
|
@ -124,7 +124,7 @@
|
|||||||
async_get(
|
async_get(
|
||||||
path,
|
path,
|
||||||
(data) => {
|
(data) => {
|
||||||
const user = getUserFromId(data.user_id);
|
const user = data.user_id;
|
||||||
const module = getModuleImpl(data.moduleimpl_id);
|
const module = getModuleImpl(data.moduleimpl_id);
|
||||||
|
|
||||||
const date_debut = moment.tz(data.date_debut, TIMEZONE).format("DD/MM/YYYY HH:mm");
|
const date_debut = moment.tz(data.date_debut, TIMEZONE).format("DD/MM/YYYY HH:mm");
|
||||||
|
@ -119,7 +119,7 @@
|
|||||||
async_get(
|
async_get(
|
||||||
path,
|
path,
|
||||||
(data) => {
|
(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_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 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");
|
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("/")
|
||||||
@bp.route("/index_html")
|
@bp.route("/index_html")
|
||||||
@scodoc
|
@scodoc
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoJustifChange)
|
||||||
def index_html():
|
def index_html():
|
||||||
"""Gestionnaire assiduités, page principale"""
|
"""Gestionnaire assiduités, page principale"""
|
||||||
H = [
|
H = [
|
||||||
@ -174,7 +174,7 @@ def index_html():
|
|||||||
|
|
||||||
@bp.route("/SignaleAssiduiteEtud")
|
@bp.route("/SignaleAssiduiteEtud")
|
||||||
@scodoc
|
@scodoc
|
||||||
@permission_required(Permission.ScoAbsChange)
|
@permission_required(Permission.ScoAssiduiteChange)
|
||||||
def signal_assiduites_etud():
|
def signal_assiduites_etud():
|
||||||
"""
|
"""
|
||||||
signal_assiduites_etud Saisie de l'assiduité d'un étudiant
|
signal_assiduites_etud Saisie de l'assiduité d'un étudiant
|
||||||
@ -242,7 +242,7 @@ def signal_assiduites_etud():
|
|||||||
|
|
||||||
@bp.route("/ListeAssiduitesEtud")
|
@bp.route("/ListeAssiduitesEtud")
|
||||||
@scodoc
|
@scodoc
|
||||||
@permission_required(Permission.ScoAbsChange)
|
@permission_required(Permission.ScoView)
|
||||||
def liste_assiduites_etud():
|
def liste_assiduites_etud():
|
||||||
"""
|
"""
|
||||||
liste_assiduites_etud Affichage de toutes les assiduites et justificatifs d'un etudiant
|
liste_assiduites_etud Affichage de toutes les assiduites et justificatifs d'un etudiant
|
||||||
@ -284,7 +284,7 @@ def liste_assiduites_etud():
|
|||||||
|
|
||||||
@bp.route("/BilanEtud")
|
@bp.route("/BilanEtud")
|
||||||
@scodoc
|
@scodoc
|
||||||
@permission_required(Permission.ScoAbsChange)
|
@permission_required(Permission.ScoView)
|
||||||
def bilan_etud():
|
def bilan_etud():
|
||||||
"""
|
"""
|
||||||
bilan_etud Affichage de toutes les assiduites et justificatifs d'un etudiant
|
bilan_etud Affichage de toutes les assiduites et justificatifs d'un etudiant
|
||||||
@ -338,7 +338,7 @@ def bilan_etud():
|
|||||||
|
|
||||||
@bp.route("/AjoutJustificatifEtud")
|
@bp.route("/AjoutJustificatifEtud")
|
||||||
@scodoc
|
@scodoc
|
||||||
@permission_required(Permission.ScoAbsChange)
|
@permission_required(Permission.ScoJustifChange)
|
||||||
def ajout_justificatif_etud():
|
def ajout_justificatif_etud():
|
||||||
"""
|
"""
|
||||||
ajout_justificatif_etud : Affichage et création/modification des justificatifs de l'étudiant
|
ajout_justificatif_etud : Affichage et création/modification des justificatifs de l'étudiant
|
||||||
@ -423,7 +423,7 @@ def calendrier_etud():
|
|||||||
|
|
||||||
@bp.route("/SignalAssiduiteGr")
|
@bp.route("/SignalAssiduiteGr")
|
||||||
@scodoc
|
@scodoc
|
||||||
@permission_required(Permission.ScoAbsChange)
|
@permission_required(Permission.ScoAssiduiteChange)
|
||||||
def signal_assiduites_group():
|
def signal_assiduites_group():
|
||||||
"""
|
"""
|
||||||
signal_assiduites_group Saisie des assiduités des groupes pour le jour donnée
|
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")
|
@bp.route("/SignalAssiduiteDifferee")
|
||||||
@scodoc
|
@scodoc
|
||||||
@permission_required(Permission.ScoAbsChange)
|
@permission_required(Permission.ScoAssiduiteChange)
|
||||||
def signal_assiduites_diff():
|
def signal_assiduites_diff():
|
||||||
group_ids: list[int] = request.args.get("group_ids", None)
|
group_ids: list[int] = request.args.get("group_ids", None)
|
||||||
formsemestre_id: int = request.args.get("formsemestre_id", -1)
|
formsemestre_id: int = request.args.get("formsemestre_id", -1)
|
||||||
|
Loading…
Reference in New Issue
Block a user