Development #53409
AttributeError: 'LoginOrLinkView' object has no attribute 'authenticate'
0%
Description
https://sentry.entrouvert.org/entrouvert/publik/issues/44497/
IntegrityError: duplicate key value violates unique constraint "authentic2_auth_fc_fcaccount_user_id_order_9be8b543_uniq" DETAIL: Key (user_id, "order")=(82582, 0) already exists. File "django/db/backends/utils.py", line 64, in execute return self.cursor.execute(sql, params) IntegrityError: duplicate key value violates unique constraint "authentic2_auth_fc_fcaccount_user_id_order_9be8b543_uniq" DETAIL: Key (user_id, "order")=(82582, 0) already exists. (10 additional frame(s) were not displayed) ... File "django/db/backends/utils.py", line 79, in execute return super(CursorDebugWrapper, self).execute(sql, params) File "django/db/backends/utils.py", line 64, in execute return self.cursor.execute(sql, params) File "django/db/utils.py", line 94, in __exit__ six.reraise(dj_exc_type, dj_exc_value, traceback) File "django/utils/six.py", line 685, in reraise raise value.with_traceback(tb) File "django/db/backends/utils.py", line 64, in execute return self.cursor.execute(sql, params) AttributeError: 'LoginOrLinkView' object has no attribute 'authenticate' (4 additional frame(s) were not displayed) ... File "django/views/generic/base.py", line 88, in dispatch return handler(request, *args, **kwargs) File "authentic2_auth_fc/views.py", line 105, in get response = self.handle_authorization_response(request, code=code, state=state) File "authentic2_auth_fc/views.py", line 188, in handle_authorization_response return self.login(request) File "authentic2_auth_fc/views.py", line 331, in login user = self.create_account(request, sub=self.sub, token=self.token, user_info=self.user_info) File "authentic2_auth_fc/views.py", line 411, in create_account return self.authenticate(request, sub=sub, token=token, user_info=user_info)
Fichiers
Révisions associées
auth_fc: handle case of multiple FranceConnect accounts with same email (#53409)
auth_fc: fix typo in views.py (#53409)
Historique
Mis à jour par Frédéric Péters il y a presque 3 ans
- Projet changé de Suivi des traces à Plugin FS FranceConnect
- Hors marché mis à Non
Mis à jour par Benjamin Dauvergne il y a presque 3 ans
- Fichier 0001-auth_fc-fix-typo-in-views.py-53409.patch 0001-auth_fc-fix-typo-in-views.py-53409.patch ajouté
- Fichier 0002-auth_fc-handle-case-of-multiple-FranceConnect-accoun.patch 0002-auth_fc-handle-case-of-multiple-FranceConnect-accoun.patch ajouté
- Tracker changé de Bug à Development
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par Benjamin Dauvergne il y a presque 3 ans
Ok, cas fréquent de deux comptes fiscaux de conjoints (donc deux subs FC) avec une seule adresse email; j'ai ajouté un test.
J'ai du ajouter with atomic():
inutile sinon ça ne marche pas dans les tests (les tests tournant eux même dans une transaction implicite pour aller vite, on se trouve en statut transaction cassé et on ne peut pas continue dans a2_utils.authenticate() les "SELECT" foirent).
Mis à jour par Valentin Deniaud il y a presque 3 ans
Benjamin Dauvergne a écrit :
J'ai du ajouter
with atomic():
inutile sinon ça ne marche pas dans les tests (les tests tournant eux même dans une transaction implicite pour aller vite, on se trouve en statut transaction cassé et on ne peut pas continue dans a2_utils.authenticate() les "SELECT" foirent).
Il faut utiliser la fixture transactional_db.
Mis à jour par Benjamin Dauvergne il y a presque 3 ans
Valentin Deniaud a écrit :
Benjamin Dauvergne a écrit :
J'ai du ajouter
with atomic():
inutile sinon ça ne marche pas dans les tests (les tests tournant eux même dans une transaction implicite pour aller vite, on se trouve en statut transaction cassé et on ne peut pas continue dans a2_utils.authenticate() les "SELECT" foirent).Il faut utiliser la fixture transactional_db.
Non pas dans ce cas, si jamais on met un atomic plus haut un jour on aura le même comportement mais ce sera invisible jusqu'à ce que l'erreur apparaisse, on doit toujours utiliser une transaction si on attend une IntegrityError, parier sur la permanence d'autocommit n'est pas un bon pari et ça ne coûte rien de faire les choses proprement. Django fait pareil dans les implémentations de get_or_create/update_or_create.
Mis à jour par Valentin Deniaud il y a presque 3 ans
OK mais si ce n'est pas juste pour faire marcher les tests, il faudrait adapter le commentaire pour le dire.
Aussi peut-être déplacer ce ticket ailleurs pour que jenkins le trouve ?
Mis à jour par Frédéric Péters il y a presque 3 ans
Aussi peut-être déplacer ce ticket ailleurs pour que jenkins le trouve ?
On pourrait supprimer le sous-projet maintenant que le code a été intégré dans le dépôt principal, et peut-être utiliser une catégorie pour marquer ce qui relève de FranceConnect. (?)
(alternativement je modifie le code d'intégration pour y ajouter la correspondance du nom de projet) (je viens de faire ça, hop).
Mis à jour par Benjamin Dauvergne il y a presque 3 ans
- Fichier 0001-auth_fc-fix-typo-in-views.py-53409.patch 0001-auth_fc-fix-typo-in-views.py-53409.patch ajouté
- Fichier 0002-auth_fc-handle-case-of-multiple-FranceConnect-accoun.patch 0002-auth_fc-handle-case-of-multiple-FranceConnect-accoun.patch ajouté
Ok. Ce n'est pas jenkins qui ne trouve pas la branche, c'est redmine qui ne trouve pas jenkins. C'est là : https://jenkins.entrouvert.org/job/authentic-wip/job/wip%252F53409-AttributeError-LoginOrLinkView-o/
Mis à jour par Valentin Deniaud il y a presque 3 ans
- Statut changé de Solution proposée à Solution validée
Dernière remarque de forme,
email address \'%s\' account of «%s»
Je pense qu'il faudrait que les deux manière de citer soient consistantes, et pour départager des deux que « en anglais ça ne s'utilise pas.
Ligne d'après il manque un espace à la fin Please create'
.
Mis à jour par Benjamin Dauvergne il y a presque 3 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 34b84935f605d95fff6a5c6990b47364ed4bed0f Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Mon Apr 26 15:24:43 2021 +0200 auth_fc: handle case of multiple FranceConnect accounts with same email (#53409) commit e43af1ff9f67a5467bda98928fcd1cfaa7d0cc3c Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Mon Apr 26 15:07:05 2021 +0200 auth_fc: fix typo in views.py (#53409)
Mis à jour par Frédéric Péters il y a presque 3 ans
- Statut changé de Résolu (à déployer) à Solution déployée
Mis à jour par Serghei Mihai il y a presque 3 ans
Je vais créer une branche hotfix avec ce patch et mettre à jour les prods ce soir, sauf contre-ordre.
auth_fc: fix typo in views.py (#53409)