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.
64 lines
2.1 KiB
Python
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]
|