Projet

Général

Profil

Bug #41079

MultiValueDictKeyError: "'theme'"

Ajouté par Sentry Io il y a environ 4 ans. Mis à jour il y a presque 4 ans.

Statut:
Fermé
Priorité:
Normal
Catégorie:
-
Version cible:
-
Début:
26 mars 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

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

Lié à Hobo - Bug #59815: MultiValueDictKeyError: 'theme'Fermé16 décembre 2021

Actions

Révisions associées

Révision 9cb671d3 (diff)
Ajouté par Nicolas Roche (absent jusqu'au 3 avril) il y a presque 4 ans

theme: check we post a value on theme selection (#41079)

Historique

#1

Mis à jour par Lauréline Guérin il y a environ 4 ans

  • Projet changé de Suivi des traces à Hobo
#2

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

Mis à jour par Nicolas Roche (absent jusqu'au 3 avril) il y a environ 4 ans

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'" 

#4

Mis à jour par Nicolas Roche (absent jusqu'au 3 avril) il y a presque 4 ans

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).

#5

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).

#6

Mis à jour par Nicolas Roche (absent jusqu'au 3 avril) il y a presque 4 ans

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).

#7

Mis à jour par Frédéric Péters il y a presque 4 ans

  • Statut changé de Solution proposée à Solution validée
#8

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

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
#10

Mis à jour par Frédéric Péters il y a plus de 2 ans

  • Lié à Bug #59815: MultiValueDictKeyError: 'theme' ajouté

Formats disponibles : Atom PDF