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