refactor: keep provider presentation self-contained in spec
This commit is contained in:
@@ -462,7 +462,7 @@ def get_payment_method_keyboard(
|
||||
|
||||
for method in settings.payment_methods_order:
|
||||
spec = get_provider_spec(method)
|
||||
if not spec or not spec.button_text_key or not spec.is_enabled(settings):
|
||||
if not spec or not spec.callback_prefix or not spec.is_enabled(settings):
|
||||
continue
|
||||
callback_data = spec.callback_data(
|
||||
value=value_str,
|
||||
@@ -473,7 +473,7 @@ def get_payment_method_keyboard(
|
||||
if not callback_data:
|
||||
continue
|
||||
builder.button(
|
||||
text=provider_telegram_button_text(spec, settings, _, language=lang),
|
||||
text=provider_telegram_button_text(spec, settings, language=lang),
|
||||
callback_data=callback_data,
|
||||
)
|
||||
builder.button(
|
||||
|
||||
@@ -44,7 +44,6 @@ class PaymentProviderSpec:
|
||||
pending_status: str
|
||||
enabled: EnabledPredicate
|
||||
service_key: Optional[str] = None
|
||||
button_text_key: Optional[str] = None
|
||||
callback_prefix: Optional[str] = None
|
||||
webapp_label: Optional[str] = None
|
||||
webapp_labels: Optional[Mapping[str, str]] = None
|
||||
|
||||
@@ -365,7 +365,6 @@ SPEC = PaymentProviderSpec(
|
||||
pending_status="pending_cryptopay",
|
||||
enabled=lambda settings: settings.CRYPTOPAY_ENABLED,
|
||||
service_key="cryptopay_service",
|
||||
button_text_key="pay_with_cryptopay_button",
|
||||
callback_prefix="pay_crypto",
|
||||
router=router,
|
||||
create_service=create_service,
|
||||
|
||||
@@ -491,7 +491,6 @@ SPEC = PaymentProviderSpec(
|
||||
pending_status="pending_freekassa",
|
||||
enabled=lambda settings: settings.FREEKASSA_ENABLED,
|
||||
service_key="freekassa_service",
|
||||
button_text_key="pay_with_sbp_button",
|
||||
callback_prefix="pay_fk",
|
||||
router=router,
|
||||
create_service=create_service,
|
||||
|
||||
@@ -471,7 +471,6 @@ SPEC = PaymentProviderSpec(
|
||||
pending_status="pending_heleket",
|
||||
enabled=lambda settings: settings.HELEKET_ENABLED,
|
||||
service_key="heleket_service",
|
||||
button_text_key="pay_with_heleket_button",
|
||||
callback_prefix="pay_heleket",
|
||||
router=router,
|
||||
create_service=create_service,
|
||||
|
||||
@@ -499,7 +499,6 @@ SBP_SPEC = PaymentProviderSpec(
|
||||
pending_status="pending_platega",
|
||||
enabled=lambda settings: settings.PLATEGA_ENABLED and settings.PLATEGA_SBP_ENABLED,
|
||||
service_key="platega_service",
|
||||
button_text_key="pay_with_platega_sbp_button",
|
||||
callback_prefix="pay_platega_sbp",
|
||||
aliases=("platega",),
|
||||
router=router,
|
||||
@@ -521,7 +520,6 @@ CRYPTO_SPEC = PaymentProviderSpec(
|
||||
pending_status="pending_platega",
|
||||
enabled=lambda settings: settings.PLATEGA_ENABLED and settings.PLATEGA_CRYPTO_ENABLED,
|
||||
service_key="platega_service",
|
||||
button_text_key="pay_with_platega_crypto_button",
|
||||
callback_prefix="pay_platega_crypto",
|
||||
create_webapp_payment=create_crypto_webapp_payment,
|
||||
)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any, Callable, Dict, Iterable, List, Mapping, Optional
|
||||
from typing import Any, Dict, Iterable, List, Mapping, Optional
|
||||
|
||||
from . import cryptopay, freekassa, heleket, platega, severpay, stars, wata, yookassa
|
||||
from .base import PaymentProviderPresentation, PaymentProviderSpec, ServiceFactoryContext
|
||||
@@ -83,7 +83,6 @@ def resolve_provider_presentation(
|
||||
settings: Any = None,
|
||||
*,
|
||||
language: Optional[str] = None,
|
||||
translate: Optional[Callable[[str], str]] = None,
|
||||
) -> PaymentProviderPresentation:
|
||||
lang = _normalize_language(language, settings)
|
||||
webapp_label = (
|
||||
@@ -111,14 +110,6 @@ def resolve_provider_presentation(
|
||||
)
|
||||
telegram_emoji = telegram_emoji_override or spec.default_telegram_emoji
|
||||
|
||||
if (
|
||||
not telegram_label_override
|
||||
and not spec.telegram_labels
|
||||
and translate
|
||||
and spec.button_text_key
|
||||
):
|
||||
telegram_label = translate(spec.button_text_key)
|
||||
|
||||
return PaymentProviderPresentation(
|
||||
webapp_label=webapp_label,
|
||||
webapp_icon=webapp_icon,
|
||||
@@ -131,7 +122,6 @@ def resolve_provider_presentation(
|
||||
def provider_telegram_button_text(
|
||||
spec: PaymentProviderSpec,
|
||||
settings: Any,
|
||||
translate: Callable[[str], str],
|
||||
*,
|
||||
language: Optional[str] = None,
|
||||
) -> str:
|
||||
|
||||
@@ -434,7 +434,6 @@ SPEC = PaymentProviderSpec(
|
||||
pending_status="pending_severpay",
|
||||
enabled=lambda settings: settings.SEVERPAY_ENABLED,
|
||||
service_key="severpay_service",
|
||||
button_text_key="pay_with_severpay_button",
|
||||
callback_prefix="pay_severpay",
|
||||
router=router,
|
||||
create_service=create_service,
|
||||
|
||||
@@ -360,7 +360,6 @@ SPEC = PaymentProviderSpec(
|
||||
pending_status="pending_stars",
|
||||
enabled=lambda settings: settings.STARS_ENABLED,
|
||||
service_key="stars_service",
|
||||
button_text_key="pay_with_stars_button",
|
||||
callback_prefix="pay_stars",
|
||||
router=router,
|
||||
create_service=create_service,
|
||||
|
||||
@@ -440,7 +440,6 @@ SPEC = PaymentProviderSpec(
|
||||
pending_status="pending_wata",
|
||||
enabled=lambda settings: settings.WATA_ENABLED,
|
||||
service_key="wata_service",
|
||||
button_text_key="pay_with_wata_button",
|
||||
callback_prefix="pay_wata",
|
||||
router=router,
|
||||
create_service=create_service,
|
||||
|
||||
@@ -2514,7 +2514,6 @@ SPEC = PaymentProviderSpec(
|
||||
pending_status="pending_yookassa",
|
||||
enabled=lambda settings: settings.YOOKASSA_ENABLED,
|
||||
service_key="yookassa_service",
|
||||
button_text_key="pay_with_yookassa_button",
|
||||
callback_prefix="pay_yk",
|
||||
router=router,
|
||||
create_service=create_service,
|
||||
|
||||
Reference in New Issue
Block a user