From 7786198a5bbb1e1392dcde669be3234d1d4a582c Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Sat, 2 May 2020 12:35:19 +0200 Subject: [PATCH] Clean up admin.py --- aleksis/apps/hjelp/admin.py | 67 ++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 35 deletions(-) diff --git a/aleksis/apps/hjelp/admin.py b/aleksis/apps/hjelp/admin.py index 1756817..b07b5a5 100644 --- a/aleksis/apps/hjelp/admin.py +++ b/aleksis/apps/hjelp/admin.py @@ -1,8 +1,28 @@ from django.contrib import admin -from .models import FAQQuestion, FAQSection, REBUSCategory +from django.db.models import Model from django.utils.html import format_html from django.utils.translation import ugettext_lazy as _ +from .models import FAQQuestion, FAQSection, IssueCategory + + +MATERIAL_ICONS_CSS_URL = "/static/css/materialdesignicons-webfont/material-icons.css" + + +def icon_html(obj: Model) -> str: + return format_html('<i class="material-icons">{}<i/>', obj.icon) + + +class FAQSectionAdmin(admin.ModelAdmin): + """ ModelAdmin for FAQ sections """ + + list_display = ("name", "_icon") + + class Media: + css = {"all": (MATERIAL_ICONS_CSS_URL,)} + + _icon = icon_html + def show(modeladmin, request, queryset): queryset.update(show=True) @@ -18,52 +38,29 @@ def hide(modeladmin, request, queryset): hide.short_description = _("Unpublish selected questions") -class FAQSectionAdmin(admin.ModelAdmin): - list_display = ("name", "_icon") - - class Media: - css = { - 'all': ('/static/css/materialdesignicons-webfont/material-icons.css',) - } - - def _icon(self, obj): - return format_html(u'<i style="color: {};" class="material-icons">{}<i/>', obj.icon_color, obj.icon) - - class FAQQuestionAdmin(admin.ModelAdmin): + """ ModelAdmin for FAQ questions """ + list_display = ("question_text", "section", "_icon", "show") actions = [show, hide] class Media: - css = { - 'all': ('/static/css/materialdesignicons-webfont/material-icons.css',) - } - - def _icon(self, obj): - return format_html(u'<i class="material-icons">{}<i/>', obj.icon) + css = {"all": (MATERIAL_ICONS_CSS_URL,)} + _icon = icon_html -class REBUSCategoryAdmin(admin.ModelAdmin): - list_display = ("name", "_icon", "_parent", "_placeholder", "_free_text") - class Media: - css = { - 'all': ('/static/css/materialdesignicons-webfont/material-icons.css',) - } - - def _icon(self, obj): - return format_html(u'<i class="material-icons">{}<i/>', obj.icon) +class IssueCategoryAdmin(admin.ModelAdmin): + """ ModelAdmin for issue categories """ - def _parent(self, obj): - return obj.parent + list_display = ("name", "_icon", "parent", "placeholder", "free_text") - def _placeholder(self, obj): - return obj.placeholder + class Media: + css = {"all": (MATERIAL_ICONS_CSS_URL,)} - def _free_text(self, obj): - return obj.free_text + _icon = icon_html admin.site.register(FAQQuestion, FAQQuestionAdmin) admin.site.register(FAQSection, FAQSectionAdmin) -admin.site.register(REBUSCategory, REBUSCategoryAdmin) +admin.site.register(IssueCategory, IssueCategoryAdmin) -- GitLab