login/logout views
This commit is contained in:
parent
72f541e84f
commit
f1683e8897
|
@ -8,7 +8,7 @@ from django.views.decorators.cache import never_cache
|
|||
from django.contrib.admin.views.decorators import staff_member_required
|
||||
|
||||
from .urls_utils import decorated_includes, manager_required
|
||||
from .views import homepage, atom, unsubscribe, unsubscription_done, login, logout
|
||||
from .views import homepage, atom, unsubscribe, unsubscription_done, LoginView, LogoutView
|
||||
|
||||
from .manage_urls import urlpatterns as manage_urls
|
||||
from .api_urls import urlpatterns as api_urls
|
||||
|
@ -27,8 +27,8 @@ urlpatterns = [
|
|||
name='unsubscription_done'),
|
||||
url(r'^unsubscribe/(?P<unsubscription_token>[\w:-]+)$', unsubscribe,
|
||||
name='unsubscribe'),
|
||||
url(r'^logout/$', logout, name='auth_logout'),
|
||||
url(r'^login/$', login, name='auth_login'),
|
||||
url(r'^logout/$',LogoutView.as_view(), name='auth_logout'),
|
||||
url(r'^login/$', LoginView.as_view(), name='auth_login'),
|
||||
url(r'^ckeditor/upload/', staff_member_required(ckeditor_views.upload),
|
||||
name='ckeditor_upload'),
|
||||
url(r'^ckeditor/browse/', never_cache(staff_member_required(ckeditor_views.browse)),
|
||||
|
|
|
@ -9,6 +9,7 @@ from django.views.generic import CreateView, UpdateView, DeleteView, \
|
|||
ListView, TemplateView, RedirectView, DetailView, FormView
|
||||
from django.contrib.syndication.views import Feed
|
||||
from django.shortcuts import resolve_url
|
||||
from django.utils.decorators import method_decorator
|
||||
from django.utils.encoding import force_text
|
||||
from django.utils.feedgenerator import Atom1Feed as DjangoAtom1Feed
|
||||
from django.utils.http import quote
|
||||
|
@ -18,6 +19,7 @@ from django.contrib.auth import views as auth_views
|
|||
from django.contrib import messages
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.translation import ngettext
|
||||
from django.views.decorators.cache import never_cache
|
||||
|
||||
from . import models
|
||||
from .forms import AnnounceForm, CategoryForm, SubscriptionsImportForm, \
|
||||
|
@ -30,24 +32,23 @@ except ImportError:
|
|||
get_idps = lambda: []
|
||||
|
||||
|
||||
def login(request, *args, **kwargs):
|
||||
if any(get_idps()):
|
||||
if 'next' not in request.GET:
|
||||
return HttpResponseRedirect(resolve_url('mellon_login'))
|
||||
return HttpResponseRedirect(resolve_url('mellon_login') + '?next=' +
|
||||
quote(request.GET.get('next')))
|
||||
return auth_views.login(request, *args, **kwargs)
|
||||
class LoginView(auth_views.LoginView):
|
||||
def get(self, request, *args, **kwargs):
|
||||
if any(get_idps()):
|
||||
if not 'next' in request.GET:
|
||||
return HttpResponseRedirect(resolve_url('mellon_login'))
|
||||
return HttpResponseRedirect(
|
||||
resolve_url('mellon_login') + '?next=' + quote(request.GET.get('next'))
|
||||
)
|
||||
return super(LoginView, self).get(request, *args, **kwargs)
|
||||
|
||||
|
||||
def logout(request, next_page=None):
|
||||
if any(get_idps()):
|
||||
return HttpResponseRedirect(resolve_url('mellon_logout'))
|
||||
auth_logout(request)
|
||||
if next_page is not None:
|
||||
next_page = resolve_url(next_page)
|
||||
else:
|
||||
next_page = '/'
|
||||
return HttpResponseRedirect(next_page)
|
||||
class LogoutView(auth_views.LogoutView):
|
||||
@method_decorator(never_cache)
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
if any(get_idps()):
|
||||
return HttpResponseRedirect(resolve_url('mellon_logout'))
|
||||
return super(LogoutView, self).dispatch(request, *args, **kwargs)
|
||||
|
||||
|
||||
class HomepageView(RedirectView):
|
||||
|
|
Reference in New Issue