Conseils et astuces
Astuce #1 : problème en lien avec les flatpages
Lors de tests ou d’une migration, il est possible d’avoir une erreur de ce type :
django.db.migrations.exceptions.NodeNotFoundError: Migration main.0001_initial dependencies reference nonexistent parent node ('flatpages', '0001_initial')
Il faut savoir que la gestion des pages statiques se réalise via une application Django flatpages. Cette application n’étant pas spécifique à Esup-Pod, son répertoire d’installation est situé directement dans l’environnement virtuel. Typiquement, selon votre version de Python et votre environnement virtuel, il s’agit de :
/home/pod/.virtualenvs/django_pod4/lib/python3.11/site-packages/django/contrib/flatpages
Cas 1 : problème lors de la création initiale de la base de données
Si vous lanciez la commande suivante plusieurs fois, en supprimant les données de la base, via :
(django_pod4) pod@pod:~/django_projects/podv4$ make createDB
Cela ne devrait plus arriver car, depuis Esup-Pod v4, make createDB exécute maintenant la commande suivante permettant de supprimer les fichiers de migration des flatpages, en plus des applications de Pod :
(django_pod4) pod@pod:~/django_projects/podv4$ python manage.py delete_flatpages_migrations.py
⚠️ Attention à ne lancer cette commande qu’en connaissance de cause.
Cas 2 : problème lors de lancement de tests unitaires
Si vous développez Esup-Pod et que vous obtenez cette erreur lors de tests unitaires, via par exemple :
(django_pod4) pod@pod:~/django_projects/podv4$ python manage.py test pod.video.tests --settings=pod.main.test_settings
Cela vient vraisemblablement de la configuration du paramètre USE_DOCKER.
Si vous êtes dans un environnement non conteneurisé, veuillez mettre dans votre settings_local.py :
USE_DOCKER = false
Astuce #2 : problème avec django-chunked-upload
Si vous rencontrez un problème avec l’application django-chunked-upload, il ne faut pas hésiter à lancer les commandes suivantes
(django_pod4) pod@pod:~/django_projects/podv4$ pip uninstall django-chunked-upload
(django_pod4) pod@pod:~/django_projects/podv4$ pip install -r requirements.txt
Astuce #3 : problème avec django-shibboleth-remoteuser
Si vous rencontrez un problème avec l’application django-shibboleth-remoteuser, il ne faut pas hésiter à lancer les commandes suivantes
(django_pod4) pod@pod:~/django_projects/podv4$ pip uninstall django-shibboleth-remoteuser
(django_pod4) pod@pod:~/django_projects/podv4$ pip install -r requirements.txt
Astuce #4 : erreur lors de l’exécution de make updatedb
Lors d’une mise à jour de la base de données avec make updatedb (ou de la
création de migrations avec python3 manage.py makemigrations), une erreur de
ce type peut survenir :
Running migrations:
Applying flatpages.0002_flatpage_content_en_flatpage_content_fr_and_more...Traceback (most recent call last):
...
MySQLdb.OperationalError: (1060, "Duplicate column name 'content_en'")
Cette erreur est liée à l’utilisation de l’application Django flatpages
lors d’un changement de version de Django.
Pour la corriger :
- Effectuez une sauvegarde complète de la base de données, ainsi qu’une
sauvegarde spécifique de la table
django_flatpage. - Dans cette table, supprimez les quatre colonnes concernées :
content_en,content_fr,title_enettitle_fr. - Supprimez toutes les lignes de la table
django_flatpage. - Relancez
make updatedb. - Réinsérez les lignes de la table à partir de la sauvegarde.
⚠️ Ne modifiez pas la table
django_flatpagesans avoir préalablement vérifié vos sauvegardes.
Astuce #5 : anciens liens de vidéos en mode brouillon invalides
Si les liens d’anciennes vidéos en mode brouillon ne fonctionnent plus après
une migration d’un serveur Esup-Pod v3 vers un serveur v4, cela provient
généralement d’un changement de la valeur de SECRET_KEY dans le fichier
settings_local.py.
Rétablissez l’ancienne valeur de SECRET_KEY pour rendre ces liens de nouveau
fonctionnels.