Tâche #28977
Scénario #28951: Thot et import AAF au format ENT2VA: erreurs restantes
Vérifier et résoudre le problème d'encodage signalé
100%
Description
1) une erreur bloquante sur un "é" majuscule dans les xml de l'AAF:
deltas des enseignants... Traceback (most recent call last): File "/usr/sbin/genldif.py", line 521, in <module> ldif_export_maj(sys.argv[2]) File "/usr/sbin/genldif.py", line 299, in ldif_export_maj ldif_export_enseignants(ldif_dir) File "/usr/sbin/genldif.py", line 347, in ldif_export_enseignants 'maj_enseignant.ldif', ldap_delta_update_filename) File "/usr/sbin/genldif.py", line 413, in ldif_export_factory dico = translator.translate_one(dbname, row) File "/usr/lib/python2.7/dist-packages/eoleaaf/ldiftranslator.py", line 288, in translate_one new_row[key] = self.transform_values(key, value, tablename) File "/usr/lib/python2.7/dist-packages/eoleaaf/ldiftranslator.py", line 158, in transform_values return fctname(value) File "/usr/lib/python2.7/dist-packages/eoleaaf/ldiftranslator.py", line 195, in calc_structure_dn values.append("cn=s{0},{1}${2}".format(struct, structsdn, '$'.join(groups))) UnicodeEncodeError: 'ascii' codec can't encode character u'\xc9' in position 86: ordinal not in range(128)
que j'ai résolu en m'inspirant de votre correction sur les 'OE'
dans eoleaaf/utils.py (fonction replace-dangerous_cars)
#prevent crashes #28819 'Œ':'OE', 'œ':'oe', 'É':'E',
Demandes liées
Révisions associées
Explicit unicode formatting
Ref: #28977
Test Thot aaf complet 1901 : Ajout de caractères accentués sur des matières
Ref: #28977
Update format for ENTAuxEnsMatiereEnseignEtab : not really a DN
Ref: #28977
Historique
#1 Mis à jour par Joël Cuissinat il y a plus de 4 ans
- Lié à Tâche #28819: Gérer les caractères "Œ" et "œ" dans l'import AAF ajouté
#2 Mis à jour par Joël Cuissinat il y a plus de 4 ans
Le problème spécifique à la ligne en erreur peut être corrigé en indiquant explicitement qu'il s'agit d'unicode :
values.append(u"cn=s{0},{1}${2}".format(struct, structsdn, '$'.join(groups)))
Mais dans ce cas, la ligne est ignorée, plus loin !
Importation de /home/1569248801/06-enseignants.ldif 5d88d63b <= str2entry NULL (smr_normalize ENTAuxEnsMatiereEnseignEtab 21) slapadd: could not parse entry (line=45) _#################### 100.00% eta none elapsed none fast! Closing DB...
Mais cela peut passer si on déclare l'attribut avec un type différent de SUP distinguishedName
puisque ce n'est PAS un DN !
Dans ce cas, on obtient bien la valeur (retournée en base64 par les outils en lignes de commande) :
root@thot:~# ldapsearch -o ldif-wrap=no -x uid=FJD97417 ENTAuxEnsMatiereEnseignEtab | grep ^ENTAuxEnsMatiereEnseignEtab ENTAuxEnsMatiereEnseignEtab:: Y249czQ5MzEsb3U9c3RydWN0dXJlcyxkYz1lb2xlLGRjPWxhbiTDiUNPTE9HSUUgTFYy root@thot:~# echo "Y249czQ5MzEsb3U9c3RydWN0dXJlcyxkYz1lb2xlLGRjPWxhbiTDiUNPTE9HSUUgTFYy" | base64 -d;echo cn=s4931,ou=structures,dc=eole,dc=lan$ÉCOLOGIE LV2
Ces modifications permettent même de faire passe le "Œ" :
root@thot:/var/tmp/aaf-complet# ldapsearch -o ldif-wrap=no -x uid=FNL99467 ENTPersonFonctions | grep ^ENTPersonFonctions ENTPersonFonctions:: NDkzMSRET0MkxZJOT0xPR0lFJEwwMDgwJMWSTk9MT0dJRQ== root@thot:/var/tmp/aaf-complet# echo "NDkzMSRET0MkxZJOT0xPR0lFJEwwMDgwJMWSTk9MT0dJRQ==" | base64 -d; echo 4931$DOC$ŒNOLOGIE$L0080$ŒNOLOGIE
#3 Mis à jour par Joël Cuissinat il y a plus de 4 ans
- Statut changé de Nouveau à Résolu
#4 Mis à jour par Joël Cuissinat il y a plus de 4 ans
- Assigné à mis à Joël Cuissinat
#5 Mis à jour par Joël Cuissinat il y a plus de 4 ans
- Statut changé de Résolu à En cours
#6 Mis à jour par Joël Cuissinat il y a plus de 4 ans
Exemple d'entrée problématique :
<addRequest>
<operationalAttributes><attr name="categoriePersonne"><value>PersEducNat</value></attr></operationalAttributes>
<identifier><id>3145155</id></identifier>
<attributes>
<attr name="ENTPersonJointure"><value>3145155</value></attr>
<attr name="ENTPersonDateNaissance"><value>18/09/1992</value></attr>
<attr name="ENTPersonNomPatro"><value>XXXX</value></attr>
<attr name="sn"><value>XXXX</value></attr>
<attr name="givenName"><value>XXXX</value></attr>
<attr name="personalTitle"><value>XXXX</value></attr>
<attr name="mail"><value>XXXX@ac-besancon.fr</value></attr>
<attr name="ENTPersonStructRattach"><value>1442</value></attr>
<attr name="ENTAuxEnsCategoDiscipline"><value>02$LETTRES</value></attr>
<attr name="ENTAuxEnsDisciplinesPoste"><value>LETTRES MODERNES$02</value></attr>
<attr name="ENTAuxEnsMEF"><value>1442$20110019112$PREMIERE GENERALE EUROPEENNE</value><value>1442$20110019110$PREMIERE GENERALE</value><value>1442$21131016110$1-STMG SC. & TECHNO. MANAGEMENT GESTION</value><value>1442$20010018110$2NDE GENERALE ET TECHNOLOGIQUE</value><value>1442$20110019117$PREMIERE GENERALE SPORTIVE</value></attr>
<attr name="ENTAuxEnsMatiereEnseignEtab"><value>1442$FRANCAIS</value><value>1442$ACCOMPAGNEMENT AU CHOIX DE L'ORIENTATION</value><value>1442$HUMANITES, LITTÉRATURE ET PHILOSOPHIE</value></attr>
<attr name="ENTAuxEnsClasses"><value>1442$1G2</value><value>1442$1STMG2</value><value>1442$2-10</value><value>1442$2-10</value></attr>
<attr name="ENTAuxEnsGroupes"><value>1442$1HLP1</value><value>1442$1STMG2A</value><value>1442$1STMG2B</value><value>1442$2HLP2</value><value>1442$2FRANC4</value></attr>
<attr name="ENTAuxEnsClassesMatieres"><value>1442$1G2$020700</value><value>1442$1STMG2$020700</value><value>1442$2-10$020700</value><value>1442$2-10$470600</value></attr>
<attr name="ENTAuxEnsGroupesMatieres"><value>1442$1HLP1$010500</value><value>1442$1STMG2A$020700</value><value>1442$1STMG2B$020700</value><value>1442$2HLP2$010500</value><value>1442$2FRANC4$020700</value></attr>
<attr name="ENTAuxEnsClassesPrincipal"><value>1442$2-10</value></attr>
<attr name="ENTPersonFonctions"><value>1442$ENS$ENSEIGNEMENT$L0202$LETTRES MODERNES</value></attr>
<attr name="ENTPersonCategorieEnseignant"><value>O</value></attr>
<attr name="PersEducNatPresenceDevantEleves"><value>O</value></attr>
</attributes>
</addRequest>
#7 Mis à jour par Joël Cuissinat il y a plus de 4 ans
Import mis "volontairement" en échec sur "ldapmodify" : http://jenkins.eole.lan/jenkins/job/2.6.2/job/test-thot-aaf-complet-1901-2.6.2-amd64/16/parsed_console/
Après correction du schéma ldap, les jobs suivants devraient être verts : http://jenkins.eole.lan/jenkins/job/2.6.2/job/test-thot-aaf-complet-1901-2.6.2-amd64/buildTimeTrend ;)
#8 Mis à jour par Joël Cuissinat il y a plus de 4 ans
- % réalisé changé de 0 à 100
#9 Mis à jour par Joël Cuissinat il y a plus de 4 ans
- Lié à Tâche #28796: L’absence d’espace avant la parenthèse fermant un bloc est considérée comme une erreur ajouté
#10 Mis à jour par Scrum Master il y a plus de 4 ans
- Statut changé de En cours à Résolu
#11 Mis à jour par Joël Cuissinat il y a plus de 4 ans
- Statut changé de Résolu à Fermé
- Restant à faire (heures) mis à 0.0