logs | ||
med | ||
media | ||
theme | ||
users | ||
.coveragerc | ||
.gitignore | ||
.gitlab-ci.yml | ||
.pylintrc | ||
COPYING | ||
django-med.service | ||
Dockerfile | ||
entrypoint.sh | ||
manage.py | ||
README.md | ||
requirements.txt | ||
tool_barcode_getblue.py | ||
tox.ini |
Site de la Mediatek
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,
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,
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 :
@reboot /home/club-med/django-med/entrypoint.sh
Pour couper le serveur, on tue le maître UWSGI,
kill -INT `cat ~/django-med/uwsgi.pid`
Pour reverse-proxyfier le serveur derrière Apache, on place dans ~/www/.htaccess
:
RewriteEngine On
# UWSGI socket
RewriteRule ^django.wsgi/(.*)$ unix:/home/c/club-med/django-med/uwsgi.sock|fcgi://localhost/ [P,NE,L]
# When not a file and not starting with django.wsgi, then forward to UWSGI
RewriteCond %{REQUEST_URI} !^/django.wsgi/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /django.wsgi/$1 [QSA,L]
Pour servir les fichiers statiques, on crée un lien symbolique :
ln -s ~/django-med/static ~/www/static
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 PostgreSQL :
CREATE DATABASE "club-med";
CREATE USER "club-med" WITH PASSWORD 'MY-STRONG-PASSWORD';
GRANT ALL PRIVILEGES ON DATABASE "club-med" TO "club-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 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 (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