ADD: dav_events: add support for confirm payments.
This commit is contained in:
@@ -48,6 +48,8 @@ class EventListView(generic.ListView):
|
||||
|
||||
if has_role(user, 'publisher'):
|
||||
filter |= Q(flags__status__code='accepted')
|
||||
if has_role(user, 'office'):
|
||||
filter |= Q(flags__status__code='submitted')
|
||||
|
||||
qs = self.model.objects.filter(filter)
|
||||
|
||||
@@ -127,8 +129,9 @@ class EventPermissionMixin(object):
|
||||
user = self.request.user
|
||||
return obj.workflow.has_permission(user, permission)
|
||||
|
||||
def enforce_permission(self, obj):
|
||||
permission = self.permission
|
||||
def enforce_permission(self, obj, permission=None):
|
||||
if permission is None:
|
||||
permission = self.permission
|
||||
if not self.has_permission(permission, obj):
|
||||
raise PermissionDenied(permission)
|
||||
|
||||
@@ -162,15 +165,9 @@ class EventDetailView(EventPermissionMixin, generic.DetailView):
|
||||
|
||||
|
||||
class EventRegistrationsView(EventPermissionMixin, generic.DetailView):
|
||||
permission = 'update-registration'
|
||||
model = models.Event
|
||||
template_name = 'dav_events/event_registrations.html'
|
||||
|
||||
def get_object(self, queryset=None):
|
||||
obj = super(EventRegistrationsView, self).get_object(queryset=queryset)
|
||||
self.enforce_permission(obj)
|
||||
return obj
|
||||
|
||||
def get_form_kwargs(self, process_request=True):
|
||||
kwargs = {}
|
||||
if process_request and self.request.method in ('POST', 'PUT'):
|
||||
@@ -208,6 +205,9 @@ class EventRegistrationsView(EventPermissionMixin, generic.DetailView):
|
||||
context = super(EventRegistrationsView, self).get_context_data(**kwargs)
|
||||
event = context.get('event')
|
||||
context['has_permission_update'] = self.has_permission('update', event)
|
||||
context['has_permission_update_registration'] = self.has_permission('update-registration', event)
|
||||
context['has_permission_update_participants'] = self.has_permission('update-participants', event)
|
||||
context['has_permission_payment'] = self.has_permission('payment', event)
|
||||
context['is_published_any'] = event.workflow.has_reached_status('published*')
|
||||
context['is_done'] = event.workflow.has_reached_status('expired')
|
||||
|
||||
@@ -304,18 +304,28 @@ class EventRegistrationsView(EventPermissionMixin, generic.DetailView):
|
||||
participant1.position = pos2
|
||||
participant1.save()
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
self.object = self.get_object()
|
||||
self.enforce_permission(self.object, permission='view-participants')
|
||||
context = self.get_context_data(object=self.object)
|
||||
return self.render_to_response(context)
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
event = self.get_object()
|
||||
self.object = event
|
||||
self.object = self.get_object()
|
||||
event = self.object
|
||||
|
||||
action = request.POST.get('action')
|
||||
if action == 'close-registration':
|
||||
self.enforce_permission(event, permission='update-registration')
|
||||
self._close_registration(request, event)
|
||||
elif action == 'open-registration':
|
||||
self.enforce_permission(event, permission='update-registration')
|
||||
self._reopen_registration(request, event)
|
||||
elif action == 'kill-deadline':
|
||||
self.enforce_permission(event, permission='update-registration')
|
||||
self._kill_deadline(request, event)
|
||||
elif action == 'accept_registration':
|
||||
self.enforce_permission(event, permission='update-participants')
|
||||
if hasattr(event, 'registrations'):
|
||||
registration_id = request.POST.get('registration')
|
||||
registration = event.registrations.get(id=registration_id)
|
||||
@@ -323,13 +333,27 @@ class EventRegistrationsView(EventPermissionMixin, generic.DetailView):
|
||||
else:
|
||||
raise FieldDoesNotExist('Event has no registrations')
|
||||
elif action == 'reject_registration':
|
||||
self.enforce_permission(event, permission='update-participants')
|
||||
if hasattr(event, 'registrations'):
|
||||
registration_id = request.POST.get('registration')
|
||||
registration = event.registrations.get(id=registration_id)
|
||||
self._reject_registration(registration)
|
||||
else:
|
||||
raise FieldDoesNotExist('Event has no registrations')
|
||||
elif action == 'confirm_payment':
|
||||
self.enforce_permission(event, permission='payment')
|
||||
participant_id = request.POST.get('id')
|
||||
participant = event.participants.get(id=participant_id)
|
||||
participant.paid = True
|
||||
participant.save()
|
||||
elif action == 'revoke_payment':
|
||||
self.enforce_permission(event, permission='payment')
|
||||
participant_id = request.POST.get('id')
|
||||
participant = event.participants.get(id=participant_id)
|
||||
participant.paid = False
|
||||
participant.save()
|
||||
elif action == 'remove_participant':
|
||||
self.enforce_permission(event, permission='update-participants')
|
||||
participant_id = request.POST.get('id')
|
||||
participant = event.participants.get(id=participant_id)
|
||||
full_name = participant.get_full_name()
|
||||
@@ -341,6 +365,7 @@ class EventRegistrationsView(EventPermissionMixin, generic.DetailView):
|
||||
participant.save()
|
||||
messages.success(request, _(u'Teilnehmer gelöscht: {}'.format(full_name)))
|
||||
elif action == 'moveup_participant':
|
||||
self.enforce_permission(event, permission='update-participants')
|
||||
participant_id = request.POST.get('id')
|
||||
participant = event.participants.get(id=participant_id)
|
||||
current_position = participant.position
|
||||
@@ -351,6 +376,7 @@ class EventRegistrationsView(EventPermissionMixin, generic.DetailView):
|
||||
else:
|
||||
messages.error(request, 'Participant is already on first position')
|
||||
elif action == 'movedown_participant':
|
||||
self.enforce_permission(event, permission='update-participants')
|
||||
participant_id = request.POST.get('id')
|
||||
participant = event.participants.get(id=participant_id)
|
||||
current_position = participant.position
|
||||
@@ -361,6 +387,7 @@ class EventRegistrationsView(EventPermissionMixin, generic.DetailView):
|
||||
else:
|
||||
messages.error(request, 'Participant is already on last position')
|
||||
elif action == 'update_participant':
|
||||
self.enforce_permission(event, permission='update-participants')
|
||||
form = self.get_participant_form()
|
||||
if form.is_valid():
|
||||
form.save()
|
||||
@@ -375,6 +402,7 @@ class EventRegistrationsView(EventPermissionMixin, generic.DetailView):
|
||||
messages.error(request, _(u'Ungültige Eingabe - Siehe unten'))
|
||||
return self.render_to_response(self.get_context_data(participant_formset=formset))
|
||||
elif action == 'create_participant':
|
||||
self.enforce_permission(event, permission='update-participants')
|
||||
form = self.get_participant_form()
|
||||
if form.is_valid():
|
||||
form.save()
|
||||
|
||||
Reference in New Issue
Block a user