From d2a2dd6c91e08e38b1cb140ce42be64c475ac56d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Fri, 30 Aug 2019 08:47:44 +0200 Subject: [PATCH] misc: use native admin login/logout views if public URLs are not loaded (#35678) --- combo/public/admin.py | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/combo/public/admin.py b/combo/public/admin.py index e6246dca..a669dd9d 100644 --- a/combo/public/admin.py +++ b/combo/public/admin.py @@ -17,19 +17,31 @@ from django.contrib import admin from django.core.urlresolvers import reverse from django.shortcuts import redirect +from django.urls.exceptions import NoReverseMatch from django.views.decorators.cache import never_cache @never_cache -def login(request, extra_context=None): - auth_login_url = reverse('auth_login') +def login(request, *args, **kwargs): + try: + auth_login_url = reverse('auth_login') + except NoReverseMatch: + return admin.site.orig_login(request, *args, **kwargs) auth_login_url += '?%s' % request.GET.urlencode() return redirect(auth_login_url) -admin.site.login = login - @never_cache -def logout(request, extra_context=None): - return redirect(reverse('auth_logout')) +def logout(request, *args, **kwargs): + try: + return redirect(reverse('auth_logout')) + except NoReverseMatch: + return admin.site.orig_logout(request, *args, **kwargs) -admin.site.logout = logout + +if admin.site.login != login: + admin.site.orig_login = admin.site.login + admin.site.login = login + +if admin.site.logout != logout: + admin.site.orig_logout = admin.site.logout + admin.site.logout = logout