Finalized copy event feature.
This commit is contained in:
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user