Features: 1) Add django-autocompletefilter==0.0.9 and implement in ProductAdmin for improved list filters; 2) Replace dalf with autocompletefilter across project dependencies and admin logic; 3) Update related dependencies including ipython==9.4.0 and drf-spectacular-sidecar==2025.7.1;
Fixes: 1) Remove deprecated `dalf` package from dependencies and configurations; Extra: Update `poetry.lock` file and related hashes to reflect changes;
This commit is contained in:
parent
e8f2b75de7
commit
86406ac169
4 changed files with 30 additions and 30 deletions
|
|
@ -1,8 +1,9 @@
|
|||
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
|
||||
from dalf.admin import DALFModelAdmin, DALFRelatedFieldAjax, DALFRelatedOnlyField
|
||||
from django.apps import apps
|
||||
from django.contrib.admin import ModelAdmin, TabularInline, action, register, site
|
||||
from django.contrib.gis.admin import GISModelAdmin
|
||||
|
|
@ -231,7 +232,7 @@ class BrandAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
|||
|
||||
|
||||
@register(Product)
|
||||
class ProductAdmin(FieldsetsMixin, ActivationActionsMixin, DALFModelAdmin):
|
||||
class ProductAdmin(FieldsetsMixin, ActivationActionsMixin, AutocompleteFilterMixin, ModelAdmin):
|
||||
model = Product # type: ignore
|
||||
list_display = (
|
||||
"name",
|
||||
|
|
@ -246,10 +247,10 @@ class ProductAdmin(FieldsetsMixin, ActivationActionsMixin, DALFModelAdmin):
|
|||
list_filter = (
|
||||
"is_active",
|
||||
"is_digital",
|
||||
("brand", DALFRelatedFieldAjax),
|
||||
("category", DALFRelatedFieldAjax),
|
||||
("tags", DALFRelatedFieldAjax),
|
||||
("stocks__vendor", DALFRelatedOnlyField),
|
||||
("brand", AutocompleteListFilter),
|
||||
("category", AutocompleteListFilter),
|
||||
("tags", AutocompleteListFilter),
|
||||
("stocks__vendor", AutocompleteListFilter),
|
||||
"created",
|
||||
"modified",
|
||||
)
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ INSTALLED_APPS: list[str] = [
|
|||
"health_check.contrib.psutil",
|
||||
"health_check.contrib.db_heartbeat",
|
||||
"cacheops",
|
||||
"dalf",
|
||||
"autocompletefilter",
|
||||
"django_hosts",
|
||||
"django_celery_beat",
|
||||
"django_celery_results",
|
||||
|
|
|
|||
43
poetry.lock
generated
43
poetry.lock
generated
|
|
@ -957,21 +957,6 @@ ssh = ["bcrypt (>=3.1.5)"]
|
|||
test = ["certifi (>=2024)", "cryptography-vectors (==45.0.4)", "pretend (>=0.7)", "pytest (>=7.4.0)", "pytest-benchmark (>=4.0)", "pytest-cov (>=2.10.1)", "pytest-xdist (>=3.5.0)"]
|
||||
test-randomorder = ["pytest-randomly"]
|
||||
|
||||
[[package]]
|
||||
name = "dalf"
|
||||
version = "0.3.0"
|
||||
description = "Dead simple autocompletion for Django admin list_filter with goodies."
|
||||
optional = false
|
||||
python-versions = ">=3.11"
|
||||
files = [
|
||||
{file = "dalf-0.3.0-py3-none-any.whl", hash = "sha256:432f1981ba56bf1d86ad2cfd582cf44e759d06d1ea19252cff37c7868c0944f4"},
|
||||
{file = "dalf-0.3.0.tar.gz", hash = "sha256:0133b21bb2a3101e07f6eaa76635bca1c56ff5090edc773705b04cfe7bcea97b"},
|
||||
]
|
||||
|
||||
[package.extras]
|
||||
build = ["build", "twine"]
|
||||
dev = ["Django", "pytest", "pytest-cov", "pytest-django", "pytest-factoryboy"]
|
||||
|
||||
[[package]]
|
||||
name = "debugpy"
|
||||
version = "1.8.14"
|
||||
|
|
@ -1071,6 +1056,20 @@ 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"
|
||||
|
|
@ -1696,13 +1695,13 @@ sidecar = ["drf-spectacular-sidecar"]
|
|||
|
||||
[[package]]
|
||||
name = "drf-spectacular-sidecar"
|
||||
version = "2025.6.1"
|
||||
version = "2025.7.1"
|
||||
description = "Serve self-contained distribution builds of Swagger UI and Redoc with Django"
|
||||
optional = false
|
||||
python-versions = ">=3.6"
|
||||
files = [
|
||||
{file = "drf_spectacular_sidecar-2025.6.1-py3-none-any.whl", hash = "sha256:c7c4768c03faa3d2f7afacd1464f67732e7d6866d2cf2e8f649175c27318745c"},
|
||||
{file = "drf_spectacular_sidecar-2025.6.1.tar.gz", hash = "sha256:ee6752c73d712265a61b9e2ca6f71c3b2bd89f30f39cf9f8cda98e7f371fcbcf"},
|
||||
{file = "drf_spectacular_sidecar-2025.7.1-py3-none-any.whl", hash = "sha256:efe33ba696ba25f28c32ead75b56e3ef68f167b9ed7468f8d16322bfe8e304e7"},
|
||||
{file = "drf_spectacular_sidecar-2025.7.1.tar.gz", hash = "sha256:03b4a9f2062115f69ce24509d855b180244d58ef45edd67ea8bcb214c7021e10"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
|
|
@ -2140,13 +2139,13 @@ test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio
|
|||
|
||||
[[package]]
|
||||
name = "ipython"
|
||||
version = "9.3.0"
|
||||
version = "9.4.0"
|
||||
description = "IPython: Productive Interactive Computing"
|
||||
optional = true
|
||||
python-versions = ">=3.11"
|
||||
files = [
|
||||
{file = "ipython-9.3.0-py3-none-any.whl", hash = "sha256:1a0b6dd9221a1f5dddf725b57ac0cb6fddc7b5f470576231ae9162b9b3455a04"},
|
||||
{file = "ipython-9.3.0.tar.gz", hash = "sha256:79eb896f9f23f50ad16c3bc205f686f6e030ad246cc309c6279a242b14afe9d8"},
|
||||
{file = "ipython-9.4.0-py3-none-any.whl", hash = "sha256:25850f025a446d9b359e8d296ba175a36aedd32e83ca9b5060430fe16801f066"},
|
||||
{file = "ipython-9.4.0.tar.gz", hash = "sha256:c033c6d4e7914c3d9768aabe76bbe87ba1dc66a92a05db6bfa1125d81f2ee270"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
|
|
@ -5151,4 +5150,4 @@ worker = ["celery", "celery-prometheus-exporter", "django-celery-beat", "django-
|
|||
[metadata]
|
||||
lock-version = "2.0"
|
||||
python-versions = ">=3.12,<3.13"
|
||||
content-hash = "14a6ba1e4527014e4883c987b0342cf0e7dacea6cd9ef3a97acde6f7660a39fc"
|
||||
content-hash = "15df12af385d77de2231923d73a8eff5c67d0f88657efec5ebc53741fbe8e4e7"
|
||||
|
|
|
|||
|
|
@ -13,8 +13,8 @@ celery-prometheus-exporter = { version = "1.7.0", optional = true }
|
|||
colorlog = "6.9.0"
|
||||
click = "8.2.1"
|
||||
cryptography = "45.0.4"
|
||||
dalf = "0.3.0"
|
||||
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