2020-04-07 08:43:07 +00:00
|
|
|
from django.conf import settings
|
2016-08-16 02:38:36 +00:00
|
|
|
from django.contrib import admin
|
2019-08-22 15:24:10 +00:00
|
|
|
from django.core.paginator import Paginator
|
2020-04-07 08:43:07 +00:00
|
|
|
from django.utils.functional import cached_property
|
2019-08-22 15:24:10 +00:00
|
|
|
|
2021-06-24 11:28:58 +00:00
|
|
|
from auditlog.count import limit_query_time
|
|
|
|
|
from auditlog.filters import (
|
2021-06-24 10:04:48 +00:00
|
|
|
FieldFilter,
|
2021-06-24 11:33:30 +00:00
|
|
|
ResourceTypeFilter,
|
|
|
|
|
ShortActorFilter,
|
2021-06-24 10:04:48 +00:00
|
|
|
get_timestamp_filter,
|
|
|
|
|
)
|
2021-06-24 11:33:30 +00:00
|
|
|
from auditlog.mixins import LogEntryAdminMixin
|
|
|
|
|
from auditlog.models import LogEntry
|
2016-08-16 02:38:36 +00:00
|
|
|
|
|
|
|
|
|
2020-04-07 08:43:07 +00:00
|
|
|
class TimeLimitedPaginator(Paginator):
|
2020-06-11 14:01:19 +00:00
|
|
|
"""A PostgreSQL-specific paginator with a hard time limit for total count of pages."""
|
2021-06-24 10:04:48 +00:00
|
|
|
|
2020-04-07 08:43:07 +00:00
|
|
|
@cached_property
|
2021-06-24 10:04:48 +00:00
|
|
|
@limit_query_time(
|
|
|
|
|
getattr(settings, "AUDITLOG_PAGINATOR_TIMEOUT", 500), default=100000
|
|
|
|
|
)
|
2019-08-22 15:24:10 +00:00
|
|
|
def count(self):
|
2020-06-11 14:01:19 +00:00
|
|
|
return super().count
|
2019-08-22 15:24:10 +00:00
|
|
|
|
|
|
|
|
|
2016-09-02 19:02:42 +00:00
|
|
|
class LogEntryAdmin(admin.ModelAdmin, LogEntryAdminMixin):
|
2021-06-24 10:04:48 +00:00
|
|
|
list_display = ["created", "resource_url", "action", "msg_short", "user_url"]
|
|
|
|
|
search_fields = [
|
|
|
|
|
"timestamp",
|
|
|
|
|
"object_repr",
|
|
|
|
|
"changes",
|
|
|
|
|
"actor__first_name",
|
|
|
|
|
"actor__last_name",
|
|
|
|
|
]
|
|
|
|
|
list_filter = [
|
|
|
|
|
"action",
|
|
|
|
|
ShortActorFilter,
|
|
|
|
|
ResourceTypeFilter,
|
|
|
|
|
FieldFilter,
|
|
|
|
|
("timestamp", get_timestamp_filter()),
|
|
|
|
|
]
|
|
|
|
|
readonly_fields = ["created", "resource_url", "action", "user_url", "msg"]
|
2016-09-02 19:02:42 +00:00
|
|
|
fieldsets = [
|
2021-06-24 10:04:48 +00:00
|
|
|
(None, {"fields": ["created", "user_url", "resource_url"]}),
|
|
|
|
|
("Changes", {"fields": ["action", "msg"]}),
|
2016-09-02 19:02:42 +00:00
|
|
|
]
|
2021-06-24 10:04:48 +00:00
|
|
|
list_select_related = ["actor", "content_type"]
|
2019-08-22 15:24:10 +00:00
|
|
|
show_full_result_count = False
|
2020-04-07 08:43:07 +00:00
|
|
|
paginator = TimeLimitedPaginator
|
2016-09-02 19:02:42 +00:00
|
|
|
|
2016-08-16 02:38:36 +00:00
|
|
|
|
2016-09-02 19:02:42 +00:00
|
|
|
admin.site.register(LogEntry, LogEntryAdmin)
|