Update roles/permissions + autres détails

This commit is contained in:
Emmanuel Viennet 2023-09-30 10:06:15 +02:00
parent a57dd34bf9
commit 1154040ceb
13 changed files with 230 additions and 226 deletions

View File

@ -1,28 +1,35 @@
# Générer des bulletins en Python
# Générer des bulletins en Python
Il est possible de coder de nouveaux styles de bulletins de notes (web et/ou PDF), pour répondre précisément aux besoins de votre établissement.
Il est possible de coder de nouveaux styles de bulletins de notes (web et/ou
PDF), pour répondre précisément aux besoins de votre établissement.
Ce n'est pas très difficile, mais il faudra coder en langage Python avec pour le PDF la bibliothèque ReportLab (qui est bien documentée, [voir le guide](http://www.reportlab.com/software/opensource/rl-toolkit/guide/)).
Ce n'est pas très difficile, mais il faudra coder en langage Python avec pour le
PDF la bibliothèque ReportLab (qui est bien documentée, [voir le
guide](http://www.reportlab.com/software/opensource/rl-toolkit/guide/)).
ScoDoc demande la création d'un bulletin pour un étudiant donné dans semestre donné (`formsemestre_id`).
Le bulletin doit être rendu sous forme d'une liste d'objets PLATYPUS (voir le chapitre 5 du "User Guide" de ReportLab cité plus haut).
ScoDoc demande la création d'un bulletin pour un étudiant donné dans semestre
donné (`formsemestre_id`). Le bulletin doit être rendu sous forme d'une liste
d'objets PLATYPUS (voir le chapitre 5 du "User Guide" de ReportLab cité plus
haut).
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Attention (août 2011): nouvelle version, changement d'API: les informations ci-dessous s'appliquent à partir de la subversion 1047.
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
alt="/!\" /> Attention (août 2011): nouvelle version, changement d'API: les
informations ci-dessous s'appliquent à partir de la subversion 1047.
## Organisation
## Organisation
A minima, il vous faut créer un module python (fichier .py) qui se définira une classe chargée de générer vos bulletins.
A minima, il vous faut créer un module python (fichier .py) qui se définira une
classe chargée de générer vos bulletins.
Ce fichier doit être placé dans le répertoire `/opt/scodoc/instance/Products/ScoDoc`
Il faut aussi l'importer dans `sco_bulletins_generator.py` (voir tout à la fin de ce fichier).
Il faut aussi l'importer dans `sco_bulletins_generator.py` (voir tout à la fin
de ce fichier).
Voici un module minimal commenté (le fichier `sco_bulletins_example.py` est fournit avec ScoDoc):
```
#!python
# -*- mode: python -*-
# -*- coding: utf-8 -*-
Voici un module minimal commenté (le fichier `sco_bulletins_example.py` est
fournit avec ScoDoc):
```py
"""Génération d'un bulletin de note style "Exemple"
(commentaire libre ici)
"""
@ -47,7 +54,7 @@ class [BulletinGeneratorExample](BulletinGeneratorExample.md)(sco_bulletins_stan
# .bul_part_below(self, format=*) : infos sous la table
# .bul_signatures_pdf(self) : signatures
def bul_table(self, format=*):
def bul_table(self, fmt=*):
"""Défini la partie centrale de notre bulletin PDF.
Doit renvoyer une liste d'objets PLATYPUS
"""
@ -58,23 +65,27 @@ class [BulletinGeneratorExample](BulletinGeneratorExample.md)(sco_bulletins_stan
)
]
# Déclarer votre classe à [ScoDoc](ScoDoc.md):
sco_bulletins_generator.register_bulletin_class(BulletinGeneratorExample)
# Déclarer votre classe à ScoDoc
sco_bulletins_generator.register_bulletin_class(BulletinGeneratorExample)
```
Si l'on voulait générer aussi du HTML (pour la version web), il suffirait de le déclarer dans la liste `supported_formats` et que la méthode `bul_table()` renvoie une chaîne HTML si le paramètre format vaut `'html'`.
Si l'on voulait générer aussi du HTML (pour la version web), il suffirait de le
déclarer dans la liste `supported_formats` et que la méthode `bul_table()`
renvoie une chaîne HTML si le paramètre `fmt` vaut `'html'`.
Pour modifier l'en-tête du bulletin PDF (partie au dessus de la table), il faut surcharger la méthode `bul_title_pdf` qui elle aussi renvoie une liste d'objets PLATYPUS:
```
#!python
Pour modifier l'en-tête du bulletin PDF (partie au dessus de la table), il faut
surcharger la méthode `bul_title_pdf` qui elle aussi renvoie une liste d'objets
PLATYPUS:
```py
def bul_title_pdf(self):
...
```
De même, les informations placées sous la table principale sont renvoyées par la méthode `gen_part_below`:
```
#!python
```py
def gen_part_below(self, format=*):
"""Génère les informations placées sous la table de notes
(absences, appréciations, décisions de jury...)
@ -85,76 +96,47 @@ De même, les informations placées sous la table principale sont renvoyées par
...
```
et les signatures (seulement sur le PDF) par `bul_signatures_pdf`. Toutes ces méthodes renvoient des listes d'objets PLATYPUS quelconques.
et les signatures (seulement sur le PDF) par `bul_signatures_pdf`. Toutes ces
méthodes renvoient des listes d'objets PLATYPUS quelconques.
Vous pouvez partir d'un format de bulletin existant et proche de ce que voulez obtenir et définir une sous-classe modifiant (surchargeant) seulement les méthodes qui génèrent les éléments que vous voulez modifier.
Vous pouvez partir d'un format de bulletin existant et proche de ce que voulez
obtenir et définir une sous-classe modifiant (surchargeant) seulement les
méthodes qui génèrent les éléments que vous voulez modifier.
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Attention: ne pas modifier après coup le nom des classes de générateurs (ici `BulletinGeneratorExample`), car il va être stocké en base de données par ScoDoc.
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;"
alt="/!\" /> Attention: ne pas modifier après coup le nom des classes de
générateurs (ici `BulletinGeneratorExample`), car il va être stocké en base de
données par ScoDoc.
## Accès aux informations
La plupart des informations nécessaires sont accessibles via des attributs de
votre instance de générateur que ScoDoc aura positionné avant d'appeler vos
méthodes. Notamment:
* `self.formsemestre`: l'objet `FormSemestre`
* `self.infos`: un (grand) dictionnaire python avec la plupart des informations
préparée pour le bulletin à générer (voir plus loin);
* `self.version`: indique la version de bulletin demandée par l'utilisateur
("long" ou "short", vous pouvez en faire ce que bon vous semble);
## Le dictionnaire d'informations
L'attribut `infos` est un dictionnaire qui contient de très nombreuses
informations. il doit être utilisé en **lecture seule** (il est possible que des
informations soient partagées entre threads différents, aussi les modifier peut
avoir des effets indésirables). .
## Accès aux informations
La plupart des informations nécessaires sont accessibles via des attributs de votre instance de générateur que ScoDoc aura positionné avant d'appeler vos méthodes. Notamment:
* `self.infos`: un (grand) dictionnaire python avec la plupart des informations préparée pour le bulletin à générer (voir plus loin);
* `self.version`: indique la version de bulletin demandée par l'utilisateur ("long" ou "short", vous pouvez en faire ce que bon vous semble);
* `self.context`: contexte ScoDoc, permettant l'accès à l'API complète.
### Paramètres (préférences)
Tous les paramètres du semestre sont accessibles via leur nom. Voir la liste sur
la page [NomsPreferences](NomsPreferences.md).
## Le dictionnaire d'informations
L'attribut `infos` est un dictionnaire qui contient de très nombreuses informations. il doit être utilisé en **lecture seule** (il est possible que des informations soient partagées entre threads différents, aussi les modifier peut avoir des effets indésirables). .
Exemple: `infos['SCOLAR_FONT_SIZE']` est un entier, `infos['UnivName']` est le
nom de l'université.
### Paramètres (préférences)
Tous les paramètres du semestre sont accessibles via leur nom. Voir la liste sur la page [NomsPreferences](NomsPreferences.md).
Exemple: `infos['SCOLAR_FONT_SIZE']` est un entier, `infos['UnivName']` est le nom de l'université.
### Informations sur le semestre
Un semestre est représenté par un dictionnaire avec les attributs
suivants:
Type | Nom | Description | Exemple de valeur
----| --- | ---- | ---
int |semestre_id| Indice dans le parcours | 1
string |titre| | 'DUT GEII'
string |titre_num| | 'DUT GEII, semestre 1'
string |titreannee| | 'DUT GEII, semestre 1 FI 2011'
string |titremois| | 'DUT GEII, semestre 1 FI (Mars 2011 - Jul 2011)'
string |annee_debut| | '2011'
string |annee_fin| | '2011'
| anneescolaire| | '2010 - 2011'
string |date_debut| | '09/03/2011'
| date_debut_iso| | '2011-03-09'
| date_fin| | '31/07/2011'
| date_fin_iso| | '2011-07-31'
| dateord| | '2011-03-09'
| mois_debut| | 'Mars 2011'
int |mois_debut_ord| | 3
| mois_fin| | 'Jul 2011'
int |mois_fin_ord| | 7
string |modalite| | 'FI'
string |etape_apo| Code étape Apogée | 'V1TR2'
string |etape_apo2| Code étape Apogée (si 2 codes) | *
string |etat| verrouillé ('0') ou non ('1') | '1'
| formation_id| id interne de la formation | 'FORM14570'
| formsemestre_id| id interne du semestre | 'SEM15176'
string |gestion_compensation| | '0'
string |gestion_semestrielle| | '0'
string |responsable_id| | 'viennet'
int {0,1} |ens_can_edit_eval| | 0
int {0,1}|resp_can_change_ens| | 0
int {0,1} |resp_can_edit| | 0
string |bul_bgcolor| | *
string |bul_hide_xml| | '0'
Pour le semestre à traiter, ces attributs sont directement dans `infos`.
On trouve aussi dans `infos['etud']` tous les semestres par lesquels
est passé l'étudiant.
### Informations sur l'étudiant
### Informations sur l'étudiant
#### Identité
@ -377,17 +359,17 @@ Le module (tel que décrit dans le programme de la formation) est représenté p
**Etat d'une évaluation:**
Le champ `etat` d'une évaluation ets un dict donnant des informations sur les résultats de la promo (et des groupes) dans cette évaluation:
Le champ `etat` d'une évaluation est un dict donnant des informations sur les résultats de la promo (et des groupes) dans cette évaluation:
Type | Nom | Description | Exemple de valeur
Type | Nom | Description | Exemple de valeur
----| --- | ---- | ---
bool | evalattente | | False
bool | evalcomplete | | True
| evaluation_id | id interne | 'EVAL15226'
bool | evalattente | | False
bool | evalcomplete | | True
| evaluation_id | id interne | 15226
list | gr_incomplets | | []
list | gr_moyennes | | []
list | groups | liste des groupes | {}
datetime | last_modif | | <mx.DateTime.DateTime object>
datetime | last_modif | | datetime
string | median | note médianne promo | '11.00'
string | moy | note moyenne promo | '11.00'
| nb_abs | nb étudiants absents | 0

View File

@ -1,96 +1,83 @@
# Rôles définis dans l'installation standard
# Rôles et permissions définis dans l'installation standard
🚧 *cette page est ancienne et à revoir*.
La page [ConfigPermissionsDept](ConfigPermissionsDept.md) introduit les notions
de rôles et de permissions.
Voir aussi sur les rôles et leur utilisation la page [ConfigPermissionsDept](ConfigPermissionsDept.md)
Ci-dessous la liste des permissions, qui est utile notamment pour les
utilisateurs de l'API.
Les informations ci-dessous ne sont utiles que pour les développeurs ou pour des usages avancés de ScoDoc.
## Liste des permissions
## Principales permissions et fonctions associées
* **AbsAddBillet** : Saisir des billets d'absences
* **AbsChange** : Saisir des absences
* **AbsJustifView** : Visualisation des fichiers justificatifs
* **EditAllEvals** : Modifier toutes les évaluations
* **EditAllNotes** : Modifier toutes les notes
* **EditApogee** : Gérer les exports Apogée
* **EditFormSemestre** : Mettre en place une formation (créer un semestre)
* **EditFormation** : Changer les formations
* **EditFormationTags** : Tagguer les formations
* **EditPreferences** : Modifier les préférences
* **EnsView** : Voir les parties pour les enseignants
* **EtudAddAnnotations** : Éditer les annotations
* **EtudChangeAdr** : Changer les adresses d'étudiants
* **EtudChangeGroups** : Modifier les groupes
* **EtudInscrit** : Inscrire des étudiants
* **Observateur** : Observer (accès lecture restreint aux bulletins)
* **RelationsEntrepEdit** : Modifier les entreprises
* **RelationsEntrepExport** : Exporter les données de l'application relations entreprises
* **RelationsEntrepSend** : Envoyer des offres
* **RelationsEntrepValidate** : Valide les entreprises
* **RelationsEntrepView** : Voir l'application relations entreprises
* **RelationsEntrepViewCorrs** : Voir les correspondants
* **ScoSuperAdmin** : Super Administrateur
* **ScoView** : Voir
* **UsersAdmin** : Gérer les utilisateurs (de son département)
* **UsersChangeCASId** : Paramétrer l'id CAS
* **UsersView** : Voir les utilisateurs (de tous les départements)
### Liste des permissions Zope
## Rôles
Les permissions utilisées par ScoDoc ont des noms qui commencent par "Sco", de façon à les grouper dans l'interface de Zope (ZMI), qui est peu pratique.
Les rôles peuvent êtres associés à un nombre quelconque de permissions.
Pour changer ces permissions (plus précisément pour associer les permissions à des rôles), aller dans l'onglet "Security" du dossier "Dept" (celui qui *contient* l'instance de ScoDoc, habituellement nommée "Scolarite").
ScoDoc définit un certain nombre de rôles *standards* (`Ens`, `Secr`, ...) mais
l'administrateur peut facilement définir de nouveaux rôles et leur associer un
ensemble de permissions.
Voici les permissions utilisées:
## Gestion des utilisateurs
* **Sco View** : voir les pages de ScoDoc (à réserver aux enseignants et administratifs)
* **Sco View Ens** : voir les parties réservées aux enseignants (à l'exclusion des secrétariats)
* **Sco Modifier toutes notes** : modifier toutes les notes (dans tous les semestres)
* **Sco Modifier toutes les evaluations** : créer/modifier/supprimer des évaluations dans tous les semestres (mais pas saisir des notes)
* **Sco Change Formation** : créer/modifier/supprimer des formations (programmes pédagogiques)
* **Sco Implement Formation** : mettre en place des semestres (sessions) de formation
* **Sco Change Absences** : saisir des absences
* **Sco Change Etud Address** : changer les adresses des étudiants
* **Sco Change Etud Groups** : changer les groupes des étudiants
* **Sco Inscrire Etud** : inscrire des étudiants
* **Sco Etud Add Annotations** : ajouter des annotations sur les étudiants
* **Sco View Entreprises** : accéder au fichier d'entreprises
* **Sco Change Entreprises** : modifier le fichier d'entreprises
* **Sco Users Admin** : voir et modifier les utilisateurs ScoDoc
* **Sco Users View** : voir les utilisateurs ScoDoc
* **Sco Change Preferences** : modifier les préférences du département
* **Sco Super Admin** : réservé à l'administrateur (création de départements)
Pour la liste à jour des permissions et leur nom complet, et les associations initiales rôles/permissions, voir le fichier `sco_permissions.py` dans les sources.
### Rôles associés à chaque permission dans chaque département
Les rôles listés ici sont ceux définis dans chaque département (`Admin` réfère donc à l'`AdminXXX` du département `XXX`, à ne pas confondre avec l'utilisateur `admin`).
Permission |  Rôles... | | &nbsp; |
-----------------------------|--------------|--------|---------|
**`ScoView`** | `Ens` | `Secr` | `Admin` |
**`ScoEnsView`** | `Ens` | | `Admin` |
**`ScoUsersView`** | `Ens` | `Secr` | `Admin` |
**`ScoEtudAddAnnotations`** | `Ens` | `Secr` | `Admin` |
**`ScoAbsChange`** | `Ens` | `Secr` | `Admin` |
**`ScoEntrepriseView`** | `Ens` | `Secr` | `Admin` |
**`ScoEntrepriseChange`** | | `Secr` | `Admin` |
**`ScoEtudChangeAdr`** | | `Secr` | `Admin` |
**`ScoChangeFormation`** | | | `Admin` |
**`ScoEditAllNotes`** | | | `Admin` |
**`ScoEditAllEvals`** | | | `Admin` |
**`ScoImplement`** | | | `Admin` |
**`ScoEtudChangeGroups`** | | | `Admin` |
**`ScoEtudInscrit`** | | | `Admin` |
**`ScoUsersAdmin`** | | | `Admin` |
**`ScoChangePreferences`** | | | `Admin` |
## Gestion des utilisateurs
Les utilisateurs sont associés à un département principal et à des rôles.
Le fait d'être, ou non, associé à un département est important:
* pour tous les utilisateurs: hormis le SuperAdmin, seuls les administrateurs du département d'appartenance sont habilités à modifier les caractéristiques principales (nom, prenom, email, mot de passe) de cet utilsateur
* pour les responsables (rôle `AdminXXX`. En effet, si le responsable est associé à un département, *il ne pourra créer des utilisateurs que dans ce département*
(c'est en général ce qu'on veut pour un chef de département, qui "recrute" des enseignant uniquement dans son département).
Pour la gestion des rôles, l'administrateur d'un département peut ajouter ou supprimer les rôles *de ce département* à n'importe quel utilisateur, y compris à ceux qui ne sont pas du même département
* pour tous les utilisateurs: hormis le SuperAdmin, seuls les administrateurs du
département d'appartenance sont habilités à modifier les caractéristiques
principales (nom, prenom, email, mot de passe) de cet utilisateur.
* pour les responsables (rôle `Admin_XXX`). En effet, si le responsable est
associé à un département, *il ne pourra créer des utilisateurs que dans ce
département* (c'est en général ce qu'on veut pour un chef de département, qui
"recrute" des enseignant uniquement dans son département).
Exemple: si PAUL est du département GEII et a les rôles AdminGEII et AdminCJ
* Il pourra créer des utilisateurs uniquement dans le département GEII
* il pourra ajouter ou retirer les rôles EnsGEII, SecrGEII, AdminGEII à tout utilisateur de scodoc
* il pourra ajouter ou retirer les rôles EnsCJ, SecrCJ, AdminCJ à tout utilisateur de scodoc
Pour la gestion des rôles, l'administrateur d'un département peut ajouter ou
supprimer les rôles *de ce département* à n'importe quel utilisateur, y compris
à ceux qui ne sont pas du même département.
Exemple: si Paul est du département GEII et a les rôles `Admin_GEII` et `Admin_CJ`
* Il pourra *créer* des utilisateurs *uniquement dans son département d'origine*, GEII;
* Il pourra ajouter ou retirer les rôles `Ens_GEII`, `Secr_GEII`, `Admin_GEII` à tout
utilisateur de ScoDoc;
* Il pourra ajouter ou retirer les rôles `Ens_CJ`, `Secr_CJ`, `Admin_CJ` à tout
utilisateur de ScoDoc.
Plus d'informations techniques sur la page [AdminUsers](AdminUsers.md).
!!! note "Voir aussi"
- [Introduction aux rôles et permissions](ConfigPermissionsDept.md)
- [Gestion des utilisateurs](AdminUsers.md)
- [Config. des rôles et permissions en ligne de commande](GuideConfig.md#creation-dun-nouveau-role)
- [Guide administrateur ScoDoc](GuideAdminSys.md)
- [FAQ](FAQ.md)
- [Contacts](Contact.md)

View File

@ -1,14 +1,12 @@
# Rôles et permissions dans ScoDoc
ScoDoc défini par défaut quatre rôles principaux (d'autres sont prévus,
notamment pour le module relations entreprises):
ScoDoc défini par défaut quatre rôles principaux (d'autres sont prévus, notamment pour le module
relations entreprises):
- Administrateur
- Secrétariat
- Enseignant
- Observateur
* Administrateur
* Secrétariat
* Enseignant
* Observateur
Par ailleurs, le contexte d'utilisation donne certains privilèges (par exemple
la faculté de saisir des notes, de justifier des absences, de modifier la
@ -16,16 +14,15 @@ définition des programmes, ...).
## Exemple
L'utilisateur 'Dupont' est responsable ScoDoc pour son département *RT* mais
intervient également en enseignement au département *GEII*.
On pourra lui attribuer les rôles `AdminRT` et `EnsGEII`, ce qui lui permettra :
L'utilisateur *Dupont* est responsable ScoDoc pour son département *RT* mais
intervient également en enseignement au département *GEII*. On pourra lui
attribuer les rôles `Admin_RT` et `Ens_GEII`, ce qui lui permettra :
- de gérer les utilisateurs du (seul) département RT :
Privilèges associés : `Gérer les utlisateurs (Sco Users Manage)`, `Changer les
formations (Sco Change Formation)`, ...
- d'accéder aux vues enseignant pour le département GEII :
Privilèges associés : `Voir les parties pour les enseignants (Sco View Ens)`,
`Saisir des absences (Sco Change Absences)`, ...
* de gérer les utilisateurs du (seul) département RT :
Privilèges associés : `Gérer les utilisateurs`, `Changer les formations`, ...
* d'accéder aux vues enseignant pour le département GEII :
Privilèges associés : `Voir les parties pour les enseignants`,
`Saisir des absences`, ...
Pour une description plus fine des permissions, voir
[ConfigPermissions](ConfigPermissions.md).
@ -34,34 +31,52 @@ Pour une description plus fine des permissions, voir
`XXX` désigne typiquement le nom du département ("RT" ou "GEA").
* `AdminXXX`: toutes opérations ScoDoc (chef de département, et éventuellement un ou deux collaborateurs de confiance);
* `Admin_XXX`: toutes opérations ScoDoc (chef de département, et éventuellement
un ou deux collaborateurs de confiance);
* `EnsXXX`: enseignant du département;
* `Ens_XXX`: enseignant du département;
* `SecrXXX`: secrétaire du département.
* `Secr_XXX`: secrétaire du département.
L'installation standard défini aussi un utilisateur "*admin*", qui a le rôle "Manager", ce qui lui confère normalement tous les droits sur toutes les parties du site. L'usage de cet utilisateur particulier devrait être réduit à la création de nouveaux départements, et son mot de passe ne devrait pas être divulgué aux utilisateurs de ScoDoc.
L'installation standard défini aussi un utilisateur "*admin*", qui a le rôle
"Manager", ce qui lui confère normalement tous les droits sur toutes les parties
du site. L'usage de cet utilisateur particulier devrait être réduit à la
création de nouveaux départements, et son mot de passe ne devrait pas être
divulgué aux utilisateurs de ScoDoc.
Les utilisateurs sont associés à des rôles et à un (et un seul) département principal.
Les utilisateurs sont associés à des rôles et à un (et un seul) département
principal.
Un utilisateur peut avoir un nombre quelconque de rôles dans différents départements.
Un utilisateur peut avoir un nombre quelconque de rôles dans différents
départements.
Le département de rattachement est utile pour indiquer qui (quel administrateur) a le droit de modifier l'utilisateur (lui changer son mot de passe, etc), mais n'influe pas sur les permissions accordées à l'utilisateur (sauf pour les administrateurs).
Le département de rattachement est utile pour indiquer qui (quel administrateur)
a le droit de modifier l'utilisateur (lui changer son mot de passe, etc), mais
n'influe pas sur les permissions accordées à l'utilisateur (sauf pour les
administrateurs).
Le fait d'être, ou non, associé à un département est important pour les responsables (rôle `AdminXXX`. En effet, si le responsable est associé à un département, il ne pourra créer des utilisateurs que dans ce département (c'est en général ce qu'on veut pour un chef de département, qui "recrute" des enseignant uniquement dans son département).
Le fait d'être, ou non, associé à un département est important pour les
responsables (rôle `Admin_XXX`. En effet, si le responsable est associé à un
département, il ne pourra créer des utilisateurs que dans ce département (c'est
en général ce qu'on veut pour un chef de département, qui "recrute" des
enseignant uniquement dans son département).
## Permissions dépendantes du contexte
Outre les rôles associés à chaque utilisateur, le calcul des autorisations dépend du contexte de l'opération. Par exemple, un responsable de semestre a des droits particulier sur ce semestre, ou encore un responsable de module sur la saisie des notes dans ce module.
Outre les rôles associés à chaque utilisateur, le calcul des autorisations
dépend du contexte de l'opération. Par exemple, un responsable de semestre a des
droits particulier sur ce semestre, ou encore un responsable de module sur la
saisie des notes dans ce module.
### Qui peut saisir des notes ?
### Qui peut saisir des notes ?
Peuvent saisir des notes dans une évaluation située dans un module:
* le ou les administrateurs (rôle `AdminXXX`, où `XXX` est le département);
* le ou les administrateurs (rôle `Admin_XXX`, où `XXX` est le département);
* le responsable du semestre (directeur des études);
* le responsable du module;
* les enseignants "associés" au module (en général des collègues désignés par le responsable de module ou le directeur des études).
* les enseignants "associés" au module (en général des collègues désignés par le
responsable de module ou le directeur des études).
!!! note "Voir aussi"

View File

@ -5,12 +5,12 @@ Quelques indications pour développer avec ScoDoc, à adapter à vos goûts et o
Commencez par lire
[Installation du code pour les développeurs](https://scodoc.org/git/ScoDoc/ScoDoc#pour-les-d%C3%A9veloppeurs)
# Machine virtuelle
## Machine virtuelle
Il est confortable de développer dans une VM (un container Docker ferait
aussi bien l'affaire).
## Conseils pour la machine virtuelle
### Conseils pour la machine virtuelle
[VirtualBox](https://www.virtualbox.org/) est facile à installer sur Linux ou
Windows. Créer une VM avec Debian 10, et suivre la [procédure habituelle
@ -73,6 +73,7 @@ avec connexion permanente, vous pouvez dans Debian activer cette interface
constamment (modifier `/etc/network/interfaces`).
### Noms des machines
Modifier le `/etc/hosts` (ou équivalent) de l'hôte, et y ajouter l'IP de votre
VM, par exemple (adapter l'IP !):

View File

@ -55,7 +55,7 @@ décorateurs:
```
@bp.route("/un_exemple")
@scodoc
@permission_required(Permission.ScoChangeFormation)
@permission_required(Permission.EditFormation)
def un_exemple():
# Récupérer le ou les arguments: exemple avec formation_id
formation_id = int(request.args["formation_id"])

View File

@ -130,6 +130,18 @@ Pour régénérer le fichier indiquant la liste des paquets:
pip freeze > requirements-3.11.txt
```
Enfin, pour mettre à jour les paquets pip, il faut dégeler les versions (unpin)
puis upgrader et re-générer le fichier, comme suit:
```bash
cp requirements-3.11.txt requirements.text
sed -i 's/[~=]=/>=/' requirements.txt
pip install -U -r requirements.txt
pip freeze > requirements-new.txt
# et si tout va bien
mv requirements-new.txt requirements-3.11.txt
```
Note: la mise à jour par `apt` recrée le virtualenv à chaque fois.
## Roadmap

View File

@ -41,7 +41,7 @@ Les droits à accorder dépendent des fonctionnalités nécessaires. la permissi
`ScoView` est généralement suffisante car elle permet toutes les consultations.
Cependant si, par l'API, on veut effectuer des opérations de modification ou
encore consulter les comptes utilisateurs, d'autres droits (`ScoChangeGroups`,
`ScoUsersView`, `ScoSuperAdmin`, ...) peuvent être requis. La consultation du
`UsersView`, `ScoSuperAdmin`, ...) peuvent être requis. La consultation du
[tableau récapitulatif](#tableau-recapitulatif-des-entrees-de-lapi) ou la ligne
`permission`de chaque entrée vous donnera la permission requise pour chaque
opération.
@ -1082,7 +1082,7 @@ d'un autre).
#### **roles**
* **Méthode:** GET
* **Permission: `ScoUsersView`**
* **Permission: `UsersView`**
* **Routes:** `/roles`
* **Exemple d'utilisation:** `/roles`
* **Résultat:** Liste de tous les rôles.
@ -1091,7 +1091,7 @@ d'un autre).
#### **role**
* **Méthode:** GET
* **Permission: `ScoUsersView`**
* **Permission: `UsersView`**
* **Routes:** `/role/<str:role_name>`
* **Exemple d'utilisation:** `/role/Ens`
* **Résultat:** Liste le rôle indiqué. 404 si inexistant.
@ -1125,7 +1125,7 @@ d'un autre).
* **Routes:** `/role/create/<str:role_name>`
* **Exemple d'utilisation:** `/role/create/LaveurDecarreaux`
> `{ "permissions" : [ 'ScoView', 'ScoUsersView' ] }`
> `{ "permissions" : [ 'ScoView', 'UsersView' ] }`
* **Résultat:** Crée un nouveau rôle, avec les permissions indiquées.
* **Exemple de résultat:** [role-create.json](samples/sample_role-create.json.md)
@ -1157,7 +1157,7 @@ d'un autre).
#### **user**
* **Méthode:** GET
* **Permission: `ScoUsersView`**
* **Permission: `UsersView`**
* **Paramètres:** `user_id`
* **Route:** `/user/<int:user_id>`
* **Exemple d'utilisation:** `/api/user/1`
@ -1167,7 +1167,7 @@ d'un autre).
#### **`user-create`**
* **Méthode: POST**
* **Permission: `ScoUsersAdmin`**
* **Permission: `UsersAdmin`**
* **Data:**
```json
@ -1189,7 +1189,7 @@ d'un autre).
#### **`users-query`**
* **Méthode:** GET
* **Permission: `ScoUsersView`**
* **Permission: `UsersView`**
* **Routes:**
* `/users/query?departement=dept_acronym&active=1&starts_with=<str:nom>`
@ -1202,7 +1202,7 @@ d'un autre).
#### **`user-edit`**
* **Méthode: POST**
* **Permission: `ScoUsersAdmin`**
* **Permission: `UsersAdmin`**
* **Data:**
```json
@ -1221,7 +1221,7 @@ d'un autre).
#### **`user-password`**
* **Méthode: POST**
* **Permission: `ScoUsersAdmin`**
* **Permission: `UsersAdmin`**
* **Data:** `{ "password": str }`
* **Routes:** `/user/<int:uid>/password`
* **Exemple d'utilisation:** `/user/3/password`
@ -1254,7 +1254,7 @@ d'un autre).
#### **`user-role-remove`**
* **Méthode: POST**
* **Permission: `ScoUsersAdmin`**
* **Permission: `UsersAdmin`**
* **Routes:** `/user/<int:uid>/role/<str:role_name>/remove[/departement/<string:dept_acronym>]`
* **Résultat:** Retire le rôle à l'utilisateur.
* **Exemple de résultat:** [user-role-remove.json](samples/sample_user-role-remove.json.md)
@ -1262,7 +1262,7 @@ d'un autre).
#### **`permissions`**
* **Méthode:** GET
* **Permission: `ScoUsersView`**
* **Permission: `UsersView`**
* **Routes:** `/permissions`
* **Résultat:** Liste des noms des permissions. Ces permissions ne sont pas
modifiables, mais de nouvelles peuvent apparaitre lors des mises à jour du

View File

@ -107,10 +107,17 @@ et si besoin le stopper avec :
systemctl stop scodoc9
```
## En cas de problème avec proxmox
## Problème avec proxmox
Pour l'instant on ne nous a pas signalé de problèmes, mais au cas où ce lien
peut servir: [Debian 12 et proxmox](https://www.abyssproject.net/2023/07/retex-sur-mes-upgrades-vers-debian-12-et-proxmox-ve-8)
Si votre installation utilise des containers LXC/proxmox: on nous a signalé un
problème de compatibilité proxmox / Debian 12, qui bloque le service REDIS
(voire empêche le démarrage du container). Il semblerait que proxmox 7 ne soit
pas compatible avec Debian 12. Faites des essais avant de migrer ScoDoc.
Au cas où ce lien peut servir: [Debian 12 et
proxmox](https://www.abyssproject.net/2023/07/retex-sur-mes-upgrades-vers-debian-12-et-proxmox-ve-8)
Merci de vos retours si vous avez des informations sur ce problème.
## Upgrade Postgresql

View File

@ -1,11 +1,11 @@
### role-add_permission
#### POST /role/customRole/add_permission/ScoUsersView
#### POST /role/customRole/add_permission/UsersView
```json
{
"id": 13,
"permissions": [
"ScoUsersView",
"UsersView",
"ScoView"
],
"role_name": "customRole"

View File

@ -3,13 +3,13 @@
#### POST /role/create/customRole
> `Content-Type: application/json`
>
> `{"permissions": ["ScoView", "ScoUsersView"]}`
> `{"permissions": ["ScoView", "UsersView"]}`
```json
{
"id": 13,
"permissions": [
"ScoUsersView",
"UsersView",
"ScoView"
],
"role_name": "customRole"

View File

@ -1,6 +1,6 @@
### role-remove_permission
#### POST /role/customRole/remove_permission/ScoUsersView
#### POST /role/customRole/remove_permission/UsersView
```json
{
"id": 13,

View File

@ -5,7 +5,7 @@
{
"id": 1,
"permissions": [
"ScoObservateur"
"Observateur"
],
"role_name": "Observateur"
}

View File

@ -6,7 +6,7 @@
{
"id": 1,
"permissions": [
"ScoObservateur"
"Observateur"
],
"role_name": "Observateur"
},
@ -17,9 +17,9 @@
"ScoEtudAddAnnotations",
"ScoAbsAddBillet",
"ScoAbsChange",
"ScoUsersView",
"ScoObservateur",
"ScoEnsView",
"UsersView",
"Observateur",
"EnsView",
"ScoView"
],
"role_name": "Ens"