Allow to clone check-in lists

This commit is contained in:
Raphael Michel
2020-08-25 15:52:46 +02:00
parent a06f94fde1
commit b6fc02255d
2 changed files with 24 additions and 0 deletions

View File

@@ -127,6 +127,10 @@
<td class="text-right flip"> <td class="text-right flip">
<a href="{% url "control:event.orders.checkinlists.show" organizer=request.event.organizer.slug event=request.event.slug list=cl.id %}" class="btn btn-default btn-sm"><i class="fa fa-eye"></i></a> <a href="{% url "control:event.orders.checkinlists.show" organizer=request.event.organizer.slug event=request.event.slug list=cl.id %}" class="btn btn-default btn-sm"><i class="fa fa-eye"></i></a>
{% if "can_change_event_settings" in request.eventpermset %} {% if "can_change_event_settings" in request.eventpermset %}
<a href="{% url "control:event.orders.checkinlists.add" organizer=request.event.organizer.slug event=request.event.slug %}?copy_from={{ cl.id }}"
class="btn btn-sm btn-default" title="{% trans "Clone" %}" data-toggle="tooltip">
<span class="fa fa-copy"></span>
</a>
<a href="{% url "control:event.orders.checkinlists.edit" organizer=request.event.organizer.slug event=request.event.slug list=cl.id %}" class="btn btn-default btn-sm"><i class="fa fa-wrench"></i></a> <a href="{% url "control:event.orders.checkinlists.edit" organizer=request.event.organizer.slug event=request.event.slug list=cl.id %}" class="btn btn-default btn-sm"><i class="fa fa-wrench"></i></a>
<a href="{% url "control:event.orders.checkinlists.delete" organizer=request.event.organizer.slug event=request.event.slug list=cl.id %}" class="btn btn-danger btn-sm"><i class="fa fa-trash"></i></a> <a href="{% url "control:event.orders.checkinlists.delete" organizer=request.event.organizer.slug event=request.event.slug list=cl.id %}" class="btn btn-danger btn-sm"><i class="fa fa-trash"></i></a>
{% endif %} {% endif %}

View File

@@ -19,6 +19,7 @@ from pretix.control.forms.checkin import CheckinListForm
from pretix.control.forms.filter import CheckInFilterForm from pretix.control.forms.filter import CheckInFilterForm
from pretix.control.permissions import EventPermissionRequiredMixin from pretix.control.permissions import EventPermissionRequiredMixin
from pretix.control.views import CreateView, PaginationMixin, UpdateView from pretix.control.views import CreateView, PaginationMixin, UpdateView
from pretix.helpers.models import modelcopy
class CheckInListShow(EventPermissionRequiredMixin, PaginationMixin, ListView): class CheckInListShow(EventPermissionRequiredMixin, PaginationMixin, ListView):
@@ -221,6 +222,25 @@ class CheckinListCreate(EventPermissionRequiredMixin, CreateView):
r['Content-Security-Policy'] = 'script-src \'unsafe-eval\'' r['Content-Security-Policy'] = 'script-src \'unsafe-eval\''
return r return r
@cached_property
def copy_from(self):
if self.request.GET.get("copy_from") and not getattr(self, 'object', None):
try:
return self.request.event.checkin_lists.get(pk=self.request.GET.get("copy_from"))
except CheckinList.DoesNotExist:
pass
def get_form_kwargs(self):
kwargs = super().get_form_kwargs()
if self.copy_from:
i = modelcopy(self.copy_from)
i.pk = None
kwargs['instance'] = i
else:
kwargs['instance'] = CheckinList(event=self.request.event)
return kwargs
def get_success_url(self) -> str: def get_success_url(self) -> str:
return reverse('control:event.orders.checkinlists', kwargs={ return reverse('control:event.orders.checkinlists', kwargs={
'organizer': self.request.event.organizer.slug, 'organizer': self.request.event.organizer.slug,