diff --git a/src/pretix/plugins/stripe/signals.py b/src/pretix/plugins/stripe/signals.py index 70a6361a91..6d2d11e107 100644 --- a/src/pretix/plugins/stripe/signals.py +++ b/src/pretix/plugins/stripe/signals.py @@ -1,9 +1,12 @@ +import json + from django.core.urlresolvers import resolve from django.dispatch import receiver from django.template import Context from django.template.loader import get_template +from django.utils.translation import ugettext_lazy as _ -from pretix.base.signals import register_payment_providers +from pretix.base.signals import logentry_display, register_payment_providers from pretix.presale.signals import html_head @@ -26,3 +29,32 @@ def html_head_presale(sender, request=None, **kwargs): return template.render(ctx) else: return "" + + +@receiver(signal=logentry_display, dispatch_uid="stripe_logentry_display") +def pretixcontrol_logentry_display(sender, logentry, **kwargs): + if logentry.action_type != 'pretix.plugins.stripe.event': + return + + data = json.loads(logentry.data) + event_type = data.get('type') + text = None + plains = { + 'charge.succeeded': _('Charge succeeded.'), + 'charge.refunded': _('Charge refunded.'), + 'charge.updated': _('Charge updated.'), + } + + if event_type in plains: + text = plains[event_type] + elif event_type == 'charge.failed': + text = _('Charge failed. Reason: {}').format(data['data']['object']['failure_message']) + elif event_type == 'charge.dispute.created': + text = _('Dispute created. Reason: {}').format(data['data']['object']['reason']) + elif event_type == 'charge.dispute.updated': + text = _('Dispute updated. Reason: {}').format(data['data']['object']['reason']) + elif event_type == 'charge.dispute.closed': + text = _('Dispute closed. Status: {}').format(data['data']['object']['status']) + + if text: + return _('Stripe reported an event: {}').format(text)