45 lines
1.4 KiB
Python
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)
|