diff --git a/uauth/organization/templates/organization/manage.html b/uauth/organization/templates/organization/manage.html new file mode 100644 index 0000000..f8dd9ab --- /dev/null +++ b/uauth/organization/templates/organization/manage.html @@ -0,0 +1,2 @@ +{% extends "uauth/base.html" %} +{% load i18n %} diff --git a/uauth/organization/urls.py b/uauth/organization/urls.py new file mode 100644 index 0000000..5b5dfb5 --- /dev/null +++ b/uauth/organization/urls.py @@ -0,0 +1,7 @@ +from django.conf.urls import patterns, url + +from .views import * + +urlpatterns = patterns('', + url(r'^$', manage, name='manage'), +) diff --git a/uauth/organization/views.py b/uauth/organization/views.py index 91ea44a..4f90f16 100644 --- a/uauth/organization/views.py +++ b/uauth/organization/views.py @@ -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() diff --git a/uauth/urls.py b/uauth/urls.py index d69c3b1..c74de2d 100644 --- a/uauth/urls.py +++ b/uauth/urls.py @@ -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[\w-]+)/manage/', decorated_includes(login_required, include(organization_urls))), url(r'^$', homepage, name='organization-home'), - url(r'^(?P[\w-]+)$', organization, name='organization-home'), - url(r'^(?P[\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[\w-]+)$', organization, name='organization-home'), + url(r'^(?P[\w-]+)/login', login, + name='organization-login'), ) diff --git a/uauth/urls_utils.py b/uauth/urls_utils.py new file mode 100644 index 0000000..13c3413 --- /dev/null +++ b/uauth/urls_utils.py @@ -0,0 +1,31 @@ +# Decorating URL includes, + +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