Bug #41079
MultiValueDictKeyError: "'theme'"
0%
Description
https://sentry.entrouvert.org/entrouvert/publik/issues/1120/
MultiValueDictKeyError: "'theme'" (5 additional frame(s) were not displayed) ... File "django/views/generic/base.py", line 68, in view return self.dispatch(request, *args, **kwargs) File "django/views/generic/base.py", line 88, in dispatch return handler(request, *args, **kwargs) File "django/views/generic/base.py", line 190, in get url = self.get_redirect_url(*args, **kwargs) File "hobo/theme/views.py", line 60, in get_redirect_url set_theme(self.request.POST['theme']) File "django/utils/datastructures.py", line 85, in __getitem__ raise MultiValueDictKeyError(repr(key)) Internal Server Error: /theme/select
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Nicolas Roche (absent jusqu'au 3 avril) il y a environ 4 ans
- Assigné à mis à Nicolas Roche (absent jusqu'au 3 avril)
Mis à jour par Nicolas Roche (absent jusqu'au 3 avril) il y a environ 4 ans
- Fichier 0001-theme-check-we-get-a-post-value-on-theme-selection-4.patch 0001-theme-check-we-get-a-post-value-on-theme-selection-4.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Je reproduit l'erreur en retirant la sélection actuelle du thème des boutons radio,
(en retirant checked="checked"
de la balise <input type="radio" name="theme">
via l'inspecteur du navigateur)
ou tout simplement en allant sur la page https://hobo.dev.publik.love/theme/select
File "/home/nroche/src/hobo/hobo/theme/views.py", line 62, in get_redirect_url set_theme(self.request.POST['theme']) File "/home/nroche/envs/publik-env-py3/lib/python3.7/site-packages/django/utils/datastructures.py", line 85, in __getitem__ raise MultiValueDictKeyError(repr(key)) django.utils.datastructures.MultiValueDictKeyError: "'theme'"
Mis à jour par Nicolas Roche (absent jusqu'au 3 avril) il y a presque 4 ans
- Fichier 0001-theme-force-providing-a-value-on-theme-selection-410.patch 0001-theme-force-providing-a-value-on-theme-selection-410.patch ajouté
Actuellement la vue de sélection du thème s'attend à recevoir une requête POST contenant le nom du thème choisi.
Le test illustre que l'accès à cette vue via la méthode GET génère une erreur 500 avec la trace donnée dans la description du ticket.
Ce patch choisi d'encadrer l'accès à ce code suivant le type de la méthode HTTP employée (GET/POST) pour y accéder (plutôt que de gérer l'exception liée à l'absence de contenu dans le dictionnaire POST).
Mis à jour par Frédéric Péters il y a presque 4 ans
Il me semble qu'il n'y a plus là aucun sens à hériter de RedirectView, que ça pourrait juste être View. (et retirer l'attribut permanent).
Mis à jour par Nicolas Roche (absent jusqu'au 3 avril) il y a presque 4 ans
- Fichier 0001-theme-check-we-post-a-value-on-theme-selection-41079.patch 0001-theme-check-we-post-a-value-on-theme-selection-41079.patch ajouté
Oui, c'était effectivement mon plan (que je n'avais pas appliqué jusqu'au bout).
Mais j'ai bugué : mon idée d'origine était simplement la suivante (cf, ce patch).
Mis à jour par Frédéric Péters il y a presque 4 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Nicolas Roche (absent jusqu'au 3 avril) il y a presque 4 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 9cb671d3eea7736616735be5b752cdae36e7b47d Author: Nicolas ROCHE <nroche@entrouvert.com> Date: Fri Mar 27 11:30:41 2020 +0100 theme: check we post a value on theme selection (#41079)
Mis à jour par Frédéric Péters il y a presque 4 ans
- Statut changé de Résolu (à déployer) à Solution déployée
Mis à jour par Frédéric Péters il y a plus de 2 ans
- Lié à Bug #59815: MultiValueDictKeyError: 'theme' ajouté
theme: check we post a value on theme selection (#41079)