Projet

Général

Profil

Development #60125

évaluation d'affichage bloc de connexion vs variables absentes

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

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
29 décembre 2021
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

On a des expressions type

'backoffice' in login_hint or 'XXX' in service_ou_slug

mais service_ou_slug n'est pas toujours défini, ce qui peut donner cette erreur,

evaluate_condition: 'backoffice' in login_hint or 'XXX' in service_ou_slug ctx={'dnsbl': <function dnsbl at 0x7fb94af11bf8>,
'headers': <authentic2.utils.evaluate.HTTPHeaders object at 0x7fb948b7cba8>, 'remote_addr': '...', 'login_hint': set(), 'id': '0'}

ExpressionError
["variable non définie\xa0: name 'service_ou_slug' is not defined"]

J'aurai été pour mettre à None,

@@ -350,6 +350,10 @@ def login(request, template_name='authentic2/login.html', redirect_field_name=RE
                 show_ctx['service_ou_slug'] = service.ou and service.ou.slug
                 show_ctx['service_slug'] = service.slug
                 show_ctx['service'] = service
+            else:
+                show_ctx['service_ou_slug'] = None
+                show_ctx['service_slug'] = None
+                show_ctx['service'] = None

mais ça va foirer aussi vu qu'on fait les comparaisons avec "in".

C'est cependant quelque chose qui pourrait juste être changé, et qu'on écrive service_ou_slug == 'XXX'. (?)


Fichiers

Révisions associées

Révision c95fe470 (diff)
Ajouté par Frédéric Péters il y a plus de 2 ans

misc: always add service variables to login condition context (#60125)

Historique

#2

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

Je serai pour garantir que le variable a toujours le même type et donc avoir comme valeur par défaut la chaîne vide, je ne pense pas que ça pose de problème.

#3

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

  • Assigné à mis à Frédéric Péters

ok.

#4

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

  • Description mis à jour (diff)
#5

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

À noter que ça change le comportement quand un service inconnu est passé : avant service_slug == 'portal' comme condition affichait le bloc de connexion quand il n'y avait pas de service "portal", ça ne l'affichera désormais plus. (le test rend compte de ça).

#6

Mis à jour par Nicolas Roche il y a plus de 2 ans

J'aurai été pour mettre à None,

Ça correspond plus ou moins à ce que je proposait pour https://dev.entrouvert.org/issues/55127#note-1
et du coup je préfère laisser la main à Benjamin ici.

#7

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

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

Pour le cas service == "portal", alors None ou '' ça ne change rien ; et rien à voir avec ce qui était proposé dans #55127, qui était de dire que par défaut il fallait afficher, pour éviter de bloquer des gens hors du service.

Mais si on compte que beaucoup de gens vont jouer avec in et qu'on souhaite éviter de leur dire à chaque fois « c'est facile il suffit d'écrire (service and 'truc' in service) » alors '' c'est mieux, IMHO.

#8

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

  • Statut changé de Solution validée à Résolu (à déployer)
commit c95fe470a40e34ffb9c8d4acb1b263c9db679cd2
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Wed Dec 29 09:53:37 2021 +0100

    misc: always add service variables to login condition context (#60125)
#9

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

  • Statut changé de Résolu (à déployer) à Solution déployée
#10

Mis à jour par Transition automatique il y a environ 2 ans

Automatic expiration

Formats disponibles : Atom PDF