Projet

Général

Profil

Bug #6597

Crash lors de la saisie du code de suivi

Ajouté par Victor Claudet il y a environ 9 ans. Mis à jour il y a plus de 8 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
02 mars 2015
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

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

Révision a228d3be (diff)
Ajouté par Frédéric Péters il y a environ 9 ans

switch to tracking code sql class when appropriate (#6597)

Révision 6c723eba (diff)
Ajouté par Frédéric Péters il y a environ 9 ans

sql: fix ordering of tracking code tables (#6597)

Révision 6e9dc51e (diff)
Ajouté par Frédéric Péters il y a environ 9 ans

forms: store formdata before tracking code (#6597)

Révision c692073d (diff)
Ajouté par Frédéric Péters il y a environ 9 ans

switch to tracking code sql class when appropriate (#6597)

Révision 2533c51a (diff)
Ajouté par Frédéric Péters il y a environ 9 ans

sql: fix ordering of tracking code tables (#6597)

Révision 2853f004 (diff)
Ajouté par Frédéric Péters il y a environ 9 ans

forms: store formdata before tracking code (#6597)

Historique

#1

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 ?

#2

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 ?

#3

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.

#4

Mis à jour par Frédéric Péters il y a environ 9 ans

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.

#5

Mis à jour par Frédéric Péters il y a environ 9 ans

  • Projet changé de Au quotidien à w.c.s.
#6

Mis à jour par Frédéric Péters il y a environ 9 ans

  • Patch proposed changé de Non à Oui
#7

Mis à jour par Thomas Noël il y a environ 9 ans

Ack

#8

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)
#9

Mis à jour par Thomas Noël il y a plus de 8 ans

  • Statut changé de Résolu (à déployer) à Fermé

Formats disponibles : Atom PDF