Skip to content

Commit 63486c7

Browse files
authored
Merge pull request #512 from maykinmedia/fix/timelinelog-uix
Added two list-filters to TimelineLog admin for better usability
2 parents 0de47f6 + 5fe29bc commit 63486c7

File tree

1 file changed

+43
-1
lines changed

1 file changed

+43
-1
lines changed

src/open_inwoner/utils/admin.py

+43-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from django.contrib import admin
22
from django.contrib.admin.models import ADDITION, CHANGE, DELETION
3+
from django.contrib.contenttypes.models import ContentType
34
from django.urls import NoReverseMatch, reverse
45
from django.utils.html import escape, format_html
56
from django.utils.translation import gettext as _
@@ -10,6 +11,47 @@
1011
from timeline_logger.models import TimelineLog
1112
from timeline_logger.resources import TimelineLogResource
1213

14+
from open_inwoner.utils.logentry import LOG_ACTIONS
15+
16+
17+
class LogActionListFilter(admin.SimpleListFilter):
18+
title = _("Actie")
19+
parameter_name = "log_action"
20+
21+
def lookups(self, request, model_admin):
22+
return list(LOG_ACTIONS.values())
23+
24+
def queryset(self, request, queryset):
25+
v = self.value()
26+
if v:
27+
try:
28+
v = int(v)
29+
except ValueError:
30+
pass
31+
else:
32+
queryset = queryset.filter(extra_data__action_flag__0=v)
33+
return queryset
34+
35+
36+
class ContentTypeUsedListFilter(admin.SimpleListFilter):
37+
title = _("content type")
38+
parameter_name = "ct"
39+
40+
def lookups(self, request, model_admin):
41+
qs = model_admin.get_queryset(request)
42+
content_types = ContentType.objects.filter(
43+
id__in=qs.values_list("content_type", flat=True).distinct()
44+
)
45+
return [("none", "None")] + [(ct.id, str(ct)) for ct in content_types]
46+
47+
def queryset(self, request, queryset):
48+
v = self.value()
49+
if v:
50+
if v == "none":
51+
v = None
52+
queryset = queryset.filter(content_type=v)
53+
return queryset
54+
1355

1456
class CustomTimelineLogAdmin(ExportMixin, TimelineLogAdmin):
1557
show_full_result_count = False
@@ -23,7 +65,7 @@ class CustomTimelineLogAdmin(ExportMixin, TimelineLogAdmin):
2365
"get_action_flag",
2466
"message",
2567
]
26-
list_filter = ["timestamp", "content_type"]
68+
list_filter = ["timestamp", LogActionListFilter, ContentTypeUsedListFilter]
2769
list_select_related = ["content_type"]
2870
search_fields = [
2971
"user__email",

0 commit comments

Comments
 (0)