organization management urls separated

This commit is contained in:
Serghei Mihai 2015-04-27 18:46:56 +02:00
parent e813639209
commit 3dc9d7a75b
5 changed files with 54 additions and 5 deletions

View File

@ -0,0 +1,2 @@
{% extends "uauth/base.html" %}
{% load i18n %}

View File

@ -0,0 +1,7 @@
from django.conf.urls import patterns, url
from .views import *
urlpatterns = patterns('',
url(r'^$', manage, name='manage'),
)

View File

@ -1,3 +1,6 @@
from django.shortcuts import render
from django.views.generic.base import TemplateView
# Create your views here.
class ManageView(TemplateView):
template_name = 'organization/manage.html'
manage = ManageView.as_view()

View File

@ -1,14 +1,20 @@
from django.conf import settings
from django.conf.urls import patterns, include, url
from django.contrib import admin
from django.contrib.auth.decorators import login_required
from .views import homepage, login, organization
from .views import homepage, organization, login
from .urls_utils import decorated_includes
from .organization.urls import urlpatterns as organization_urls
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^(?P<organization_slug>[\w-]+)/manage/', decorated_includes(login_required, include(organization_urls))),
url(r'^$', homepage, name='organization-home'),
url(r'^(?P<organization_slug>[\w-]+)$', organization, name='organization-home'),
url(r'^(?P<organization_slug>[\w-]+)/login', login, name='organization-login'),
url(r'^accounts/', include('django.contrib.auth.urls')),
url(r'^accounts/mellon/login/$', login, name='mellon_login'),
url(r'^accounts/mellon/', include('mellon.urls')),
url(r'^(?P<organization_slug>[\w-]+)$', organization, name='organization-home'),
url(r'^(?P<organization_slug>[\w-]+)/login', login,
name='organization-login'),
)

31
uauth/urls_utils.py Normal file
View File

@ -0,0 +1,31 @@
# Decorating URL includes, <https://djangosnippets.org/snippets/2532/>
from django.core.urlresolvers import RegexURLPattern, RegexURLResolver
class DecoratedURLPattern(RegexURLPattern):
def resolve(self, *args, **kwargs):
result = super(DecoratedURLPattern, self).resolve(*args, **kwargs)
if result:
result.func = self._decorate_with(result.func)
return result
class DecoratedRegexURLResolver(RegexURLResolver):
def resolve(self, *args, **kwargs):
result = super(DecoratedRegexURLResolver, self).resolve(*args, **kwargs)
if result:
result.func = self._decorate_with(result.func)
return result
def decorated_includes(func, includes, *args, **kwargs):
urlconf_module, app_name, namespace = includes
for item in urlconf_module:
if isinstance(item, RegexURLPattern):
item.__class__ = DecoratedURLPattern
item._decorate_with = func
elif isinstance(item, RegexURLResolver):
item.__class__ = DecoratedRegexURLResolver
item._decorate_with = func
return urlconf_module, app_name, namespace