From b2961ba76661e108bc830a32e9385c5d915483b0 Mon Sep 17 00:00:00 2001 From: AlexP077 Date: Wed, 4 Oct 2023 23:14:16 +0300 Subject: [PATCH] fixes --- service/service.py | 19 +++++++++++-------- service/views.py | 8 ++++++-- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/service/service.py b/service/service.py index 2dd18a7..21bda46 100644 --- a/service/service.py +++ b/service/service.py @@ -136,11 +136,12 @@ class PointService: origin = point.geometry qs = models.PlacementPoint.objects.filter(status=PointStatus.Working.name).annotate( dist=Dist('geometry', origin)).order_by('dist') - point.target_dist = qs[0].dist.m - point.target_post_cnt = qs.filter( - dist__lt=Distance(m=DEFAULT_PLACEMENT_POINT_UPDATE_RADIUS) - ).count() - point.target_cnt_ao_mean = qs[0].target_cnt_ao_mean + if qs: + point.target_dist = qs[0].dist.m + point.target_post_cnt = qs.filter( + dist__lt=Distance(m=DEFAULT_PLACEMENT_POINT_UPDATE_RADIUS) + ).count() + point.target_cnt_ao_mean = qs[0].target_cnt_ao_mean point.rival_post_cnt = models.Post_and_pvz.objects.filter( category__name="Постамат", include_in_ml=True, wkt__distance_lt=(origin, Distance(m=DEFAULT_PLACEMENT_POINT_UPDATE_RADIUS))).count() @@ -232,8 +233,10 @@ class PointService: param1__sum=Sum('param1'))['param1__sum'] point.age_day = AGE_DAY_LIMIT placement_point = models.PlacementPoint.objects.annotate( - dist=Dist('geometry', origin)).order_by('dist')[0] - point.target_cnt_ao_mean = placement_point.target_cnt_ao_mean + dist=Dist('geometry', origin)).order_by('dist') + if placement_point: + placement_point = placement_point[0] + point.target_cnt_ao_mean = placement_point.target_cnt_ao_mean point.save() for group in groups: self.calculate_dist_for_group(point, group, instance_type=models.PrePlacementPointPVZDistance) @@ -302,7 +305,7 @@ class PointService: data = pd.DataFrame(serializer.data) if not data.empty: if data['start_date'].any(): - data['start_date'] = data.get('start_date').dt.tz_localize(None) + data['start_date'] = data['start_date'].apply(lambda x : pd.to_datetime(x).tz_localize(None) if x else None) if data['sample_trn'].any(): data['sample_trn'] = data['sample_trn'].astype(int) data.rename(columns={'district_id': 'district', 'area_id': 'area'}, inplace=True) diff --git a/service/views.py b/service/views.py index 405bd76..b6cffa8 100644 --- a/service/views.py +++ b/service/views.py @@ -410,8 +410,12 @@ class PrePlacementPointViewSet(PlacementPointViewSet): @action(detail=False, methods=['delete']) def delete_points(self, request): - ids = request.POST['ids'].split(',') - PointService.delete_preplacement_points(ids) + ids = request.POST.get('ids') + if ids: + ids = ids.split(',') + PointService.delete_preplacement_points(ids) + else: + models.PrePlacementPoint.objects.all().delete() return Response(status=HTTPStatus.OK, ) @action(detail=False, methods=['get'])