schon/payments/admin.py
Egor fureunoir Gorbunov fa46e3ad9c Features: 1) Introduced refined formatting for translation files across multiple locales to ensure unified structure and readability; 2) Added a new translatable string under payments/admin.py for enhanced application functionality.
Fixes: 1) Addressed line-break inconsistencies in multi-line strings across various language files to ensure proper display; 2) Fixed minor spacing in `django.po` entries for Italian, Swedish, and Turkish locales.

Extra: Optimized file headers and metadata in all updated locale files by syncing timestamps and project information for uniform tracking.
2025-10-25 20:54:51 +03:00

64 lines
2.1 KiB
Python

from django.contrib import admin
from django.contrib.admin import ModelAdmin, register
from django.db.models import QuerySet
from django.http import HttpRequest
from django.utils.translation import gettext_lazy as _
from core.admin import ActivationActionsMixin
from payments.forms import GatewayForm, TransactionForm
from payments.models import Balance, Transaction, Gateway
class TransactionInline(admin.TabularInline): # type: ignore [type-arg]
model = Transaction
form = TransactionForm
extra = 1
is_navtab = True
verbose_name = _("transaction")
verbose_name_plural = _("transactions")
def get_queryset(self, request: HttpRequest) -> QuerySet[Transaction]:
qs = super().get_queryset(request)
return qs.select_related("order")
@register(Balance)
class BalanceAdmin(ActivationActionsMixin, ModelAdmin): # type: ignore [misc, type-arg]
inlines = (TransactionInline,)
list_display = ("user", "amount")
search_fields = ("user__email",)
ordering = ("user",)
def get_queryset(self, request: HttpRequest) -> QuerySet[Balance]:
qs = super().get_queryset(request)
return qs.prefetch_related("transactions", "user")
@register(Transaction)
class TransactionAdmin(ActivationActionsMixin, ModelAdmin): # type: ignore [misc, type-arg]
list_display = ("balance", "amount", "order", "modified", "created")
search_fields = ("balance__user__email", "currency", "payment_method")
list_filter = ("currency", "payment_method")
ordering = ("balance",)
form = TransactionForm
@register(Gateway)
class GatewayAdmin(ActivationActionsMixin, ModelAdmin):
list_display = (
"name",
"can_be_used",
"is_active",
)
search_fields = (
"name",
"default_currency",
)
ordering = ("name",)
form = GatewayForm
def can_be_used(self, obj: Gateway) -> bool: # type: ignore[override]
return obj.can_be_used
can_be_used.boolean = True # type: ignore[attr-defined]
can_be_used.short_description = _("can be used") # type: ignore[attr-defined]