139 lines
3.7 KiB
Markdown
139 lines
3.7 KiB
Markdown
# Site de la Mediatek
|
|
|
|
[![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
[![pipeline status](https://gitlab.crans.org/mediatek/med/badges/master/pipeline.svg)](https://gitlab.crans.org/mediatek/med/commits/master)
|
|
[![coverage report](https://gitlab.crans.org/mediatek/med/badges/master/coverage.svg)](https://gitlab.crans.org/mediatek/med/commits/master)
|
|
|
|
Le projet Med permet la gestion de la base de donnée de la médiathèque de l'ENS Paris-Saclay.
|
|
Elle permet de gérer les medias, bd, jeux, emprunts, ainsi que les adhérents de la med.
|
|
|
|
## Licence
|
|
|
|
Ce projet est sous la licence GNU public license v3.0.
|
|
|
|
## Installation
|
|
|
|
### Développement
|
|
|
|
On peut soit développer avec Docker, soit utiliser un VirtualEnv.
|
|
|
|
Dans le cas du VirtualEnv,
|
|
|
|
```bash
|
|
python3 -m venv venv
|
|
. venv/bin/activate
|
|
pip install -r requirements.txt
|
|
./manage.py compilemessages
|
|
./manage.py makemigrations
|
|
./manage.py migrate
|
|
./manage.py runserver
|
|
```
|
|
|
|
### Production
|
|
|
|
Vous pouvez soit utiliser Docker, soit configurer manuellement le serveur.
|
|
|
|
#### Mise en place du projet sur Zamok
|
|
|
|
Pour mettre en place le projet sans droits root,
|
|
on va créer un socket uwsgi dans le répertoire personnel de l'utilisateur `club-med`
|
|
puis on va dire à Apache2 d'utiliser ce socket avec un `.htaccess`.
|
|
|
|
Pour cela on va imiter ce que fait l'image Docker,
|
|
|
|
```bash
|
|
git clone https://gitlab.crans.org/mediatek/med.git django-med
|
|
chmod go-rwx -R django-med
|
|
python3 -m venv venv
|
|
. venv/bin/activate
|
|
pip install -r requirements.txt
|
|
./entrypoint.sh
|
|
```
|
|
|
|
Pour lancer le serveur au démarrage de Zamok,
|
|
on ajoute dans la crontab de l'utilisateur club-med (`crontab -e`)
|
|
la ligne suivante :
|
|
|
|
```crontab
|
|
@reboot /home/club-med/django-med/entrypoint.sh
|
|
```
|
|
|
|
Il est néanmoins une mauvaise idée de faire de la production sur SQLite,
|
|
on configure donc ensuite Django et une base de données.
|
|
|
|
#### Configuration d'une base de données
|
|
|
|
Sur le serveur MySQL ou PostgreSQL, il est nécessaire de créer une base de donnée med,
|
|
ainsi qu'un user med et un mot de passe associé.
|
|
|
|
Voici les étapes à executer pour MySQL :
|
|
|
|
```SQL
|
|
CREATE DATABASE med;
|
|
CREATE USER 'med'@'localhost' IDENTIFIED BY 'password';
|
|
GRANT ALL PRIVILEGES ON med.* TO 'med'@'localhost';
|
|
FLUSH PRIVILEGES;
|
|
```
|
|
|
|
Et pour PostgreSQL :
|
|
|
|
```SQL
|
|
CREATE DATABASE med;
|
|
CREATE USER med WITH PASSWORD 'password';
|
|
GRANT ALL PRIVILEGES ON DATABASE med TO med;
|
|
```
|
|
|
|
## Exemple de groupes de droits
|
|
|
|
```
|
|
bureau
|
|
media | Can view borrowed item
|
|
media | Can add borrowed item
|
|
media | Can change borrowed item
|
|
media | Can delete borrowed item
|
|
users | Can view adhesion
|
|
users | Can add adhesion
|
|
users | Can change adhesion
|
|
users | Can delete adhesion
|
|
users | Can view clef
|
|
users | Can add clef
|
|
users | Can change clef
|
|
users | Can delete clef
|
|
users | Can view user
|
|
users | Can add user
|
|
users | Can change user
|
|
sporz | Can view gamesave
|
|
+ permissions keyholder
|
|
|
|
keyholder
|
|
media | Can view author
|
|
media | Can add author
|
|
media | Can change author
|
|
media | Can delete author
|
|
media | Can view medium
|
|
media | Can add medium
|
|
media | Can change medium
|
|
media | Can delete medium
|
|
media | Can view game
|
|
media | Can add game
|
|
media | Can change game
|
|
media | Can delete game
|
|
media | Can view borrowed item
|
|
media | Can add borrowed item
|
|
media | Can change borrowed item
|
|
media | Can delete borrowed item
|
|
users | Can view user
|
|
users | Can view clef
|
|
|
|
users (default group for everyone)
|
|
media | Can view author
|
|
media | Can view game
|
|
media | Can view medium
|
|
sporz | Can add gamesave
|
|
sporz | Can change gamesave
|
|
sporz | Can add player
|
|
sporz | Can change player
|
|
sporz | Can delete player
|
|
sporz | Can view player
|
|
```
|