Je voudrais que le décorateur @login_required
de Django teste si un champ particulier d'un utilisateur a été défini sur autre chose que None. (Le champ ajouté a null = true et un défaut de None.)Comment puis-je modifier le décorateur login_required de Django sur une installation personnalisée de Pinax?
Nouvellement créés Les objets Utilisateur ont en effet la valeur Aucun pour le champ, mais un changement évident à @login_required
n'a pas fait de différence notable dans le comportement (I redémarré Gunicorn pour assurer une lecture fraîche). Les vues @login_required
sont rendues si l'utilisateur est authentifié, même si le champ ajouté est None.
Le présent, un peu changé @login_required
est:
def login_required(function=None, redirect_field_name=REDIRECT_FIELD_NAME):
"""
Decorator for views that checks that the user is logged in, redirecting
to the log-in page if necessary.
"""
actual_decorator = user_passes_test(
lambda u: u.foo != None,
redirect_field_name=redirect_field_name
)
if function:
return actual_decorator(function)
return actual_decorator
Le lambda d'origine était u.is_authenticated()
.