Skip to content
This repository was archived by the owner on Sep 3, 2021. It is now read-only.

Installation

DrClockwork edited this page Jan 26, 2018 · 46 revisions

Sommaire

  1. Pré-requis
  2. Bases et sources
    1. Mise en place avant les sources
    2. Récupération des sources
  3. Paramétrage
  4. Base de données
  5. Installation tierce
    1. FFMPEG
    2. Elasticsearch
    3. Optionnel : Memcached
    4. Optionnel : Serveur FTP
    5. Optionnel : CAS et LDAP
  6. Traduction
  7. Thème
  8. Tests
  9. Serveur de développement

Pré-requis:

Système d'exploitation : Installation effectuée sur Debian 7.8 64bits - Fonctionne également sur Debian Jessie (v8)

Voici quelques petits exemples d'architectures utilisés par des universités utilisant Pod :

Exemples de matériels
  • Lille :

    • (Encodage) Serveur dédié 8coeurs / 4,5Go de ram / 150Go disque
    • (Frontal) Machine virtuelle 2coeurs / 1Go de ram / 3,5To disque
    • (BDD) Machine virtuelle 1coeur / 1Go de ram / 35Go disque
  • Valenciennes :

    • (Complet) Machine virtuelle 4VCPU / 8Go de ram
  • CNAM (Paris) :

    • (Complet) Machine virtuelle Debian(wheezy) 16Go de ram ajustable / CPU 2x2 coeurs ajustable
  • Nice :

    • Hébergement chez ovh

Si besoin voici une liste complète des architectures des universités utilisant Pod : Détail des installations

Bases et sources

Les démarches pour installer l'environnement de travail pour Pod

Mise en place avant les sources

Création d'un nouvel utilisateur

Dans un terminal avec l'utilisateur root ou un utilisateur appartenant au groupe sudo :

$ adduser pod
$ adduser pod sudo

Si par défaut vous n'avez pas de sudo installé vous pouvez faire cette commande en root:

$ apt-get install sudo

Mise en place de l'environnement système

root@podvm:$ su
root@podvm:$ aptitude update
root@podvm:$ aptitude install python-pip python-dev build-essential git libmysqlclient-dev graphviz libgraphviz-dev pkg-config libldap2-dev libsasl2-dev libssl-dev libjpeg-dev python-imaging libfreetype6-dev

Installation complémentaire pour python :

  • python-chardet : Détecteur universel d'encodage de caractères pour Python2
  • python-fpconst : Utilities for handling IEEE 754 floating point special values
  • python-apt : Interface Python pour libapt-pkg
  • python-debian : modules python pour travailler avec des formats de données utilisés dans Debian
  • python-debianbts : Python interface to Debian's Bug Tracking System
  • python-reportbug : modules Python pour interagir avec des systèmes de gestion de bogues
  • python-soappy : SOAP Support for Python
root@podvm:$ aptitude install python-chardet python-fpconst python-apt python-debian python-debianbts python-reportbug python-reportbug python-soappy

Mise en place de l'environnement virtuel

En tant qu'utilisateur pod

pod@podvm:$ sudo pip install virtualenvwrapper
pod@podvm:$ vim .bashrc

Ajouter ces deux lignes à la fin :

...
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

Prendre en compte les modifications :

pod@podvm:$ source .bashrc

Et créer un nouvel environnement virtuel :

pod@podvm:$ mkvirtualenv --system-site-packages django_pod
  New python executable in django_pod/bin/python
  Installing setuptools, pip...done.
(django_pod)pod@podvm:$

Vérification de la présence du répertoire .virtualenvs

(django_pod)pod@podvm:$ ls -al
...
  drwxr-xr-x 3 pod pod 4096 mai   19 14:54 .virtualenvs
...
Récupération des sources

Récupération des sources

Concernant l'emplacement du projet, je conseille de le mettre dans /usr/local/django_projects

(django_pod)pod@podvm:~$ sudo mkdir /usr/local/django_projects

Vous pouvez faire un lien symbolique dans votre home pour arriver plus vite dans le répertoire django_projects:

(django_pod)pod@podvm:~$ ln -s /usr/local/django_projects django_projects

