1
1
from django .contrib import admin
2
2
from django .contrib .admin .models import ADDITION , CHANGE , DELETION
3
+ from django .contrib .contenttypes .models import ContentType
3
4
from django .urls import NoReverseMatch , reverse
4
5
from django .utils .html import escape , format_html
5
6
from django .utils .translation import gettext as _
10
11
from timeline_logger .models import TimelineLog
11
12
from timeline_logger .resources import TimelineLogResource
12
13
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
+
13
55
14
56
class CustomTimelineLogAdmin (ExportMixin , TimelineLogAdmin ):
15
57
show_full_result_count = False
@@ -23,7 +65,7 @@ class CustomTimelineLogAdmin(ExportMixin, TimelineLogAdmin):
23
65
"get_action_flag" ,
24
66
"message" ,
25
67
]
26
- list_filter = ["timestamp" , "content_type" ]
68
+ list_filter = ["timestamp" , LogActionListFilter , ContentTypeUsedListFilter ]
27
69
list_select_related = ["content_type" ]
28
70
search_fields = [
29
71
"user__email" ,
0 commit comments