Projet

Général

Profil

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é

Ajouté par Joël Cuissinat il y a plus de 4 ans. Mis à jour il y a plus de 4 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Début:
23/09/2019
Echéance:
% réalisé:

100%

Restant à faire (heures):
0.0

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

Lié à Distribution EOLE - Tâche #28819: Gérer les caractères "Œ" et "œ" dans l'import AAF Fermé 23/08/2019
Lié à eole-ldapschema - Tâche #28796: L’absence d’espace avant la parenthèse fermant un bloc est considérée comme une erreur Nouveau 01/08/2019

Révisions associées

Révision 609f14f1 (diff)
Ajouté par Joël Cuissinat il y a plus de 4 ans

Explicit unicode formatting

Ref: #28977

Révision 4407b7d4 (diff)
Ajouté par Joël Cuissinat il y a plus de 4 ans

Revert "Manage 'Œ' and 'œ' characters in Thot importation"

This reverts commit cb944836dd41a7ae4959df1781248af66259f7f9.

Ref: #28977
Ref: #28819

Révision a314a5bc (diff)
Ajouté par Joël Cuissinat il y a plus de 4 ans

Test Thot aaf complet 1901 : Ajout de caractères accentués sur des matières

Ref: #28977

Révision 58e6760c (diff)
Ajouté par Joël Cuissinat il y a plus de 4 ans

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. &amp; 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&apos;ORIENTATION</value><value>1442$HUMANITES, LITT&#201;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

Formats disponibles : Atom PDF