Bug #12430
agoraplus: erreur lors de la mise à jour de la profession
0%
Description
Trace sur la prod:
Error occurred while processing request Traceback (most recent call last): File "/usr/lib/python2.7/dist-packages/passerelle/utils/jsonresponse.py", line 350, in api resp = f(*args, **kwargs) File "/usr/lib/python2.7/dist-packages/passerelle/utils/__init__.py", line 104, in _wrapped_view return view_func(instance, request, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/passerelle/contrib/agoraplus/views.py", line 450, in post return self.post_data(formdata) File "/usr/lib/python2.7/dist-packages/passerelle/contrib/agoraplus/views.py", line 590, in post_data new_employer_city, new_employer_phone) File "/usr/lib/python2.7/dist-packages/passerelle/contrib/agoraplus/models.py", line 834, in update_profession adult_data['pcs']['id'] = new_pcs['id'] TypeError: string indices must be integers, not str
Fichiers
Historique
Mis à jour par Serghei Mihai il y a presque 8 ans
- Fichier 0001-agoraplus-accept-empty-profession-category-12430.patch 0001-agoraplus-accept-empty-profession-category-12430.patch ajouté
Visiblement ll s'agit d'un usage du formulaire pour déclarer une situation sans emploi: https://sentry.entrouvert.org/sentry/production/issues/663/ .
Mis à jour par Benjamin Dauvergne il y a plus de 7 ans
Le patch ne semble pas corriger cette trace en première lecture adult_data['pcs']['id'] = new_pcs['id']
et string indices must be integers, not str
ça veut dire que new_pcs
est une chaîne et non pas un dico, et donc if new_pcs['id']
va générer la même trace.
Mis à jour par Serghei Mihai il y a plus de 7 ans
- Fichier 0001-agoraplus-accept-empty-profession-category-12430.patch 0001-agoraplus-accept-empty-profession-category-12430.patch ajouté
new_pcs
est censé d'être le couple {"id": "...", "text": "..."} car provient d'une liste wcs.
Apparemment le champ correspondant dans le formulaire wcs correspondant (pcs
), n'a pas été envoyé du tout.
Patch modifié.
Mis à jour par Benjamin Dauvergne il y a plus de 7 ans
Là tu supposes que si bool(new_pcs) == True alors c'est que new_pcs est un dico (i.e. tu suppose que dans la trace ici, new_pcs était la chaîne vide). T'es sûr de ton coup ?
Mis à jour par Serghei Mihai il y a plus de 7 ans
En fait, si la variable est envoyée par wcs, elle est reçue par le connecteur sous forme d'un dico, ou une chaîne.
Si la variable wcs n'est pas envoyée, une chaîne vide est renvoyée: http://git.entrouvert.org/passerelle.git/tree/passerelle/contrib/agoraplus/wcs.py#n51
Mis à jour par Frédéric Péters il y a plus de 7 ans
Ça n'empêche pas de réfléchir pour comprendre mais on a désormais (et déjà du temps cette trace) la trace en HTML avec les variables dans le scope.
adult_id u'20026' new_employer_phone '' new_employer_city '' new_pcs '' new_employer_name '' new_profession u'sans profession'
Mis à jour par Thomas Noël il y a environ 4 ans
- Statut changé de Nouveau à Rejeté
Connecteur supprimé