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