Features: 1) Implement AutocompleteListFilter class enhancing admin filter customization; 2) Add AutocompleteFilterMixin for simplified admin filter inclusion functionality;
Fixes: 1) Remove unused `django-autocompletefilter` package and adjust imports; 2) Clean up related settings and dependency references; Extra: Minor formatting adjustments in `payments/admin.py`.
This commit is contained in:
parent
86406ac169
commit
d0b4706c16
6 changed files with 30 additions and 18 deletions
|
|
@ -1,6 +1,5 @@
|
|||
from contextlib import suppress
|
||||
|
||||
from autocompletefilter.admin import AutocompleteFilterMixin
|
||||
from autocompletefilter.filters import AutocompleteListFilter
|
||||
from constance.admin import Config
|
||||
from constance.admin import ConstanceAdmin as BaseConstanceAdmin
|
||||
|
|
@ -38,6 +37,11 @@ from .models import (
|
|||
)
|
||||
|
||||
|
||||
class AutocompleteFilterMixin:
|
||||
class Media:
|
||||
js = ("admin/js/autocomplete.js",)
|
||||
|
||||
|
||||
class FieldsetsMixin:
|
||||
general_fields: list = []
|
||||
relation_fields: list = []
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ import json
|
|||
import logging
|
||||
import uuid
|
||||
|
||||
from django.contrib.admin import SimpleListFilter
|
||||
from django.core.exceptions import BadRequest
|
||||
from django.db.models import (
|
||||
Avg,
|
||||
|
|
@ -16,7 +17,9 @@ from django.db.models import (
|
|||
When,
|
||||
)
|
||||
from django.db.models.functions import Coalesce
|
||||
from django.urls import reverse
|
||||
from django.utils.http import urlsafe_base64_decode
|
||||
from django.utils.safestring import mark_safe
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django_filters import (
|
||||
BaseInFilter,
|
||||
|
|
@ -503,3 +506,22 @@ class AddressFilter(FilterSet):
|
|||
class Meta:
|
||||
model = Address
|
||||
fields = ["uuid", "user_uuid", "user_email", "order_by"]
|
||||
|
||||
|
||||
class AutocompleteListFilter(SimpleListFilter):
|
||||
title = ""
|
||||
parameter_name = ""
|
||||
|
||||
def lookups(self, request, model_admin):
|
||||
return ()
|
||||
|
||||
def choices(self, changelist):
|
||||
url = reverse(f"admin:{changelist.opts.app_label}_{self.parameter_name}_autocomplete")
|
||||
val = changelist.get_query_string(remove=[self.parameter_name])
|
||||
current = changelist.params.get(self.parameter_name, "")
|
||||
html = (
|
||||
f'<input type="hidden" class="django-autocomplete admin-autocomplete-filter" '
|
||||
f'data-autocomplete-url="{url}" name="{self.parameter_name}" value="{current}"/>'
|
||||
)
|
||||
# noinspection DjangoSafeString
|
||||
yield {"query_string": val, "display": mark_safe(html)}
|
||||
|
|
|
|||
|
|
@ -116,7 +116,6 @@ INSTALLED_APPS: list[str] = [
|
|||
"health_check.contrib.psutil",
|
||||
"health_check.contrib.db_heartbeat",
|
||||
"cacheops",
|
||||
"autocompletefilter",
|
||||
"django_hosts",
|
||||
"django_celery_beat",
|
||||
"django_celery_results",
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ class TransactionInline(admin.TabularInline):
|
|||
qs = super().get_queryset(request)
|
||||
return qs.select_related("order")
|
||||
|
||||
|
||||
@register(Balance)
|
||||
class BalanceAdmin(ActivationActionsMixin, ModelAdmin):
|
||||
inlines = (TransactionInline,)
|
||||
|
|
@ -30,6 +31,7 @@ class BalanceAdmin(ActivationActionsMixin, ModelAdmin):
|
|||
qs = super().get_queryset(request)
|
||||
return qs.prefetch_related("transactions", "user")
|
||||
|
||||
|
||||
@register(Transaction)
|
||||
class TransactionAdmin(ActivationActionsMixin, ModelAdmin):
|
||||
list_display = ("balance", "amount", "currency", "payment_method", "order")
|
||||
|
|
|
|||
16
poetry.lock
generated
16
poetry.lock
generated
|
|
@ -1056,20 +1056,6 @@ tzdata = {version = "*", markers = "sys_platform == \"win32\""}
|
|||
argon2 = ["argon2-cffi (>=19.1.0)"]
|
||||
bcrypt = ["bcrypt"]
|
||||
|
||||
[[package]]
|
||||
name = "django-autocompletefilter"
|
||||
version = "0.0.9"
|
||||
description = "Django ModelAdmin list_filter with autocomplete widget."
|
||||
optional = false
|
||||
python-versions = ">=3.4"
|
||||
files = [
|
||||
{file = "django_autocompletefilter-0.0.9-py3-none-any.whl", hash = "sha256:2225053538a3621260016c228d439aa5fcf37eacc8c17a7de9bed85393a255b3"},
|
||||
{file = "django_autocompletefilter-0.0.9.tar.gz", hash = "sha256:d1d43c2c5cabcf0b657ab03dcde6773ad1bb045dec6ea90164394b5198e7ff5c"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
Django = ">=2.0"
|
||||
|
||||
[[package]]
|
||||
name = "django-cacheops"
|
||||
version = "7.2"
|
||||
|
|
@ -5150,4 +5136,4 @@ worker = ["celery", "celery-prometheus-exporter", "django-celery-beat", "django-
|
|||
[metadata]
|
||||
lock-version = "2.0"
|
||||
python-versions = ">=3.12,<3.13"
|
||||
content-hash = "15df12af385d77de2231923d73a8eff5c67d0f88657efec5ebc53741fbe8e4e7"
|
||||
content-hash = "58d67f7b6c2313bdb117965a9c9555319bbb059db043e5723d39a27c36695939"
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@ colorlog = "6.9.0"
|
|||
click = "8.2.1"
|
||||
cryptography = "45.0.4"
|
||||
django = "5.2"
|
||||
django-autocompletefilter = "0.0.9"
|
||||
django-cacheops = "7.2"
|
||||
django-celery-beat = { version = "2.8.1", optional = true }
|
||||
django-celery-results = { version = "2.6.0", optional = true }
|
||||
|
|
|
|||
Loading…
Reference in a new issue