Placez vous dans le répertoire django_projects

(django_pod)pod@podvm:~$ cd django_projects
(django_pod)pod@podvm:~/django_projects$

On récupère les sources https://github.com/esupportail/pod: Attention, si vous devez utiliser un proxy, vous pouvez le spécifier avec cette commande :

$> git config --global http.proxy http://PROXY:PORT
(django_pod)pod@podvm:~$ sudo chown pod:pod /usr/local/django_projects
(django_pod)pod@podvm:~$ ls -ld /usr/local/django_projects
drwxr-sr-x 2 pod pod 4096 mars  13 10:02 /usr/local/django_projects
(django_pod)pod@podvm:~$ cd django_projects
(django_pod)pod@podvm:~/django_projects$ git clone https://github.com/esupportail/pod.git

Cloning into 'pod'...
remote: Counting objects: 350, done.
remote: Compressing objects: 100% (277/277), done.
remote: Total 350 (delta 66), reused 336 (delta 58), pack-reused 0
Receiving objects: 100% (350/350), 2.07 MiB | 972 KiB/s, done.
Resolving deltas: 100% (66/66), done.

Installation de toutes les librairies python :

(django_pod)pod@podvm:~/django_projects/pod$ pip install -r requirements.txt

De même, si vous devez utiliser un proxy :

$> pip install --proxy="PROXY:PORT" -r requirements.txt

Paramétrage

Les démarches concernant les fichiers de configuration de Pod

Paramètrage

Il faut faire une copie des fichiers de configuration.

(django_pod)pod@podvm:~/django_projects/pod$ cd pod_project/pod_project/
(django_pod)pod@podvm:~/django_projects/pod/pod_project/pod_project$ ls -l
total 160
-rw-r--r-- 1 pod pod   653 juin  23 13:15 celery.py
-rwxr-xr-x 1 pod pod  2251 juin  23 13:15 ckeditor.py
-rw-r--r-- 1 pod pod   289 juin  23 13:15 cursusCodes.py
-rwxr-xr-x 1 pod pod   285 nov.  10 16:34 __init__.py
-rwxr-xr-x 1 pod pod  4465 juin  23 13:15 ISOLanguageCodes.py
-rw-r--r-- 1 pod pod  3901 juin  23 13:15 rest_curl_sample.txt
-rw-r--r-- 1 pod pod   916 juin  23 13:15 rest_router.py
-rw-r--r-- 1 pod pod 13972 nov.  21 12:02 settings_local-sample.py
-rwxr-xr-x 1 pod pod  6603 nov.  21 12:02 settings-sample.py
-rw-r--r-- 1 pod pod   287 juin  23 13:15 tasks.py
-rwxr-xr-x 1 pod pod  7806 nov.  21 12:02 urls-sample.py
-rw-r--r-- 1 pod pod   397 juin  23 13:15 wsgi-sample.py

On commence par le fichier wsgi-sample.py

(django_pod)pod@podvm:~/django_projects/pod/pod_project/pod_project$ cp wsgi-sample.py wsgi.py

Il n'y a plus rien à changer dans ce fichier

Ensuite, on fait de même pour les fichiers de configuration principaux : settings-sample.py et settings_local-sample.py

(django_pod)pod@podvm:~/django_projects/pod/pod_project/pod_project$ cp settings-sample.py settings.py
(django_pod)pod@podvm:~/django_projects/pod/pod_project/pod_project$ cp settings_local-sample.py settings_local.py

Dans le fichier settings_local, il faut renseigner les noms et adresses mail des administrateurs. Ensuite, la variable DEBUG doit etre laissé à True en mode développement, ca permet d'afficher les erreurs dans le navigateur lors de la navigation. Par contre, il faut la mettre à False en production.

De même pour la base de données, il faut utiliser sqlite pour les tests et d'autres SGBD (mysql, postgreSQL, etc...) pour la production.

ALLOWED_HOSTS doit contenir la ou les adresses de connexion à la plateforme.

MEDIA_ROOT est le chemin pour accéder aux fichiers media. C'est dans ce répertore que vont être stockés les vidéos et leur encodage.

