Skip to content

Commit 8f23996

Browse files
authored
Dont show empty layers/facilities (#1887)
1 parent 6353c89 commit 8f23996

1 file changed

Lines changed: 24 additions & 11 deletions

File tree

src/maps/views.py

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,10 @@
1212
from django.contrib import messages
1313
from django.contrib.auth.mixins import LoginRequiredMixin
1414
from django.contrib.gis.geos import Point
15-
from django.utils.decorators import method_decorator
16-
from django.views.decorators.cache import cache_page
17-
from django.views.decorators.cache import cache_control
1815
from django.core.exceptions import BadRequest
1916
from django.core.exceptions import PermissionDenied
2017
from django.core.serializers import serialize
18+
from django.db.models import Count
2119
from django.db.models import Q
2220
from django.http import HttpRequest
2321
from django.http import HttpResponse
@@ -27,6 +25,8 @@
2725
from django.templatetags.static import static
2826
from django.urls import reverse
2927
from django.utils.decorators import method_decorator
28+
from django.views.decorators.cache import cache_control
29+
from django.views.decorators.cache import cache_page
3030
from django.views.decorators.csrf import csrf_exempt
3131
from django.views.generic import CreateView
3232
from django.views.generic import DeleteView
@@ -136,21 +136,34 @@ def get_layers(self) -> QuerySet:
136136
user_teams = self.request.user.teammember_set.filter(
137137
team__camp=self.camp,
138138
).values_list("team__name", flat=True)
139-
return Layer.objects.filter(
140-
((Q(responsible_team__camp=self.camp) | Q(responsible_team=None)) & Q(public=True))
141-
| (Q(responsible_team__name__in=user_teams) & Q(public=False)),
139+
return (
140+
Layer.objects.filter(
141+
((Q(responsible_team__camp=self.camp) | Q(responsible_team=None)) & Q(public=True))
142+
| (Q(responsible_team__name__in=user_teams) & Q(public=False)),
143+
)
144+
.annotate(num_features=Count("features"))
145+
.filter(num_features__gt=0)
142146
)
143147

144148
def get_context_data(self, **kwargs) -> dict:
145149
"""Get the context data."""
146150
context = super().get_context_data(**kwargs)
147-
context["facilitytype_list"] = FacilityType.objects.filter(
148-
responsible_team__camp=self.camp,
151+
context["facilitytype_list"] = (
152+
FacilityType.objects.filter(
153+
responsible_team__camp=self.camp,
154+
)
155+
.annotate(num_facilities=Count("facilities"))
156+
.filter(num_facilities__gt=0)
149157
)
150158
context["layers"] = self.get_layers()
151-
context["user_location_types"] = UserLocationType.objects.filter(
152-
user_locations__isnull=False,
153-
).distinct()
159+
context["user_location_types"] = (
160+
UserLocationType.objects.filter(
161+
user_locations__isnull=False,
162+
)
163+
.annotate(num_features=Count("user_locations"))
164+
.filter(num_features__gt=0)
165+
.distinct()
166+
)
154167
context["externalLayers"] = ExternalLayer.objects.filter(
155168
Q(responsible_team__camp=self.camp) | Q(responsible_team=None),
156169
)

0 commit comments

Comments
 (0)