Preparations for copy event feature.
This commit is contained in:
@@ -130,3 +130,15 @@ class ModelMixin(object):
|
||||
if hasattr(model, attr):
|
||||
kwargs2[attr] = kwargs1[attr]
|
||||
return model(**kwargs2)
|
||||
|
||||
def load_from_instance(self, instance):
|
||||
model = self._get_model()
|
||||
if not isinstance(instance, model):
|
||||
raise TypeError('Expected %s' % model.__class__.__name__)
|
||||
self.is_bound = True
|
||||
self.data = {}
|
||||
self.cleaned_data = {}
|
||||
for field in instance._meta.get_fields():
|
||||
self.data[field.name] = getattr(instance, field.name)
|
||||
self.cleaned_data[field.name] = getattr(instance, field.name)
|
||||
self._post_clean()
|
||||
@@ -60,14 +60,12 @@
|
||||
{% block page-container-fluid %}
|
||||
<div class="action-tabs">
|
||||
<div class="pull-right">
|
||||
<!--
|
||||
<a class="btn btn-primary"
|
||||
href="{% url 'dav_events:event_detail' event.pk %}"
|
||||
href="{% url 'dav_events:event_copy' event.pk %}"
|
||||
title="{% trans 'Diese Veranstaltung als Vorlage für eine neue Veranstaltung benutzen' %}">
|
||||
{% bootstrap_icon 'duplicate' %} 
|
||||
{% trans 'Kopieren' %}
|
||||
</a>
|
||||
-->
|
||||
{% if has_permission_accept %}
|
||||
<a class="btn {% if event.get_status == 'submitted' %}btn-success{% else %}btn-default disabled{% endif %}"
|
||||
data-toggle="modal" data-target="#modal-accept-dialog">
|
||||
|
||||
@@ -9,11 +9,12 @@ urlpatterns = [
|
||||
url(r'^user/password$', views.auth.SetPasswordView.as_view(), name='set_password'),
|
||||
url(r'^user/password/reset$', views.auth.ResetPasswordView.as_view(), name='reset_password'),
|
||||
url(r'^events$', views.events.EventListView.as_view(), name='event_list'),
|
||||
url(r'^events/create$', views.events.EventCreateView.as_view(), name='event_create'),
|
||||
url(r'^events/export$', views.events.EventListExportView.as_view(), name='event_list_export'),
|
||||
url(r'^events/(?P<pk>\d+)/accept', views.events.EventAcceptView.as_view(), name='event_accept'),
|
||||
url(r'^events/create$', views.events.EventCreateView.as_view(), name='event_create'),
|
||||
url(r'^events/(?P<pk>\d+)/copy', views.events.EventCopyView.as_view(), name='event_copy'),
|
||||
url(r'^events/(?P<pk>\d+)/confirmpublication',
|
||||
views.events.EventConfirmPublicationView.as_view(), name='event_confirmpublication'),
|
||||
url(r'^events/(?P<pk>\d+)/accept', views.events.EventAcceptView.as_view(), name='event_accept'),
|
||||
url(r'^events/(?P<pk>\d+)/edit', views.events.EventUpdateView.as_view(), name='event_update'),
|
||||
url(r'^events/(?P<pk>\d+)/', views.events.EventDetailView.as_view(), name='event_detail'),
|
||||
url(r'^action/(?P<pk>[a-fA-F0-9]{8}-([a-fA-F0-9]{4}-){3}[a-fA-F0-9]{12})/',
|
||||
|
||||
@@ -220,6 +220,19 @@ 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):
|
||||
form_class = forms.events.EventCreateForm
|
||||
template_dir = os.path.join('dav_events', 'event_create')
|
||||
|
||||
Reference in New Issue
Block a user