Files
django-dav-events/dav_event_office/views.py

45 lines
1.4 KiB
Python

# -*- 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)