Development #45710
TypeError: Object of type date is not JSON serializable
0%
Description
https://sentry.entrouvert.org/entrouvert/publik/issues/3486/
File "/usr/lib/python3/dist-packages/django/views/generic/base.py" in view 68. return self.dispatch(request, *args, **kwargs) File "/usr/lib/python3/dist-packages/authentic2/views.py" in dispatch 905. .dispatch(request, *args, **kwargs) File "/usr/lib/python3/dist-packages/django/views/generic/base.py" in dispatch 88. return handler(request, *args, **kwargs) File "/usr/lib/python3/dist-packages/authentic2/views.py" in post 1062. return super(RegistrationCompletionView, self).post(request, *args, **kwargs) File "/usr/lib/python3/dist-packages/django/views/generic/edit.py" in post 217. return super(BaseCreateView, self).post(request, *args, **kwargs) File "/usr/lib/python3/dist-packages/django/views/generic/edit.py" in post 183. return self.form_valid(form) File "/usr/lib/python3/dist-packages/authentic2/views.py" in form_valid 1083. **data) File "/usr/lib/python3/dist-packages/authentic2/utils/__init__.py" in send_registration_mail 728. **kwargs) File "/usr/lib/python3/dist-packages/authentic2/utils/__init__.py" in build_activation_url 698. registration_token = signing.dumps(data) File "/usr/lib/python3/dist-packages/django/core/signing.py" in dumps 115. data = serializer().dumps(obj) File "/usr/lib/python3/dist-packages/django/core/signing.py" in dumps 93. return json.dumps(obj, separators=(',', ':')).encode('latin-1') File "/usr/lib/python3.7/json/__init__.py" in dumps 238. **kw).encode(obj) File "/usr/lib/python3.7/json/encoder.py" in encode 199. chunks = self.iterencode(o, _one_shot=True) File "/usr/lib/python3.7/json/encoder.py" in iterencode 257. return _iterencode(o, 0) File "/usr/lib/python3.7/json/encoder.py" in default 179. raise TypeError(f'Object of type {o.__class__.__name__} ' ...
Fichiers
Révisions associées
misc: unserialize attribute in registration view (#45710)
Registration view pass attribute values in JSON tokens, so we need to
get a JSON compatible serialization of attribute values for the token
using their serialization function.
Historique
Mis à jour par Frédéric Péters il y a plus de 3 ans
- Projet changé de Suivi des traces à Authentic 2
Mis à jour par Frédéric Péters il y a plus de 3 ans
- Description mis à jour (diff)
Dans l'info sentry, on peut voir que ça semble se faire au retour de création de compte via FC, next_url: /fc/callback/?next=/idp/saml2/continue%3Fnonce%3D_897F22D3EB9FFBDB80AB8A57C0AF82C2&service=eservices'
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
Je suis un peu perdu sur celle-ci, le code qui appelle send_registration_mail est conditionné par ça :
if ('email' in self.request.POST and ('email' not in self.token or self.request.POST['email'] != self.token['email']) and not self.token.get('skip_email_check')):
et dans la trace sentry on ne voit justement pas 'email' dans le POST, je ne comprends pas très bien comment on arrive ici donc.
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
- Assigné à mis à Benjamin Dauvergne
- Arles a ajouté un champs requis acceptation_cgu
- ça bloque l'enregistrement automatique pour FranceConnect, on s'arrête désormais systématiquement sur la page d'enregistrement pour que les gens y coche cette case
- à cette occasion la personne a changé son email de celle fournie par FranceConnect et a renseigné sa date de naissance
- lors de la création du jeton pour la nouvelle URL d'activiation, la sérialisation de l'objet date() a foiré, ça n'est pas JSON compatible (django.core.signing.dumps()/loads() utilise une sérialisation JSON).
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
- Fichier 0001-misc-unserialize-attribute-in-registration-view-4571.patch 0001-misc-unserialize-attribute-in-registration-view-4571.patch ajouté
- Tracker changé de Bug à Development
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
C'est vraiment pas le fix que je voudrai faire, parce que la gestion du jeton passé de vue en vue laisse à désirer (repasse le contenu tel quel au formulaire ne marche vraiment pas en fait), mais pour l'instant ça fera l'affaire.
Mis à jour par Serghei Mihai il y a plus de 3 ans
- Statut changé de Solution proposée à En cours
import pdb pdb.set_trace()
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
- Fichier 0001-misc-unserialize-attribute-in-registration-view-4571.patch 0001-misc-unserialize-attribute-in-registration-view-4571.patch ajouté
- Statut changé de En cours à Solution proposée
Mis à jour par Serghei Mihai il y a plus de 3 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 079102d8515c610297e8709bd5a50ab399589035 Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Thu Aug 13 15:43:49 2020 +0200 misc: unserialize attribute in registration view (#45710) Registration view pass attribute values in JSON tokens, so we need to get a JSON compatible serialization of attribute values for the token using their serialization function.
Mis à jour par Frédéric Péters il y a plus de 3 ans
- Statut changé de Résolu (à déployer) à Solution déployée
misc: unserialize attribute in registration view (#45710)
Registration view pass attribute values in JSON tokens, so we need to
get a JSON compatible serialization of attribute values for the token
using their serialization function.