forked from CGM_Public/pretix_original
Badges, PDF tickets: Allow to copy layouts
This commit is contained in:
@@ -68,6 +68,8 @@
|
|||||||
<td class="text-right flip">
|
<td class="text-right flip">
|
||||||
{% if "can_change_event_settings" in request.eventpermset %}
|
{% if "can_change_event_settings" in request.eventpermset %}
|
||||||
<a href="{% url "plugins:badges:edit" organizer=request.event.organizer.slug event=request.event.slug layout=l.id %}" class="btn btn-default btn-sm"><i class="fa fa-edit"></i></a>
|
<a href="{% url "plugins:badges:edit" organizer=request.event.organizer.slug event=request.event.slug layout=l.id %}" class="btn btn-default btn-sm"><i class="fa fa-edit"></i></a>
|
||||||
|
<a href="{% url "plugins:badges:add" organizer=request.event.organizer.slug event=request.event.slug %}?copy_from={{ l.id }}"
|
||||||
|
class="btn btn-default btn-sm" title="{% trans "Clone" %}" data-toggle="tooltip"><i class="fa fa-copy"></i></a>
|
||||||
<a href="{% url "plugins:badges:delete" organizer=request.event.organizer.slug event=request.event.slug layout=l.id %}" class="btn btn-danger btn-sm"><i class="fa fa-trash"></i></a>
|
<a href="{% url "plugins:badges:delete" organizer=request.event.organizer.slug event=request.event.slug layout=l.id %}" class="btn btn-danger btn-sm"><i class="fa fa-trash"></i></a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ from pretix.base.pdf import Renderer
|
|||||||
from pretix.base.views.tasks import AsyncAction
|
from pretix.base.views.tasks import AsyncAction
|
||||||
from pretix.control.permissions import EventPermissionRequiredMixin
|
from pretix.control.permissions import EventPermissionRequiredMixin
|
||||||
from pretix.control.views.pdf import BaseEditorView
|
from pretix.control.views.pdf import BaseEditorView
|
||||||
|
from pretix.helpers.models import modelcopy
|
||||||
from pretix.plugins.badges.forms import BadgeLayoutForm
|
from pretix.plugins.badges.forms import BadgeLayoutForm
|
||||||
from pretix.plugins.badges.tasks import badges_create_pdf
|
from pretix.plugins.badges.tasks import badges_create_pdf
|
||||||
|
|
||||||
@@ -55,6 +56,8 @@ class LayoutCreate(EventPermissionRequiredMixin, CreateView):
|
|||||||
form.instance.default = True
|
form.instance.default = True
|
||||||
messages.success(self.request, _('The new badge layout has been created.'))
|
messages.success(self.request, _('The new badge layout has been created.'))
|
||||||
super().form_valid(form)
|
super().form_valid(form)
|
||||||
|
if form.instance.background and form.instance.background.name:
|
||||||
|
form.instance.background.save('background.pdf', form.instance.background)
|
||||||
form.instance.log_action('pretix.plugins.badges.layout.added', user=self.request.user,
|
form.instance.log_action('pretix.plugins.badges.layout.added', user=self.request.user,
|
||||||
data=dict(form.cleaned_data))
|
data=dict(form.cleaned_data))
|
||||||
return redirect(reverse('plugins:badges:edit', kwargs={
|
return redirect(reverse('plugins:badges:edit', kwargs={
|
||||||
@@ -70,6 +73,24 @@ class LayoutCreate(EventPermissionRequiredMixin, CreateView):
|
|||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
return super().get_context_data(**kwargs)
|
return super().get_context_data(**kwargs)
|
||||||
|
|
||||||
|
@cached_property
|
||||||
|
def copy_from(self):
|
||||||
|
if self.request.GET.get("copy_from") and not getattr(self, 'object', None):
|
||||||
|
try:
|
||||||
|
return self.request.event.badge_layouts.get(pk=self.request.GET.get("copy_from"))
|
||||||
|
except BadgeLayout.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
|
||||||
|
kwargs.setdefault('initial', {})
|
||||||
|
return kwargs
|
||||||
|
|
||||||
|
|
||||||
class LayoutSetDefault(EventPermissionRequiredMixin, DetailView):
|
class LayoutSetDefault(EventPermissionRequiredMixin, DetailView):
|
||||||
model = BadgeLayout
|
model = BadgeLayout
|
||||||
|
|||||||
@@ -65,6 +65,8 @@
|
|||||||
<td class="text-right flip">
|
<td class="text-right flip">
|
||||||
{% if "can_change_event_settings" in request.eventpermset %}
|
{% if "can_change_event_settings" in request.eventpermset %}
|
||||||
<a href="{% url "plugins:ticketoutputpdf:edit" organizer=request.event.organizer.slug event=request.event.slug layout=l.id %}" class="btn btn-default btn-sm"><i class="fa fa-edit"></i></a>
|
<a href="{% url "plugins:ticketoutputpdf:edit" organizer=request.event.organizer.slug event=request.event.slug layout=l.id %}" class="btn btn-default btn-sm"><i class="fa fa-edit"></i></a>
|
||||||
|
<a href="{% url "plugins:ticketoutputpdf:add" organizer=request.event.organizer.slug event=request.event.slug %}?copy_from={{ l.id }}"
|
||||||
|
class="btn btn-default btn-sm" title="{% trans "Clone" %}" data-toggle="tooltip"><i class="fa fa-copy"></i></a>
|
||||||
<a href="{% url "plugins:ticketoutputpdf:delete" organizer=request.event.organizer.slug event=request.event.slug layout=l.id %}" class="btn btn-danger btn-sm"><i class="fa fa-trash"></i></a>
|
<a href="{% url "plugins:ticketoutputpdf:delete" organizer=request.event.organizer.slug event=request.event.slug layout=l.id %}" class="btn btn-danger btn-sm"><i class="fa fa-trash"></i></a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ from pretix.base.pdf import Renderer
|
|||||||
from pretix.base.services.tickets import invalidate_cache
|
from pretix.base.services.tickets import invalidate_cache
|
||||||
from pretix.control.permissions import EventPermissionRequiredMixin
|
from pretix.control.permissions import EventPermissionRequiredMixin
|
||||||
from pretix.control.views.pdf import BaseEditorView
|
from pretix.control.views.pdf import BaseEditorView
|
||||||
|
from pretix.helpers.models import modelcopy
|
||||||
from pretix.plugins.ticketoutputpdf.forms import TicketLayoutForm
|
from pretix.plugins.ticketoutputpdf.forms import TicketLayoutForm
|
||||||
from pretix.plugins.ticketoutputpdf.ticketoutput import PdfTicketOutput
|
from pretix.plugins.ticketoutputpdf.ticketoutput import PdfTicketOutput
|
||||||
|
|
||||||
@@ -91,6 +92,8 @@ class LayoutCreate(EventPermissionRequiredMixin, CreateView):
|
|||||||
form.instance.default = True
|
form.instance.default = True
|
||||||
messages.success(self.request, _('The new ticket layout has been created.'))
|
messages.success(self.request, _('The new ticket layout has been created.'))
|
||||||
super().form_valid(form)
|
super().form_valid(form)
|
||||||
|
if form.instance.background and form.instance.background.name:
|
||||||
|
form.instance.background.save('background.pdf', form.instance.background)
|
||||||
form.instance.log_action('pretix.plugins.ticketoutputpdf.layout.added', user=self.request.user,
|
form.instance.log_action('pretix.plugins.ticketoutputpdf.layout.added', user=self.request.user,
|
||||||
data=dict(form.cleaned_data))
|
data=dict(form.cleaned_data))
|
||||||
return redirect(reverse('plugins:ticketoutputpdf:edit', kwargs={
|
return redirect(reverse('plugins:ticketoutputpdf:edit', kwargs={
|
||||||
@@ -106,6 +109,24 @@ class LayoutCreate(EventPermissionRequiredMixin, CreateView):
|
|||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
return super().get_context_data(**kwargs)
|
return super().get_context_data(**kwargs)
|
||||||
|
|
||||||
|
@cached_property
|
||||||
|
def copy_from(self):
|
||||||
|
if self.request.GET.get("copy_from") and not getattr(self, 'object', None):
|
||||||
|
try:
|
||||||
|
return self.request.event.ticket_layouts.get(pk=self.request.GET.get("copy_from"))
|
||||||
|
except TicketLayout.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
|
||||||
|
kwargs.setdefault('initial', {})
|
||||||
|
return kwargs
|
||||||
|
|
||||||
|
|
||||||
class LayoutSetDefault(EventPermissionRequiredMixin, DetailView):
|
class LayoutSetDefault(EventPermissionRequiredMixin, DetailView):
|
||||||
model = TicketLayout
|
model = TicketLayout
|
||||||
|
|||||||
Reference in New Issue
Block a user