Files
chunyu_project/logs/filters.py
T
2026-08-05 23:59:15 +08:00

61 lines
3.3 KiB
Python

import django_filters
from .models import ApiRequestLog, ErrorLog, SystemEventLog
class ApiRequestLogFilter(django_filters.FilterSet):
timestamp_after = django_filters.DateTimeFilter(field_name='timestamp', lookup_expr='gte')
timestamp_before = django_filters.DateTimeFilter(field_name='timestamp', lookup_expr='lte')
method = django_filters.CharFilter(field_name='method', lookup_expr='exact')
status_code = django_filters.NumberFilter(field_name='status_code', lookup_expr='exact')
status_code_min = django_filters.NumberFilter(field_name='status_code', lookup_expr='gte')
status_code_max = django_filters.NumberFilter(field_name='status_code', lookup_expr='lte')
path = django_filters.CharFilter(field_name='path', lookup_expr='icontains')
app_name = django_filters.CharFilter(field_name='app_name', lookup_expr='exact')
username = django_filters.CharFilter(field_name='username', lookup_expr='icontains')
is_error = django_filters.BooleanFilter(field_name='is_error')
duration_min = django_filters.NumberFilter(field_name='duration_ms', lookup_expr='gte')
duration_max = django_filters.NumberFilter(field_name='duration_ms', lookup_expr='lte')
ip_address = django_filters.CharFilter(field_name='ip_address', lookup_expr='exact')
class Meta:
model = ApiRequestLog
fields = [
'timestamp_after', 'timestamp_before', 'method', 'status_code',
'status_code_min', 'status_code_max', 'path', 'app_name',
'username', 'is_error', 'duration_min', 'duration_max', 'ip_address',
]
class ErrorLogFilter(django_filters.FilterSet):
timestamp_after = django_filters.DateTimeFilter(field_name='timestamp', lookup_expr='gte')
timestamp_before = django_filters.DateTimeFilter(field_name='timestamp', lookup_expr='lte')
level = django_filters.CharFilter(field_name='level', lookup_expr='exact')
module = django_filters.CharFilter(field_name='module', lookup_expr='icontains')
exception_type = django_filters.CharFilter(field_name='exception_type', lookup_expr='icontains')
is_resolved = django_filters.BooleanFilter(field_name='is_resolved')
message = django_filters.CharFilter(field_name='message', lookup_expr='icontains')
path = django_filters.CharFilter(field_name='path', lookup_expr='icontains')
class Meta:
model = ErrorLog
fields = [
'timestamp_after', 'timestamp_before', 'level', 'module',
'exception_type', 'is_resolved', 'message', 'path',
]
class SystemEventLogFilter(django_filters.FilterSet):
timestamp_after = django_filters.DateTimeFilter(field_name='timestamp', lookup_expr='gte')
timestamp_before = django_filters.DateTimeFilter(field_name='timestamp', lookup_expr='lte')
event_type = django_filters.CharFilter(field_name='event_type', lookup_expr='exact')
result = django_filters.CharFilter(field_name='result', lookup_expr='exact')
username = django_filters.CharFilter(field_name='user__username', lookup_expr='icontains')
description = django_filters.CharFilter(field_name='description', lookup_expr='icontains')
class Meta:
model = SystemEventLog
fields = [
'timestamp_after', 'timestamp_before', 'event_type', 'result',
'username', 'description',
]