From 79988a232523cb42bf38a7cf082d94d6b9b99b72 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Fri, 29 Sep 2017 16:54:27 +0200 Subject: [PATCH] New signal order_fee_type_name --- doc/development/api/general.rst | 2 +- src/pretix/base/services/stats.py | 11 +++++++++-- src/pretix/base/signals.py | 11 +++++++++++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/doc/development/api/general.rst b/doc/development/api/general.rst index caae7ffee4..735a3cdb2f 100644 --- a/doc/development/api/general.rst +++ b/doc/development/api/general.rst @@ -19,7 +19,7 @@ Order events There are multiple signals that will be sent out in the ordering cycle: .. automodule:: pretix.base.signals - :members: validate_cart, fee_calculation_for_cart, order_fee_calculation, order_paid, order_placed + :members: validate_cart, fee_calculation_for_cart, order_fee_calculation, order_paid, order_placed, order_fee_type_name Frontend -------- diff --git a/src/pretix/base/services/stats.py b/src/pretix/base/services/stats.py index 555693042e..18841fa2d7 100644 --- a/src/pretix/base/services/stats.py +++ b/src/pretix/base/services/stats.py @@ -7,6 +7,7 @@ from django.utils.translation import ugettext_lazy as _ from pretix.base.models import Event, Item, ItemCategory, Order, OrderPosition from pretix.base.models.event import SubEvent from pretix.base.models.orders import OrderFee +from pretix.base.signals import order_fee_type_name class DummyObject: @@ -199,9 +200,15 @@ def order_overview(event: Event, subevent: SubEvent=None) -> Tuple[List[Tuple[It for pprov, total in sorted(num_total.items(), key=lambda i: i[0]): ppobj = DummyObject() if pprov[0] == OrderFee.FEE_TYPE_PAYMENT: - ppobj.name = '{} - {}'.format(names[OrderFee.FEE_TYPE_PAYMENT], provider_names.get(pprov[1], pprov[1])) + ppobj.name = '{} - {}'.format(names[pprov[0]], provider_names.get(pprov[1], pprov[1])) else: - ppobj.name = '{} - {}'.format(names[OrderFee.FEE_TYPE_PAYMENT], pprov[1]) + name = pprov[1] + for r, resp in order_fee_type_name.send(sender=event, fee_type=pprov[0], internal_type=pprov[1]): + if resp: + name = resp + break + + ppobj.name = '{} - {}'.format(names[pprov[0]], name) ppobj.provider = pprov[1] ppobj.has_variations = False ppobj.num_total = total diff --git a/src/pretix/base/signals.py b/src/pretix/base/signals.py index 5cdb0c1799..84ef637409 100644 --- a/src/pretix/base/signals.py +++ b/src/pretix/base/signals.py @@ -250,3 +250,14 @@ As with all plugin signals, the ``sender`` keyword argument will contain the eve argument will contain the cart positions and ``invoice_address`` the invoice address (useful for tax calculation). The argument ``meta_info`` contains the order's meta dictionary. """ + +order_fee_type_name = EventPluginSignal( + providing_args=['request', 'fee'] +) +""" +This signals allows you to return a human-readable description for a fee type based on the ``fee_type`` +and ``internal_type`` attributes of the ``OrderFee`` model that you get as keyword arguments. You are +expected to return a string or None, if you don't know about this fee. + +As with all plugin signals, the ``sender`` keyword argument will contain the event. +"""