hide features of non-public packages
This commit is contained in:
parent
8c4306df5b
commit
fcdeb93b9a
3 changed files with 15 additions and 6 deletions
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
"""
|
||||
|
|
|
@ -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())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue