schon/payments/admin.py
Egor fureunoir Gorbunov ab10a7a0b7 Features: 1) Add SEO meta utilities and builder functions for schemas; 2) Implement SEO-related APIs in viewsets for categories, brands, and products; 3) Add SeoMeta model and serializer to manage SEO metadata.
Fixes: 1) Resolve annotations compatibility with mypy `type: ignore` adjustments; 2) Correct `resolve_price_with_currency` method to ensure proper float returns; 3) Handle scenarios for empty or null queryset in vendor methods.

Extra: 1) Refactor utility functions for better type annotations and robustness; 2) Minor formatting corrections and removal of redundant mypy strict setting; 3) Improve method return types for consistency.
2025-08-18 14:26:09 +03:00

41 lines
1.3 KiB
Python

from django.contrib import admin
from django.contrib.admin import ModelAdmin, register
from django.utils.translation import gettext_lazy as _
from core.admin import ActivationActionsMixin
from payments.forms import TransactionForm
from payments.models import Balance, Transaction
class TransactionInline(admin.TabularInline):
model = Transaction
form = TransactionForm
extra = 1
is_navtab = True
verbose_name = _("transaction")
verbose_name_plural = _("transactions")
def get_queryset(self, request):
qs = super().get_queryset(request)
return qs.select_related("order")
@register(Balance)
class BalanceAdmin(ActivationActionsMixin, ModelAdmin): # type: ignore [misc]
inlines = (TransactionInline,)
list_display = ("user", "amount")
search_fields = ("user__email",)
ordering = ("user",)
def get_queryset(self, request):
qs = super().get_queryset(request)
return qs.prefetch_related("transactions", "user")
@register(Transaction)
class TransactionAdmin(ActivationActionsMixin, ModelAdmin): # type: ignore [misc]
list_display = ("balance", "amount", "order", "modified", "created")
search_fields = ("balance__user__email", "currency", "payment_method")
list_filter = ("currency", "payment_method")
ordering = ("balance",)
form = TransactionForm