hide features of non-public packages

This commit is contained in:
Laura Klünder 2016-10-18 18:50:35 +02:00
parent 8c4306df5b
commit fcdeb93b9a
3 changed files with 15 additions and 6 deletions

View file

@ -21,7 +21,10 @@
<span id="current_featuretype_title"></span>
<span class="caret"></span>
</span>
<ul class="dropdown-menu" id="featuretype_dropdown" aria-labelledby="featuretype_dropdown_btn"></ul>
<ul class="dropdown-menu" id="featuretype_dropdown" aria-labelledby="featuretype_dropdown_btn">
<li><a href="#">Packages</a></li>
<li role="separator" class="divider"></li>
</ul>
</div>
<button class="btn btn-default btn-xs pull-right" id="start-drawing">create new <span id="create_featuretype_title"></span></button>
<button class="btn btn-danger btn-xs pull-right" id="cancel-drawing">cancel creating</button>

View file

@ -6,6 +6,7 @@ from rest_framework.viewsets import ReadOnlyModelViewSet, ViewSet
from c3nav.mapdata.models import FEATURE_TYPES
from c3nav.mapdata.models.features import Area, Building, Door, Obstacle
from c3nav.mapdata.permissions import PackageAccessMixin
from c3nav.mapdata.serializers.features import (AreaSerializer, BuildingSerializer, DoorSerializer,
FeatureTypeSerializer, ObstacleSerializer)
@ -41,7 +42,7 @@ class FeatureViewSet(ViewSet):
return Response(result)
class BuildingViewSet(ReadOnlyModelViewSet):
class BuildingViewSet(PackageAccessMixin, ReadOnlyModelViewSet):
"""
List and retrieve Inside Areas
"""
@ -51,7 +52,7 @@ class BuildingViewSet(ReadOnlyModelViewSet):
lookup_value_regex = '[^/]+'
class AreaViewSet(ReadOnlyModelViewSet):
class AreaViewSet(PackageAccessMixin, ReadOnlyModelViewSet):
"""
List and retrieve Areas
"""
@ -61,7 +62,7 @@ class AreaViewSet(ReadOnlyModelViewSet):
lookup_value_regex = '[^/]+'
class ObstacleViewSet(ReadOnlyModelViewSet):
class ObstacleViewSet(PackageAccessMixin, ReadOnlyModelViewSet):
"""
List and retrieve Obstcales
"""
@ -71,7 +72,7 @@ class ObstacleViewSet(ReadOnlyModelViewSet):
lookup_value_regex = '[^/]+'
class DoorViewSet(ReadOnlyModelViewSet):
class DoorViewSet(PackageAccessMixin, ReadOnlyModelViewSet):
"""
List and retrieve Doors
"""

View file

@ -15,7 +15,7 @@ def can_access_package(request, package):
def filter_source_queryset(request, queryset):
return queryset if settings.DEBUG else queryset.filter(package__name__in=get_unlocked_packages(request))
return queryset if settings.DIRECT_EDITING else queryset.filter(package__name__in=get_unlocked_packages(request))
class LockedMapFeatures(BasePermission):
@ -24,3 +24,8 @@ class LockedMapFeatures(BasePermission):
if not can_access_package(request, obj.package):
raise PermissionDenied(_('This Source belongs to a package you don\'t have access to.'))
return True
class PackageAccessMixin:
def get_queryset(self):
return filter_source_queryset(self.request, super().get_queryset())