diff --git a/hobo/urls.py b/hobo/urls.py index 88b5004..9560311 100644 --- a/hobo/urls.py +++ b/hobo/urls.py @@ -1,15 +1,17 @@ from django.conf import settings from django.conf.urls import patterns, include, url -from django.contrib.auth.decorators import login_required from django.contrib import admin admin.autodiscover() -from url_utils import decorated_includes +from .views import admin_required +from .urls_utils import decorated_includes +from .environment.urls import urlpatterns as environment_urls urlpatterns = patterns('', url(r'^$', 'hobo.views.home', name='home'), - url(r'^environment/', decorated_includes(login_required, include('hobo.environment.urls'))), + url(r'^environment/', decorated_includes(admin_required, + include(environment_urls))), url(r'^hobos.json$', 'hobo.views.hobo'), url(r'^admin/', include(admin.site.urls)), url(r'^accounts/login', 'django.contrib.auth.views.login', diff --git a/hobo/views.py b/hobo/views.py index ffad3d3..c6a1916 100644 --- a/hobo/views.py +++ b/hobo/views.py @@ -5,11 +5,12 @@ from django.utils.translation import ugettext as _ from django.views.generic.base import TemplateView from django.views.generic import edit from django.core.urlresolvers import reverse -from django.contrib.auth.decorators import login_required +from django.contrib.auth.decorators import user_passes_test from .environment.utils import Zone, get_operational_services from .forms import HoboForm, HoboUpdateForm, get_tenant_model +admin_required = user_passes_test(lambda u: u.is_superuser) class Home(TemplateView): template_name = 'hobo/home.html' @@ -24,7 +25,7 @@ class Home(TemplateView): context['zones'].append(Zone(_('Environment Settings'), 'settings', 'environment/')) return context -home = login_required(Home.as_view()) +home = admin_required(Home.as_view()) class ManagerHome(edit.CreateView): template_name = 'hobo/manager_home.html' @@ -48,7 +49,7 @@ class ManagerHome(edit.CreateView): self.object.create_schema(True) return response -manager_home = login_required(ManagerHome.as_view()) +manager_home = admin_required(ManagerHome.as_view()) class ManagerUpdateTenant(edit.UpdateView): model = get_tenant_model() @@ -63,7 +64,7 @@ class ManagerUpdateTenant(edit.UpdateView): self.object.create_schema(True) return response -update_tenant = login_required(ManagerUpdateTenant.as_view()) +update_tenant = admin_required(ManagerUpdateTenant.as_view()) class ManagerDeleteTenant(edit.DeleteView): template_name = 'environment/tenant_confirm_delete.html' @@ -72,7 +73,7 @@ class ManagerDeleteTenant(edit.DeleteView): def get_success_url(self): return reverse('manager-home', self.object.id) -delete_tenant = login_required(ManagerDeleteTenant.as_view()) +delete_tenant = admin_required(ManagerDeleteTenant.as_view()) def hobos(request, *args, **kwargs): response = HttpResponse(content_type='application/json')