diff --git a/src/pretix/plugins/pretixdroid/signals.py b/src/pretix/plugins/pretixdroid/signals.py index b64ad196a..df71bd9e4 100644 --- a/src/pretix/plugins/pretixdroid/signals.py +++ b/src/pretix/plugins/pretixdroid/signals.py @@ -1,6 +1,9 @@ +import json + from django.core.urlresolvers import resolve, reverse from django.dispatch import receiver from django.utils.translation import ugettext_lazy as _ +from pretix.base.signals import logentry_display from pretix.control.signals import nav_event @@ -21,3 +24,19 @@ def control_nav_import(sender, request=None, **kwargs): 'icon': 'android', } ] + + +@receiver(signal=logentry_display, dispatch_uid="pretixdroid_logentry_display") +def pretixcontrol_logentry_display(sender, logentry, **kwargs): + if logentry.action_type != 'pretix.plugins.pretixdroid.scan': + return + + data = json.loads(logentry.data) + if data.get('first'): + return _('Position #{posid} has been scanned.'.format( + posid=data.get('positionid') + )) + else: + return _('Position #{posid} has been scanned and rejected because it has already been scanned before.'.format( + posid=data.get('positionid') + )) diff --git a/src/pretix/plugins/pretixdroid/views.py b/src/pretix/plugins/pretixdroid/views.py index f74862a85..c3c90a791 100644 --- a/src/pretix/plugins/pretixdroid/views.py +++ b/src/pretix/plugins/pretixdroid/views.py @@ -86,9 +86,19 @@ class ApiRedeemView(ApiView): if 'status' not in response: if created: response['status'] = 'ok' + op.order.log_action('pretix.plugins.pretixdroid.scan', data={ + 'position': op.id, + 'positionid': op.positionid, + 'first': True, + }) else: response['status'] = 'error' response['reason'] = 'already_redeemed' + op.order.log_action('pretix.plugins.pretixdroid.scan', data={ + 'position': op.id, + 'positionid': op.positionid, + 'first': False, + }) response['data'] = { 'secret': op.secret,