Project

General

Profile

Bug #30918

bug soumission demande tableau vide

Added by Frédéric Péters 5 months ago. Updated 5 months ago.

Status:
Nouveau
Priority:
Normal
Assignee:
-
Target version:
-
Start date:
26 Feb 2019
Due date:
% Done:

0%

Patch proposed:
No
Planning:
No

Description

De #30826, formulaire en pièce jointe.

Données manuellement anonymisées ici,

     filled_data = {'45': None, '88_display': 'Pr\xc3\xa9sident', '37': ['NON'], '42_display': 'OUI', '21_display': 'OUI', '36': None, '91': ['OUI'], '62': <PicklableUpload at 7fe9200ff638: RIB TTC.JPG>, '110': 'Sportive', '67': <PicklableUpload at 7fe9200ff5a8: Cerfa 12156-05.pdf>, '35_display': 'NON', '83': None, '41': '15', '86': '37981561600014', '93': 'TENNIS CLUB', '44_display': 'NON', '25': time.struct_time(tm_year=2018, tm_mon=9, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=244, tm_isdst=-1), '26': time.struct_time(tm_year=2019, tm_mon=8, tm_mday=31, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=243, tm_isdst=-1), '92': None, '20': [['150', '175', '-', '-'], ['185', '235', '-', '-'], ['185', '-', '-', '-'], [None, None, None, None]], '21': ['OUI'], '79': [['11', '1', None, None], ['45', '10', None, None]], '95': '06140', '44': ['NON'], '42': ['OUI'], '30_display': 'NON', '29': [['DAMES', '+ 35 ANS', 'DIVISION 1 REGIONALE', 'CHAMPIONANT 06', None], ['DAMES', 'SENIOR', 'DIVISION 1 REGIONALE', 'MONTEE DE DIVISION', None], ['HOMMES', '+ 35 ANS', 'DIVISION 1 DEPARTEMENTALE', None, None], ['HOMMES', 'SENIOR', 'DIVISION 1 DEPARTEMENTALE', 'MONTEE DE DIVISION', None], [None, None, None, None, None], [None, None, None, None, None], [None, None, None, None, None], [None, None, None, None, None]], '87': None, '4': [['DICHARRY', 'JJACQUES', None, None, None, None, None, 'OUI'], ['DURISOTTI', 'MARIE CLAUDE', None, None, None, None, None, 'OUI'], ['DUPOND', 'ISABELLE', None, None, None, None, None, 'OUI'], ['MADI', 'LOTFI', None, None, None, None, None, 'OUI'], ['VINDRET', 'ANAIS', None, None, None, None, None, 'OUI'], ['VERCEIL', 'JEAN ELIAN', 'OUI', None, None, None, None, None], [None, None, None, None, None, None, None, None], [None, None, None, None, None, None, None, None], [None, None, None, None, None, None, None, None], [None, None, None, None, None, None, None, None], [None, None, None, None, None, None, None, None], [None, None, None, None, None, None, None, None], [None, None, None, None, None, None, None, None], [None, None, None, None, None, None, None, None], [None, None, None, None, None, None, None, None]], '14': '', '47': None, '51': 'JEAN JACQUES', '128': None, '46_display': 'NON', '77': <PicklableUpload at 7fe91bde2680: RAPPORT_AG_2017:2018.pdf>, '98': '0493592552', '75': <PicklableUpload at 7fe91bde2830: Attestation D'assurance Allianz  2019.PDF>, '74': None, '73': <PicklableUpload at 7fe91bde20e0: cerfa_15059-02.pdf>, '110_display': 'Sportive', '126': None, '37_display': 'NON', '102': 'PRATIQUE ET ENSEIGNEMENT DU TENNIS ', '100': None, '101': 'TTC', '106': 'Sportive', '94': '141 RUE XXX', '97': '0612940106', '96': 'TOURRETTES SUR LOUP', '10': '', '38': None, '59': <PicklableUpload at 7fe9200ff2d8: Avis INSEE.pdf>, '58': None, '76': None, '33': '15', '57': None, '30': ['NON'], '61': <PicklableUpload at 7fe9200ff7a0: RAPPORT_AG_2017:2018.pdf>, '88': 'Pr\xc3\xa9sident', '35': ['NON'], '34': ['OUI'], '99': 'xxx@free.fr', '46': ['NON'], '106_display': 'Sportive', '34_display': 'OUI', '91_display': 'OUI', '31': None, '50': 'XXX '}
  • restauration via un code de suivi
  • crash au submit
LINE 1: ...e2e'::bytea, backoffice_submission = false, f10 = '', f14 = ...
                                                             ^
DETAIL:  La valeur du tableau doit commencer avec  {  ou avec l'information de la
dimension.
)

Exception:
  type = '<class 'psycopg2.DataError'>', value = 'ERREUR:  tableau litral mal form :   
LINE 1: ...e2e'::bytea, backoffice_submission = false, f10 = '', f14 = ...
                                                             ^
DETAIL:  La valeur du tableau doit commencer avec  {  ou avec l'information de la dimension.

form-demande-de-subventions-2019.wcs (42.2 KB) Frédéric Péters, 26 Feb 2019 07:27 PM

History

#2 Updated by Frédéric Péters 5 months ago

La trace pointée est finalement inintéressante, trop tardive, elle vient parce qu'une colonne de type tableau contient null, elle est restaurée sur la page de validation, ça s'affiche correctement, mais au submit ça se trouve mis "" vers la db et c'est le crash qu'on voit.

Mais le bug, il n'est pas là, il est avant, comment ce champ a pu ainsi devenir null; comme à la base le champ est obligatoire, ça ne vient a priori pas du moment de la saisie, ça viendrait au moment d'un roundtrip brouillon.

La donnée pourrait être mal restaurée et sauvegardée vide ? Pas réussi à reproduire quelque chose de la sorte.

Autre idée, la restauration depuis le brouillon aurait restauré l'usager sur une page ultérieure; genre la page contenant les tableaux est optionnelle (c'est le cas) et au retour de brouillon lors du compte des pages celle-ci aurait été sautée parce que les variables de la demande pas encore disponibles. Mais de ce que je peux tester ça n'arrive pas, les pages sont bien évaluées.

#3 Updated by Benjamin Dauvergne 5 months ago

Et si le caractère obligatoire avait changé durant la vie du draft ?

#4 Updated by Benjamin Dauvergne 5 months ago

Malgré tes explications et même si comme tu le signales le problème de fond est autre chose que cette trace je ne comprend pas pourquoi les données ne sont pas revalidées sur la page de validation, i.e. pourquoi le NULL est conservé, il me semble qu'au submit sur la page de validation tout est reparsé ou alors un bout de code m'échappe dans wcs.forms.root.FormPage.submitted() mais quand je vois filled.data = self.formdef.get_data(form) puis filled.store() je ne vois pas où les données initiales du draft sont conservées.

Also available in: Atom PDF