diff --git a/app/models.py b/app/models.py index b757e4d..37815b7 100644 --- a/app/models.py +++ b/app/models.py @@ -18,6 +18,8 @@ class XZNSH(models.Model): is_violation = models.BooleanField(verbose_name='是否违规', null=True, blank=True) # 违规原因 violation_reason = models.CharField(max_length=255, verbose_name='违规原因', null=True, blank=True) + # 相对时间 + relative_time = models.FloatField(default=0, verbose_name='相对时间') # 缩略图 thumbnail = models.CharField(max_length=100, verbose_name='缩略图') # 视频路径 diff --git a/app/serializers.py b/app/serializers.py index ff92bd3..df0cbbc 100644 --- a/app/serializers.py +++ b/app/serializers.py @@ -30,7 +30,7 @@ class SerialFilter(FilterSet): end_time = django_filters.DateTimeFilter(field_name='record_time', method='time_range_filter') # todo bug: start_time 和 end_time同一天的情况 done violation = django_filters.NumberFilter(field_name='is_violation', method='is_violation_query') - violation_type = django_filters.CharFilter(field_name='ai_analysis', lookup_expr='icontains') + violation_type = django_filters.CharFilter(field_name='violation_reason', lookup_expr='icontains') def time_range_filter(self, queryset, name, value): """ diff --git a/app/urls.py b/app/urls.py index 933144f..b05f915 100644 --- a/app/urls.py +++ b/app/urls.py @@ -25,5 +25,7 @@ urlpatterns = [ path('', include(router.urls)), path('add_user', views.RegisterLoginViewSet.as_view({"post": "register"})), path('login', views.LoginView.as_view({"post": "login"})), - path('events', views.XZNSHModelViewSet.as_view({"get": "get_events"})) + path('events', views.XZNSHModelViewSet.as_view({"get": "get_events"})), + path('scenes', views.XZNSHModelViewSet.as_view({"get": "get_scenes"})), + path('violation_reasons', views.XZNSHModelViewSet.as_view({"get": "get_violation_reason"})) ] diff --git a/app/views.py b/app/views.py index b4724f4..b429763 100644 --- a/app/views.py +++ b/app/views.py @@ -27,17 +27,32 @@ class XZNSHModelViewSet(viewsets.ModelViewSet): filterset_class = SerialFilter def get_events(self, request, *args, **kwargs): - res = self.queryset.values('event_type').annotate(count=Count('event_type')).order_by('-count') - result = list(res) + res = self.queryset.values("event_type").filter(event_type__isnull=False).annotate(count=Count("event_type")).order_by('-count') + response = self.filter_filed("event_type", res) + return Response(response) + + def get_scenes(self, request, *args, **kwargs): + res = self.queryset.values("scene").filter(scene__isnull=False).annotate(count=Count("scene")).order_by('-count') + response = self.filter_filed("scene", res) + return Response(response) + + def get_violation_reason(self, request, *args, **kwargs): + res = self.queryset.values("violation_reason").filter(violation_reason__isnull=False).annotate(count=Count("violation_reason")).order_by('-count') + response = self.filter_filed("violation_reason", res) + return Response(response) + + @staticmethod + def filter_filed(filed_name, query_set): + result = list(query_set) data = dict() for index, item in enumerate(result, 1): - data[index] = item.get('event_type') + data[index] = item.get(filed_name) response = { 'success': True, 'msg': '查询成功', 'data': data } - return Response(response) + return response class RegisterLoginViewSet(viewsets.ModelViewSet): diff --git a/mymiddleware/middleware.py b/mymiddleware/middleware.py index 6004c95..5585e29 100644 --- a/mymiddleware/middleware.py +++ b/mymiddleware/middleware.py @@ -15,7 +15,7 @@ class CheckTokenMiddleware(MiddlewareMixin): def process_request(self, request): # todo 登录时不需要校验token path_info = request.path_info - if path_info.endswith('login'): + if path_info.endswith('login') or path_info.endswith('add_user'): return my_auth = request.META.get('HTTP_TOKEN') if not my_auth: