#132 | #121: backoffice / dev-1.0-121 (#131)

cfr #121

Co-authored-by: Christophe Siraut <d@tobald.eu.org>
Co-authored-by: bkfox <thomas bkfox net>
Co-authored-by: Thomas Kairos <thomas@bkfox.net>
Reviewed-on: rc/aircox#131
Co-authored-by: Chris Tactic <ctactic@noreply.git.radiocampus.be>
Co-committed-by: Chris Tactic <ctactic@noreply.git.radiocampus.be>
This commit is contained in:
2024-04-28 22:02:09 +02:00
committed by Thomas Kairos
parent 1e17a1334a
commit 55123c386d
348 changed files with 124397 additions and 17879 deletions

View File

@ -18,10 +18,11 @@ class CategoryAdmin(admin.ModelAdmin):
search_fields = ["title"]
fields = ["title", "slug"]
prepopulated_fields = {"slug": ("title",)}
ordering = ("title",)
class BasePageAdmin(admin.ModelAdmin):
list_display = ("cover_thumb", "title", "status", "parent")
list_display = ("cover_thumb", "title", "status")
list_display_links = ("cover_thumb", "title")
list_editable = ("status",)
list_filter = ("status",)
@ -42,15 +43,49 @@ class BasePageAdmin(admin.ModelAdmin):
(
_("Publication Settings"),
{
"fields": ["status", "parent"],
"fields": [
"status",
],
},
),
]
change_form_template = "admin/aircox/page_change_form.html"
def cover_thumb(self, obj):
return mark_safe('<img src="{}"/>'.format(obj.cover.icons["64"])) if obj.cover else ""
if obj.cover and obj.cover.thumbnails:
return mark_safe('<img src="{}"/>'.format(obj.cover.icons["64"]))
return ""
def _get_extra_context(self, query, **extra_context):
return extra_context
def add_view(self, request, form_url="", extra_context=None):
filters = QueryDict(request.GET.get("_changelist_filters", ""))
extra_context = self._get_extra_context(filters, **(extra_context or {}))
return super().add_view(request, form_url, extra_context)
def changelist_view(self, request, extra_context=None):
extra_context = self._get_extra_context(request.GET, **(extra_context or {}))
return super().changelist_view(request, extra_context)
@admin.register(Page)
class PageAdmin(BasePageAdmin):
list_display = BasePageAdmin.list_display + ("category",)
list_editable = BasePageAdmin.list_editable + ("category",)
list_filter = BasePageAdmin.list_filter + ("category", "pub_date")
search_fields = BasePageAdmin.search_fields + ("category__title",)
fieldsets = deepcopy(BasePageAdmin.fieldsets)
fieldsets[0][1]["fields"].insert(fieldsets[0][1]["fields"].index("slug") + 1, "category")
fieldsets[1][1]["fields"] += ("featured", "allow_comments")
class ChildPageAdmin(PageAdmin):
list_display = PageAdmin.list_display + ("parent",)
autocomplete_fields = ("parent",)
fieldsets = deepcopy(PageAdmin.fieldsets)
fieldsets[1][1]["fields"] += ("parent",)
def get_changeform_initial_data(self, request):
data = super().get_changeform_initial_data(request)
@ -58,45 +93,22 @@ class BasePageAdmin(admin.ModelAdmin):
data["parent"] = filters.get("parent", None)
return data
def _get_common_context(self, query, extra_context=None):
extra_context = extra_context or {}
def _get_extra_context(self, query, **extra_context):
parent = query.get("parent", None)
extra_context["parent"] = None if parent is None else Page.objects.get_subclass(id=parent)
return extra_context
return super()._get_extra_context(query, **extra_context)
def render_change_form(self, request, context, *args, **kwargs):
if context["original"] and "parent" not in context:
context["parent"] = context["original"].parent
return super().render_change_form(request, context, *args, **kwargs)
def add_view(self, request, form_url="", extra_context=None):
filters = QueryDict(request.GET.get("_changelist_filters", ""))
extra_context = self._get_common_context(filters, extra_context)
return super().add_view(request, form_url, extra_context)
def changelist_view(self, request, extra_context=None):
extra_context = self._get_common_context(request.GET, extra_context)
return super().changelist_view(request, extra_context)
class PageAdmin(BasePageAdmin):
change_list_template = "admin/aircox/page_change_list.html"
list_display = BasePageAdmin.list_display + ("category",)
list_editable = BasePageAdmin.list_editable + ("category",)
list_filter = BasePageAdmin.list_filter + ("category", "pub_date")
search_fields = BasePageAdmin.search_fields + ("category__title",)
fieldsets = deepcopy(BasePageAdmin.fieldsets)
fieldsets[0][1]["fields"].insert(fieldsets[0][1]["fields"].index("slug") + 1, "category")
fieldsets[1][1]["fields"] += ("featured", "allow_comments")
@admin.register(StaticPage)
class StaticPageAdmin(BasePageAdmin):
list_display = BasePageAdmin.list_display + ("attach_to",)
list_editable = BasePageAdmin.list_editable + ("attach_to",)
fieldsets = deepcopy(BasePageAdmin.fieldsets)
fieldsets[1][1]["fields"] += ("attach_to",)
@ -105,6 +117,7 @@ class CommentAdmin(admin.ModelAdmin):
list_display = ("page_title", "date", "nickname")
list_filter = ("date",)
search_fields = ("page__title", "nickname")
readonly_fields = ("page",)
def page_title(self, obj):
return obj.page.title