1
1
from django .contrib import admin
2
+ from django .db .models import Count
3
+ from django .templatetags .l10n import localize
4
+ from django .templatetags .static import static
5
+ from django .utils .html import format_html
6
+ from django .utils .translation import gettext_lazy as _
2
7
3
8
from .conf import settings
4
9
from .models import Cookie , CookieGroup , LogItem
@@ -12,7 +17,14 @@ class CookieAdmin(admin.ModelAdmin):
12
17
13
18
14
19
class CookieGroupAdmin (admin .ModelAdmin ):
15
- list_display = ("varname" , "name" , "is_required" , "is_deletable" , "get_version" )
20
+ list_display = (
21
+ "varname" ,
22
+ "name" ,
23
+ "is_required" ,
24
+ "is_deletable" ,
25
+ "num_cookies" ,
26
+ "get_version" ,
27
+ )
16
28
search_fields = (
17
29
"varname" ,
18
30
"name" ,
@@ -22,6 +34,22 @@ class CookieGroupAdmin(admin.ModelAdmin):
22
34
"is_deletable" ,
23
35
)
24
36
37
+ def get_queryset (self , request ):
38
+ qs = super ().get_queryset (request )
39
+ return qs .annotate (num_cookies = Count ("cookie" ))
40
+
41
+ @admin .display (ordering = "num_cookies" , description = _ ("# cookies" ))
42
+ def num_cookies (self , obj ):
43
+ if (count := obj .num_cookies ) > 0 :
44
+ return localize (count )
45
+
46
+ return format_html (
47
+ '{count} <img src="{src}" alt="{alt}">' ,
48
+ count = localize (count ),
49
+ src = static ("admin/img/icon-alert.svg" ),
50
+ alt = _ ("Warning icon for missing cookies in cookie group." ),
51
+ )
52
+
25
53
26
54
class LogItemAdmin (admin .ModelAdmin ):
27
55
list_display = ("action" , "cookiegroup" , "version" , "created" )
0 commit comments