ADD: dav_event_office: start work on an optimized interface for the
office.
This commit is contained in:
44
dav_event_office/views.py
Normal file
44
dav_event_office/views.py
Normal file
@@ -0,0 +1,44 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from django.utils.decorators import method_decorator
|
||||
from django.views import generic
|
||||
|
||||
from dav_events.models import Event
|
||||
from dav_events.roles import has_role
|
||||
|
||||
|
||||
class HomeView(generic.TemplateView):
|
||||
template_name = 'dav_event_office/home.html'
|
||||
|
||||
|
||||
class OfficePermissionMixin(object):
|
||||
def enforce_permission(self, request):
|
||||
user = request.user
|
||||
if user.is_superuser:
|
||||
return None
|
||||
elif has_role(user, 'manager_super'):
|
||||
return None
|
||||
elif has_role(user, 'event_office'):
|
||||
return None
|
||||
raise PermissionDenied('event_office')
|
||||
|
||||
|
||||
class EventListView(OfficePermissionMixin, generic.ListView):
|
||||
model = Event
|
||||
template_name = 'dav_event_office/event_list.html'
|
||||
|
||||
@method_decorator(login_required)
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
self.enforce_permission(request)
|
||||
return super(EventListView, self).dispatch(request, *args, **kwargs)
|
||||
|
||||
|
||||
class EventDetailView(OfficePermissionMixin, generic.DetailView):
|
||||
model = Event
|
||||
template_name = 'dav_event_office/event_detail.html'
|
||||
|
||||
@method_decorator(login_required)
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
self.enforce_permission(request)
|
||||
return super(EventDetailView, self).dispatch(request, *args, **kwargs)
|
||||
Reference in New Issue
Block a user