refactor: keep provider presentation self-contained in spec

This commit is contained in:
3252a8
2026-05-18 15:35:55 +03:00
parent c9c12b9ed6
commit 07b35036e7
14 changed files with 5 additions and 47 deletions
@@ -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(
-1
View File
@@ -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,
-1
View File
@@ -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,
-2
View File
@@ -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 -11
View File
@@ -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,
-1
View File
@@ -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,
-1
View File
@@ -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,