From 9fab20ca6c8d1c3d1bd6cfd79b80085cbaed6bd6 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Fri, 4 May 2018 15:31:56 +0200 Subject: [PATCH] Log confirm message consent --- src/pretix/base/services/orders.py | 2 ++ src/pretix/control/logdisplay.py | 6 ++++++ src/pretix/presale/checkoutflow.py | 5 ++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/pretix/base/services/orders.py b/src/pretix/base/services/orders.py index 5ea463f477..5e6ce483c9 100644 --- a/src/pretix/base/services/orders.py +++ b/src/pretix/base/services/orders.py @@ -510,6 +510,8 @@ def _create_order(event: Event, email: str, positions: List[CartPosition], now_d OrderPosition.transform_cart_positions(positions, order) order.log_action('pretix.event.order.placed') + for msg in meta_info.get('confirm_messages', []): + order.log_action('pretix.event.order.consent', data={'msg': msg}) order_placed.send(event, order=order) return order diff --git a/src/pretix/control/logdisplay.py b/src/pretix/control/logdisplay.py index a6dcc42747..d6ede1f5a6 100644 --- a/src/pretix/control/logdisplay.py +++ b/src/pretix/control/logdisplay.py @@ -1,6 +1,7 @@ import json from decimal import Decimal +import bleach import dateutil.parser import pytz from django.dispatch import receiver @@ -278,6 +279,11 @@ def pretixcontrol_logentry_display(sender: Event, logentry: LogEntry, **kwargs): if logentry.action_type.startswith('pretix.event.tickets.provider.'): return _('The settings of a ticket output provider have been changed.') + if logentry.action_type == 'pretix.event.order.consent': + return _('The user confirmed the following message: "{}"').format( + bleach.clean(logentry.parsed_data.get('msg'), tags=[], strip=True) + ) + if logentry.action_type == 'pretix.event.checkin': return _display_checkin(sender, logentry) diff --git a/src/pretix/presale/checkoutflow.py b/src/pretix/presale/checkoutflow.py index 56e972ac49..5eb9de2273 100644 --- a/src/pretix/presale/checkoutflow.py +++ b/src/pretix/presale/checkoutflow.py @@ -578,7 +578,10 @@ class ConfirmStep(CartMixin, AsyncAction, TemplateFlowStep): return redirect(self.get_error_url()) meta_info = { - 'contact_form_data': self.cart_session.get('contact_form_data', {}) + 'contact_form_data': self.cart_session.get('contact_form_data', {}), + 'confirm_messages': [ + str(m) for m in self.confirm_messages.values() + ] } for receiver, response in order_meta_from_request.send(sender=request.event, request=request): meta_info.update(response)