-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathadmin.py
More file actions
70 lines (59 loc) · 1.96 KB
/
admin.py
File metadata and controls
70 lines (59 loc) · 1.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
from django import forms
from django.conf import settings
from django.contrib import admin
from django.contrib.admin import widgets
from django.db.models import BLANK_CHOICE_DASH
from django.utils.text import capfirst
from django.utils.translation import gettext_lazy as _
from feincms3_sites.models import Site
class DefaultLanguageListFilter(admin.SimpleListFilter):
"""
Simple list filter for the default_language attribute.
"""
title = capfirst(_("default language"))
parameter_name = "default_language"
def lookups(self, request, model_admin):
return [("", model_admin.get_empty_value_display())] + list(settings.LANGUAGES)
def queryset(self, request, queryset):
if (value := self.value()) is not None:
return queryset.filter(default_language=value)
else:
return queryset.all()
class SiteForm(forms.ModelForm):
default_language = Site._meta.get_field("default_language").formfield(
choices=BLANK_CHOICE_DASH + list(settings.LANGUAGES),
widget=widgets.AdminRadioSelect(attrs={"class": "radiolist"}),
)
class Meta:
model = Site
fields = "__all__" # noqa: DJ007
@admin.register(Site)
class SiteAdmin(admin.ModelAdmin):
fieldsets = [
(None, {"fields": ("is_default", "host")}),
(
capfirst(_("advanced")),
{
"fields": (
"is_managed_re",
"host_re",
"default_language",
"language_codes",
),
"classes": ["collapse"],
},
),
]
form = SiteForm
list_display = [
"host",
"is_active",
"is_default",
"is_managed_re",
"host_re",
"default_language",
"language_codes",
]
list_editable = ["is_active", "is_default"]
ordering = ["-is_default", "host"]
list_filter = ["is_active", "host", DefaultLanguageListFilter]