Il faut ensuite configurer le mail, le CAS et éventuellement le ldap.

Si vous n'utilisez pas les fonctions de Streaming, live diffusion vous devez faire attention à laisser vide les champs fms_live_url et fms_root_url.

En début de fichier le champ secret_key doit être renseigné. Vous pouvez trouver des générateurs de clé django sur internet.

Pour finir, il faut personnaliser les variables de template et d'établissement.

Pour plus d'informations vous pouvez consulter la page de référencement des paramêtres du fichier settings_local.py

(Table des paramêtres)

Il reste ensuite le fichier urls-sample.py

(django_pod)pod@podvm:~/django_projects/pod/pod_project/pod_project$ cp urls-sample.py urls.py

Enfin il est nécessaire de créer un dossier "media" à la racine du projet dans pod_project.

C'est terminé pour les paramètrages.

Base de données

Mise en place de la base de données de Pod

Migrations et données

En développement, la base de données est en sqlite, elle va nous permettre de tester le fonctionnement de la plateforme avant sa mise en production

En production, il faudra utiliser du MySql ou du PostgreSql (voir ci-après pour cette mise en place).

(django_pod)pod@podvm:~/django_projects/pod/pod_project$ python manage.py makemigrations
...
Migrations for 'filer':
  0002_auto_20150602_1113.py:
    - Alter field polymorphic_ctype on file
Migrations for 'flatpages':
  0002_auto_20150602_1113.py:
    - Add field content_en to flatpage
    - Add field content_fr to flatpage
    - Add field title_en to flatpage
    - Add field title_fr to flatpage
...

Migration des tables :

(django_pod)pod@podvm:~/django_projects/pod/pod_project$ ./manage.py migrate
Operations to perform:
  Synchronize unmigrated apps: jquery, taggit_templatetags, django_cas_gateway, ckeditor, modeltranslation, haystack, bootstrap3
  Apply all migrations: core, filer, admin, sessions, sites, auth, contenttypes, flatpages, taggit, pods, easy_thumbnails
Synchronizing apps without migrations:
  Creating tables...
    Creating table taggit_templatetags_amodel
  Installing custom SQL...
  Installing indexes...
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying sites.0001_initial... OK
  Applying flatpages.0001_initial... OK
  Applying filer.0001_initial... OK
  Applying core.0001_initial... OK
  Applying easy_thumbnails.0001_initial... OK
  Applying easy_thumbnails.0002_thumbnaildimensions... OK
  Applying filer.0002_auto_20150602_1113... OK
  Applying flatpages.0002_auto_20150602_1113... OK
  Applying taggit.0001_initial... OK
  Applying pods.0001_initial.../home/moot/.virtualenvs/django_pod/local/lib/python2.7/site-packages/django/db/models/fields/__init__.py:1282: RuntimeWarning: DateTimeField Mediacourses.date_added received a naive datetime (2015-06-02 11:13:33.643534) while time zone support is active.
  RuntimeWarning)

 OK
  Applying sessions.0001_initial... OK

On charge ensuite des données de base en base de données :

(django_pod)pod@podvm:~/django_projects/pod/pod_project$ python manage.py loaddata core/fixtures/initial_data.json

Et on créé le superutilisateur :

(django_pod)pod@podvm:~/django_projects/pod/pod_project$ python manage.py createsuperuser --username root

Installation tierce

Les différentes installations à coté de Pod. Nécessaire pour l'encodage et le moteur de recherche. Contient aussi des instructions pour l'installation d'utilitaires optionnels.

Mise en place de l'utilitaire d'encodage

FFMPEG

Utilisé pour l'encodage des vidéos.

Pour installer FFMPEG, j'ai télécharger la dernière version fournit sur le site officiel : http://ffmpeg.org/download.html#build-linux

(django_pod)pod@podvm:~/django_projects/pod/pod_project$ su
  Mot de passe :
root:/home/pod/django_projects/pod/pod_project# cd /usr/local/
root:/usr/local# mkdir ffmpeg && cd ffmpeg
root:/usr/local/ffmpeg# wget http://johnvansickle.com/ffmpeg/releases/ffmpeg-release-64bit-static.tar.xz
root:/usr/local/ffmpeg# tar -Jxvf ffmpeg-release-64bit-static.tar.xz
root:/usr/local/ffmpeg# ln -s ffmpeg-2.6.3-64bit-static ffmpeg

Il faut modifier le fichier settings.py pour indiquer les chemins ffmpeg et ffprobe

(django_pod)pod@podvm:~/django_projects/pod/pod_project$ vim pod_project/settings.py

La génération des vignettes des vidéos utilise ffmpegthumbnailer. Il est nécessaire de l'ajouter en plus de ffmpeg :

(django_pod)pod@podvm:~$ sudo apt-get install ffmpegthumbnailer

Depuis la version 1.6.0 la génération de la prévisualisation (overview) utilise imagemagick (Si vous êtes sur un autre système que Linux, il existe aussi ce paquet sous MacOS et Windows : imagemagick)

(django_pod)pod@podvm:~$ sudo apt-get install imagemagick
Mise en place du moteur de recherche

Elasticsearch

Nécessite java pour etre lancé. Si votre machine n'a pas de version 8 ou supérieur, vous pouvez l'installer.

root:~# aptitude install oracle-java8-installer

Il est peut-être nécessaire d'utiliser un dépot supplémentaire pour récupérer Java8 sous Linux : Java8 sous Linux

Pod utilise Elasticsearch comme moteur de recherche.

Si vous utilisez un Pod avec une version 1.8 ou supérieure :

Si vous utilisez un Pod avec une version antérieure à 1.8 :

Il est nécessaire de respecter la version majeur de votre Elasticsearch. Pour un Pod 1.8 toutes les versions d'Elasticsearch 6.x.x sont compatibles. Pour un Pod avant la 1.8 toutes les versions d'Elasticsearch 2.4.x sont compatibles. Une mauvaise version peut empêcher le fonctionnement du moteur de recherche de Pod.

Il faut ensuite modifier le fichier de configuration d'elasticsearch pour le paramétrer. Exemple de paramètres :

# Name your cluster here to whatever.
# Machine is called "Pod", so...
cluster.name: pod

node.name: "Pod1"

network.host: 127.0.0.1

# Unicast Discovery (disable multicast)
discovery.zen.ping.multicast.enabled: false        //Ne pas ajouter cette ligne si vous utilisez ES6
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]

Vous pouvez également changer les paths :

  logs: /usr/local/var/log
  data: /usr/local/var/data

Si vous utilisez Elasticsearch version 6.x.x il est nécessaire d'installer un composant supplémentaire pour le moteur de recherche :

--> Procédures

Elasticsearch : Ajout du template Pod

Pour optimiser la recherche, il faut créer l'index Pod dans elasticsearch et pousser le template fourni :

(django_pod)pod@podvm:~/django_projects/pod/pod_project$ python manage.py create_pod_index

Une commande est fournie dans le cadre où l'on souhaiterais indexer ou réindexer une, plusieurs ou toutes les vidéos.

(django_pod)pod@podvm:~/django_projects/pod/pod_project$ python manage.py index_videos < __ALL__ || pod_id, pod_id...>
Installations optionnels

Optionnel : Memcached

root@podvm:~# aptitude install memcached

Optionnel : Mise en place d'un serveur FTP

Commencez par installer le package pour le serveur FTP

sudo apt-get install vsftpd

Il est nécessaire parfois d'ajouter un utilisateur ftp manuellement

sudo useradd --system ftp
  • INSTALLDIR correspond au futur répertoire d'installation.
  • NOMFTPUSER correspond à l'utilisateur FTP.
  • PASSFTPUSER correspond au mot de passe de l'utilisateur FTP.

En sachant cela, procéder comme suit en ligne de commande:

INSTALLDIR=/data
NOMFTPUSER="ftpuser"
PASSFTPUSER="a_changer"
mkdir $INSTALLDIR/audiovideocours
useradd -m -d $INSTALLDIR/audiovideocours/ftp $NOMFTPUSER
echo "$NOMFTPUSER:$PASSFTPUSER"|chpasswd
mkdir -p $INSTALLDIR/audiovideocours/ftp/canceled $INSTALLDIR/audiovideocours/ftp/client_update $INSTALLDIR/audiovideocours/ftp/live $INSTALLDIR/audiovideocours/ftp/releases
mkdir -p $INSTALLDIR/audiovideocours/cours
aptitude install vsftpd
sed -i 's/anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd.conf
sed -i 's/#local_enable=YES/local_enable=YES/' /etc/vsftpd.conf
sed -i 's/#write_enable=YES/write_enable=YES/' /etc/vsftpd.conf
sed -i 's/#local_umask=022/local_umask=022/' /etc/vsftpd.conf
sed -i 's/#chroot_local_user=YES/chroot_local_user=YES/' /etc/vsftpd.conf
sed -i 's/\/audiovideocours\/ftp/\/audiovideocours\/\.\/ftp/' /etc/passwd
echo "local_root=$INSTALLDIR/audiovideocours/ftp" >> /etc/vsftpd.conf
echo "passwd_chroot_enable=yes" >> /etc/vsftpd.conf
echo "pasv_enable=YES" >> /etc/vsftpd.conf
echo "pasv_min_port=5000" >> /etc/vsftpd.conf
echo "pasv_max_port=5100" >> /etc/vsftpd.conf
chmod go-w $INSTALLDIR/audiovideocours/ftp
chown -R $NOMFTPUSER:$NOMFTPUSER $INSTALLDIR/audiovideocours/ftp/*
/etc/init.d/vsftpd restart

Ensuite il sera nécessaire de configurer l'enregistreur. A partir d'ici il n'existe pas de généralisation de configuration, tout dépends de ce que vous disposez. A titre d'exemple voici une configuration de l'enregistreur de l'université de Strasbourg :

ftpUrl="pod.univ-lille1.fr"
#"FTP URL server for online publication"
urlserver= "http://pod.univ-lille1.fr/mediacourses_add/"
#"Default URL of the audiovideocours server containing the submit form"
#######################################################
urlLiveState="http://pod.univ-lille1.fr/liveState"

Optionnel : CAS et LDAP

Par défaut l'authentification sur le site se fait localement. Cependant, il est possible d'utiliser l'authentification CAS pour avoir accès au site. De plus il est possible de peupler la base de données du site avec les utilisateurs provenant d'un annuaire LDAP. Quand c'est le cas, un utilisateur du LDAP s'authentifiant par le CAS avec succès se verra inscrit dans la base Utilisateurs de Pod. Il s'agit là d'un import par la connexion de l'utilisateur, et pas d'un import global de tout les utilisateurs enregistrés dans le LDAP.

Pour activer l'authentification par le CAS il faut, dans le fichier settings_local.py, modifier la valeur de la variable USE_CAS à True. Et renseigner au minimum l'adresse du CAS dans la variable CAS_SERVER_URL. Pour activer le peuplement de la BDD en utilisant LDAP il faut passer la variable USE_LDAP_TO_POPULATE_USER à True. Normalement cette variable est par défaut sur cette valeur.

Quand le peuplement par LDAP est activé il est ensuite nécessaire de renseigner les variables dans la catégorie "LDAP settings" du fichier. Par défaut dans la variable AUTH_LDAP_USER_SEARCH, l'identifiant utilisateur recherché est l'attribut 'uid' dans le LDAP. Si vous n'utilisez pas ce nom d'attribut vous pouvez changez :

"(uid=%(uid)s)"

par

"(<votre_attribut>=%(uid)s)"

Pour le moment le site Pod récupère quatres informations du LDAP pour completer sa base de données :

  • Le prénom
  • Le nom de famille
  • L'adresse mail
  • L'affiliation

Traduction

Démarches à suivre si vous désirez apporter vos propres traductions à votre instance de Pod.

Utilitaire de traduction et fichiers de langues

La plateforme est par défaut seulement en anglais et en français mais il est possible d'apporter vos propres traductions En root

root@podvm:~# aptitude install gettext

Revenir ensuite en tant qu'utilisateur pod (ctrl+d). Par défaut le dossier locale se situe à la racine du projet :

(django_pod)pod@podvm:~/django_projects/pod/pod_project$ ls -l
  total 956
  drwxr-xr-x 7 pod pod   4096 mai   19 16:00 core
  -rw-r--r-- 1 pod pod 215040 mai   19 16:02 db.sqlite3
  drwxr-xr-x 2 pod pod   4096 mai   19 15:59 django_cas_gateway
  drwxr-xr-x 2 pod pod   4096 mai   19 16:42 locale
  -rwxr-xr-x 1 pod pod    254 avril 25 17:24 manage.py
  drwxr-xr-x 2 pod pod   4096 mai   19 16:04 pod_project
  drwxr-xr-x 5 pod pod   4096 mai   19 16:00 pods
  -rwxr-xr-x 1 pod pod 730429 avril 25 17:24 schema_bdd.jpg

La commande ci-après va créer un fichier nommé django.po avec toutes les phrases clés de la plateforme qu'il est nécessaire de traduire. Encore une fois par défaut ce fichier est déjà renseigné en Anglais + Français. Il est tenu à jour à chaque releases. Cette manipulation est à faire si vous faites vos propres modifications, dans ce cas cette commande va ajouter dans le fichier django.po les phrases qui n'ont pas encore de traduction.

(django_pod)pod@podvm:~/django_projects/pod/pod_project$ django-admin.py makemessages -l fr
  processing locale fr
(django_pod)pod@podvm:~/django_projects/pod/pod_project$ cd locale/fr/LC_MESSAGES/
(django_pod)pod@podvm:~/django_projects/pod/pod_project/locale/fr/LC_MESSAGES$ ls -l
  total 64
  -rw-r--r-- 1 pod pod 61855 mai   19 16:43 django.po

Ce fichier peut être édité directement (avec vim ou poedit). Une phrase se traduit selon ce modèle :

#: core/forms.py:63
msgid "Please indicate the result of the following operation hereunder"
msgstr "Veuillez compléter le champ ci-dessous avec le résultat de l'opération"

core/forms.py:63 correspond au fichier contenant la phrase à traduire ainsi que sa ligne

msgid la phrase originale

msgstr la phrase traduite

Une fois le fichier renseigné avec les traductions, il faut le compiler.

(django_pod)pod@podvm:~/django_projects/pod/pod_project/locale/fr/LC_MESSAGES$ cd ../../..
(django_pod)pod@podvm:~/django_projects/pod/pod_project$ django-admin.py compilemessages
  processing file django.po in /home/pod/django_projects/pod/pod_project/locale/fr/LC_MESSAGES

Cela génère un fichier django.mo (votre .po compilé).

Thème

Mise en place d'un thème personnalisé

Ajouter un nouveau thème

Ajouter un nouveau thème

1°) Dupliquer le dossier « core/theme/LILLE1 » et son contenu vers un dossier « core/theme/nom_du_theme ».

2°) Dans le fichier « pod_project/settings_local.py », remplacer « TEMPLATE_THEME = 'DEFAULT' » par « TEMPLATE_THEME = 'nom_du_theme' ».

3°) Les images, styles et éléments de template personnalisables de votre instance se trouvent maintenant respectivement dans les sous-dossiers:

  • « core/theme/nom_du_theme/assets/images »,
  • « core/theme/nom_du_theme/assets/css »,
  • « core/theme/nom_du_theme/templates ».

4°) Toujours dans le fichier « pod_project/settings_local.py »

  • « TEMPLATE_USE_PRE_HEADER » et « TEMPLATE_USE_FOOTER » positionné à « False » donnera une mise en page standard, sans « footer » ni « pre-header » ;
  • « TEMPLATE_USE_PRE_HEADER » et « TEMPLATE_USE_FOOTER » positionné à une autre valeur permettra d’utiliser ces éléments de mise en page.

5°) Templates personnalisés:

  • « core/theme/nom_du_theme/templates/footer.html » ajoute un pied de page dans lequel apparaissent les liens définis dans la partie « Core/Pages menu du bas » de l’interface d’administration, ainsi que d’autres liens définis en dur dans le fichier ;
  • « core/theme/nom_du_theme/templates/pre-header.html » ajoute un bandeau supplémentaire permettant d’ajouter un menu de navigation vers d’autres sites de l’université ;
  • si seul le footer est souhaité, supprimer le contenu de « pre-header ».

6°) Styles

  • la feuille de style concernant l’interface utilisateur est « core/theme/nom_du_theme/assets/css/pod.css » ;
  • celle concernant l’interface d’administration est « core/theme/nom_du_theme/assets/css/admin.css » ;
  • plutôt que d’éditer directement ces feuilles de style, il est recommandé de surcharger les règles concernées en fin de fichier, ce qui en facilitera la mise à jour.

7°) Images : voir « Correspondance des images » ci-après.

8°) Dossier « static » :

  • son emplacement est défini par « STATIC_ROOT » dans le fichier « settings-local.py » ;
  • s’il n’est pas vide, supprimer tout le contenu de ce dossier.

9°) Une fois le theme finalisé, lancez la collecte des fichiers statiques depuis l’environnement virtuel.

Correspondance des images (dans « pod_project/settings.py ») :

  • LOGO_SITE : situé à gauche, au dessus du menu, en face de la sélection des langues et du bouton de connexion ;
  • LOGO_COMPACT_SITE : est utilisé dans la barre contenant le menu sur les interfaces mobiles, en remplacement de LOGO_SITE ;
  • LOGO_ETB : utilisé dans la version par défaut du template personnalisé « templates/pre-header.html » du thème ;
  • LOGO_PLAYER : utilisé dans la barre de commandes du lecteur vidéo ;
  • SERV_LOGO : utilisé dans la partie gauche du pied de page « templates/footer.html » du thème.

Le thème lille1 est basé sur bootstrap v3, vous pouvez le télécharger et le personnaliser à ces adresses : http://getbootstrap.com/ et http://getbootstrap.com/customize/

Header et footer

D'autre part, il vous est possible de créer un header et un footer personnalisés. Pour se faire, il vous faut copier le dossier custom situé dans le dossier templates et modifier les fichier header et footer s'y trouvant. Une fois fait il ne reste plus qu'à indiquer dans votre settings.py où se trouvent vos templates personnalisés en mettant à jour la constante “TEMPLATE_CUSTOM” (seul le nom du dossier qui se trouve dans “templates” est nécessaire, pas besoin du chemin complet).

Tests

Comment lancer les tests sur Pod. Il est important de procéder à des tests avant chaque déploiements et/ou après des modifications du code source pour s'assurer de la bonne intégrité du programme.

Lancement des tests

Tout un ensemble de tests dit unitaires ont été ajoutés depuis la version 1.1. Ils permettent de vérifier la création, la lecture, la mise à jour et la suppression d'éléments sur la plateforme. De plus, selon la configuration, ils vérifient également la connexion Elasticsearch, CAS, LDAP et testent un encodage.

(django_pod)pod@podvm:~/django_projects/pod/pod_project$ python manage.py test core pods.tests.tests_models pods.tests.tests_views pods.tests.tests_delete_video

Après chaque lancement de tests unitaires il sera nécessaire de réindexer elasticsearch (voir le chapitre sur Elasticsearch).

Serveur de développement

Le serveur de développement permet de tester vos futurs modifications facilement.

Lancement du serveur

N'hésitez pas à lancer le serveur de développement pour vérifier vos modifications au fur et à mesure.

À ce niveau, vous devriez avoir le site en français et en anglais et voir l'ensemble de la page d'accueil.

(django_pod)pod@podvm:~/django_projects/pod/pod_project$ python manage.py runserver ADRESSE_IP/NOM_DNS:8080

Vérifier l'accès à la plateforme en saisissant les paramètres fournis http://ADRESSE_IP:8080 ou http://NOM_DNS:8080


Avant la mise en production, il faut vérifier le fonctionnement de la plateforme dont l'ajout d'une vidéo, son encodage et sa suppression.

Attention, pour ajouter une vidéo, il doit y avoir au moins un type de vidéo disponible. Si vous avez correctement peuplé votre base de données avec le fichier initial_data.json vous devez au moins avoir other/autres.

il faut vérifier l'authentification CAS, le moteur de recherche etc.


Liste de diffusion du projet : pod@esup-portail.org

Clone this wiki locally