From a13e84fca1d6cc98b8381c2e297992787dd03524 Mon Sep 17 00:00:00 2001 From: AlexP077 Date: Sun, 26 Feb 2023 21:52:49 +0300 Subject: [PATCH] filters_fix --- service/urls.py | 6 +++--- service/views.py | 44 ++++++++++++++++++++++++++++++++++---------- 2 files changed, 37 insertions(+), 13 deletions(-) diff --git a/service/urls.py b/service/urls.py index f46aa5e..a55aa80 100644 --- a/service/urls.py +++ b/service/urls.py @@ -24,10 +24,10 @@ schema_view = get_schema_view( ) urlpatterns = [ - path('placement_points/', + path('placement_points', include([*router.urls, - url(r'update_status', views.update_status.as_view(), name='update_status'), - url(r'update_fact', views.update_fact.as_view(), name='update_fact')]), name='placement_points'), + url(r'/update_status', views.update_status.as_view(), name='update_status'), + url(r'/update_fact', views.update_fact.as_view(), name='update_fact')]), name='placement_points'), path('ao_and_rayons/', views.ao_and_rayons.as_view(), name='ao_and_rayons'), path('raschet/', views.raschet.as_view(), name='ao_and_rayons'), url(r'load_csv/', views.refresh_placement_points.as_view(), name='upload_placement_points'), diff --git a/service/views.py b/service/views.py index 7d69e4d..5842019 100644 --- a/service/views.py +++ b/service/views.py @@ -188,7 +188,8 @@ class PlacementPointViewSet(ReadOnlyModelViewSet): def get_queryset(self): qs = self.queryset.all() location_ids = self.request.GET.get('location_ids[]') - prediction = self.request.GET.get('prediction[]') + prediction_first = self.request.GET.get('prediction_first[]') + prediction_current = self.request.GET.get('prediction_current[]') categories = self.request.GET.get('categories[]') status = self.request.GET.get('status[]') delta = self.request.GET.get('delta[]') @@ -196,12 +197,17 @@ class PlacementPointViewSet(ReadOnlyModelViewSet): age = self.request.GET.get('age[]') included = self.request.GET.get('included[]') excluded = self.request.GET.get('excluded[]') + plan_first = self.request.GET.get('plan_first[]') + plan_current = self.request.GET.get('plan_current[]') if location_ids: location_ids = list(location_ids.split(',')) qs = qs.filter(location_id__in=location_ids) - if prediction: - prediction = list(prediction.split(',')) - qs = qs.filter(prediction__range=prediction) + if prediction_first: + prediction_first = list(prediction_first.split(',')) + qs = qs.filter(prediction_first__range=prediction_first) + if prediction_current: + prediction_current = list(prediction_current.split(',')) + qs = qs.filter(prediction_current__range=prediction_current) if categories: categories = list(categories.split(',')) qs = qs.filter(category__in=categories) @@ -217,6 +223,12 @@ class PlacementPointViewSet(ReadOnlyModelViewSet): if age: age = list(age.split(',')) qs = qs.filter(age__range=age) + if plan_first: + plan_first = list(plan_first.split(',')) + qs = qs.filter(plan_first__range=plan_first) + if plan_current: + plan_current = list(plan_current.split(',')) + qs = qs.filter(plan_current__range=plan_current) if excluded: excluded = list(excluded.split(',')) qs = qs.filter(~Q(location_id__in=excluded)) @@ -299,7 +311,10 @@ class update_status(APIView): qs = models.PlacementPoint.objects.all() new_status = self.request.GET.get('status') location_ids = self.request.GET.get('location_ids[]') - prediction = self.request.GET.get('prediction[]') + prediction_first = self.request.GET.get('prediction_first[]') + prediction_current = self.request.GET.get('prediction_current[]') + plan_first = self.request.GET.get('plan_first[]') + plan_current = self.request.GET.get('plan_current[]') categories = self.request.GET.get('categories[]') status = self.request.GET.get('status[]') delta = self.request.GET.get('delta[]') @@ -309,14 +324,23 @@ class update_status(APIView): excluded = self.request.GET.get('excluded[]') if not new_status: return Response({'message': 'No status provided'}, status=http_status.HTTP_400_BAD_REQUEST) - if not any([location_ids, prediction, categories, status, delta, fact, age]): + if not any([location_ids, prediction_first,plan_first,plan_current,prediction_current, categories, status, delta, fact, age]): qs = models.PlacementPoint.objects.none() if location_ids: location_ids = list(location_ids.split(',')) qs = qs.filter(location_id__in=location_ids) - if prediction: - prediction = list(prediction.split(',')) - qs = qs.filter(prediction__range=prediction) + if prediction_first: + prediction_first = list(prediction_first.split(',')) + qs = qs.filter(prediction_first__range=prediction_first) + if prediction_current: + prediction_current = list(prediction_current.split(',')) + qs = qs.filter(prediction_current__range=prediction_current) + if plan_first: + plan_first = list(plan_first.split(',')) + qs = qs.filter(plan_first__range=plan_first) + if plan_current: + plan_current = list(plan_current.split(',')) + qs = qs.filter(plan_current__range=plan_current) if categories: categories = list(categories.split(',')) qs = qs.filter(category__in=categories) @@ -339,7 +363,7 @@ class update_status(APIView): inclded = list(included.split(',')) qs2 = models.PlacementPoint.objects.filter(location_id__in=inclded).all() qs = (qs | qs2).distinct() - if not any([location_ids, prediction, categories, status, delta, fact, age, excluded, included]): + if not any([location_ids, prediction_first,plan_first,plan_current,prediction_current, categories, status, delta, fact, age, excluded, included]): return Response({'message': 'Empty queryset'}, status=http_status.HTTP_200_OK) qs.update(**{'status': new_status})