Bug #55891
Un filtre de requête utilisant une donnée calculée provoque un crash
Début:
28 juillet 2021
Echéance:
% réalisé:
0%
Temps estimé:
Patch proposed:
Oui
Planning:
Non
Description
Pour tester à Strasbourg, tester avec cette url :
https://demarches-strasbourg.test.entrouvert.org/nadege/dubug-eo-candidature-a-une-offre-pour-test-crash/?refposte=E000093&libposte=offre%20emploi%20%C3%A0%20valider
le formulaire :
https://demarches-strasbourg.test.entrouvert.org/backoffice/forms/421/
un filtre de reqûete avec
{{form_objects|exclude_self|filter_by:"refposte"|filter_value:form_var_refposte|filter_by_user:form_user|count}}
Cela vient de l'utilisation d'une donnée calculée dans la requête.
Fichiers
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a plus de 2 ans
Les données calculées sont dans une colonne json, résultat les critères ne peuvent pas s'appliquer ainsi, la trace :
Exception: type = '<class 'psycopg2.DataError'>', value = 'invalid input syntax for type json LINE 1: ...atus != 'draft' AND anonymised IS NULL AND f182 = 'E000093' ... ^ DETAIL: Token "E000093" is invalid. CONTEXT: JSON data, line 1: E000093 ' Stack trace (most recent call first): File "/usr/lib/python3/dist-packages/wcs/sql.py", line 1447, in count 1445 sql_statement += ' WHERE ' + ' AND '.join(where_clauses) 1446 conn, cur = get_connection_and_cursor() > 1447 cur.execute(sql_statement, parameters) 1448 count = cur.fetchone()[0] 1449 conn.commit() locals: clause = <ERROR WHILE PRINTING VALUE> cls = <class 'wcs.formdef._wcs_Dubug-Eo-Candidature-A-Une-Offre-Pour-Test-Crash'> conn = <connection object at 0x7f9516dbad58; dsn: 'user=wcs password=xxx dbname=wcs_demarches_strasbourg_test_entrouvert_org host=test.saas.entrouvert.org.clusters.entrouvert.org port=5432', closed: 0> cur = <cursor object at 0x7f9515b0d238; closed: 0> func_clause = None parameters = {'c140278378493408': 'draft', 'c140278302841912': 'E000093', 'c140278289271472': '17'} sql_statement = 'SELECT count(*) FROM formdata_421_candidature_a_une_offre_copie WHERE status != %(c140278378493408)s AND anonymised IS NULL AND f182 = %(c140278302841912)s AND user_id = %(c140278289271472)s' where_clauses = ['status != %(c140278378493408)s', 'anonymised IS NULL', 'f182 = %(c140278302841912)s', 'user_id = %(c140278289271472)s']
Mis à jour par Frédéric Péters il y a plus de 2 ans
- Fichier 0001-general-add-support-for-filtering-on-computed-data-f.patch 0001-general-add-support-for-filtering-on-computed-data-f.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par Thomas Noël il y a plus de 2 ans
- Statut changé de Solution proposée à Solution validée
Joli.
Mis à jour par Frédéric Péters il y a plus de 2 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 21f7ccf66884af8f1faf235001c21c7174fda6a4 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Tue Aug 3 08:59:01 2021 +0200 general: add support for filtering on computed data fields (#55891)
Mis à jour par Frédéric Péters il y a plus de 2 ans
- Statut changé de Résolu (à déployer) à Solution déployée
general: add support for filtering on computed data fields (#55891)