forked from ietf-tools/datatracker
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathadmin.py
More file actions
40 lines (33 loc) · 1.35 KB
/
admin.py
File metadata and controls
40 lines (33 loc) · 1.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# Copyright The IETF Trust 2025, All Rights Reserved
from django.contrib import admin
from django.db.models.functions import Length
from rangefilter.filters import DateRangeQuickSelectListFilterBuilder
from .models import Blob, ResolvedMaterial
@admin.register(Blob)
class BlobAdmin(admin.ModelAdmin):
list_display = ["bucket", "name", "object_size", "modified", "mtime", "content_type"]
list_filter = [
"bucket",
"content_type",
("modified", DateRangeQuickSelectListFilterBuilder()),
("mtime", DateRangeQuickSelectListFilterBuilder()),
]
search_fields = ["name"]
list_display_links = ["name"]
def get_queryset(self, request):
return (
super().get_queryset(request)
.defer("content") # don't load this unless we want it
.annotate(object_size=Length("content")) # accessed via object_size()
)
@admin.display(ordering="object_size")
def object_size(self, instance):
"""Get the size of the object"""
return instance.object_size # annotation added in get_queryset()
@admin.register(ResolvedMaterial)
class ResolvedMaterialAdmin(admin.ModelAdmin):
model = ResolvedMaterial
list_display = ["name", "meeting_number", "bucket", "blob"]
list_filter = ["meeting_number", "bucket"]
search_fields = ["name", "blob"]
ordering = ["name"]