Features: 1) Add conditional handling for both request and obj in get_fieldsets; 2) Dynamically include language-specific Select2 file based on settings configuration;

Fixes: 1) Add missing `settings` import in `admin.py` to avoid potential errors;

Extra: 1) Refactor JavaScript file inclusion logic for enhanced clarity and maintainability; 2) Add inline comment to suppress unresolved reference warnings; 3) Update variable naming for consistency and readability.
This commit is contained in:
Egor Pavlovich Gorbunov 2025-07-01 12:47:26 +03:00
parent 7f9673451a
commit 4411f6144d

View file

@ -5,6 +5,7 @@ from constance.admin import ConstanceAdmin as BaseConstanceAdmin
from dalf.admin import DALFRelatedFieldAjax, DALFRelatedOnlyField
from django import forms
from django.apps import apps
from django.conf import settings
from django.contrib import admin
from django.contrib.admin import ModelAdmin, TabularInline
from django.contrib.admin.widgets import get_select2_language
@ -46,6 +47,12 @@ class FieldsetsMixin:
model: Model
def get_fieldsets(self, request, obj=None):
if request:
pass
if obj:
pass
fieldsets = []
def add_translations_fieldset(fss):
@ -204,6 +211,7 @@ class AttributeValueAdmin(FieldsetsMixin, BasicModelAdmin):
class CategoryAdmin(FieldsetsMixin, DraggableMPTTAdmin, BasicModelAdmin):
model = Category # type: ignore
list_display = ("indented_title", "parent", "is_active", "modified")
# noinspection PyUnresolvedReferences
list_filter = ("is_active", "level", "created", "modified")
search_fields = ("uuid", "name")
inlines = [CategoryChildrenInline]
@ -268,14 +276,24 @@ class ProductAdmin(FieldsetsMixin, BasicModelAdmin):
def media(self):
i18n_name = get_select2_language()
i18n_file = (f"admin/js/vendor/select2/i18n/{i18n_name}.js",) if i18n_name else ()
extra = "" if settings.DEBUG else ".min"
js = [
f"vendor/jquery/jquery{extra}.js",
"jquery.init.js",
"core.js",
"admin/RelatedObjectLookups.js",
"actions.js",
"urlify.js",
"prepopulate.js",
f"vendor/xregexp/xregexp{extra}.js",
"admin/js/vendor/jquery/jquery.min.js",
"admin/js/vendor/select2/select2.full.min.js",
*i18n_file,
"admin/js/jquery.init.js",
"admin/js/django_admin_list_filter.js",
]
return super().media + forms.Media(
js=(
"admin/js/vendor/jquery/jquery.min.js",
"admin/js/vendor/select2/select2.full.min.js",
*i18n_file,
"admin/js/jquery.init.js",
"admin/js/django_admin_list_filter.js",
),
js=[f"admin/js/{url}" for url in js],
css={
"screen": (
"admin/css/vendor/select2/select2.min.css",