ADD: dav_event_office: start work on an optimized interface for the

office.
This commit is contained in:
2019-06-28 15:48:04 +02:00
parent 862d39b84c
commit 700cec49d0
12 changed files with 276 additions and 0 deletions

44
dav_event_office/views.py Normal file
View 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)