Commit 3a31f2ce by benjaoming

Do not conditionally include login, logout and signup URLs in urlpatterns.…

Do not conditionally include login, logout and signup URLs in urlpatterns. Handle WIKI_ACCOUNT_HANDLING inside views. Issue #43.
parent 76b06989
...@@ -68,9 +68,12 @@ ACCOUNT_HANDLING = getattr(django_settings, 'WIKI_ACCOUNT_HANDLING', True) ...@@ -68,9 +68,12 @@ ACCOUNT_HANDLING = getattr(django_settings, 'WIKI_ACCOUNT_HANDLING', True)
if ACCOUNT_HANDLING: if ACCOUNT_HANDLING:
LOGIN_URL = reverse_lazy("wiki:login") LOGIN_URL = reverse_lazy("wiki:login")
LOGOUT_URL = reverse_lazy("wiki:logout")
SIGNUP_URL = reverse_lazy("wiki:signup")
else: else:
LOGIN_URL = getattr(django_settings, "LOGIN_URL", "/") LOGIN_URL = getattr(django_settings, "LOGIN_URL", "/")
LOGOUT_URL = getattr(django_settings, "LOGOUT_URL", "/")
SIGNUP_URL = getattr(django_settings, "WIKI_SIGNUP_URL", "/")
################## ##################
# OTHER SETTINGS # # OTHER SETTINGS #
......
...@@ -12,12 +12,11 @@ urlpatterns = patterns('', ...@@ -12,12 +12,11 @@ urlpatterns = patterns('',
url('^_revision/diff/(?P<revision_id>\d+)/$', 'wiki.views.article.diff', name='diff'), url('^_revision/diff/(?P<revision_id>\d+)/$', 'wiki.views.article.diff', name='diff'),
) )
if settings.ACCOUNT_HANDLING: urlpatterns += patterns('',
urlpatterns += patterns('', url('^_accounts/sign-up/$', accounts.Signup.as_view(), name='signup'),
url('^_accounts/sign-up/$', accounts.Signup.as_view(), name='signup'), url('^_accounts/logout/$', accounts.Logout.as_view(), name='logout'),
url('^_accounts/logout/$', accounts.Logout.as_view(), name='logout'), url('^_accounts/login/$', accounts.Login.as_view(), name='login'),
url('^_accounts/login/$', accounts.Login.as_view(), name='login'), )
)
urlpatterns += patterns('', urlpatterns += patterns('',
# This one doesn't work because it don't know where to redirect after... # This one doesn't work because it don't know where to redirect after...
...@@ -72,4 +71,4 @@ def get_pattern(app_name="wiki", namespace="wiki"): ...@@ -72,4 +71,4 @@ def get_pattern(app_name="wiki", namespace="wiki"):
single Django project. single Django project.
https://docs.djangoproject.com/en/dev/topics/http/urls/#topics-http-reversing-url-namespaces https://docs.djangoproject.com/en/dev/topics/http/urls/#topics-http-reversing-url-namespaces
""" """
return urlpatterns, app_name, namespace return urlpatterns, app_name, namespace
\ No newline at end of file
...@@ -14,19 +14,29 @@ from django.views.generic.base import View ...@@ -14,19 +14,29 @@ from django.views.generic.base import View
from django.views.generic.edit import CreateView, FormView from django.views.generic.edit import CreateView, FormView
from wiki.models import URLPath from wiki.models import URLPath
from wiki.conf import settings
class Signup(CreateView): class Signup(CreateView):
model = User model = User
form_class = UserCreationForm form_class = UserCreationForm
template_name = "wiki/accounts/signup.html" template_name = "wiki/accounts/signup.html"
def dispatch(self, request, *args, **kwargs):
if not settings.ACCOUNT_HANDLING:
return redirect(settings.SIGNUP_URL)
return super(Signup, self).dispatch(request, *args, **kwargs)
def get_success_url(self, *args): def get_success_url(self, *args):
messages.success(self.request, _(u'You are now sign up... and now you can sign in!')) messages.success(self.request, _(u'You are now sign up... and now you can sign in!'))
return reverse("wiki:login") return reverse("wiki:login")
class Logout(View): class Logout(View):
def dispatch(self, request, *args, **kwargs):
if not settings.ACCOUNT_HANDLING:
return redirect(settings.LOGOUT_URL)
return super(Logout, self).dispatch(request, *args, **kwargs)
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
auth_logout(request) auth_logout(request)
messages.info(request, _(u"You are no longer logged in. Bye bye!")) messages.info(request, _(u"You are no longer logged in. Bye bye!"))
...@@ -37,6 +47,11 @@ class Login(FormView): ...@@ -37,6 +47,11 @@ class Login(FormView):
form_class = AuthenticationForm form_class = AuthenticationForm
template_name = "wiki/accounts/login.html" template_name = "wiki/accounts/login.html"
def dispatch(self, request, *args, **kwargs):
if not settings.ACCOUNT_HANDLING:
return redirect(settings.LOGIN_URL)
return super(Login, self).dispatch(request, *args, **kwargs)
def get_form_kwargs(self): def get_form_kwargs(self):
self.request.session.set_test_cookie() self.request.session.set_test_cookie()
kwargs = super(Login, self).get_form_kwargs() kwargs = super(Login, self).get_form_kwargs()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment