misc: use native admin login/logout views if public URLs are not loaded (#35678)

This commit is contained in:
Frédéric Péters 2019-08-30 08:47:44 +02:00
parent 9627292845
commit d2a2dd6c91
1 changed files with 19 additions and 7 deletions

View File

@ -17,19 +17,31 @@
from django.contrib import admin from django.contrib import admin
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.shortcuts import redirect from django.shortcuts import redirect
from django.urls.exceptions import NoReverseMatch
from django.views.decorators.cache import never_cache from django.views.decorators.cache import never_cache
@never_cache @never_cache
def login(request, extra_context=None): def login(request, *args, **kwargs):
auth_login_url = reverse('auth_login') try:
auth_login_url = reverse('auth_login')
except NoReverseMatch:
return admin.site.orig_login(request, *args, **kwargs)
auth_login_url += '?%s' % request.GET.urlencode() auth_login_url += '?%s' % request.GET.urlencode()
return redirect(auth_login_url) return redirect(auth_login_url)
admin.site.login = login
@never_cache @never_cache
def logout(request, extra_context=None): def logout(request, *args, **kwargs):
return redirect(reverse('auth_logout')) 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