esup-pod

Arborescence des pages

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.
Commentaire: Le package se nomme "requests"

...

Bloc de code
languagebash
titlePodv1 / Export des données de la BD (compte %userpod%)
[%userpod%@tspod%userpod%@podv1 ~]$ cd
[%userpod%@tspod%userpod%@podv1 ~]$ source .bashrc
[%userpod%@tspod%userpod%@podv1 ~]$ cd /data/www/%userpod%/django_projects/pod/pod_project/
[%userpod%@tspod%userpod%@podv1 /data/www/%userpod%/django_projects/pod/pod_project]$ workon django_pod
# On lance le shell Python
(django_pod) [%userpod%@tspod%userpod%@podv1 /data/www/%userpod%/django_projects/pod/pod_project]$ python manage.py shell

...

Avant l'import des données, côté Podv2, il est nécessaire d'installer, via pip, les packages request requests et wget.

Bloc de code
languagebash
titlePodv2 / Pré-requis (compte root ou %userpod%)
[%userpod%@tspod%userpod%@podv2 ~]$ pip3 install requestrequests
[%userpod%@tspod%userpod%@podv2 ~]$ pip3 install wget

Initialiser la base de données

...

Bloc de code
languagebash
titlePodv2 / Création de la BD (compte %userpod%)
[%userpod%@tspod%userpod%@podv2 ~]$ cd
[%userpod%@tspod%userpod%@podv2 ~]$ source .bashrc
[%userpod%@tspod%userpod%@podv2 ~]$ cd /data/www/%userpod%/django_projects/podv2
[%userpod%@tspod%userpod%@podv2 /data/www/%userpod%/django_projects/podv2]$ workon django_pod
# On créé les tables et données nécessaires
(django_pod) [%userpod%@tspod%userpod%@podv2 /data/www/%userpod%/django_projects/podv2]$ sh create_data_base.sh

...

Il est nécessaire de lancer les commandes suivantes, dans l'ordre :

EtapeCommande à exécuterStatutCommentaires
1python manage.py import_data User

État
colourGreen
titleOK

(avertissement) Ne pas oublier de modifier le code pour pouvoir exporter l'ensemble des users.

2python manage.py import_data Channel

État
colourGreen
titleOK

Chez moi, cette commande plantait en plein milieu. Après vérification, cette erreur provient du fait que certains utilisateurs (propriétaires ou utilisateurs d'une chaîne) n'ont pas été créés, car ils n'avaient jamais postés de vidéos et n'ont alors pas été repris par le script des users de l'étape 1.

État
colourGreen
titleSolution
J'ai modifié le script, à lancer sur Podv1 pour exporter l'ensemble des utilisateurs.

3python manage.py import_data Theme

État
colourGreen
titleOK


4python manage.py import_data Type

État
colourGreen
titleOK


5python manage.py import_data Discipline

État
colourGreen
titleOK


6python manage.py import_data FlatPage

État
colourGreen
titleOK


7python manage.py import_data UserProfile

État
colourGreen
titleOK

État
colourGreen
titleSolution 1
Le fait d'exporter l'ensemble des utilisateurs fait fonctionner cette commande.

État
colourBlue
titleSolution 2
Commande non utilisée.

A priori, cette commande devrait mettre à jour les profils des utilisateurs dans la table authentication_owner. Par défaut, tous les utilisateurs créés lors de cette migration sont considérés comme des des comptes étudiants locaux.
Après vérification, la table authentication_owner est mise à jour à chaque connexion de l'utilisateur (paramétrage UM : POPULATE_USER: ldap).
Ainsi, cette commande ne me paraît pas utile et ne sera pas utilisée chez nous.

8python manage.py import_data Pod

État
colourGreen
titleOK


9python manage.py import_data tags

État
colourGreen
titleOK

État
colourGreen
titleSolution
Voir les différentes remarques ci-dessous :

(info) : le fichier tags.json n'existe que si sa génération s'est bien déroulée (cf. avertissement sur le serveur podv1).

(avertissement) : Il peut y avoir des erreurs du style "Data too long for column 'tags' at row 1'.

Pour éviter cela, il faut modifier son settings_local.py, et remplacer la ligne

'OPTIONS': {'init_command':"SET storage_engine=INNODB, sql_mode='STRICT_TRANS_TABLES', innodb_strict_mode=1;"}
par 
'OPTIONS': {'init_command':"SET storage_engine=INNODB;"}

Le fait de désactiver le mode STRICT permet que les données soient tronquées, et évite de faire planter l'import. A la place, cela va juste générer un warning du type  Warning: (1265, "Data truncated for column 'tags' at row 1").

(avertissement) : certaines lignes peuvent avoir des erreurs, du style 2459  does not exist. En vérifiant, je ne sais pas à quoi cela correspond et cela ne semble pas avoir d'incidence.

(info) : des nouveaux mots-clés sont créés via cette migration (Ex: de, l, la, ses...). Il faudra les supprimer manuellement par la suite.

(coche) PENSEZ A RÉACTIVER le mode STRICT dans settins_local.py par la suite.

10python manage.py import_data Chapter

État
colourGreen
titleOK


11python manage.py import_data Contributor

État
colourGreen
titleOK


12python manage.py import_data docpods

État
colourGreen
titleOK

(info) : le fichier docpods.json n'existe que si sa génération s'est bien déroulée (cf. avertissement sur le serveur podv1).
13python manage.py import_data trackpods

État
colourGreen
titleOK

(info) : le fichier trackpods.json n'existe que si sa génération s'est bien déroulée (cf. avertissement sur le serveur podv1).
14python manage.py import_data enrichpods

État
colourGreen
titleOK

(info) : le fichier enrichpods.json n'existe que si sa génération s'est bien déroulée (cf. avertissement sur le serveur podv1).

Téléchargement des vidéos

Une fois la base de podv2 alimentée, voici le script permettant de récupérer les vidéos.Avant de pouvoir télécharger les vidéos, il faut vous assurer qu'elles sont toutes accessibles en téléchargement sur podV1. Voici un scripts pour mettre à jour les droits :

Bloc de code
languagebash
for dossier in $(ls -d videos/*)
do
    for fichier in $(ls -F $dossier| grep -v '/$')
    do
        if test -f $dossier/$fichier; then
            chmod a+r $dossier/$fichier
        fi
    done
done


Info
titleConseil

Avant de lancer les téléchargements, si vous avez beaucoup de vidéos à télécharger, et que vous utilisez la file d'attente d'encodage sur podV2, nous vous conseillons de mettre chaque fichier en file d'attente d'encodage dès son téléchargement terminé.

Pour cela, il suffit d'ajouter la ligne suivante :

vid.launch_encode = True

juste avant la ligne "vid.save()" dans le fichier

video/management/commands/download_video_source_file


Une fois la base de podv2 alimentée, voici le script permettant de récupérer les vidéos :

Bloc de code
languagebash
titlePodv2 titlePodv2 / Téléchargement des fichiers vidéos (compte %userpod%)
[%userpod%@tspod%userpod%@podv2 ~]$ cd
[%userpod%@tspod%userpod%@podv2 ~]$ source .bashrc
[%userpod%@tspod%userpod%@podv2 ~]$ cd /data/www/%userpod%/django_projects/podv2/
[%userpod%@tspod%userpod%@podv2 /data/www/%userpod%/django_projects/podv2]$ workon django_pod
# Shell Python
(django_pod) [%userpod%@tspod%userpod%@podv2 /data/www/%userpod%/django_projects/podv2]$ python manage.py shell

...