forked from CGM_Public/pretix_original
Allow to copy vouchers
This commit is contained in:
@@ -138,6 +138,10 @@
|
|||||||
<td>{{ v.subevent.name }} – {{ v.subevent.get_date_range_display }}</td>
|
<td>{{ v.subevent.name }} – {{ v.subevent.get_date_range_display }}</td>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<td class="text-right">
|
<td class="text-right">
|
||||||
|
<a href="{% url "control:event.vouchers.bulk" organizer=request.event.organizer.slug event=request.event.slug %}?copy_from={{ v.id }}"
|
||||||
|
class="btn btn-sm btn-default" title="{% trans "Use as a template for new vouchers" %}" data-toggle="tooltip">
|
||||||
|
<span class="fa fa-copy"></span>
|
||||||
|
</a>
|
||||||
<a href="{% url "control:event.voucher.delete" organizer=request.event.organizer.slug event=request.event.slug voucher=v.id %}" class="btn btn-danger btn-sm"><i class="fa fa-trash"></i></a>
|
<a href="{% url "control:event.voucher.delete" organizer=request.event.organizer.slug event=request.event.slug voucher=v.id %}" class="btn btn-danger btn-sm"><i class="fa fa-trash"></i></a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ from pretix.control.forms.vouchers import VoucherBulkForm, VoucherForm
|
|||||||
from pretix.control.permissions import EventPermissionRequiredMixin
|
from pretix.control.permissions import EventPermissionRequiredMixin
|
||||||
from pretix.control.signals import voucher_form_class
|
from pretix.control.signals import voucher_form_class
|
||||||
from pretix.control.views import PaginationMixin
|
from pretix.control.views import PaginationMixin
|
||||||
|
from pretix.helpers.models import modelcopy
|
||||||
|
|
||||||
|
|
||||||
class VoucherList(PaginationMixin, EventPermissionRequiredMixin, ListView):
|
class VoucherList(PaginationMixin, EventPermissionRequiredMixin, ListView):
|
||||||
@@ -279,9 +280,23 @@ class VoucherBulkCreate(EventPermissionRequiredMixin, CreateView):
|
|||||||
'event': self.request.event.slug,
|
'event': self.request.event.slug,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@cached_property
|
||||||
|
def copy_from(self):
|
||||||
|
if self.request.GET.get("copy_from") and not getattr(self, 'object', None):
|
||||||
|
try:
|
||||||
|
return self.request.event.vouchers.get(pk=self.request.GET.get("copy_from"))
|
||||||
|
except Voucher.DoesNotExist:
|
||||||
|
pass
|
||||||
|
|
||||||
def get_form_kwargs(self):
|
def get_form_kwargs(self):
|
||||||
kwargs = super().get_form_kwargs()
|
kwargs = super().get_form_kwargs()
|
||||||
kwargs['instance'] = Voucher(event=self.request.event)
|
|
||||||
|
if self.copy_from:
|
||||||
|
i = modelcopy(self.copy_from)
|
||||||
|
i.pk = None
|
||||||
|
kwargs['instance'] = i
|
||||||
|
else:
|
||||||
|
kwargs['instance'] = Voucher(event=self.request.event)
|
||||||
return kwargs
|
return kwargs
|
||||||
|
|
||||||
@transaction.atomic
|
@transaction.atomic
|
||||||
|
|||||||
Reference in New Issue
Block a user