Bug #6597
Crash lors de la saisie du code de suivi
0%
Description
1) je me suis connecté
2) J'ai fais une demande dont j'ai récupéré le numéro de suivi
3) Je suis retourné sur le site en mode déconnecté
4) j'ai saisi le code de suivi et validé
5) crash
le formulaire : https://vincennes.dev.au-quotidien.com/admin/forms/210/
l'erreur
Exception: type = '<type 'exceptions.KeyError'>', value = '' Stack trace (most recent call first): File "/usr/lib/python2.7/dist-packages/wcs/sql.py", line 1049, in get 1047 if ignore_errors: 1048 return None > 1049 raise KeyError() 1050 cur.close() 1051 return cls._row2ob(row) locals: sql_statement = 'SELECT id, user_id, user_hash, receipt_time, status, page_no, anonymised, workflow_data, id_display, workflow_roles, workflow_roles_array, concerned_roles_array, tracking_code\n , \n f2, f3, f4, f5, f6, f7\n FROM formdata_210_creche_attestation_de_paiement\n WHERE id = %(id)s' cur = <cursor object at 0x2bfebf0; closed: -1> ignore_migration = False ignore_errors = False potential_comma = ', ' x = ('tracking_code', 'varchar') cls = <class 'wcs.formdef.Creche-Attestation-De-Paiement'> id = '6' conn = <connection object at 0x2dc4f60; dsn: 'dbname=vincennes_dev_au_quotidien_com', closed: 0> row = None File "/usr/lib/python2.7/dist-packages/wcs/sql.py", line 254, in f 252 except psycopg2.Error: 253 get_connection().rollback() > 254 raise 255 return f 256 locals: args = (<class 'wcs.formdef.Creche-Attestation-De-Paiement'>, '6') func = <function get at 0x3574050> kwargs = {} File "/usr/lib/python2.7/dist-packages/wcs/tracking_code.py", line 60, in formdata 58 @property 59 def formdata(self): > 60 return self.formdef.data_class().get(self.formdata_id) 61 62 @formdata.setter locals: self = <TrackingCode id:TWXHMKSP> File "/usr/lib/python2.7/dist-packages/wcs/forms/root.py", line 169, in load 167 except KeyError: 168 raise errors.TraversalError() > 169 formdata = tracking_code.formdata 170 if formdata.formdef.enable_tracking_codes is False: 171 raise errors.TraversalError() locals: tracking_code = <TrackingCode id:TWXHMKSP> self = <wcs.forms.root.TrackingCodeDirectory object at 0x2ed0e50> File "/usr/lib/pymodules/python2.7/quixote/directory.py", line 67, in _q_traverse 65 raise TraversalError 66 elif hasattr(obj, '__call__'): > 67 return obj() 68 else: 69 return obj locals: component = 'load' self = <wcs.forms.root.TrackingCodeDirectory object at 0x2ed0e50> obj = <bound method TrackingCodeDirectory.load of <wcs.forms.root.TrackingCodeDirectory object at 0x2ed0e50>> name = 'load' path = [] File "/usr/lib/pymodules/python2.7/quixote/directory.py", line 63, in _q_traverse 61 if path: 62 if hasattr(obj, '_q_traverse'): > 63 return obj._q_traverse(path) 64 else: 65 raise TraversalError locals: component = 'TWXHMKSP' self = <wcs.forms.root.TrackingCodesDirectory object at 0x2a68150> obj = <wcs.forms.root.TrackingCodeDirectory object at 0x2ed0e50> name = None path = ['load'] File "/usr/lib/pymodules/python2.7/quixote/directory.py", line 63, in _q_traverse 61 if path: 62 if hasattr(obj, '_q_traverse'): > 63 return obj._q_traverse(path) 64 else: 65 raise TraversalError locals: component = 'code' self = <modules.root.AlternateRootDirectory object at 0x2bebad0> obj = <wcs.forms.root.TrackingCodesDirectory object at 0x2a68150> name = 'code' path = ['TWXHMKSP', 'load'] File "/usr/share/pyshared/extra-wcs-au-quotidien/modules/root.py", line 821, in _q_traverse 819 return redirect('%s%s/%s' % (base_url, f.category.url_name, uri_rest)) 820 > 821 raise e 822 823 locals: path = ['code', 'TWXHMKSP', 'load'] self = <modules.root.AlternateRootDirectory object at 0x2bebad0> response = <qommon.http_response.HTTPResponse instance at 0x342e9e0> File "/usr/lib/pymodules/python2.7/quixote/publish.py", line 253, in try_publish 251 permanent=True) 252 components = path[1:].split('/') > 253 output = self.root_directory._q_traverse(components) 254 # The callable ran OK, commit any changes to the session 255 self.finish_successful_request() locals: path = '/code/TWXHMKSP/load' self = <publisher.WcsPublisher instance at 0x2bfc908> request = <qommon.http_request.HTTPRequest instance at 0x342e2d8> components = ['code', 'TWXHMKSP', 'load'] File "/usr/lib/python2.7/dist-packages/wcs/qommon/publisher.py", line 585, in try_publish 583 for extra_source in self.extra_sources: 584 self.substitutions.feed(extra_source(self, request)) > 585 return Publisher.try_publish(self, request) 586 587 def get_site_language(self): locals: extra_source = <class 'modules.abelium_domino_vars.DominoVariables'> pystatsd = <module 'qommon.vendor.pystatsd' from '/usr/lib/python2.7/dist-packages/wcs/qommon/vendor/pystatsd.pyc'> request = <qommon.http_request.HTTPRequest instance at 0x342e2d8> script_name = '' prefix = 'm' override_template_keys = {'m': 'mobile'} canonical_hostname = 'vincennes.dev.au-quotidien.com' self = <publisher.WcsPublisher instance at 0x2bfc908> File "/usr/lib/python2.7/dist-packages/wcs/publisher.py", line 198, in try_publish 196 if request.get_header('X_WCS_IFRAME_MODE', '') in ('true', 'yes'): 197 request.response.iframe_mode = True > 198 return QommonPublisher.try_publish(self, request) 199 200 def cleanup(self): locals: self = <publisher.WcsPublisher instance at 0x2bfc908> request = <qommon.http_request.HTTPRequest instance at 0x342e2d8> File "/usr/lib/pymodules/python2.7/quixote/publish.py", line 281, in process_request 279 except: 280 # Some other exception, generate error messages to the logs, etc. > 281 output = self.finish_failed_request() 282 output = self.filter_output(request, output) 283 self.logger.log_request(request, start_time) locals: start_time = 1425293639.824196 request = <qommon.http_request.HTTPRequest instance at 0x342e2d8> self = <publisher.WcsPublisher instance at 0x2bfc908> File "/usr/lib/python2.7/dist-packages/wcs/qommon/publisher.py", line 882, in process 880 def process(self, stdin, env): 881 request = HTTPRequest(stdin, env) > 882 self.response = self.process_request(request) 883 return self.response 884 locals: self = <publisher.WcsPublisher instance at 0x2bfc908> stdin = <open file '<socket>', mode 'r' at 0x2cf3d20> request = <qommon.http_request.HTTPRequest instance at 0x342e2d8> env = {'HTTP_REFERER': 'https://vincennes.dev.au-quotidien.com/petite-enfance/', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SCRIPT_NAME': '', 'REQUEST_METHOD': 'GET', 'PATH_INFO': '/code/TWXHMKSP/load', 'HTTP_X_FORWARDED_SSL': 'on', 'QUERY_STRING': '', 'HTTP_X_REAL_IP': '82.246.54.97', 'CONTENT_LENGTH': '0', 'HTTP_USER_AGENT': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36', 'HTTP_CONNECTION': 'close', 'HTTP_COOKIE': '_pk_id.3.1b06=4b6f1b5066c88bfa.1422386772.7.1425293636.1424872893.; _pk_ses.3.1b06=*', 'SERVER_NAME': '*.dev.au-quotidien.com', 'REMOTE_ADDR': '192.168.44.1', 'HTTP_X_FORWARDED_PROTOCOL': 'ssl', 'SERVER_PORT': '80', 'DOCUMENT_ROOT': '/etc/nginx/html', 'CONTENT_TYPE': '', 'HTTP_X_FORWARDED_PROTO': 'https', 'DOCUMENT_URI': '/code/TWXHMKSP/load', 'HTTP_HOST': 'vincennes.dev.au-quotidien.com', 'HTTPS': 'yes', 'REQUEST_URI': '/code/TWXHMKSP/load', 'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'REMOTE_PORT': '55963', 'HTTP_ACCEPT_LANGUAGE': 'fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4', 'SCGI': '1', 'HTTP_ACCEPT_ENCODING': 'gzip, deflate, sdch'} File "/usr/lib/pymodules/python2.7/quixote/server/scgi_server.py", line 27, in handle_connection 25 env['PATH_INFO'] = path[len(prefix):] + env.get('PATH_INFO', '') 26 > 27 response = self.publisher.process(input, env) 28 try: 29 response.write(output) locals: output = <open file '<socket>', mode 'w' at 0x2cf3c00> self = <qommon.scgi_server.QommonHandler instance at 0x265d830> conn = <socket object, fd=5, family=2, type=1, protocol=0> env = {'HTTP_REFERER': 'https://vincennes.dev.au-quotidien.com/petite-enfance/', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SCRIPT_NAME': '', 'REQUEST_METHOD': 'GET', 'PATH_INFO': '/code/TWXHMKSP/load', 'HTTP_X_FORWARDED_SSL': 'on', 'QUERY_STRING': '', 'HTTP_X_REAL_IP': '82.246.54.97', 'CONTENT_LENGTH': '0', 'HTTP_USER_AGENT': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36', 'HTTP_CONNECTION': 'close', 'HTTP_COOKIE': '_pk_id.3.1b06=4b6f1b5066c88bfa.1422386772.7.1425293636.1424872893.; _pk_ses.3.1b06=*', 'SERVER_NAME': '*.dev.au-quotidien.com', 'REMOTE_ADDR': '192.168.44.1', 'HTTP_X_FORWARDED_PROTOCOL': 'ssl', 'SERVER_PORT': '80', 'DOCUMENT_ROOT': '/etc/nginx/html', 'CONTENT_TYPE': '', 'HTTP_X_FORWARDED_PROTO': 'https', 'DOCUMENT_URI': '/code/TWXHMKSP/load', 'HTTP_HOST': 'vincennes.dev.au-quotidien.com', 'HTTPS': 'yes', 'REQUEST_URI': '/code/TWXHMKSP/load', 'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'REMOTE_PORT': '55963', 'HTTP_ACCEPT_LANGUAGE': 'fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4', 'SCGI': '1', 'HTTP_ACCEPT_ENCODING': 'gzip, deflate, sdch'} input = <open file '<socket>', mode 'r' at 0x2cf3d20> File "/usr/lib/python2.7/dist-packages/wcs/qommon/scgi_server.py", line 35, in handle_connection 33 def handle_connection(self, conn): 34 self.number_of_connection_handled = self.number_of_connection_handled + 1 > 35 quixote.server.scgi_server.QuixoteHandler.handle_connection(self, conn) 36 # input, output and conn are closed, long running jobs could be done 37 # here. locals: self = <qommon.scgi_server.QommonHandler instance at 0x265d830> conn = <socket object, fd=5, family=2, type=1, protocol=0> File "/usr/lib/pymodules/python2.7/scgi/scgi_server.py", line 71, in serve 69 conn.setblocking(1) 70 os.close(fd) > 71 self.handle_connection(conn) 72 73 locals: self = <qommon.scgi_server.QommonHandler instance at 0x265d830> fd = 4 conn = <socket object, fd=5, family=2, type=1, protocol=0> File "/usr/lib/pymodules/python2.7/scgi/scgi_server.py", line 194, in spawn_child 192 # the connection in the child 193 os.close(child_fd) > 194 self.handler_class(parent_fd).serve() 195 sys.exit(0) 196 else: locals: self = <qommon.scgi_server.SCGIServer instance at 0x1ff2560> pid = 0 flags = 2 child_fd = 4 parent_fd = 3 conn = None File "/usr/lib/pymodules/python2.7/scgi/scgi_server.py", line 172, in __init__ 170 self.max_children = max_children 171 self.children = {} # { pid : fd } > 172 self.spawn_child() 173 self.restart = 0 174 locals: max_children = 5 host = 'localhost' handler_class = <function create_handler at 0x2648de8> port = 3001 self = <qommon.scgi_server.SCGIServer instance at 0x1ff2560> File "/usr/lib/python2.7/dist-packages/wcs/qommon/scgi_server.py", line 73, in run 71 72 s = SCGIServer(create_handler, host=host, port=port, > 73 max_children=max_children) 74 s.serve() 75 locals: create_handler = <function create_handler at 0x2648de8> handler_connection_limit = -1 max_children = 5 create_publisher = <bound method classobj.create_publisher of <class publisher.WcsPublisher at 0x26620b8>> script_name = None host = 'localhost' spawn_cron = True port = 3001 File "/usr/lib/python2.7/dist-packages/wcs/ctl/start.py", line 120, in execute 118 119 try: > 120 run_function(publisher.WcsPublisher.create_publisher, **run_kwargs) 121 except socket.error, e: 122 self.del_pid() locals: publisher = <module 'publisher' from '/usr/lib/python2.7/dist-packages/wcs/publisher.pyc'> self = <wcs.ctl.start.CmdStart object at 0x1f9a1d0> args = [] sub_options = <Values at 0x1ff2320: {'http': False, 'silent': False, 'app_dir': None, 'extra': ['/usr/share/pyshared/extra-wcs-au-quotidien/'], 'max_children': None, 'handler_connection_limit': None, 'script_name': None, 'daemonize': False, 'data_dir': None, 'port': 3001, 'pidfile': None}> run_function = <function run at 0x1ff0668> base_options = <Values at 0x1f869e0: {'configfile': '/etc/wcs/wcs-au-quotidien.cfg'}> run_kwargs = {'port': 3001, 'spawn_cron': True} File "/usr/lib/python2.7/dist-packages/wcs/qommon/ctl.py", line 64, in run 62 if sub_options.data_dir: 63 self.config.set("main", "data_dir", sub_options.data_dir) > 64 return self.execute(base_options, sub_options, args) 65 66 def parse_args(self, args): locals: sub_options = <Values at 0x1ff2320: {'http': False, 'silent': False, 'app_dir': None, 'extra': ['/usr/share/pyshared/extra-wcs-au-quotidien/'], 'max_children': None, 'handler_connection_limit': None, 'script_name': None, 'daemonize': False, 'data_dir': None, 'port': 3001, 'pidfile': None}> args = [] base_options = <Values at 0x1f869e0: {'configfile': '/etc/wcs/wcs-au-quotidien.cfg'}> self = <wcs.ctl.start.CmdStart object at 0x1f9a1d0> File "/usr/lib/python2.7/dist-packages/wcs/qommon/ctl.py", line 154, in run 152 command_class = self.get_commands()[command] 153 cmd = command_class() > 154 return cmd.run(args, options) 155 locals: cmd = <wcs.ctl.start.CmdStart object at 0x1f9a1d0> args = ['--extra', '/usr/share/pyshared/extra-wcs-au-quotidien/'] self = <wcs.qommon.ctl.Ctl object at 0x1f7e810> command_class = <class 'wcs.ctl.start.CmdStart'> command = 'start' cmd_prefix = 'wcs.ctl' options = <Values at 0x1f869e0: {'configfile': '/etc/wcs/wcs-au-quotidien.cfg'}> File "/usr/sbin/wcsctl", line 8, in <module> 6 7 ctl = wcs.qommon.ctl.Ctl(cmd_prefixes=['wcs.ctl']) > 8 ctl.run(sys.argv[1:]) 9 locals: wcs = <module 'wcs' from '/usr/lib/python2.7/dist-packages/wcs/__init__.pyc'> __builtins__ = <module '__builtin__' (built-in)> __file__ = '/usr/sbin/wcsctl' __package__ = None sys = <module 'sys' (built-in)> ctl = <wcs.qommon.ctl.Ctl object at 0x1f7e810> __name__ = '__main__' __doc__ = None Form: Cookies: _pk_id.3.1b06 '4b6f1b5066c88bfa.1422386772.7.1425293636.1424872893.' _pk_ses.3.1b06 '*' Environment: CONTENT_LENGTH '0' CONTENT_TYPE '' DOCUMENT_ROOT '/etc/nginx/html' DOCUMENT_URI '/code/TWXHMKSP/load' HTTPS 'yes' HTTP_ACCEPT 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' HTTP_ACCEPT_ENCODING 'gzip, deflate, sdch' HTTP_ACCEPT_LANGUAGE 'fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4' HTTP_CONNECTION 'close' HTTP_COOKIE '_pk_id.3.1b06=4b6f1b5066c88bfa.1422386772.7.1425293636.1424872893.; _pk_ses.3.1b06=*' HTTP_HOST 'vincennes.dev.au-quotidien.com' HTTP_REFERER 'https://vincennes.dev.au-quotidien.com/petite-enfance/' HTTP_USER_AGENT 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36' HTTP_X_FORWARDED_PROTO 'https' HTTP_X_FORWARDED_PROTOCOL 'ssl' HTTP_X_FORWARDED_SSL 'on' HTTP_X_REAL_IP '82.246.54.97' PATH_INFO '/code/TWXHMKSP/load' QUERY_STRING '' REMOTE_ADDR '192.168.44.1' REMOTE_PORT '55963' REQUEST_METHOD 'GET' REQUEST_URI '/code/TWXHMKSP/load' SCGI '1' SCRIPT_NAME '' SERVER_NAME '*.dev.au-quotidien.com' SERVER_PORT '80' SERVER_PROTOCOL 'HTTP/1.0'
Fichiers
Révisions associées
sql: fix ordering of tracking code tables (#6597)
forms: store formdata before tracking code (#6597)
switch to tracking code sql class when appropriate (#6597)
sql: fix ordering of tracking code tables (#6597)
forms: store formdata before tracking code (#6597)
Historique
Mis à jour par Frédéric Péters il y a environ 9 ans
Tu as une idée plutôt précise de l'heure, ou du contenu de la demande ?
Mis à jour par Frédéric Péters il y a environ 9 ans
Aussi, comment as-tu fait pour récupérer le code de suivi, par un envoi par email, et si oui, à quelle étape du formulaire ?
Mis à jour par Frédéric Péters il y a environ 9 ans
- Assigné à mis à Frédéric Péters
Bon, c'est ok, je reproduis la trace.
Mis à jour par Frédéric Péters il y a environ 9 ans
- Fichier 0001-switch-to-tracking-code-sql-class-when-appropriate-6.patch 0001-switch-to-tracking-code-sql-class-when-appropriate-6.patch ajouté
- Fichier 0002-sql-fix-ordering-of-tracking-code-tables-6597.patch 0002-sql-fix-ordering-of-tracking-code-tables-6597.patch ajouté
- Fichier 0003-forms-store-formdata-before-tracking-code-6597.patch 0003-forms-store-formdata-before-tracking-code-6597.patch ajouté
- Statut changé de Nouveau à En cours
Pour l'exécution des tests j'ai créé #6598 parce que je n'ai pas encore tout à fait un truc propre. Voici quand même les fabuleuses corrections pour ce ticket.
Mis à jour par Frédéric Péters il y a environ 9 ans
- Statut changé de En cours à Résolu (à déployer)
* 2853f00 forms: store formdata before tracking code (#6597) * 2533c51 sql: fix ordering of tracking code tables (#6597) * c692073 switch to tracking code sql class when appropriate (#6597)
switch to tracking code sql class when appropriate (#6597)