Bug #5524
crash SQL lors d'une action "ajouter un rôle à l'usager"
0%
Description
LINE 1: ...Test CAM Admin', roles = ARRAY[18, 13, 9, 22, 10, E'Comptes ... ^ ) To: admin+dev.montpellier@entrouvert.com Exception: type = '<class 'psycopg2.DataError'>', value = 'invalid input syntax for integer: "Comptes relis un dossier famille" LINE 1: ...Test CAM Admin', roles = ARRAY[18, 13, 9, 22, 10, E'Comptes ... ^ ' Stack trace (most recent call first): File "/usr/lib/python2.6/dist-packages/wcs/sql.py", line 963, in store 961 self._table_name, 962 ', '.join(['%s = %%(%s)s' % (x,x) for x in column_names])) > 963 cur.execute(sql_statement, sql_dict) 964 if cur.fetchone() is None: 965 column_names = sql_dict.keys() locals: sql_statement = 'UPDATE users SET f0 = %(f0)s, f1 = %(f1)s, f2 = %(f2)s, f3 = %(f3)s, f4 = %(f4)s, f5 = %(f5)s, f6 = %(f6)s, f7 = %(f7)s, f8 = %(f8)s, lasso_dump = %(lasso_dump)s, f0_display = %(f0_display)s, is_admin = %(is_admin)s, anonymous = %(anonymous)s, name_identifiers = %(name_identifiers)s, identification_token = %(identification_token)s, name = %(name)s, roles = %(roles)s, email = %(email)s, last_seen = %(last_seen)s WHERE id = %(id)s RETURNING id' cur = <cursor object at 0x355b148; closed: 0> sql_dict = {'f0': 'Monsieur', 'f1': 'IDP Test CAM', 'f2': 'Admin', 'f3': 'admin@entrouvert.com', 'f4': '0142350135', 'f5': '0643350135', 'f6': '169 rue du chateau', 'f7': '75014', 'f8': 'PARIS', 'lasso_dump': '<Identity xmlns="http://www.entrouvert.org/namespaces/lasso/0.0" Version="2"><lasso:Federation xmlns:lasso="http://www.entrouvert.org/namespaces/lasso/0.0" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" RemoteProviderID="http://idp-montpellier.entrouvert.org/idp/saml2/metadata" FederationDumpVersion="2"><lasso:LocalNameIdentifier><saml:NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent">_EB1870F05C82EBC5886CFF91B543D009</saml:NameID></lasso:LocalNameIdentifier></lasso:Fed eration></Identity>', 'f0_display': None, 'is_admin': True, 'anonymous': False, 'name_identifiers': ['_EB1870F05C82EBC5886CFF91B543D009'], 'id': 19, 'identification_token': None, 'name': 'IDP Test CAM Admin', 'roles': [18, 13, 9, 22, 10, 'Comptes reli\xc3\xa9s \xc3\xa0 un dossi er famille'], 'email': 'admin@entrouvert.com', 'last_seen': (datetime.datetime(2014, 9, 17, 9, 14, 44),)} self = <SqlUser 'IDP Test CAM Admin' id:19> column_names = ['f0', 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'lasso_dump', 'f0_display', 'is_admin', 'anonymous', 'name_identifiers', 'identification_token', 'name', 'roles', 'email', 'last_seen'] x = 'last_seen' conn = <connection object at 0x383e7b0; dsn: 'dbname=montpellier user=wcs-au-quotidien', closed: 0>
Fichiers
Historique
Mis à jour par Serghei Mihai il y a plus de 9 ans
Quelques détails: le workflow a été importé depuis une autre instance de wcs et le rôle "Comptes liés à la famille" a été créé après l'import du workflow.
Donc comme l'id du rôle n'est pas trouvé, il semble que c'est son titre qui est envoyé dans la requete SQL.
Mis à jour par Frédéric Péters il y a plus de 9 ans
Tu peux mettre en pièce jointe le fichier qui a été importé ?
Mis à jour par Serghei Mihai il y a plus de 9 ans
- Fichier creer-une-liaison-avec-un-compte-famille.wcs creer-une-liaison-avec-un-compte-famille.wcs ajouté
- Assigné à mis à Frédéric Péters
Le voici.
Mis à jour par Frédéric Péters il y a plus de 9 ans
- Fichier 0001-workflows-improve-xml-import-export-of-roles-5524.patch 0001-workflows-improve-xml-import-export-of-roles-5524.patch ajouté
- Statut changé de Nouveau à En cours
- Patch proposed changé de Non à Oui
Voilà du code qui améliore l'import/export XML des rôles : s'il y a un rôle qui matche sur le nom, on prend, sinon on prend le rôle qui matche sur l'id, et si celui-ci n'existe pas non plus, on crée à la volée un nouveau rôle.
Mis à jour par Thomas Noël il y a plus de 9 ans
Frédéric Péters a écrit :
Voilà du code qui améliore l'import/export XML des rôles : s'il y a un rôle qui matche sur le nom, on prend, sinon on prend le rôle qui matche sur l'id, et si celui-ci n'existe pas non plus, on crée à la volée un nouveau rôle.
Ma proposition : si on trouve un rôle qui a le même nom, on le prend, sinon on créé un nouveau rôle. Oui, ça signifie ne plus utiliser l'id lors de l'import.
Ça me semble un fonctionnement plus compréhensible, le fonctionnement que tu proposes risque de déboucher sur «mais pourquoi sur ce site le rôle est bien importé alors que sur l'autre site ça prend le rôle "truc" existant ?».
Mis à jour par Frédéric Péters il y a plus de 9 ans
Je garde en perspective l'utilisation de l'import/export xml pour un stockage lisible, à la place du pickle (#4739). Dans cette optique ça m'ennuierait d'avoir un rôle créé automatiquement au chargement d'un workflow, parce que le libellé du rôle initial aurait été modifié.
Bref, on est ennuyé par deux usages distincts de l'import/export xml: quand il se fait sur un même site vs quand il se fait d'un site à un autre.
Mis à jour par Thomas Noël il y a plus de 9 ans
- import manuel via le web => rapprochement par le nom, sinon création (pas d'utilisation des id). Ca veut dire faire un import avec un "create_relations=True" (enfin c'est juste l'idée, le code exact est à voir).
- utilisation du XML par le logiciel => rapprochement par les id, sinon par le nom, sinon création.
Dernier cas : copier bêtement des fichiers XML dans le répertoire formdefs => risque de création de rôles s'ils ont changé entre temps (wcs pensera être dans le cas 2) Moi ça ne me dérange pas. A terme on pourrait imaginer un répertoire "import/" où on pourra placer les machins à importer, et faire tourner la logique du cas 1 pour ces objets là... (pour simplifier les copies d'objets entre sites).
Mis à jour par Frédéric Péters il y a plus de 9 ans
En fait je me demande si simplement l'export par le web pourrait faire un include_ids=False (ce qui omettrait les attributs role_id).
Mis à jour par Frédéric Péters il y a plus de 9 ans
- Fichier 0001-workflows-improve-xml-import-export-of-roles-5524.patch 0001-workflows-improve-xml-import-export-of-roles-5524.patch ajouté
Voilà un patch qui considère le include_id; et l'import fait via l'interface web ne les prend pas en compte (include_id=False).
Mis à jour par Thomas Noël il y a plus de 9 ans
En première relecture (trop) rapide, je ne comprends pas l'ajout de "include_id=False" dans les arguments de init_with_xml (ligne 88 de wcs/wf/form.py) -- ou plutôt, je me dis que ça devrait peut-être impliquer un "include_id=include_id" dans l'appel à l'import du FormDef ligne 91 ? Ok j'avoue je suis un peu paumé sur l'import de formulaire dans l'import de workflows :-)
Sinon ça alourdit un peu le code, ce include_id qui traine partout, mais bon... pas d'autre idée :/
(Note : sauf si tu le sens bien comme ça, j'aimerais tagguer une 1.12.2 sans ce patch).
Mis à jour par Frédéric Péters il y a plus de 9 ans
- Fichier 0001-workflows-improve-xml-import-export-of-roles-5524.patch 0001-workflows-improve-xml-import-export-of-roles-5524.patch ajouté
Thomas Noël a écrit :
En première relecture (trop) rapide, je ne comprends pas l'ajout de "include_id=False" dans les arguments de init_with_xml (ligne 88 de wcs/wf/form.py) -- ou plutôt, je me dis que ça devrait peut-être impliquer un "include_id=include_id" dans l'appel à l'import du FormDef ligne 91 ? Ok j'avoue je suis un peu paumé sur l'import de formulaire dans l'import de workflows :-)
Non, c'était explicite, c'est pour ça que j'ajoutais un commentaire, trop court et pas clair; dans le patch attaché j'allonge celui-ci, pour dire qu'on peut toujours avoir include_id=True à cet endroit parce que le formdef vit dans son propre espace isolé, il ne se trouve pas stocké à côté des autres formdefs, c'est la même situation que le formdef qui définit les champs utilisateur.
Sinon ça alourdit un peu le code, ce include_id qui traine partout, mais bon... pas d'autre idée :/
(Note : sauf si tu le sens bien comme ça, j'aimerais tagguer une 1.12.2 sans ce patch).
Dans la mesure où ça corrige un bug réellement rencontré, sur une fonctionnalité à la marge, avec des tests unitaires, je préférerais avoir la 1.12.2 avec ce patch.
Mis à jour par Thomas Noël il y a plus de 9 ans
Frédéric Péters a écrit :
Dans la mesure où ça corrige un bug réellement rencontré, sur une fonctionnalité à la marge, avec des tests unitaires, je préférerais avoir la 1.12.2 avec ce patch.
Go
Mis à jour par Frédéric Péters il y a plus de 9 ans
- Statut changé de En cours à Résolu (à déployer)
commit 6063f68409ac7e18644704e32b7a5eb475d275d5 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Wed Sep 17 14:36:08 2014 +0200 workflows: improve xml import/export of roles (#5524)
Mis à jour par Thomas Noël il y a plus de 9 ans
- Statut changé de Résolu (à déployer) à Solution déployée