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

View file

@ -15,7 +15,7 @@ def can_access_package(request, package):
def filter_source_queryset(request, queryset): 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): class LockedMapFeatures(BasePermission):
@ -24,3 +24,8 @@ class LockedMapFeatures(BasePermission):
if not can_access_package(request, obj.package): if not can_access_package(request, obj.package):
raise PermissionDenied(_('This Source belongs to a package you don\'t have access to.')) raise PermissionDenied(_('This Source belongs to a package you don\'t have access to.'))
return True return True
class PackageAccessMixin:
def get_queryset(self):
return filter_source_queryset(self.request, super().get_queryset())