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