-
Veranstaltungen
+
Veranstaltungen (für Geschäftstelle)
- Blah.
+ Hier sind alle Veranstaltungen gelistet.
@@ -22,16 +18,14 @@ Du wirst dann per E-Mail auf dem laufenden gehalten.
-
Teilnehmer
+
Teilnehmer (für Geschäftstelle)
- Fasel.
+ Hier sind alle angemeldeten Teilnehmer gelistet.
- Teilnehmer
+ Teilnehmer
diff --git a/dav_event_office/templates/dav_event_office/includes/participant_form.html b/dav_event_office/templates/dav_event_office/includes/participant_form.html
new file mode 100644
index 0000000..4eb0e04
--- /dev/null
+++ b/dav_event_office/templates/dav_event_office/includes/participant_form.html
@@ -0,0 +1,46 @@
+{% load bootstrap3 %}
+
+
+ {% bootstrap_field form.personal_names %}
+
+
+ {% bootstrap_field form.family_names %}
+
+
+
+
+ {% bootstrap_field form.address %}
+
+
+
+
+ {% bootstrap_field form.postal_code %}
+
+
+ {% bootstrap_field form.city %}
+
+
+
+
+ {% bootstrap_field form.email_address %}
+
+
+ {% bootstrap_field form.phone_number %}
+
+
+
+
+ {% bootstrap_field form.dav_number %}
+
+
+ {% bootstrap_field form.emergency_contact %}
+
+
+
+
+ {% bootstrap_field form.experience %}
+
+
+ {% bootstrap_field form.note %}
+
+
\ No newline at end of file
diff --git a/dav_event_office/templates/dav_event_office/participant_list.html b/dav_event_office/templates/dav_event_office/participant_list.html
new file mode 100644
index 0000000..09d4f22
--- /dev/null
+++ b/dav_event_office/templates/dav_event_office/participant_list.html
@@ -0,0 +1,120 @@
+{% extends 'dav_event_office/base.html' %}
+{% load bootstrap3 %}
+{% load i18n %}
+{% load dav_events %}
+
+{% block page-container-fluid %}
+
+
+
+{% endblock page-container-fluid %}
\ No newline at end of file
diff --git a/dav_event_office/urls.py b/dav_event_office/urls.py
index e023335..e2686c2 100644
--- a/dav_event_office/urls.py
+++ b/dav_event_office/urls.py
@@ -4,6 +4,7 @@ from . import views
urlpatterns = [
url(r'^home$', views.HomeView.as_view(), name='root'),
+ url(r'^participants$', views.ParticipantListView.as_view(), name='participant-list'),
url(r'^$', views.EventListView.as_view(), name='event-list'),
url(r'^(?P
\d+)/', views.EventDetailView.as_view(), name='event-detail'),
]
diff --git a/dav_event_office/views.py b/dav_event_office/views.py
index 63a4612..54c9f8e 100644
--- a/dav_event_office/views.py
+++ b/dav_event_office/views.py
@@ -1,44 +1,64 @@
# -*- coding: utf-8 -*-
+from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.core.exceptions import PermissionDenied
+from django.http import HttpResponseRedirect
+from django.shortcuts import get_object_or_404
+from django.urls import reverse
from django.utils.decorators import method_decorator
from django.views import generic
-from dav_events.models import Event
+from dav_events.models import Participant
from dav_events.roles import has_role
+from dav_events.views.events import EventListView as _EventListView, EventRegistrationsView as _EventRegistrationsView
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
+class EventListView(_EventListView):
template_name = 'dav_event_office/event_list.html'
@method_decorator(login_required)
def dispatch(self, request, *args, **kwargs):
- self.enforce_permission(request)
+ if not has_role(request.user, 'office'):
+ raise PermissionDenied('Zugang nur für die Geschäftsstelle')
return super(EventListView, self).dispatch(request, *args, **kwargs)
-class EventDetailView(OfficePermissionMixin, generic.DetailView):
- model = Event
+class EventDetailView(_EventRegistrationsView):
template_name = 'dav_event_office/event_detail.html'
@method_decorator(login_required)
def dispatch(self, request, *args, **kwargs):
- self.enforce_permission(request)
+ if not has_role(request.user, 'office'):
+ raise PermissionDenied('Zugang nur für die Geschäftsstelle')
return super(EventDetailView, self).dispatch(request, *args, **kwargs)
+
+
+class ParticipantListView(generic.ListView):
+ model = Participant
+ template_name = 'dav_event_office/participant_list.html'
+
+ def post(self, request, *args, **kwargs):
+ action = request.POST.get('action')
+ if action == 'confirm_payment':
+ participant_id = request.POST.get('id')
+ participant = get_object_or_404(Participant, pk=participant_id)
+ participant.paid = True
+ participant.save()
+ elif action == 'revoke_payment':
+ participant_id = request.POST.get('id')
+ participant = get_object_or_404(Participant, pk=participant_id)
+ participant.paid = False
+ participant.save()
+ else:
+ messages.error(request, 'unsupported action: {}'.format(action))
+ return HttpResponseRedirect(reverse('dav_event_office:participant-list'))
+
+ @method_decorator(login_required)
+ def dispatch(self, request, *args, **kwargs):
+ if not has_role(request.user, 'office'):
+ raise PermissionDenied('Zugang nur für die Geschäftsstelle')
+ return super(ParticipantListView, self).dispatch(request, *args, **kwargs)
diff --git a/dav_events/views/events.py b/dav_events/views/events.py
index 07cde08..82b45d9 100644
--- a/dav_events/views/events.py
+++ b/dav_events/views/events.py
@@ -413,7 +413,7 @@ class EventRegistrationsView(EventPermissionMixin, generic.DetailView):
return self.render_to_response(self.get_context_data(create_participant_form=form))
else:
messages.error(request, 'unsupported action: {}'.format(action))
- return HttpResponseRedirect(reverse('dav_events:registrations', kwargs={'pk': event.pk}))
+ return self.render_to_response(self.get_context_data())
@method_decorator(login_required)
def dispatch(self, request, *args, **kwargs):