only query relevant groups

This commit is contained in:
Laura Klünder 2019-12-10 18:55:32 +01:00
parent 2e0494e767
commit a554a0ceae
2 changed files with 7 additions and 3 deletions

View file

@ -227,7 +227,7 @@ class EditorViewSet(EditorViewSetMixin, ViewSet):
).prefetch_related( ).prefetch_related(
Prefetch('groups', LocationGroup.objects.only( Prefetch('groups', LocationGroup.objects.only(
'color', 'category', 'priority', 'category__priority', 'category__allow_spaces' 'color', 'category', 'priority', 'category__priority', 'category__allow_spaces'
)) ).filter(color__isnull=False))
) )
space = next(s for s in other_spaces if s.pk == space.pk) space = next(s for s in other_spaces if s.pk == space.pk)
@ -287,7 +287,7 @@ class EditorViewSet(EditorViewSetMixin, ViewSet):
).prefetch_related( ).prefetch_related(
Prefetch('groups', LocationGroup.objects.only( Prefetch('groups', LocationGroup.objects.only(
'color', 'category', 'priority', 'category__priority', 'category__allow_areas' 'color', 'category', 'priority', 'category__priority', 'category__allow_areas'
)) ).filter(color__isnull=False))
) )
for area in areas: for area in areas:
area.opacity = 0.5 area.opacity = 0.5
@ -311,7 +311,7 @@ class EditorViewSet(EditorViewSetMixin, ViewSet):
space.pois.filter(POI.q_for_request(request)).only('geometry', 'space').prefetch_related( space.pois.filter(POI.q_for_request(request)).only('geometry', 'space').prefetch_related(
Prefetch('groups', LocationGroup.objects.only( Prefetch('groups', LocationGroup.objects.only(
'color', 'category', 'priority', 'category__priority', 'category__allow_pois' 'color', 'category', 'priority', 'category__priority', 'category__allow_pois'
)) ).filter(color__isnull=False))
), ),
other_spaces_upper, other_spaces_upper,
graphedges, graphedges,

View file

@ -686,6 +686,10 @@ class BaseQueryWrapper(BaseWrapper):
# field__lt # field__lt
return self._filter_values(q, field_name, lambda val: val < filter_value) return self._filter_values(q, field_name, lambda val: val < filter_value)
if filter_type == 'isnull':
# field__isnull
return self._filter_values(q, field_name, lambda val: (val is None) is filter_value)
raise NotImplementedError raise NotImplementedError
raise NotImplementedError('cannot filter %s by %s (%s)' % (model, filter_name, field)) raise NotImplementedError('cannot filter %s by %s (%s)' % (model, filter_name, field))