Merge branch 'group_dist_filter_fix' into 'dev'

dist_filter_fix

See merge request spatial/postamates!72
dev
Aleksandr Popov 3 years ago
commit 95f30f1891

@ -131,7 +131,8 @@ class PlacementPointViewSet(ReadOnlyModelViewSet):
delta_current = self.request.GET.get('delta_current[]') delta_current = self.request.GET.get('delta_current[]')
rayons = self.request.GET.get('area[]') rayons = self.request.GET.get('area[]')
aos = self.request.GET.get('district[]') aos = self.request.GET.get('district[]')
group_dists = self.request.GET.getlist('dist_to_group') group_dists_lt = self.request.GET.getlist('dist_to_group__lt')
group_dists_gt = self.request.GET.getlist('dist_to_group__gt')
if location_ids: if location_ids:
location_ids = list(location_ids.split(',')) location_ids = list(location_ids.split(','))
qs = qs.filter(pk__in=location_ids) qs = qs.filter(pk__in=location_ids)
@ -181,14 +182,22 @@ class PlacementPointViewSet(ReadOnlyModelViewSet):
inclded = list(included.split(',')) inclded = list(included.split(','))
qs2 = models.PlacementPoint.objects.filter(pk__in=inclded).all() qs2 = models.PlacementPoint.objects.filter(pk__in=inclded).all()
qs = (qs | qs2).distinct() qs = (qs | qs2).distinct()
if group_dists: if group_dists_lt:
g_d = [list(g.split(',')) for g in group_dists] g_d = [list(g.split(',')) for g in group_dists_lt]
for group in g_d: for group in g_d:
filtered_points = list( filtered_points = list(
models.PlacementPointPVZDistance.objects.filter(pvz_postamates_group__id=int(group[0]), models.PlacementPointPVZDistance.objects.filter(pvz_postamates_group__id=int(group[0]),
dist__lt=int(group[1])).values_list( dist__lt=int(group[1])).values_list(
'placement_point__id', flat=True)) 'placement_point__id', flat=True))
qs = qs.filter(id__in=filtered_points) qs = qs.filter(id__in=filtered_points)
if group_dists_gt:
g_d = [list(g.split(',')) for g in group_dists_gt]
for group in g_d:
filtered_points = list(
models.PlacementPointPVZDistance.objects.filter(pvz_postamates_group__id=int(group[0]),
dist__gt=int(group[1])).values_list(
'placement_point__id', flat=True))
qs = qs.filter(id__in=filtered_points)
return qs return qs
@action(methods=['get'], detail=False) @action(methods=['get'], detail=False)

Loading…
Cancel
Save