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', ]