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