forked from ScoDoc/DocScoDoc
Compare commits
6 Commits
8ce4ca0f28
...
8ce0af10e8
Author | SHA1 | Date | |
---|---|---|---|
|
8ce0af10e8 | ||
beca815be2 | |||
9b290fe0fa | |||
2082ae84ca | |||
bcf99e292d | |||
23a2609833 |
|
@ -256,5 +256,6 @@ messages d'erreurs.
|
||||||
|
|
||||||
- [Migration des absences vers les assiduités](AssiduitesMigration.md)
|
- [Migration des absences vers les assiduités](AssiduitesMigration.md)
|
||||||
- [API](ScoDoc9API.md) : API pour interfaçage avec d'autres applications
|
- [API](ScoDoc9API.md) : API pour interfaçage avec d'autres applications
|
||||||
|
- [API et fichiers justificatifs](FichiersJustificatifs)
|
||||||
- [FAQ](FAQ.md)
|
- [FAQ](FAQ.md)
|
||||||
- [Contacts](Contact.md)
|
- [Contacts](Contact.md)
|
||||||
|
|
|
@ -119,7 +119,7 @@ Soit vous prenez les versions les plus à jour disponibles. Une façon rapide de
|
||||||
faire ceci est:
|
faire ceci est:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cut -d= -f 1 requirements-3.9.txt | xargs pip install
|
cut -d= -f 1 requirements-3.11.txt | xargs pip install
|
||||||
```
|
```
|
||||||
|
|
||||||
à adapter selon vos objectifs.
|
à adapter selon vos objectifs.
|
||||||
|
@ -127,7 +127,7 @@ faire ceci est:
|
||||||
Pour régénérer le fichier indiquant la liste des paquets:
|
Pour régénérer le fichier indiquant la liste des paquets:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pip freeze > requirements-3.9.txt
|
pip freeze > requirements-3.11.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
Note: la mise à jour par `apt` recrée le virtualenv à chaque fois.
|
Note: la mise à jour par `apt` recrée le virtualenv à chaque fois.
|
||||||
|
|
|
@ -11,7 +11,7 @@ donc installer et configurer ScoDoc avec des connaissances réduites sur le
|
||||||
système Linux.
|
système Linux.
|
||||||
|
|
||||||
Cette documentation est prévue pour installer ScoDoc version 9 sur un système
|
Cette documentation est prévue pour installer ScoDoc version 9 sur un système
|
||||||
[Debian](http://www.debian.org) 11 (Bullseye, stable) s'exécutant sur une
|
[Debian](http://www.debian.org) 11 (Bullseye, oldstable) s'exécutant sur une
|
||||||
machine intel-like **64bits** (architecture **AMD64** sur Intel/AMD, ou
|
machine intel-like **64bits** (architecture **AMD64** sur Intel/AMD, ou
|
||||||
**aarch64** sur Apple ARM). Debian s'installe facilement en cinq minutes, sur
|
**aarch64** sur Apple ARM). Debian s'installe facilement en cinq minutes, sur
|
||||||
une machine normale ou un serveur virtualisé. Il est **vivement déconseillé** de
|
une machine normale ou un serveur virtualisé. Il est **vivement déconseillé** de
|
||||||
|
|
342
docs/GuideInstallDebian12.md
Normal file
342
docs/GuideInstallDebian12.md
Normal file
|
@ -0,0 +1,342 @@
|
||||||
|
|
||||||
|
# Installation de ScoDoc 9.6+ sur Debian 12 (Bookworm)
|
||||||
|
|
||||||
|
Ce document décrit la procédure d'installation et de configuration de ScoDoc
|
||||||
|
version 9.6 et suivantes.
|
||||||
|
|
||||||
|
Si vous mettez à jour une installation ScoDoc 9 existante (9.5 sous Debian 11
|
||||||
|
Bullseye), suivez la
|
||||||
|
[procédure de migration décrite sur cette page](UpgradeToDeb12Sco96.md).
|
||||||
|
|
||||||
|
La procédure décrite ici doit être effectué sur la machine serveur fraiche avec
|
||||||
|
un accès administrateur (root). **Ne pas l'utiliser pour migrer une installation existante**.
|
||||||
|
|
||||||
|
ScoDoc est livré avec des scripts d'installation qui configurer presque
|
||||||
|
automatiquement votre serveur (serveur web, base de données, etc): vous pouvez
|
||||||
|
donc installer et configurer ScoDoc avec des connaissances réduites sur le
|
||||||
|
système Linux.
|
||||||
|
|
||||||
|
Cette documentation est prévue pour installer ScoDoc version 9 sur un système
|
||||||
|
[Debian](http://www.debian.org) 12 (Bullseye, stable) s'exécutant sur une
|
||||||
|
machine intel-like **64bits** (architecture **AMD64** sur Intel/AMD, ou
|
||||||
|
**aarch64** sur Apple ARM). Debian s'installe facilement en cinq minutes, sur
|
||||||
|
une machine normale ou un serveur virtualisé. Il est **vivement déconseillé** de
|
||||||
|
tenter l'installation sur une autre version de Linux.
|
||||||
|
|
||||||
|
Merci de signaler tout problème [sur le Discord](https://discord.gg/ybw6ugtFsZ).
|
||||||
|
|
||||||
|
- Note: l'image du CD d'installation de Debian (amd64) peut se trouver ici:
|
||||||
|
[https://www.debian.org/CD/netinst/](https://www.debian.org/CD/netinst/),
|
||||||
|
choisir la version "petits CD" pour **amd64**
|
||||||
|
(*Il est indispensable d'utiliser une version 64 bits !*)
|
||||||
|
|
||||||
|
🚸 **Important:**
|
||||||
|
|
||||||
|
La procédure d'installation décrite ci-dessous suppose que ScoDoc va s'exécuter
|
||||||
|
sur un serveur dédié. Pour faire des tests, utilisez un serveur virtuel (comme
|
||||||
|
VirtualBox ou VMWare, ou UTM sur Mac). L'installation de ScoDoc va en effet
|
||||||
|
modifier de nombreux paramètres de votre système Linux (serveur web, firewall,
|
||||||
|
serveur SQL, messagerie, ...).
|
||||||
|
|
||||||
|
## 1) Préalable: configurer un serveur linux
|
||||||
|
|
||||||
|
Le serveur devrait être accessible depuis Internet.
|
||||||
|
|
||||||
|
### Configuration matérielle
|
||||||
|
|
||||||
|
- taille disque: prévoir au moins 24Go sur la partition où sera scodoc (en
|
||||||
|
général `/`).
|
||||||
|
|
||||||
|
- mémoire: prévoir au moins 8Go de RAM, et plutôt 12 ou 16.
|
||||||
|
|
||||||
|
### Informations sur les flux réseau
|
||||||
|
|
||||||
|
Le serveur est fréquemment installé sur un réseau protégé ou sur un VPN.
|
||||||
|
|
||||||
|
- le trafic entrant est sur le port 443 (le trafic http/80 est redirigé
|
||||||
|
vers le https).
|
||||||
|
|
||||||
|
- le serveur doit pouvoir envoyer du mail (serveur Postfix en local, à
|
||||||
|
configurer pour utiliser un relais smtp ou envoyer directement, selon votre
|
||||||
|
politique. Au besoin, pour le reconfigurer, lancer `dpkg-reconfigure postfix`);
|
||||||
|
|
||||||
|
- Les serveurs de mise à jour de Debian doivent être accessibles (en http,
|
||||||
|
voir `/etc/apt/sources.list`);
|
||||||
|
|
||||||
|
- Les serveurs `scodoc.org` et `scodoc.iutv.univ-paris13.fr` **doivent**
|
||||||
|
être accessibles (80 et 443).
|
||||||
|
|
||||||
|
### Installation Linux Debian
|
||||||
|
|
||||||
|
Nous recommandons d'effectuer une installation standard de Debian par le réseau
|
||||||
|
(netinst), et d'utiliser l'installation en mode texte, très simple et rapide.
|
||||||
|
Durant l'installation de Debian, lorsqu'il demande "logiciels à installer", tout
|
||||||
|
décocher sauf "Serveur SSH" et "Utilitaires standard du système". Le script
|
||||||
|
d'installation de ScoDoc se chargera ensuite d'installer tous les éléments
|
||||||
|
nécessaires (serveur web, messagerie, etc.).
|
||||||
|
|
||||||
|
🚸 *Veiller à sélectionner une locale `UTF-8` par défaut.*
|
||||||
|
|
||||||
|
![InstallDebian6-1.png](screens/InstallDebian6-1.png)
|
||||||
|
|
||||||
|
### Points à vérifier avant d'installer ScoDoc
|
||||||
|
|
||||||
|
Checklist minimale de votre système Linux Debian:
|
||||||
|
|
||||||
|
1. Connexion à Internet: le réseau doit être accessible. En effet, le script
|
||||||
|
d'installation va installer des paquetages du système Debian puis
|
||||||
|
télécharger la dernière mise à jour du logiciel ScoDoc (à partir du serveur
|
||||||
|
scodoc.org).
|
||||||
|
1. Vérifiez la connectivité, par exemple:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ping www.univ-paris13.fr
|
||||||
|
(quitter avec ctrl-c)
|
||||||
|
cd /tmp
|
||||||
|
wget --no-check-certificate https://scodoc.org
|
||||||
|
# doit créer un fichier index.html contenant du code HTML...
|
||||||
|
```
|
||||||
|
3. Nom DNS: le serveur doit avoir un nom ("serveur.exemple.fr") connu dans le
|
||||||
|
DNS (local ou public). Pour des tests, vous pouvez vous passer de DNS, mais
|
||||||
|
dans ce cas le nom de votre serveur sera son adresse IP (eg `192.168.0.10`) et
|
||||||
|
il ne sera peut être pas accessible de l'extérieur.
|
||||||
|
4. Mail: vérifiez que le serveur peut envoyer des e-mail: `mail
|
||||||
|
votre@adresse.fr`, puis entrer un message terminé par `ctrl-d`: si vous ne
|
||||||
|
recevez pas le message après quelques minutes, vérifiez votre configuration
|
||||||
|
(et le log `/var/log/mail.log`). Un serveur ScoDoc qui n'envoie pas de mail
|
||||||
|
ne peut pas vérifier ceux des utilisateurs, qui à leur tour ne pourront pas
|
||||||
|
changer leurs mots de passe (bien d'autres fonctions dépendent des mails).
|
||||||
|
Au besoin, revoir la configuration avec `dpkg-reconfigure postfix` (voir
|
||||||
|
aussi [envoi des courriers électroniques](ProblemesMail.md)).
|
||||||
|
|
||||||
|
1. Vérifiez que votre serveur est accessible depuis une autre machine de votre
|
||||||
|
réseau (voire d'Internet): par exemple `ping serveur.exemple.fr`.
|
||||||
|
1. Date et heure: vérifier que les dates et heure sont correctes, même après
|
||||||
|
reboot. L'utilisation d'un serveur de temps (ntp) est recommandée (
|
||||||
|
`apt-get install ntp`), et éventuellement `dpkg-reconfigure tzdata`).
|
||||||
|
1. Si vous avez installé à partir d'un support (DVD, clé USB...), pensez à le
|
||||||
|
retirer des sources Debian afin de ne pas bloquer les mises à jour (commenter
|
||||||
|
la ligne `deb cdrom:` dans le fichier `/etc/apt/sources.list`)
|
||||||
|
1. Cette liste est incomplète... et n'oubliez pas: avant de passer en
|
||||||
|
production, mettez en place des sauvegardes sérieuses !
|
||||||
|
|
||||||
|
#### Configuration si utilisation d'un proxy
|
||||||
|
|
||||||
|
Si votre accès à Internet passe par un proxy, l'indiquer au moment de
|
||||||
|
l'installation Debian.
|
||||||
|
|
||||||
|
Vérifiez aussi que ces variables sont bien définies dans `/etc/environment` (si
|
||||||
|
l'installeur Linux Debian ne les a pas déjà indiquées là, les ajouter ou créer
|
||||||
|
ce fichier):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# /etc/environment
|
||||||
|
export HTTP_PROXY=http://proxy.univ-xxx.fr:1234
|
||||||
|
export HTTPS_PROXY=http://proxy.univ-xxx.fr:1234
|
||||||
|
# Versions en minuscules utilisées par wget
|
||||||
|
export http_proxy="${HTTP_PROXY}"
|
||||||
|
export https_proxy="${HTTPS_PROXY}"
|
||||||
|
```
|
||||||
|
|
||||||
|
Ensuite, après installation du paquet scodoc9 (voir plus bas), il faudra
|
||||||
|
indiquer votre proxy: pour cela, éditer le fichier
|
||||||
|
|
||||||
|
```
|
||||||
|
/opt/scodoc/.env
|
||||||
|
```
|
||||||
|
|
||||||
|
et ajouter les variables d'environnement nécessaires. Typiquement, il s'agit de :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
HTTP_PROXY=http://proxy.univ-xxx.fr:1234
|
||||||
|
HTTPS_PROXY=http://proxy.univ-xxx.fr:1234
|
||||||
|
```
|
||||||
|
|
||||||
|
Après modification de ces fichiers (qui *doivent* être lisible par l'utilisateur `scodoc`),
|
||||||
|
redémarrer le service:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo systemctl restart scodoc9
|
||||||
|
```
|
||||||
|
|
||||||
|
Dans les cas compliqués, il est possible qu'il vous faille configurer d'autres
|
||||||
|
éléments, voir par exemple
|
||||||
|
[ce post sur Stack Overflow](https://stackoverflow.com/questions/9445489/performing-http-requests-with-curl-using-proxy).
|
||||||
|
|
||||||
|
#### Note sur l'install dans un container LXC
|
||||||
|
|
||||||
|
Il y a deux possibilités :
|
||||||
|
|
||||||
|
**Option 1**, si vous installez dans un container LXC privilégié via le compte
|
||||||
|
root et/ou sudo, attention: la config par défaut de Redis (un gestionnaire de
|
||||||
|
cache utilisé par ScoDoc) n'est pas compatible, en raison d'un problème de
|
||||||
|
système de fichier en lecture seule. Installer redis avant ScoDoc, comme suit:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
apt-get install redis
|
||||||
|
```
|
||||||
|
|
||||||
|
Puis créer un dossier `/etc/systemd/system/redis.service.d` contenant le fichier
|
||||||
|
`redis.conf` avec les lignes suivantes :
|
||||||
|
|
||||||
|
```text
|
||||||
|
[Service]
|
||||||
|
PrivateTmp=no
|
||||||
|
ProtectSystem=false
|
||||||
|
PrivateDevices=false
|
||||||
|
ProtectHome=no
|
||||||
|
ProtectControlGroups=no
|
||||||
|
ProtectKernelTunables=no
|
||||||
|
ProtectKernelModules=no
|
||||||
|
ReadWritePaths=
|
||||||
|
ReadOnlyDirectories=
|
||||||
|
```
|
||||||
|
|
||||||
|
Ensuite
|
||||||
|
|
||||||
|
```bash
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemctl start redis
|
||||||
|
```
|
||||||
|
|
||||||
|
... et poursuivez l'installation comme ci-dessous.
|
||||||
|
|
||||||
|
**Option 2**, si vous installez dans un container LXC non-privilégié via un
|
||||||
|
compte utilisateur normal, vous pouvez activer l'option « nesting »
|
||||||
|
(imbriqué) de LXC pour permettre à Redis de fonctionner normalement.
|
||||||
|
|
||||||
|
🚸 Attention ! N'activez pas le *nesting* sur un conteneur privilégié. Cela
|
||||||
|
provoquerait une faille de sécurité.
|
||||||
|
|
||||||
|
Si vous avez construit votre conteneur manuellement avec `lxc-create`, modifiez
|
||||||
|
le fichier `/var/lib/lxc/${nomDuConteneur}/config` et ajoutez les lignes
|
||||||
|
ci-dessous :
|
||||||
|
|
||||||
|
```text
|
||||||
|
lxc.apparmor.allow_nesting = 1
|
||||||
|
lxc.apparmor.profile = generated
|
||||||
|
```
|
||||||
|
|
||||||
|
Si vous utilisez un conteneur LXC sur l'hyperviseur Proxmox, modifiez le
|
||||||
|
fichier `/etc/pve/lxc/${CTID}.conf` et ajoutez la ligne suivante :
|
||||||
|
|
||||||
|
```text
|
||||||
|
features: nesting=1
|
||||||
|
```
|
||||||
|
|
||||||
|
... et poursuivez l'installation comme ci-dessous.
|
||||||
|
|
||||||
|
## 2) Installation de ScoDoc sur Debian
|
||||||
|
|
||||||
|
### 2.1) Charger le logiciel
|
||||||
|
|
||||||
|
🚸 Les commandes ci-dessous sont à exécuter dans un terminal ouvert en tant que
|
||||||
|
**root** sur le serveur. Vous pouvez utiliser `su` (ou `sudo su`) pour devenir
|
||||||
|
**root**).
|
||||||
|
|
||||||
|
Remarque: *Si ce n'est pas déjà le cas, vous avez intérêt à ouvrir une session
|
||||||
|
`ssh` (ou `putty`) depuis une machine normale, afin de pouvoir copier/coller
|
||||||
|
facilement les commandes et éditer les fichiers de configuration.*
|
||||||
|
|
||||||
|
|
||||||
|
- Ajouter le dépot scodoc: copier ce fichier <a href="/attachments/scodoc.list"
|
||||||
|
download>scodoc.list</a> dans `/etc/apt/sources.list.d/`
|
||||||
|
ou bien le créer afin qu'il contienne juste cette ligne:
|
||||||
|
|
||||||
|
```text
|
||||||
|
# contenu du fichier /etc/apt/sources.list.d/scodoc.list
|
||||||
|
deb http://scodoc.org/deb/bookworm bookworm main
|
||||||
|
```
|
||||||
|
|
||||||
|
- Installer la clé: en `root` sur le serveur, lancer
|
||||||
|
|
||||||
|
```bash
|
||||||
|
apt-get -y install gnupg
|
||||||
|
wget -O - https://scodoc.org/misc/scodoc-repo.gpg.key | apt-key add -
|
||||||
|
```
|
||||||
|
|
||||||
|
- Installer le logiciel:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
apt-get update
|
||||||
|
apt-get install nginx
|
||||||
|
```
|
||||||
|
S'assurer que le logiciel `nginx` s'est bien installé. En cas de problème se
|
||||||
|
référer à sa doc (par exemple, si
|
||||||
|
[votre serveur ne supporte pas
|
||||||
|
IPv6](https://techglimpse.com/nginx-error-address-family-solution/)).
|
||||||
|
|
||||||
|
Ensuite:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
apt-get install scodoc9
|
||||||
|
```
|
||||||
|
|
||||||
|
Notez que l'installation du paquet `scodoc9` va créer automatiquement un
|
||||||
|
utilisateur `scodoc` qui sera utilisé par le serveur.
|
||||||
|
|
||||||
|
- Attribuer un mot de passe à l'utilisateur `scodoc`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
passwd scodoc
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2.2) Configuration des logiciels et des données
|
||||||
|
|
||||||
|
Lancer le script suivant en tant que `root` sur votre serveur nouvellement installé:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
/opt/scodoc/tools/configure-scodoc9.sh
|
||||||
|
```
|
||||||
|
Vous devrez répondre à quelques questions et saisir le mot de passe que vous
|
||||||
|
attribuerez à l'utilisateur `admin`.
|
||||||
|
|
||||||
|
(note: pour en savoir plus sur ce script, [voir l'explication](GuideInstallDebian11Advanced.md))
|
||||||
|
|
||||||
|
### 3) **Lancer ScoDoc**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo su # se connecter en root
|
||||||
|
systemctl restart nginx
|
||||||
|
systemctl restart scodoc9
|
||||||
|
```
|
||||||
|
✨ et voila !
|
||||||
|
|
||||||
|
Visiter `https://monscodoc.mondomaine.fr/` pour achever la configuration et
|
||||||
|
utiliser le logiciel: voir la page [GuideConfig](GuideConfig.md).
|
||||||
|
|
||||||
|
## Importation des données ScoDoc 7
|
||||||
|
|
||||||
|
Si vous aviez une installation très ancienne avec ScoDoc 7, vous pouvez migrer
|
||||||
|
toutes vos données (comptes utilisateurs, étudiants, formations, notes, photos
|
||||||
|
et fichiers divers) depuis une l'ancien serveur ScoDoc 7, ou même en place.
|
||||||
|
|
||||||
|
Voir [la procédure de migration](MigrationScoDoc7a9.md).
|
||||||
|
|
||||||
|
## En cas de problème
|
||||||
|
|
||||||
|
Ne pas hésiter à nous contacter (voir [contacts](Contact.md)).
|
||||||
|
|
||||||
|
- Problèmes d'envoi de courrier électronique (mail): voir [ProblemesMail](ProblemesMail.md)
|
||||||
|
|
||||||
|
Nota: sur certains réseaux, l'autoconfiguration IPv6 pose problème (par exemple:
|
||||||
|
bloquage des envois de mails). Au besoin, il est possible de désactiver IPv6
|
||||||
|
(voir par exemple [ici](https://wiki.debian-fr.xyz/D%C3%A9sactiver_l%27IPv6)).
|
||||||
|
|
||||||
|
## Ensuite...
|
||||||
|
|
||||||
|
- Mettez en place des [sauvegardes](SauvegardesBases.md)
|
||||||
|
|
||||||
|
- Si vous le souhaitez, vous pouvez mettre en place un anti-virus pour
|
||||||
|
surveiller les fichiers uploadés par les utilisateurs. Les fichiers sont
|
||||||
|
conservés dans `/opt/scodoc-data`: le plus simple est de faire surveiller tout
|
||||||
|
ce répertoire sauf `/opt/scodoc-data/logs`.
|
||||||
|
|
||||||
|
- Abonnez-vous au moins à la liste d'annonces ou rejoignez le Discord: voir [contacts](Contact.md)
|
||||||
|
|
||||||
|
!!! note "Voir aussi"
|
||||||
|
|
||||||
|
- [Guide configuration](GuideConfig.md)
|
||||||
|
- [Guide administrateur ScoDoc](GuideAdminSys.md)
|
||||||
|
- [FAQ](FAQ.md)
|
||||||
|
- [Contacts](Contact.md)
|
|
@ -1467,7 +1467,10 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
|
||||||
|
|
||||||
* **Méthode:** GET
|
* **Méthode:** GET
|
||||||
* **Permission: `ScoView`**
|
* **Permission: `ScoView`**
|
||||||
* **Paramètres:** `etudid`
|
* **Paramètres:**
|
||||||
|
* `etudid`
|
||||||
|
* `nip`
|
||||||
|
* `ine`
|
||||||
* **Query string:**
|
* **Query string:**
|
||||||
* `etat` ('present','retard','absent)
|
* `etat` ('present','retard','absent)
|
||||||
* `moduleimpl_id` (X : id du moduleimpl concerné)
|
* `moduleimpl_id` (X : id du moduleimpl concerné)
|
||||||
|
@ -1479,6 +1482,12 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
|
||||||
* **Routes:**
|
* **Routes:**
|
||||||
* `/assiduites/<int:etudid>`
|
* `/assiduites/<int:etudid>`
|
||||||
* `/assiduites/<int:etudid>/query?`
|
* `/assiduites/<int:etudid>/query?`
|
||||||
|
* `/assiduites/etudid/<int:etudid>`
|
||||||
|
* `/assiduites/etudid/<int:etudid>/query?`
|
||||||
|
* `/assiduites/nip/<nip>`
|
||||||
|
* `/assiduites/nip/<nip>/query?`
|
||||||
|
* `/assiduites/ine/<ine>`
|
||||||
|
* `/assiduites/ine/<ine>/query?`
|
||||||
* **Exemple d'utilisation:**
|
* **Exemple d'utilisation:**
|
||||||
* `/api/assiduites/1`
|
* `/api/assiduites/1`
|
||||||
* `/api/assiduites/1/query?etat=retard`
|
* `/api/assiduites/1/query?etat=retard`
|
||||||
|
@ -1490,7 +1499,10 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
|
||||||
|
|
||||||
* **Méthode:** GET
|
* **Méthode:** GET
|
||||||
* **Permission: `ScoView`**
|
* **Permission: `ScoView`**
|
||||||
* **Paramètres:** `etudid`
|
* **Paramètres:**
|
||||||
|
* `etudid`
|
||||||
|
* `nip`
|
||||||
|
* `ine`
|
||||||
* **Query string:**
|
* **Query string:**
|
||||||
* `etat` ('present','retard','absent)
|
* `etat` ('present','retard','absent)
|
||||||
* `moduleimpl_id` (X : id du moduleimpl concerné)
|
* `moduleimpl_id` (X : id du moduleimpl concerné)
|
||||||
|
@ -1503,6 +1515,12 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
|
||||||
* **Routes:**
|
* **Routes:**
|
||||||
* `/assiduites/<int:etudid>/count`
|
* `/assiduites/<int:etudid>/count`
|
||||||
* `/assiduites/<int:etudid>/count/query?`
|
* `/assiduites/<int:etudid>/count/query?`
|
||||||
|
* `/assiduites/etudid/<int:etudid>/count`
|
||||||
|
* `/assiduites/etudid/<int:etudid>/count/query?`
|
||||||
|
* `/assiduites/nip/<nip>/count`
|
||||||
|
* `/assiduites/nip/<nip>/count/query?`
|
||||||
|
* `/assiduites/ine/<ine>/count`
|
||||||
|
* `/assiduites/ine/<ine>/count/query?`
|
||||||
* **Exemple d'utilisation:**
|
* **Exemple d'utilisation:**
|
||||||
* `/api/assiduites/1`
|
* `/api/assiduites/1`
|
||||||
* `/api/assiduites/1/count/query?etat=retard`
|
* `/api/assiduites/1/count/query?etat=retard`
|
||||||
|
@ -1515,7 +1533,7 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
|
||||||
|
|
||||||
* **Méthode:** GET
|
* **Méthode:** GET
|
||||||
* **Permission: `ScoView`**
|
* **Permission: `ScoView`**
|
||||||
* **Paramètres:** `etudid`
|
* **Paramètres:** `formsemestre_id`
|
||||||
* **Query string:**
|
* **Query string:**
|
||||||
* `etat` ('present','retard','absent)
|
* `etat` ('present','retard','absent)
|
||||||
* `moduleimpl_id` (X : id du moduleimpl concerné)
|
* `moduleimpl_id` (X : id du moduleimpl concerné)
|
||||||
|
@ -1537,7 +1555,7 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
|
||||||
|
|
||||||
* **Méthode:** GET
|
* **Méthode:** GET
|
||||||
* **Permission: `ScoView`**
|
* **Permission: `ScoView`**
|
||||||
* **Paramètres:** `etudid`
|
* **Paramètres:** `formsemestre_id`
|
||||||
* **Query string:**
|
* **Query string:**
|
||||||
* `etat` ('present','retard','absent)
|
* `etat` ('present','retard','absent)
|
||||||
* `moduleimpl_id` (X : id du moduleimpl concerné)
|
* `moduleimpl_id` (X : id du moduleimpl concerné)
|
||||||
|
@ -1607,7 +1625,7 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
|
||||||
* `/assiduites/create`
|
* `/assiduites/create`
|
||||||
* **Exemple d'utilisation:** `/api/assiduites/create`
|
* **Exemple d'utilisation:** `/api/assiduites/create`
|
||||||
|
|
||||||
> `[{date_debut: "2022-10-27T08:00",date_fin: "2022-10-27T10:00",etat: "absent",etudid:1}]`
|
> `[{"date_debut": "2022-10-27T08:00","date_fin": "2022-10-27T10:00","etat": "absent","etudid":1}]`
|
||||||
|
|
||||||
* **Résultat:** Retourne un objet en deux parties (errors et success) contenant le retour de chaque objet donné dans la requête POST.
|
* **Résultat:** Retourne un objet en deux parties (errors et success) contenant le retour de chaque objet donné dans la requête POST.
|
||||||
|
|
||||||
|
@ -1616,7 +1634,10 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
|
||||||
|
|
||||||
* **Méthode:** POST
|
* **Méthode:** POST
|
||||||
* **Permission: `ScoAssiduiteChange`**
|
* **Permission: `ScoAssiduiteChange`**
|
||||||
* **Paramètres:** `etudid`
|
* **Paramètres:**
|
||||||
|
* `etudid`
|
||||||
|
* `nip`
|
||||||
|
* `ine`
|
||||||
* **Data:**
|
* **Data:**
|
||||||
|
|
||||||
```json
|
```json
|
||||||
|
@ -1634,9 +1655,12 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
|
||||||
|
|
||||||
* **Routes:**
|
* **Routes:**
|
||||||
* `/assiduite/<int:etudid>/create`
|
* `/assiduite/<int:etudid>/create`
|
||||||
|
* `/assiduites/etudid/<int:etudid>/create`
|
||||||
|
* `/assiduites/nip/<nip>/create`
|
||||||
|
* `/assiduites/ine/<ine>/create`
|
||||||
* **Exemple d'utilisation:** `/api/assiduite/1/create`
|
* **Exemple d'utilisation:** `/api/assiduite/1/create`
|
||||||
|
|
||||||
> `[{date_debut: "2022-10-27T08:00",date_fin: "2022-10-27T10:00",etat: "absent"}]`
|
> `[{"date_debut": "2022-10-27T08:00","date_fin": "2022-10-27T10:00","etat": "absent"}]`
|
||||||
|
|
||||||
* **Résultat:** Retourne un objet en deux parties (errors et success) contenant le retour de chaque objet donné dans la requête POST.
|
* **Résultat:** Retourne un objet en deux parties (errors et success) contenant le retour de chaque objet donné dans la requête POST.
|
||||||
* **Exemple de résultat:** [assiduite_create.json](samples/sample_assiduite_create.json.md)
|
* **Exemple de résultat:** [assiduite_create.json](samples/sample_assiduite_create.json.md)
|
||||||
|
@ -1659,7 +1683,7 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
|
||||||
* **Routes:** `/assiduite/<int:assiduite_id>/edit`
|
* **Routes:** `/assiduite/<int:assiduite_id>/edit`
|
||||||
* **Exemple d'utilisation:** `/api/assiduite/1/edit`
|
* **Exemple d'utilisation:** `/api/assiduite/1/edit`
|
||||||
|
|
||||||
> `{etat: "absent"}`
|
> `{"etat": "absent"}`
|
||||||
|
|
||||||
* **Résultat:** Modifie l'assiduité désignée. Renvoie une erreur si la
|
* **Résultat:** Modifie l'assiduité désignée. Renvoie une erreur si la
|
||||||
modification rend incompatible la plage de l'assiduité par rapport aux autres
|
modification rend incompatible la plage de l'assiduité par rapport aux autres
|
||||||
|
@ -1675,10 +1699,10 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
|
||||||
```json
|
```json
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"etudid":<int>
|
"etudid":<int>,
|
||||||
"etat"?: <string>,
|
"etat"?: <string>,
|
||||||
"moduleimpl_id"?: <int>
|
"moduleimpl_id"?: <int>,
|
||||||
"desc"?:<string>
|
"desc"?:<string>,
|
||||||
},
|
},
|
||||||
...
|
...
|
||||||
]
|
]
|
||||||
|
@ -1688,7 +1712,7 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
|
||||||
* `/assiduites/edit`
|
* `/assiduites/edit`
|
||||||
* **Exemple d'utilisation:** `/api/assiduites/edit`
|
* **Exemple d'utilisation:** `/api/assiduites/edit`
|
||||||
|
|
||||||
> `[{etat: "absent",assiduite_id:1},{etat: "retard",moduleimpl_id:12,assiduite_id:2}]`
|
> `[{"etat": "absent","assiduite_id":1},{"etat": "retard","moduleimpl_id":12,"assiduite_id":2}]`
|
||||||
|
|
||||||
* **Résultat:** Retourne un objet en deux parties (errors et success) contenant le retour de chaque objet donné dans la requête POST.
|
* **Résultat:** Retourne un objet en deux parties (errors et success) contenant le retour de chaque objet donné dans la requête POST.
|
||||||
|
|
||||||
|
@ -1718,14 +1742,15 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
|
||||||
|
|
||||||
| attribut | type | commentaire |
|
| attribut | type | commentaire |
|
||||||
| :----------- | :------------- | :------------------------------------------------------------ |
|
| :----------- | :------------- | :------------------------------------------------------------ |
|
||||||
| *justif_id* | int | identifiant unique |
|
| *justif_id* | int | identifiant unique |
|
||||||
| *etudid* | int | identifiant unique de l'étudiant concerné par le justificatif |
|
| *etudid* | int | identifiant unique de l'étudiant concerné par le justificatif |
|
||||||
| *date_debut* | string | date ISO du début de la période du justificatif |
|
| *date_debut* | string | date ISO du début de la période du justificatif |
|
||||||
| *date_fin* | string | date ISO de la fin de la période du justificatif |
|
| *date_fin* | string | date ISO de la fin de la période du justificatif |
|
||||||
| *etat* | string | état du justificatif ( attente, valide, non_valide, modifie) |
|
| *etat* | string | état du justificatif ( attente, valide, non_valide, modifie) |
|
||||||
| *raison* | string ou null | explication du justificatif si présente |
|
| *raison* | string ou null | explication du justificatif si présente |
|
||||||
| *fichier* | string | identifiant de l'archivage des fichiers |
|
| *fichier* | string | identifiant de l'archivage des fichiers |
|
||||||
| *entry_date* | string | date ISO de l'entrée du justificatif |
|
|*user_id* | int or null | identifiant de l'utilisateur ayant créé le justificatif |
|
||||||
|
| *entry_date* | string | date ISO de l'entrée du justificatif |
|
||||||
|
|
||||||
#### **justificatif**
|
#### **justificatif**
|
||||||
|
|
||||||
|
@ -1741,14 +1766,23 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
|
||||||
|
|
||||||
* **Méthode:** GET
|
* **Méthode:** GET
|
||||||
* **Permission: `ScoView`**
|
* **Permission: `ScoView`**
|
||||||
* **Paramètres:** `etudid`
|
* **Paramètres:**
|
||||||
|
* `etudid`
|
||||||
|
* `nip`
|
||||||
|
* `ine`
|
||||||
* **Query string:**
|
* **Query string:**
|
||||||
* `etat` ( attente, valide, non_valide, modifie)
|
* `etat` ( attente, valide, non_valide, modifie)
|
||||||
* `date_debut` (X : date format ISO)
|
* `date_debut` (X : date format ISO)
|
||||||
* `date_fin` (X : date format ISO)
|
* `date_fin` (X : date format ISO)
|
||||||
* **Routes:**
|
* **Routes:**
|
||||||
* `/justificatifs/<int:etudid>`
|
* `/justificatifs/<int:etudid>`
|
||||||
* `/justificatifs/<int:etudid>/query?etat=VALIDE`
|
* `/justificatifs/<int:etudid>/query`
|
||||||
|
* `/justificatifs/etudid/<etudid>`
|
||||||
|
* `/justificatifs/etudid/etudid>/query`
|
||||||
|
* `/justificatifs/nip/<nip>`
|
||||||
|
* `/justificatifs/nip/<nip>/query`
|
||||||
|
* `/justificatifs/ine/<ine>`
|
||||||
|
* `/justificatifs/ine/<ine>/query`
|
||||||
* **Exemple d'utilisation:**
|
* **Exemple d'utilisation:**
|
||||||
* `/api/justificatifs/1`
|
* `/api/justificatifs/1`
|
||||||
* `/api/justificatifs/1/query?etat=modifie`
|
* `/api/justificatifs/1/query?etat=modifie`
|
||||||
|
@ -1760,7 +1794,10 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
|
||||||
|
|
||||||
* **Méthode:** POST
|
* **Méthode:** POST
|
||||||
* **Permission: `ScoJustifChange`**
|
* **Permission: `ScoJustifChange`**
|
||||||
* **Paramètres:** `etudid`
|
* **Paramètres:**
|
||||||
|
* `etudid`
|
||||||
|
* `nip`
|
||||||
|
* `ine`
|
||||||
* **Data:**
|
* **Data:**
|
||||||
|
|
||||||
```json
|
```json
|
||||||
|
@ -1777,7 +1814,11 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
|
||||||
|
|
||||||
> Un fichier justificatif peut être importé dans scodoc après avoir créer l'objet justificatif voir [importer un justificatif](FichiersJustificatifs.md#importer-un-fichier)
|
> Un fichier justificatif peut être importé dans scodoc après avoir créer l'objet justificatif voir [importer un justificatif](FichiersJustificatifs.md#importer-un-fichier)
|
||||||
|
|
||||||
* **Routes:** `/justificatif/<int:etudid>/create`
|
* **Routes:**
|
||||||
|
* `/justificatif/<int:etudid>/create`
|
||||||
|
* `/justificatif/etudid/<etudid>/create`
|
||||||
|
* `/justificatif/nip/<nip>/create`
|
||||||
|
* `/justificatif/ine/<ine>/create`
|
||||||
* **Exemple d'utilisation:** `/api/justificatif/1/create`
|
* **Exemple d'utilisation:** `/api/justificatif/1/create`
|
||||||
|
|
||||||
```json
|
```json
|
||||||
|
@ -1814,7 +1855,7 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
|
||||||
* **Routes:** `/justificatif/<int:justif_id>/edit`
|
* **Routes:** `/justificatif/<int:justif_id>/edit`
|
||||||
* **Exemple d'utilisation:** `/api/justificatif/1/edit`
|
* **Exemple d'utilisation:** `/api/justificatif/1/edit`
|
||||||
|
|
||||||
> `{etat: "valide"}`
|
> `{"etat": "valide"}`
|
||||||
|
|
||||||
* **Résultat:** Modifie le justificatif désigné.
|
* **Résultat:** Modifie le justificatif désigné.
|
||||||
* **Exemple de résultat:** [justificatif-edit.json](samples/sample_justificatif_edit.json.md)
|
* **Exemple de résultat:** [justificatif-edit.json](samples/sample_justificatif_edit.json.md)
|
||||||
|
@ -1823,7 +1864,6 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
|
||||||
|
|
||||||
* **Méthode:** POST
|
* **Méthode:** POST
|
||||||
* **Permission: `ScoJustifChange`**
|
* **Permission: `ScoJustifChange`**
|
||||||
* **Paramètres:** `etudid`
|
|
||||||
* **Data:**
|
* **Data:**
|
||||||
|
|
||||||
```json
|
```json
|
||||||
|
@ -1883,7 +1923,7 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
|
||||||
|
|
||||||
* **Routes:** `/justificatif/<int:justif_id>/remove`
|
* **Routes:** `/justificatif/<int:justif_id>/remove`
|
||||||
|
|
||||||
* **Résultat:** `{response:"removed"}` ou une erreur
|
* **Résultat:** `{"response":"removed"}` ou une erreur
|
||||||
* **Exemple de résultat:** [justificatif-remove.json](samples/sample_justificatif_remove.json.md)
|
* **Exemple de résultat:** [justificatif-remove.json](samples/sample_justificatif_remove.json.md)
|
||||||
|
|
||||||
#### **justificatif-list**
|
#### **justificatif-list**
|
||||||
|
|
|
@ -6,6 +6,13 @@ Linux Debian 11 vers la version suivante: ScoDoc 9.6 sous Debian 12.
|
||||||
On commence par mettre à jour normalement le système Debian, puis on change la
|
On commence par mettre à jour normalement le système Debian, puis on change la
|
||||||
version de la base de données postgresql puis on met à jour ScoDoc.
|
version de la base de données postgresql puis on met à jour ScoDoc.
|
||||||
|
|
||||||
|
Si vous souhaitez installer ScoDoc 9.6 sans partir d'un serveur 9.5,
|
||||||
|
[voir la page d'installation](GuideInstallDebian12.md)
|
||||||
|
|
||||||
|
Tout compris, la mise à jour d'un serveur typique prend environ 20 à 30 minutes
|
||||||
|
et ne demande aucune compétence particulière, autre que de suivre
|
||||||
|
scrupuleusement les instructions ci-dessous, sans oublier d'étape.
|
||||||
|
|
||||||
## Upgrade Debian 11 vers Debian 12
|
## Upgrade Debian 11 vers Debian 12
|
||||||
|
|
||||||
La documentation officielle est là:
|
La documentation officielle est là:
|
||||||
|
@ -53,6 +60,7 @@ deb-src http://deb.debian.org/debian/ bookworm-updates main
|
||||||
#### Mettre à jour
|
#### Mettre à jour
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
/bin/rm /etc/apt/sources.list.d/scodoc.list
|
||||||
apt-get clean
|
apt-get clean
|
||||||
apt-get update
|
apt-get update
|
||||||
```
|
```
|
||||||
|
@ -123,7 +131,7 @@ apt-get autoremove --purge postgresql-13 postgresql-client-13
|
||||||
- Supprimer l'ancien fichier:
|
- Supprimer l'ancien fichier:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
rm /etc/apt/sources.list.d/scodoc*
|
/bin/rm -f /etc/apt/sources.list.d/scodoc*
|
||||||
```
|
```
|
||||||
|
|
||||||
- Ajouter le dépot scodoc: copier ce fichier <a href="/attachments/scodoc.list"
|
- Ajouter le dépot scodoc: copier ce fichier <a href="/attachments/scodoc.list"
|
||||||
|
@ -135,13 +143,23 @@ ou bien l'éditer pour qu'il contienne juste cette ligne:
|
||||||
deb http://scodoc.org/deb/bookworm bookworm main
|
deb http://scodoc.org/deb/bookworm bookworm main
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Installation de la clé
|
||||||
|
|
||||||
|
L'ancienne clé crypto qui authentifie scodoc est toujours valide, mais il faut
|
||||||
|
l'installer différemment. Comme root, lancer:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
apt-key export BBDA4CF7 | gpg --dearmour -o /etc/apt/trusted.gpg.d/scodoc.gpg
|
||||||
|
```
|
||||||
|
|
||||||
### Mise à jour du paquet scodoc9
|
### Mise à jour du paquet scodoc9
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
apt update && apt upgrade
|
apt update && apt upgrade
|
||||||
```
|
```
|
||||||
|
|
||||||
devrait installer `scodoc9.6.x`.
|
devrait installer `scodoc9.6.x` (cette première install est un peu longue, il
|
||||||
|
faut en effet charger et configurer de nombreux modules python).
|
||||||
|
|
||||||
### Migration des absences vers les assiduités
|
### Migration des absences vers les assiduités
|
||||||
|
|
||||||
|
@ -152,6 +170,7 @@ les commandes suivantes:
|
||||||
```bash
|
```bash
|
||||||
systemctl stop scodoc9 # le service DOIT etre stoppé !
|
systemctl stop scodoc9 # le service DOIT etre stoppé !
|
||||||
su scodoc
|
su scodoc
|
||||||
|
#
|
||||||
cd /opt/scodoc
|
cd /opt/scodoc
|
||||||
source venv/bin/activate
|
source venv/bin/activate
|
||||||
flask migrate-abs-to-assiduites
|
flask migrate-abs-to-assiduites
|
||||||
|
@ -160,12 +179,14 @@ flask migrate-abs-to-assiduites
|
||||||
Pour plus de détails et paramétrages (plages horaires, ...), voir
|
Pour plus de détails et paramétrages (plages horaires, ...), voir
|
||||||
[la documentation sur la migration des absences](AssiduitesMigration.md).
|
[la documentation sur la migration des absences](AssiduitesMigration.md).
|
||||||
|
|
||||||
Le traitement est assez long et peut prendre plusieurs dizaines de minutes,
|
Le traitement est assez long et peut prendre plusieurs minutes,
|
||||||
suivant le nombre d'absences et la vitesse de votre serveur.
|
suivant le nombre d'absences et la vitesse de votre serveur.
|
||||||
|
|
||||||
### Démarrage du service
|
### Démarrage du service
|
||||||
|
|
||||||
Comme d'habitude, en tant que `root`:
|
Comme d'habitude, en tant que `root`: (faire `exit`si vous êtes resté dans le
|
||||||
|
shell scodoc précédent):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
systemctl start scodoc9
|
systemctl start scodoc9
|
||||||
```
|
```
|
||||||
|
|
|
@ -1,16 +1,18 @@
|
||||||
### assiduite
|
### assiduite
|
||||||
|
|
||||||
#### GET /assiduite/1
|
#### GET /assiduite/1
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"assiduite_id": 1,
|
"assiduite_id": 1,
|
||||||
"date_debut": "2022-08-20T12:00:00.000000+02:00",
|
"date_debut": "2022-09-25T08:00:00+0200",
|
||||||
"date_fin": "2022-08-20T12:00:00.000000+02:00",
|
"date_fin": "2022-09-25T08:00:00+0200",
|
||||||
"desc": null,
|
"desc": null,
|
||||||
"entry_date": "2022-08-20T12:00:00.000000+02:00",
|
"entry_date": "2023-07-28T11:13:45+0200",
|
||||||
"etat": "PRESENT",
|
"est_just": false,
|
||||||
"etudid": 1,
|
"etat": "PRESENT",
|
||||||
"moduleimpl_id": 8
|
"etudid": 1,
|
||||||
|
"moduleimpl_id": 8,
|
||||||
|
"user_id": null
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -1,18 +1,21 @@
|
||||||
### assiduite_create
|
### assiduite_create
|
||||||
|
|
||||||
#### POST /assiduite/1/create
|
#### POST /assiduite/1/create
|
||||||
|
|
||||||
> `Content-Type: application/json`
|
> `Content-Type: application/json`
|
||||||
>
|
>
|
||||||
> `[{"date_debut": "2022-10-27T08:00","date_fin": "2022-10-27T10:00","etat": "absent"}]`
|
> `[{"date_debut": "2022-10-27T08:00","date_fin": "2022-10-27T10:00","etat": "absent"}]`
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"errors": {},
|
"errors": [],
|
||||||
"success": {
|
"success": [
|
||||||
"0": {
|
{
|
||||||
"assiduite_id": 60
|
"indice": 0,
|
||||||
}
|
"message": {
|
||||||
|
"assiduite_id": 60
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -1,23 +1,28 @@
|
||||||
### assiduite_delete
|
### assiduite_delete
|
||||||
|
|
||||||
#### POST /assiduite/delete
|
#### POST /assiduite/delete
|
||||||
|
|
||||||
> `Content-Type: application/json`
|
> `Content-Type: application/json`
|
||||||
>
|
>
|
||||||
> `[2,2,3]`
|
> `[2,2,3]`
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"errors": {
|
"errors": [
|
||||||
"1": "Assiduite non existante"
|
{
|
||||||
},
|
"indice": 1,
|
||||||
"success": {
|
"message": "Assiduite non existante"
|
||||||
"0": {
|
|
||||||
"OK": true
|
|
||||||
},
|
|
||||||
"2": {
|
|
||||||
"OK": true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
"success": [
|
||||||
|
{
|
||||||
|
"indice": 0,
|
||||||
|
"message": "OK"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"indice": 2,
|
||||||
|
"message": "OK"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -1,35 +1,37 @@
|
||||||
### assiduite_edit
|
### assiduite_edit
|
||||||
|
|
||||||
#### POST /assiduite/1/edit
|
#### POST /assiduite/1/edit
|
||||||
|
|
||||||
> `Content-Type: application/json`
|
> `Content-Type: application/json`
|
||||||
>
|
>
|
||||||
> `{"etat": "retard","moduleimpl_id":3}`
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"OK": true
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### POST /assiduite/1/edit
|
|
||||||
> `Content-Type: application/json`
|
|
||||||
>
|
|
||||||
> `{"etat":"absent"}`
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"OK": true
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### POST /assiduite/1/edit
|
|
||||||
> `Content-Type: application/json`
|
|
||||||
>
|
|
||||||
> `{"moduleimpl_id":2}`
|
> `{"moduleimpl_id":2}`
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"OK": true
|
"OK": true
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### POST /assiduite/1/edit
|
||||||
|
|
||||||
|
> `Content-Type: application/json`
|
||||||
|
>
|
||||||
|
> `{"etat": "retard","moduleimpl_id":3}`
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"OK": true
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### POST /assiduite/1/edit
|
||||||
|
|
||||||
|
> `Content-Type: application/json`
|
||||||
|
>
|
||||||
|
> `{"etat":"absent"}`
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"OK": true
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
|
@ -1,63 +1,71 @@
|
||||||
### assiduites
|
### assiduites
|
||||||
|
|
||||||
#### GET /assiduites/1
|
#### GET /assiduites/1
|
||||||
|
|
||||||
```json
|
```json
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"assiduite_id": 1,
|
"assiduite_id": 1,
|
||||||
"date_debut": "2022-08-20T12:00:00.000000+02:00",
|
"date_debut": "2022-09-25T08:00:00+0200",
|
||||||
"date_fin": "2022-08-20T12:00:00.000000+02:00",
|
"date_fin": "2022-09-25T08:00:00+0200",
|
||||||
"desc": null,
|
"desc": null,
|
||||||
"entry_date": "2022-08-20T12:00:00.000000+02:00",
|
"entry_date": "2023-07-28T11:13:45+0200",
|
||||||
"etat": "PRESENT",
|
"est_just": false,
|
||||||
"etudid": 1,
|
"etat": "PRESENT",
|
||||||
"moduleimpl_id": 8
|
"etudid": 1,
|
||||||
},
|
"moduleimpl_id": 8,
|
||||||
{
|
"user_id": null
|
||||||
"assiduite_id": 2,
|
},
|
||||||
"date_debut": "2022-08-20T12:00:00.000000+02:00",
|
{
|
||||||
"date_fin": "2022-08-20T12:00:00.000000+02:00",
|
"assiduite_id": 2,
|
||||||
"desc": null,
|
"date_debut": "2022-09-26T08:00:00+0200",
|
||||||
"entry_date": "2022-08-20T12:00:00.000000+02:00",
|
"date_fin": "2022-09-26T09:00:00+0200",
|
||||||
"etat": "RETARD",
|
"desc": null,
|
||||||
"etudid": 1,
|
"entry_date": "2023-07-28T11:13:45+0200",
|
||||||
"moduleimpl_id": 13
|
"est_just": false,
|
||||||
},
|
"etat": "RETARD",
|
||||||
"..."
|
"etudid": 1,
|
||||||
|
"moduleimpl_id": 13,
|
||||||
|
"user_id": null
|
||||||
|
},
|
||||||
|
"..."
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
#### GET /assiduites/1/query?etat=retard
|
#### GET /assiduites/1/query?etat=retard
|
||||||
|
|
||||||
```json
|
```json
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"assiduite_id": 2,
|
"assiduite_id": 2,
|
||||||
"date_debut": "2022-08-20T12:00:00.000000+02:00",
|
"date_debut": "2022-09-26T08:00:00+0200",
|
||||||
"date_fin": "2022-08-20T12:00:00.000000+02:00",
|
"date_fin": "2022-09-26T09:00:00+0200",
|
||||||
"desc": null,
|
"desc": null,
|
||||||
"entry_date": "2022-08-20T12:00:00.000000+02:00",
|
"entry_date": "2023-07-28T11:13:45+0200",
|
||||||
"etat": "RETARD",
|
"est_just": false,
|
||||||
"etudid": 1,
|
"etat": "RETARD",
|
||||||
"moduleimpl_id": 13
|
"etudid": 1,
|
||||||
},
|
"moduleimpl_id": 13,
|
||||||
{
|
"user_id": null
|
||||||
"assiduite_id": 3,
|
},
|
||||||
"date_debut": "2022-08-20T12:00:00.000000+02:00",
|
{
|
||||||
"date_fin": "2022-08-20T12:00:00.000000+02:00",
|
"assiduite_id": 3,
|
||||||
"desc": null,
|
"date_debut": "2022-09-27T08:00:00+0200",
|
||||||
"entry_date": "2022-08-20T12:00:00.000000+02:00",
|
"date_fin": "2022-09-27T10:00:00+0200",
|
||||||
"etat": "RETARD",
|
"desc": null,
|
||||||
"etudid": 1,
|
"entry_date": "2023-07-28T11:13:45+0200",
|
||||||
"moduleimpl_id": 14
|
"est_just": false,
|
||||||
},
|
"etat": "RETARD",
|
||||||
"..."
|
"etudid": 1,
|
||||||
|
"moduleimpl_id": 14,
|
||||||
|
"user_id": null
|
||||||
|
},
|
||||||
|
"..."
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
#### GET /assiduites/1/query?moduleimpl_id=1
|
#### GET /assiduites/1/query?moduleimpl_id=1
|
||||||
```json
|
|
||||||
[
|
|
||||||
"..."
|
|
||||||
]
|
|
||||||
```
|
|
||||||
|
|
||||||
|
```json
|
||||||
|
["..."]
|
||||||
|
```
|
||||||
|
|
|
@ -1,30 +1,32 @@
|
||||||
### assiduites_count
|
### assiduites_count
|
||||||
|
|
||||||
#### GET /assiduites/1/count
|
#### GET /assiduites/1/count
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"compte": 4,
|
"compte": 4,
|
||||||
"demi": 3,
|
"demi": 3,
|
||||||
"heure": 6.0,
|
"heure": 6.0,
|
||||||
"journee": 4
|
"journee": 4
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
#### GET /assiduites/1/count/query?etat=present,retard&metric=compte,heure
|
#### GET /assiduites/1/count/query?etat=present,retard&metric=compte,heure
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"compte": 4,
|
"compte": 4,
|
||||||
"heure": 6.0
|
"heure": 6.0
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
#### GET /assiduites/1/count/query?etat=retard
|
#### GET /assiduites/1/count/query?etat=retard
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"compte": 3,
|
"compte": 3,
|
||||||
"demi": 3,
|
"demi": 3,
|
||||||
"heure": 6.0,
|
"heure": 6.0,
|
||||||
"journee": 3
|
"journee": 3
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -1,23 +1,73 @@
|
||||||
### assiduites_formsemestre
|
### assiduites_formsemestre
|
||||||
|
|
||||||
#### GET /assiduites/formsemestre/1
|
#### GET /assiduites/formsemestre/1
|
||||||
|
|
||||||
```json
|
```json
|
||||||
[
|
[
|
||||||
"..."
|
{
|
||||||
|
"assiduite_id": 1,
|
||||||
|
"date_debut": "2022-09-25T08:00:00+0200",
|
||||||
|
"date_fin": "2022-09-25T08:00:00+0200",
|
||||||
|
"desc": null,
|
||||||
|
"entry_date": "2023-07-28T11:13:45+0200",
|
||||||
|
"est_just": false,
|
||||||
|
"etat": "PRESENT",
|
||||||
|
"etudid": 1,
|
||||||
|
"moduleimpl_id": 8,
|
||||||
|
"user_id": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"assiduite_id": 2,
|
||||||
|
"date_debut": "2022-09-26T08:00:00+0200",
|
||||||
|
"date_fin": "2022-09-26T09:00:00+0200",
|
||||||
|
"desc": null,
|
||||||
|
"entry_date": "2023-07-28T11:13:45+0200",
|
||||||
|
"est_just": false,
|
||||||
|
"etat": "RETARD",
|
||||||
|
"etudid": 1,
|
||||||
|
"moduleimpl_id": 13,
|
||||||
|
"user_id": null
|
||||||
|
},
|
||||||
|
"..."
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
#### GET /assiduites/formsemestre/1/query?etat=retard
|
#### GET /assiduites/formsemestre/1/query?etat=retard
|
||||||
|
|
||||||
```json
|
```json
|
||||||
[
|
[
|
||||||
"..."
|
{
|
||||||
|
"assiduite_id": 2,
|
||||||
|
"date_debut": "2022-09-26T08:00:00+0200",
|
||||||
|
"date_fin": "2022-09-26T09:00:00+0200",
|
||||||
|
"desc": null,
|
||||||
|
"entry_date": "2023-07-28T11:13:45+0200",
|
||||||
|
"est_just": false,
|
||||||
|
"etat": "RETARD",
|
||||||
|
"etudid": 1,
|
||||||
|
"moduleimpl_id": 13,
|
||||||
|
"user_id": null
|
||||||
|
},
|
||||||
|
"..."
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
#### GET /assiduites/formsemestre/1/query?moduleimpl_id=1
|
#### GET /assiduites/formsemestre/1/query?moduleimpl_id=1
|
||||||
|
|
||||||
```json
|
```json
|
||||||
[
|
[
|
||||||
"..."
|
{
|
||||||
|
"assiduite_id": 3,
|
||||||
|
"date_debut": "2022-09-27T08:00:00+0200",
|
||||||
|
"date_fin": "2022-09-27T08:00:00+0200",
|
||||||
|
"desc": null,
|
||||||
|
"entry_date": "2023-07-28T11:13:45+0200",
|
||||||
|
"est_just": false,
|
||||||
|
"etat": "PRESENT",
|
||||||
|
"etudid": 1,
|
||||||
|
"moduleimpl_id": 1,
|
||||||
|
"user_id": null
|
||||||
|
},
|
||||||
|
"..."
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -1,30 +1,32 @@
|
||||||
### assiduites_formsemestre_count
|
### assiduites_formsemestre_count
|
||||||
|
|
||||||
#### GET /assiduites/formsemestre/1/count
|
#### GET /assiduites/formsemestre/1/count
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"compte": 0,
|
"compte": 0,
|
||||||
"demi": 0,
|
"demi": 0,
|
||||||
"heure": 0.0,
|
"heure": 0.0,
|
||||||
"journee": 0
|
"journee": 0
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
#### GET /assiduites/formsemestre/1/count/query?etat=present,retard&metric=compte,heure
|
#### GET /assiduites/formsemestre/1/count/query?etat=present,retard&metric=compte,heure
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"compte": 0,
|
"compte": 0,
|
||||||
"heure": 0.0
|
"heure": 0.0
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
#### GET /assiduites/formsemestre/1/count/query?etat=retard
|
#### GET /assiduites/formsemestre/1/count/query?etat=retard
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"compte": 0,
|
"compte": 0,
|
||||||
"demi": 0,
|
"demi": 0,
|
||||||
"heure": 0.0,
|
"heure": 0.0,
|
||||||
"journee": 0
|
"journee": 0
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -3,14 +3,15 @@
|
||||||
#### GET /justificatif/1
|
#### GET /justificatif/1
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"date_debut": "2022-08-20T12:00:00.000000+02:00",
|
"date_debut": "2022-09-25T08:00:00+0200",
|
||||||
"date_fin": "2022-08-20T12:00:00.000000+02:00",
|
"date_fin": "2022-09-25T16:00:00+0200",
|
||||||
"entry_date": "2022-08-20T12:00:00.000000+02:00",
|
"entry_date": "2023-07-28T11:13:45+0200",
|
||||||
"etat": "VALIDE",
|
"etat": "VALIDE",
|
||||||
"etudid": 1,
|
"etudid": 1,
|
||||||
"fichier": null,
|
"fichier": null,
|
||||||
"justif_id": 1,
|
"justif_id": 1,
|
||||||
"raison": "raison"
|
"raison": "raison",
|
||||||
|
"user_id": null
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -1,18 +1,22 @@
|
||||||
### justificatif_create
|
### justificatif_create
|
||||||
|
|
||||||
#### POST /justificatif/1/create
|
#### POST /justificatif/1/create
|
||||||
|
|
||||||
> `Content-Type: application/json`
|
> `Content-Type: application/json`
|
||||||
>
|
>
|
||||||
> `[{"date_debut": "2022-10-27T08:00","date_fin": "2022-10-27T10:00","etat": "attente"}]`
|
> `[{"date_debut": "2022-10-27T08:00","date_fin": "2022-10-27T10:00","etat": "attente"}]`
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"errors": {},
|
"errors": [],
|
||||||
"success": {
|
"success": [
|
||||||
"0": {
|
{
|
||||||
"justif_id": 12
|
"indice": 0,
|
||||||
}
|
"message": {
|
||||||
|
"couverture": [],
|
||||||
|
"justif_id": 12
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -1,23 +1,28 @@
|
||||||
### justificatif_delete
|
### justificatif_delete
|
||||||
|
|
||||||
#### POST /justificatif/delete
|
#### POST /justificatif/delete
|
||||||
|
|
||||||
> `Content-Type: application/json`
|
> `Content-Type: application/json`
|
||||||
>
|
>
|
||||||
> `[2,2,3]`
|
> `[2,2,3]`
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"errors": {
|
"errors": [
|
||||||
"1": "Justificatif non existant"
|
{
|
||||||
},
|
"indice": 1,
|
||||||
"success": {
|
"message": "Justificatif non existant"
|
||||||
"0": {
|
|
||||||
"OK": true
|
|
||||||
},
|
|
||||||
"2": {
|
|
||||||
"OK": true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
"success": [
|
||||||
|
{
|
||||||
|
"indice": 0,
|
||||||
|
"message": "OK"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"indice": 2,
|
||||||
|
"message": "OK"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -1,24 +1,31 @@
|
||||||
### justificatif_edit
|
### justificatif_edit
|
||||||
|
|
||||||
#### POST /justificatif/1/edit
|
#### POST /justificatif/1/edit
|
||||||
|
|
||||||
> `Content-Type: application/json`
|
> `Content-Type: application/json`
|
||||||
>
|
>
|
||||||
> `{"etat":"valide"}`
|
> `{"etat":"valide"}`
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"OK": true
|
"couverture": {
|
||||||
|
"apr\u00e8s": [26],
|
||||||
|
"avant": [1, 26, 38]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
#### POST /justificatif/1/edit
|
#### POST /justificatif/1/edit
|
||||||
|
|
||||||
> `Content-Type: application/json`
|
> `Content-Type: application/json`
|
||||||
>
|
>
|
||||||
> `{"raison":"MEDIC"}`
|
> `{"raison":"MEDIC"}`
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"OK": true
|
"couverture": {
|
||||||
|
"apr\u00e8s": [26],
|
||||||
|
"avant": [1, 26, 38]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -1,26 +1,26 @@
|
||||||
### justificatifs
|
### justificatifs
|
||||||
|
|
||||||
#### GET /justificatifs/1
|
#### GET /justificatifs/1
|
||||||
|
|
||||||
```json
|
```json
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"date_debut": "2022-08-20T12:00:00.000000+02:00",
|
"date_debut": "2022-09-25T08:00:00+0200",
|
||||||
"date_fin": "2022-08-20T12:00:00.000000+02:00",
|
"date_fin": "2022-09-25T16:00:00+0200",
|
||||||
"entry_date": "2022-08-20T12:00:00.000000+02:00",
|
"entry_date": "2023-07-28T11:13:45+0200",
|
||||||
"etat": "VALIDE",
|
"etat": "VALIDE",
|
||||||
"etudid": 1,
|
"etudid": 1,
|
||||||
"fichier": null,
|
"fichier": null,
|
||||||
"justif_id": 1,
|
"justif_id": 1,
|
||||||
"raison": "raison"
|
"raison": "raison",
|
||||||
},
|
"user_id": null
|
||||||
"..."
|
},
|
||||||
|
"..."
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
#### GET /justificatifs/1/query?etat=attente
|
#### GET /justificatifs/1/query?etat=attente
|
||||||
```json
|
|
||||||
[
|
|
||||||
"..."
|
|
||||||
]
|
|
||||||
```
|
|
||||||
|
|
||||||
|
```json
|
||||||
|
["..."]
|
||||||
|
```
|
||||||
|
|
Loading…
Reference in New Issue
Block a user