Pour rappel, la configuration de l'application se fait dans /etc/polynum/local_settings.py
Un fichier d'exemple local_settings.py.example est fourni avec Polynum, c'est un modèle pour la création de /etc/polynum/local_settings.py : il contient la liste des paramétrages possibles avec explications et exemples.
Si vous avez installé Polynum à partir du paquet, le modèle est placé dans /usr/share/doc/polynum/, il vous suffit donc de faire :
# cd /etc/polynum # cp /usr/share/doc/polynum/local_settings.py.example local_settings.py # vi local_settings.py
Attention : la configuration /etc/polynum/local_settings.py doit être lisible par l'utilisateur qui va faire tourner l'application, c'est-à-dire en général polynum. Par ailleurs ce fichier va contenir des de passe (accès à la base de données, à l'annuaire LDAP), il ne doit donc pas être lisible par d'autres utilisateurs :
# chown polynum:polynum /etc/polynum/local_settings.py # chmod 640 /etc/polynum/local_settings.py
La base de données attendue par PolyNum est PostgreSQL.
Sur le serveur PostgreSQL, créer une base vierge (createdb polynum) et un utilisateur qui aura tous les droits sur cette base (lecture, écriture, mais aussi création et mise à jour des tables).
Dans la suite, la base sera nommée polynum et l'utilisateur polynum.
Dans /etc/polynum/local_settings.py modifier le paramètre DATABASES selon le modèle suivant :
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'polynum', # nom de la base 'USER': 'polynum', # nom de l'utilisateur associé 'PASSWORD': '...', # mot de passe de l'utilisateur 'HOST': 'db.univ.fr', # serveur contenant la base (rien pour localhost) 'PORT': '', # port TCP (rien pour le port par défaut) } }
Une fois la configuration enregistrée, lancez la création de la base :
# polynum-manage.py syncdb Installing custom SQL ... Installing indexes ... Installed 0 object(s) from 0 fixture(s) Synced: > south > django.contrib.auth (...) Not synced (use migrations): - polynum.base - polynum.delegation (use ./manage.py migrate to migrate these)
# polynum-manage.py migrate Running migrations for base: (...) Installed 0 object(s) from 0 fixture(s)
Certaines requêtes nécessitent des index pour être performantes, il est donc indispensable de créer des index d'optimisation :
# polynum-manage.py sqlindexes base delegation | \ psql --host=db.univ.fr --username=polynum
Pour aider à la configuration et l'adaptation de PolyNum au contexte local, des données initiales «classiques» sont livrées, appelés fixtures dans le monde Django. Pour les ajouter dans la base :
# polynum-manage.py loaddata /usr/share/doc/polynum/fixtures/*.json
Chaque demande dans PolyNum est liée à une entité administrative. Ces entités doivent être importées dans PolyNum depuis un dump au format LDIF/SupAnn ou XML (un exemple de fichier XML est disponible dans /usr/share/doc/polynum/fixtures/structures.xml.
Une fois le fichier LDIF ou XML obtenu, l'importer avec la commande loadentities :
# polynum-manage.py loadentities /.../structures.xml (...) Added 7980 entities
# polynum-manage.py loadentities /.../structures.ldif (...) Added 7980 entities
Polynum peut authentifier les utilisateurs via CAS et LDAP. Dans /etc/polynum/local_settings.py adapter les paramètres suivants :
(... extrait de /etc/polynum/local_settings.py ...) CAS_SERVER_URL = "https://cas.univ.fr/" # CAS server URL LDAP_URL = "ldaps://ldap.univ.fr" # LDAP server URL LDAP_BIND_DN = "uid=...,ou=...,dc=..." # DN to authenticate to the LDAP server LDAP_BIND_PASSWORD = "..." # password LDAP_USER_QUERY = "supannAliasLogin=%s" # query to retrieve user, %s is CAS username LDAP_BASE = "dc=univ,dc=fr" # base DN for the query
TODO : sysvinit et /etc/default/polynum
TODO : DEBUG = False
TODO : collectstatic
TODO : config gunicorn + nginx