Finalized copy event feature.

This commit is contained in:
2018-03-14 15:00:23 +01:00
parent 9da5997447
commit 80f5012ff0
6 changed files with 96 additions and 61 deletions

View File

@@ -9,6 +9,7 @@ from django.contrib.auth.decorators import login_required
from django.core.exceptions import PermissionDenied, SuspiciousOperation
from django.db.models import Q
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import get_object_or_404
from django.urls import reverse, reverse_lazy
from django.utils.decorators import method_decorator
from django.utils.translation import ugettext as _
@@ -220,20 +221,7 @@ class EventUpdateView(EventPermissionMixin, generic.UpdateView):
return super(EventUpdateView, self).dispatch(request, *args, **kwargs)
class EventCopyView(EventDetailView):
permission = 'view'
form_class = forms.events.EventCreateForm
def get(self, request, *args, **kwargs):
event = self.get_object()
initial_form_name = self.form_class.get_initial_form_name()
form_class = getattr(forms.events, initial_form_name)
form = form_class(request=self.request)
form.load_from_instance(event)
return HttpResponseRedirect(reverse('dav_events:event_create'))
class EventCreateView(generic.FormView):
class EventCreateView(EventPermissionMixin, generic.FormView):
form_class = forms.events.EventCreateForm
template_dir = os.path.join('dav_events', 'event_create')
default_template_name = 'default.html'
@@ -313,6 +301,23 @@ class EventCreateView(generic.FormView):
form = self.get_form()
form.flush_session_data()
return HttpResponseRedirect(self.abort_url)
elif 'copy' in request.GET:
event = get_object_or_404(models.Event, pk=request.GET.get('copy'))
if not self.has_permission('view', event):
raise PermissionDenied('copy')
for field in ('id', 'owner', 'created_at',
'accepted_at', 'accepted_by',
'publication_confirmed_at', 'publication_confirmed_by',
'number'):
setattr(event, field, None)
for field in ('accepted', 'publication_confirmed'):
setattr(event, field, False)
initial_form_name = self.form_class.get_initial_form_name()
form_class = getattr(forms.events, initial_form_name)
form = form_class(request=self.request, instance=event)
form.save_session_data()
return super(EventCreateView, self).get(request, *args, **kwargs)
def post(self, request, *args, **kwargs):