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 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>
|
||||||
|
|
|
@ -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
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -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())
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue