Les variables suivantes sont utilisées par la plateforme pour son fonctionnement. Leurs valeurs peuvent être changées dans votre fichier de configuration :
(django_pod) pod@pod:/usr/local/django_projects/podv2$ vim pod/custom/settings_local.py
La documentation suivante précise pour chaque variable son nom, son usage et sa valeur par défaut.
Property | Description | Default Value |
---|---|---|
SECRET_KEY | La clé secrète d’une installation Django. Elle est utilisée dans le contexte de la signature cryptographique, et doit être définie à une valeur unique et non prédictible. https://docs.djangoproject.com/fr/1.11/ref/settings/#secret-key | 'A_CHANGER' |
DEBUG | Une valeur booléenne qui active ou désactive le mode de débogage. Ne déployez jamais de site en production avec le réglage DEBUG activé. https://docs.djangoproject.com/fr/1.11/ref/settings/#debug | True |
ALLOWED_HOSTS | Une liste de chaînes représentant des noms de domaine/d’hôte que ce site Django peut servir. C’est une mesure de sécurité pour empêcher les attaques d’en-tête Host HTTP, qui sont possibles même avec bien des configurations de serveur Web apparemment sécurisées. https://docs.djangoproject.com/fr/1.11/ref/settings/#allowed-hosts | ['localhost'] |
SESSION_COOKIE_AGE | L’âge des cookies de sessions, en secondes. https://docs.djangoproject.com/fr/1.11/ref/settings/#session-cookie-age | 14400 |
SESSION_EXPIRE_AT_BROWSER_CLOSE | Indique s’il faut que la session expire lorsque l’utilisateur ferme son navigateur. https://docs.djangoproject.com/fr/1.11/ref/settings/#session-cookie-age | True |
ADMINS | Une liste de toutes les personnes qui reçoivent les notifications d’erreurs dans le code. Lorsque DEBUG=False et qu’une vue lève une exception, Django envoie un courriel à ces personnes contenant les informations complètes de l’exception. Chaque élément de la liste doit être un tuple au format « (nom complet, adresse électronique) ». Exemple : [('John', 'john@example.com'), ('Mary', 'mary@example.com')] Dans Pod, les "admins" sont également destinataires des courriels de contact, d'encodage ou de flux rss si la variable CONTACT_US_EMAIL n'est pas renseignée. | ( ('Name', 'adminmail@univ.fr'),) |
MANAGERS | Dans Pod, les "managers" sont destinataires des courriels de fin d'encodage (et ainsi des vidéos déposées sur la plateforme). Le premier managers renseigné est également contact des flus rss. Ils sont aussi destinataires des courriels de contact si la variable CONTACT_US_EMAIL n'est pas renseignée. | ADMINS |
DATABASES | Un dictionnaire contenant les réglages de toutes les bases de données à utiliser avec Django. C’est un dictionnaire imbriqué dont les contenus font correspondre l’alias de base de données avec un dictionnaire contenant les options de chacune des bases de données. https://docs.djangoproject.com/fr/1.11/ref/settings/#databases | { |
LANGUAGE_CODE | Langue par défaut si non détectée | fr |
LANGUAGES | Langue disponible et traduite | ( ('fr', 'Français'), ('en', 'English'), ('nl', 'Dutch (Netherlands)')) |
TIME_ZONE | Une chaîne représentant le fuseau horaire pour cette installation. https://docs.djangoproject.com/fr/1.11/ref/settings/#std:setting-TIME_ZONE | UTC |
FILE_UPLOAD_TEMP_DIR | Le répertoire dans lequel stocker temporairement les données (typiquement pour les fichiers plus grands que FILE_UPLOAD_MAX_MEMORY_SIZE) lors des téléversements de fichiers. https://docs.djangoproject.com/fr/1.11/ref/settings/#file-upload-temp-dir | /var/tmp |
STATIC_ROOT | Le chemin absolu vers le répertoire dans lequel collectstatic rassemble les fichiers statiques en vue du déploiement. https://docs.djangoproject.com/fr/1.11/ref/settings/#std:setting-STATIC_ROOT | /pod/static |
MEDIA_ROOT | Chemin absolu de système de fichiers pointant vers le répertoire qui contiendra les fichiers téléversés par les utilisateurs. https://docs.djangoproject.com/fr/1.11/ref/settings/#std:setting-MEDIA_ROOT | /pod/media |
EMAIL_HOST | nom du serveur smtp | smtp.univ.fr |
EMAIL_PORT | port d'écoute du serveur smtp | 25 |
SERVER_EMAIL | courriel utilisé par défaut pour les envois automatique (erreur de code etc.) | noreply@univ.fr |
DEFAULT_FROM_EMAIL | courriel utilisé par défaut pour les envois de courriel (contact, encodage etc.) | noreply@univ.fr |
MENUBAR_HIDE_INACTIVE_OWNERS | Les utilisateurs inactif ne sont plus affichés dans la barre de menu utilisateur | True |
MENUBAR_SHOW_STAFF_OWNERS_ONLY | Les utilisateurs non staff ne sont plus affichés dans la barre de menu utilisateur | False |
HOMEPAGE_SHOWS_PASSWORDED | Afficher les vidéos dont l'accès est protégé par mot de passe sur la page d'accueil | False |
HOMEPAGE_SHOWS_RESTRICTED | Afficher les vidéos dont l'accès est protégé par authentification sur la page d'accueil | False |
FORCE_LOWERCASE_TAGS | Les mots clés saisis lors de l'ajout de vidéo sont convertis automatiquement en minuscule | True |
MAX_TAG_LENGTH | Les mots clés saisis lors de l'ajout de vidéo ne peuvent dépassé la longueur saisie | 50 |
USE_PODFILE | Utiliser l'application de gestion de fichier fourni avec le projet. Si False, chaque fichier envoyé ne pourra être utilisé qu'une seule fois. | False |
THIRD_PARTY_APPS | Liste des applications tierces accessibles. | [] |
FILES_DIR | Nom du répertoire racine ou les fichiers "complémentaires" (hors vidéos etc.) sont téléversés. | files |
SUBJECT_CHOICES | Choix de sujet pour les courriels envoyés depuis la plateforme | ( ('', '-----'), ('info', ('Request more information')), ('contribute', ('Learn more about how to contribute')), ('request_password', ('Password request for a video')), ('inappropriate_content', ('Report inappropriate content')), ('bug', ('Correction or bug report')), ('other', ('Other (please specify)')) ) |
HIDE_USERNAME | Si valeur vaut 'True', le username de l'utilisateur ne sera pas visible sur la plate-forme Pod et si la valeur vaut 'False' le username sera affichés aux utilisateurs authentifiés. | False |
HIDE_USER_TAB | Si valeur vaut 'True', l'onglet Utilisateur ne sera pas visible et si la valeur vaut 'False' l'onglet Utilisateur ne sera visible qu'aux personnes authentifiées. | False |
HIDE_USER_FILTER | Si la valeur vaut 'True', le filtre des vidéos par utilisateur ne sera plus visible sur la plate-forme Pod et si la valeur vaut 'False' le filtre sera visible qu'aux personnes authentifiées. | False |
LINK_SUPERPOSITION | Si valeur vaut 'True', les URLs contenues dans le texte de superposition seront transformées, à la lecture de la vidéo, en lien cliquable. | False |
CUSTOM_CONTACT_US | Si valeur vaut 'True', les e-mails de contacts seront adressés, selon le sujet, soit au propriétaire de la vidéo soit au(x) manageur(s) des vidéos Pod. (voir USER_CONTACT_EMAIL_CASE et | False |
USER_CONTACT_EMAIL_CASE | Une liste contenant les sujets de contact dont l'utilisateur sera seul destinataire plutôt que le(s) manageur(s). Si la liste est vide, les mails de contact seront envoyés au(x) manageur(s). Valeurs possibles : 'info', 'contribute', 'request_password', 'inapropriate_content', 'bug', 'other' | [ ] |
| Si valeur vaut 'True', rajoute un attribut 'establishment' à l'utilisateur Pod ce qui permet de gérer plus d'un établissement pouvant utiliser Pod. Dans ce cas les emails de contact par exemple seront envoyés soit à l'utilisateur soit au(x) manageur(s) de l'établissement de l'utilisateur. (voir Egalement les emails de fin d'encodage seront envoyés au(x) manageur(s) de l'établissement du propriétaire de la vidéo encodée, en plus d'un email au propriétaire, en confirmation de la fin d'encodage de sa vidéo. | False |
USE_STATS_VIEW | Permet d'activer la possibilité de voir en details le nombre de visualisation d'une vidéo durant un jour donné ou mois, année ou encore le nombre de vue total depuis la création de la vidéo. un lien est rajouté dans la partie info lors de la lecture d'une vidéo, un lien est rajouté dans la page de visualisation d'une chaîne ou un theme ou encore toutes les vidéos présentes sur la plateforme. | False |
L'ensemble des variables ci-après doivent être contnu dans un dictionnnaire TEMPLATE_VISIBLE_SETTINGS
.
Voici sa valeur par défaut :
TEMPLATE_VISIBLE_SETTINGS = {
'TITLE_SITE': 'Pod',
'TITLE_ETB': 'University name',
'LOGO_SITE': 'img/logoPod.svg',
'LOGO_ETB': 'img/logo_etb.svg',
'LOGO_PLAYER': 'img/logoPod.svg',
'LINK_PLAYER': '',
'FOOTER_TEXT': ('',),
'FAVICON': 'img/logoPod.svg',
'CSS_OVERRIDE' : '',
'PRE_HEADER_TEMPLATE' : '',
'POST_FOOTER_TEMPLATE' : '',
'TRACKING_TEMPLATE' : '',
}
Property | Description | Default Value |
---|---|---|
TITLE_SITE | Titre du site. | 'Pod' |
TITLE_ETB | Titre de l’établissement. | 'University name' |
LOGO_SITE | Logo affiché en haut à gauche sur toutes les pages. Doit se situer dans le répertoire static | 'img/logoPod.svg' |
LOGO_ETB | Logo affiché dans le footer sur toutes les pages. Doit se situer dans le répertoire static | 'img/logo_etb.svg' |
LOGO_PLAYER | Logo affiché sur le player video. Doit se situer dans le répertoire static | 'img/logoPod.svg' |
LINK_PLAYER | Lien de destination du logo affiché sur le player | '' |
FOOTER_TEXT | Texte affiché dans le footer. Une ligne par entrée, accepte du code html. Par exmple : ( '42, rue Paul Duez', '59000 Lille - France', ('<a href="https://goo.gl/maps/AZnyBK4hHaM2"' ' target="_blank">Google maps</a>') ) | ('',) |
FAVICON | Icon affiché dans la barre d'adresse du navigateur | 'img/logoPod.svg' |
CSS_OVERRIDE | Si souhaitée, à créer et sauvegarder dans le répertoire static de l'application custom et préciser le chemin d'accès. Par exemple : "custom/etab.css" | '' |
| vous pouvez créer un template dans votre application custom et indiquer son chemin dans cette variable pour que ce code html, ce template soit affiché en haut de votre page, le code est ajouté juste après la balise body.(Or iframe) Si le fichié créé est '/usr/local/django_projects/podv2/pod/custom/templates/custom/preheader.html' alors la varaible doit prendre la valeur 'custom/preheader.html' | '' |
| Idem que pre-header, le code contenu dans le template sera affiché juste avant la fermeture du body. (Or iframe) | '' |
| vous pouvez créer un template dans votre application custom pour y intégrer votre code Piwik ou Google analytics. Ce template est inséré dans toutes les pages de la plateforme, y compris en mode iframe | '' |
Property | Description | Default Value |
---|---|---|
ES_URL | adresse du ou des instances d'Elasticsearch utilisées pour l'indexation et la recherche de vidéo. | ['http://127.0.0.1:9200/'] |
ES_INDEX | Valeur pour l’index de ElasticSearch | pod |
Pour mettre à jour le moteur de recherche, je lance toutes les nuits la tache cron suivante :
0 5 * * * cd /home/pod/django_projects/podv2 && /home/pod/.virtualenvs/django_pod/bin/python manage.py index_videos --all
Property | Description | Default Value |
---|---|---|
FFMPEG | commande ffmpeg | ffmpeg |
FFPROBE | commande ffprobe | ffprobe |
SEGMENT_TARGET_DURATION | durée en seconde des segment HLS | 2 |
RATE_MONITOR_BUFFER_RATIO | la taille du buffer est égale au bitrate vidéo du rendu multiplié par cette valeur | 2 |
FFMPEG_NB_THREADS | nombre de thread possible pour ffmpeg (0 égale maximum possible) | 0 |
GET_INFO_VIDEO | Commande utilisée pour récupérer les informations de la première piste video du fichier envoyé | "%(ffprobe)s -v quiet -show_format -show_streams -select_streams v:0 -print_format json -i %(source)s" |
GET_INFO_AUDIO | Commande utilisée pour récupérer les informations de la première piste audio du fichier envoyé | "%(ffprobe)s -v quiet -show_format -show_streams -select_streams a:0 -print_format json -i %(source)s" |
FFMPEG_STATIC_PARAMS | paramètres de la commande ffmpeg utilisés pour encoder toutes les vidéos, peu importe le rendu | " -c:a aac -ar 48000 -c:v h264 -profile:v high -pix_fmt yuv420p -crf 20 -sc_threshold 0 -force_key_frames \"expr:gte(t,n_forced*1)\" -deinterlace -threads %(nb_threads)s " |
FFMPEG_MISC_PARAMS | autres paramètres qui sont placés au début de la commande | " -hide_banner -y " |
AUDIO_BITRATE | bitrate audio pour l'encodage M4A (encodage des fichiers audio envoyés sur la plateforme) | 192k |
ENCODING_M4A | commande utilisée pour l'encodage des fichiers audio envoyés sur la plateforme | %(ffmpeg)s -i %(source)s %(misc_params)s -c:a aac -b:a %(audio_bitrate)s -vn -threads %(nb_threads)s \"%(output_dir)s/audio_%(audio_bitrate)s.m4a\" |
ENCODE_MP3_CMD | commande utilisée pour l'encodage audio pour tous les fichiers envoyés sur la plateforme | "%(ffmpeg)s -i %(source)s %(misc_params)s -vn -b:a %(audio_bitrate)s -vn -f mp3 -threads %(nb_threads)s \"%(output_dir)s/audio_%(audio_bitrate)s.mp3\"" |
EMAIL_ON_ENCODING_COMPLETION | Si True, un courriel est envoyé aux managers et à l'auteur (si DEBUG est à True) à la fin de l'encodage | True |
FILE_UPLOAD_TEMP_DIR | Répertoire temporaire pour la création des thumbnails | '/tmp' |
CELERY_TO_ENCODE | Utilisation de Celery pour la gestion des taches d'encodage | False |
Property | Description | Default Value |
---|---|---|
DEFAULT_DC_COVERAGE | couverture du droit pour chaque vidéo | TITLE_ETB + " - Town - Country" |
DEFAULT_DC_RIGHTS | droit par défaut affichés dans le flux RSS si non renseigné | "BY-NC-SA" |
Property | Description | Default Value |
---|---|---|
RESTRICT_EDIT_VIDEO_ACCESS_TO_STAFF_ONLY | Si True, seule les personnes "Staff" peuvent déposer des vidéos sur la plateforme | False |
DEFAULT_THUMBNAIL | image par défaut affichée comme poster ou vignette, utilisée pour présenter la vidéo. Cette image doit se situer dans le répertoire static. | 'img/default.png' |
ENCODING_CHOICES | Encodage possible sur la plateforme. Associé à un rendu dans le cas d'une vidéo. | ( ("audio", "audio"), ("360p", "360p"), ("480p", "480p"), ("720p", "720p"), ("1080p", "1080p"), ("playlist", "playlist") ) |
FORMAT_CHOICES | Format d'encodage réalisé sur la plateforme. | ( ("video/mp4", 'video/mp4'), ("video/mp2t", 'video/mp2t'), ("video/webm", 'video/webm'), ("audio/mp3", "audio/mp3"), ("audio/wav", "audio/wav"), ("application/x-mpegURL", application/x-mpegURL"), ) |
LICENCE_CHOICES | Licence proposées pour les vidéos. | ( ('by', ("Attribution 4.0 International (CC BY 4.0)")), ('by-nd', ("Attribution-NoDerivatives 4.0 " "International (CC BY-ND 4.0)" )), ('by-nc-nd', ( "Attribution-NonCommercial-NoDerivatives 4.0 " "International (CC BY-NC-ND 4.0)" )), ('by-nc', ("Attribution-NonCommercial 4.0 " "International (CC BY-NC 4.0)")), ('by-nc-sa', ( "Attribution-NonCommercial-ShareAlike 4.0 " "International (CC BY-NC-SA 4.0)" )), ('by-sa', ( "Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)")) ) |
DEFAULT_TYPE_ID | Les vidéos créées sans type (par importation par exemple) seront affectées au type par défaut (en général, le type ayant pour identifiant '1' est 'Other') | 1 |
CURSUS_CODES | Liste des cursus proposés lors de l'ajout des vidéos. Affichés en dessous d'une vidéos, ils sont aussi utilisés pour affiner la recherche. | ( ('0', ("None / All")), ('L', ("Bachelor’s Degree")), ('M', ("Master’s Degree")), ('D', ("Doctorate")), ('1', _("Other")) ) |
LANG_CHOICES | Liste des langues proposées lors de l'ajout des vidéos. Affichés en dessous d'une vidéos, ils sont aussi utilisés pour affiner la recherche. | ( settings.PREF_LANG_CHOICES + (('', '----------'),) + settings.ALL_LANG_CHOICES ) |
VIDEOS_DIR | Répertoire par défaut pour le téléversement des vidéos. | videos |
ENCODE_VIDEO | Fonction appelée pour lancer l'encodage des vidéos | start_encode |
VIDEO_ALLOWED_EXTENSIONS | Extension autorisée pour le téléversement sur la plateforme | ( '3gp', 'avi', 'divx', 'flv', 'm2p', 'm4v', 'mkv', 'mov', 'mp4', 'mpeg', 'mpg', 'mts', 'wmv', 'mp3', 'ogg', 'wav', 'wma' ) |
VIDEO_MAX_UPLOAD_SIZE | Taille maximum en Go des fichiers téléversés sur la plateforme | 1 |
VIDEO_FORM_FIELDS_HELP_TEXT | Ensemble des textes d'aide affichés avec le formulaire d'envoi de vidéo | voir pod/video/forms.py |
VIDEO_FORM_FIELDS | Liste des champs du formulaire d'édition de vidéos affichés | __all__ |
CHANNEL_FORM_FIELDS_HELP_TEXT | Ensemble des textes d'aide affichés avec le formulaire d'édition de chaine. | voir pod/video/forms.py |
THEME_FORM_FIELDS_HELP_TEXT | Ensemble des textes d'aide affichés avec le formulaire d'édition de theme. | voir pod/video/forms.py |
Property | Description | Default Value |
---|---|---|
RECORDER_TYPE | Type d'enregistrement géré par la plateforme. Un enregistreur ne peut déposer que des fichiers de type proposé par la plateforme. Le traitement se fait en fonction du type de fichier déposé. | ( ('video', _('Video')), ('audiovideocast', _('Audiovideocast')), ) |
DEFAULT_RECORDER_PATH | Chemin racine du répertoire où sont déposés les enregistrements (chemin du serveur FTP). | "/data/ftp-pod/ftp/" |
DEFAULT_RECORDER_USER_ID | Identifiant du propriétaire par défaut (si non spécifié) des enregistrements déposés. | 1 |
DEFAULT_RECORDER_ID | Ajoute un enregistreur par défaut à un enregistrement non identifiable (mauvais chemin dans le dépôt FTP). | 1 |
DEFAULT_RECORDER_TYPE_ID | Identifiant du type de vidéo par défaut (si non spécifié). (Exemple : 3 pour Colloque/conférence, 4 pour Cours...) | 1 |
ALLOW_RECORDER_MANAGER_CHOICE_VID_OWNER | Si True, le manager de l'enregistreur pourra choisir un propriétaire de l'enregistrement. | True |
ALLOW_MANUAL_RECORDING_CLAIMING | Si True, une page apparaîtra dans le menu du profil de l'utilisateur autorisé permettant de s'attribuer un enregistrement. | False |
RECORDER_SKIP_FIRST_IMAGE | Si True, permet de ne pas prendre en compte la 1° image lors du traitement d'une fichier d'enregistrement de type AudioVideoCast. | False |
Property | Description | Default Value |
---|---|---|
FILE_ALLOWED_EXTENSIONS | Extensions autorisées pour les documents téléversés dans le gestionnaire de fichier | ( 'doc', 'docx', 'odt', 'pdf', 'xls', 'xlsx', 'ods', 'ppt', 'pptx', 'txt', 'html', 'htm', 'vtt', 'srt', 'webm', 'ts', ) |
IMAGE_ALLOWED_EXTENSIONS | Extensions autorisées pour les images téléversés dans le gestionnaire de fichier | ( 'jpg', 'jpeg', 'bmp', 'png', 'gif', 'tiff', ) |
FILE_MAX_UPLOAD_SIZE | Poids maximum en Mo par fichier téléversé dans le gestionnaire de fichier | 10 |
Property | Description | Default Value |
---|---|---|
ROLE_CHOICES | Liste de rôle possible pour un contributeur | ( ('actor', ('actor')), ('author', ('author')), ('designer', ('designer')), ('consultant', ('consultant')), ('contributor', ('contributor')), ('editor', ('editor')), ('speaker', ('speaker')), ('soundman', ('soundman')), ('director', ('director')), ('writer', ('writer')), ('technician', ('technician')), ('voice-over', ('voice-over')), ) |
KIND_CHOICES | Liste de type de piste possible pour une vidéo (sous-titre, légende etc.) | ( ('subtitles', ('subtitles')), ('captions', ('captions')), ) |
Property | Description | Default Value |
---|---|---|
AUTH_TYPE | Type d'authentification possible sur votre instance. Pour l'instant local ou cas | (('local', _('local')), ('CAS', 'CAS')) |
USE_CAS | Activation de l'authentification CAS en plus de l'authentification locale | False |
CAS_SERVER_URL | Url du serveur cas de l'établissement. Format http://url_cas | sso_cas |
CAS_GATEWAY | Si True, authentifie automatiquement l'individu si déjà authentifié sur le serveur CAS | False |
POPULATE_USER | Si utilisation de la connection CAS, renseigne les champs du compte de la personne depuis une source externe. Valeur possible : None (pas de renseignement), CAS (renseigne les champs de la personne depuis les informations renvoyées par le CAS), LDAP (Interroge le serveur LDAP pour renseigner les champs du compte de la personne) | None |
AUTH_CAS_USER_SEARCH | variable utilisée pour trouver les informations de l'individu connecté dans le fichier renvoyé par le CAS lors de l'authentification | user |
USER_CAS_MAPPING_ATTRIBUTES | liste de correspondance entre les champs d'un compte de Pod et les champs renvoyés par le CAS | { "uid": "uid", "mail": "mail", "last_name": "sn", "first_name": "givenname", "affiliation": "eduPersonAffiliation" } |
CREATE_GROUP_FROM_AFFILIATION | Si True, des groupes sont créés automatiquement à partir des affiliations des individus qui se connectent sur la plateforme et l'individu qui se connecte est ajouté automatiquement à ses groupes | False |
AFFILIATION_STAFF | Les personnes ayant pour affiliation les valeurs renseignées dans cette variable sont automatiquement la valeur staff de leur compte à True | ('faculty', 'employee', 'staff') |
AFFILIATION | Valeurs possibles pour l'Affiliation du compte | ( ('student', ('student')), ('faculty', ('faculty')), ('staff', ('staff')), ('employee', ('employee')), ('member', ('member')), ('affiliate', ('affiliate')), ('alum', ('alum')), ('library-walk-in', ('library-walk-in')), ('researcher', ('researcher')), ('retired', ('retired')), ('emeritus', ('emeritus')), ('teacher', ('teacher')), ('registered-reader', _('registered-reader')) ) |
LDAP_SERVER | Information de connection au serveur LDAP | {'url': '', 'port': 389, 'use_ssl': False} |
AUTH_LDAP_BIND_DN | Identifiant (DN) du compte pour se connecter au serveur LDAP | '' |
AUTH_LDAP_BIND_PASSWORD | Mot de passe du compte pour se connecter au serveur LDAP | '' |
AUTH_LDAP_USER_SEARCH | Filtre LDAP permettant la recherche de l'individu dans le serveur LDAP | ('ou=people,dc=univ,dc=fr', "(uid=%(uid)s)") |
USER_LDAP_MAPPING_ATTRIBUTES | liste de correspondance entre les champs d'un compte de Pod et les champs renvoyés par le LDAP | { "uid": "uid", "mail": "mail", "last_name": "sn", "first_name": "givenname", "primaryAffiliation": "eduPersonPrimaryAffiliation", "affiliations": "eduPersonAffiliation" } |
Attention, inutile avec la version de Pod > à 2.3 (la librairie de CAS a été mise à jour) :
Si utilisation de l'authentification CAS, il y a une modification à faire dans l'application tierce (django-cas-sso==1.1.7) permettant cette authentification. Cette application est proposée par l'université de Strasbourg mais un problème compatibilité avec Python 3.X empèche sa parfaite utilisation (avec le gateway). Voici la modification à faire :
(django_pod) pod@pod:~/django_projects/podv2$ vim /home/pod/.virtualenvs/django_pod/lib/python3.5/site-packages/django_cas/views.py
[...]L.34
if gateway:
""" If gateway, capture params and reencode them before returning a url """
""" gateway_params = [(REDIRECT_FIELD_NAME, redirect_to), ('gatewayed','true')] query_dict = request.GET.copy() try: del query_dict['ticket'] except: pass query_list = query_dict.items() #remove duplicate params for item in query_list: for index, item2 in enumerate(gateway_params): if item[0] == item2[0]: gateway_params.pop(index) extra_params = gateway_params + query_list extra_params = set(gateway_params).union(set(query_dict.items())) #Sort params by key name so they are always in the same order. sorted_params = sorted(extra_params, key=itemgetter(0)) service += urlencode(sorted_params) """
gateway_params = { REDIRECT_FIELD_NAME: redirect_to, 'gatewayed':'true'}
query_dict = request.GET.copy()
try:
del query_dict['ticket']
except:
pass
if query_dict.get(REDIRECT_FIELD_NAME):
del gateway_params[REDIRECT_FIELD_NAME]
if query_dict.get('gatewayed'):
del gateway_params['gatewayed']
query_dict.update(gateway_params)
service += urlencode(query_dict)
else:
service += urlencode({REDIRECT_FIELD_NAME: redirect_to})
[...]