diff --git a/src/pretix/plugins/badges/signals.py b/src/pretix/plugins/badges/signals.py index a4bdaacad1..951c7e67be 100644 --- a/src/pretix/plugins/badges/signals.py +++ b/src/pretix/plugins/badges/signals.py @@ -12,7 +12,9 @@ from pretix.base.signals import ( event_copy_data, item_copy_data, logentry_display, logentry_object_link, register_data_exporters, ) -from pretix.control.signals import item_forms, nav_event, order_info +from pretix.control.signals import ( + item_forms, nav_event, order_info, order_position_buttons, +) from pretix.plugins.badges.forms import BadgeItemForm from pretix.plugins.badges.models import BadgeItem, BadgeLayout @@ -95,6 +97,20 @@ def register_pdf(sender, **kwargs): return BadgeExporter +@receiver(order_position_buttons, dispatch_uid="badges_control_order_buttons") +def control_order_position_info(sender: Event, position, request, order: Order, **kwargs): + + template = get_template('pretixplugins/badges/control_order_position_buttons.html') + + ctx = { + 'order': order, + 'request': request, + 'event': sender, + 'position': position + } + return template.render(ctx, request=request).strip() + + @receiver(order_info, dispatch_uid="badges_control_order_info") def control_order_info(sender: Event, request, order: Order, **kwargs): diff --git a/src/pretix/plugins/badges/tasks.py b/src/pretix/plugins/badges/tasks.py index f07c8f211a..5c3d7a092e 100644 --- a/src/pretix/plugins/badges/tasks.py +++ b/src/pretix/plugins/badges/tasks.py @@ -14,11 +14,11 @@ logger = logging.getLogger(__name__) @app.task() -def badges_create_pdf(fileid: int, event: int, orders: List[int]) -> int: +def badges_create_pdf(fileid: int, event: int, positions: List[int]) -> int: file = CachedFile.objects.get(id=fileid) event = Event.objects.get(id=event) - pdfcontent = render_pdf(event, OrderPosition.objects.filter(order_id__in=orders)) + pdfcontent = render_pdf(event, OrderPosition.objects.filter(id__in=positions)) file.file.save(cachedfile_name(file, file.filename), ContentFile(pdfcontent.read())) file.save() return file.pk diff --git a/src/pretix/plugins/badges/templates/pretixplugins/badges/control_order_position_buttons.html b/src/pretix/plugins/badges/templates/pretixplugins/badges/control_order_position_buttons.html new file mode 100644 index 0000000000..9ebd29b9fc --- /dev/null +++ b/src/pretix/plugins/badges/templates/pretixplugins/badges/control_order_position_buttons.html @@ -0,0 +1,11 @@ +{% load i18n %} +{% load eventurl %} +{% load bootstrap3 %} +
+ {% csrf_token %} + +
diff --git a/src/pretix/plugins/badges/views.py b/src/pretix/plugins/badges/views.py index 857f02a8ef..50e229c24a 100644 --- a/src/pretix/plugins/badges/views.py +++ b/src/pretix/plugins/badges/views.py @@ -217,8 +217,12 @@ class OrderPrintDo(EventPermissionRequiredMixin, AsyncAction, View): cf.type = 'application/pdf' cf.expires = now() + timedelta(days=3) cf.save() + if 'position' in request.GET: + positions = [p.pk for p in order.positions.filter(pk=request.GET.get('position'))] + else: + positions = [p.pk for p in order.positions.all()] return self.do( str(cf.id), self.request.event.pk, - [order.pk], + positions, )