From fbdfb47e60ddd456cb479b0e4b28fe82e8153f66 Mon Sep 17 00:00:00 2001 From: Adam Goldsmith Date: Tue, 2 Jan 2024 10:54:29 -0500 Subject: [PATCH] membershipworks: Improve EventExt admin --- membershipworks/admin.py | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/membershipworks/admin.py b/membershipworks/admin.py index f6c9a8b..56412ab 100644 --- a/membershipworks/admin.py +++ b/membershipworks/admin.py @@ -1,5 +1,6 @@ from django.contrib import admin from django.contrib.humanize.templatetags.humanize import naturaltime +from django.utils.html import format_html from django_object_actions import DjangoObjectActions, action from django_q.tasks import async_task @@ -107,27 +108,45 @@ class EventAdmin(admin.ModelAdmin): list_display = [ "title", "start", - "end", "duration", "count", "cap", "category", - "venue", ] - list_filter = ["category", "calendar", "venue"] + list_filter = [ + "category", + "calendar", + "venue", + ("materials_fee", admin.EmptyFieldListFilter), + ] show_facets = admin.ShowFacets.ALWAYS search_fields = ["eid", "title", "url"] date_hierarchy = "start" - readonly_fields = [ - field.name - for field in Event._meta.get_fields() - if not (field.auto_created or field.many_to_many or not field.concrete) - ] + ["duration"] - @admin.display() + @property + def readonly_fields(self): + fields = [] + for field in Event._meta.get_fields(): + if field.auto_created or field.many_to_many or not field.concrete: + continue + elif field.name == "url": + fields.append("_url") + else: + fields.append(field.name) + fields.insert(fields.index("end") + 1, "duration") + return fields + + @admin.display(ordering="duration") def duration(self, obj): return obj.duration + @admin.display(description="URL") + def _url(self, obj): + return format_html( + '{0}', + obj.url, + ) + def has_add_permission(self, request, obj=None): return False