give detailed geometry for spaces with base_mapdata_accessible
This commit is contained in:
parent
cc9441b66b
commit
c43fcfdacb
2 changed files with 7 additions and 9 deletions
|
@ -29,7 +29,7 @@ from c3nav.mapdata.models.locations import (Location, LocationGroupCategory, Loc
|
||||||
from c3nav.mapdata.utils.locations import (get_location_by_id_for_request, get_location_by_slug_for_request,
|
from c3nav.mapdata.utils.locations import (get_location_by_id_for_request, get_location_by_slug_for_request,
|
||||||
searchable_locations_for_request, visible_locations_for_request)
|
searchable_locations_for_request, visible_locations_for_request)
|
||||||
from c3nav.mapdata.utils.models import get_submodels
|
from c3nav.mapdata.utils.models import get_submodels
|
||||||
from c3nav.mapdata.utils.user import can_access_base_mapdata, can_access_editor, get_user_data
|
from c3nav.mapdata.utils.user import can_access_editor, get_user_data
|
||||||
from c3nav.mapdata.views import set_tile_access_cookie
|
from c3nav.mapdata.views import set_tile_access_cookie
|
||||||
|
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ def api_etag(permissions=True, etag_func=AccessPermission.etag_func, cache_param
|
||||||
raw_etag = '%s%s:%s:%s' % (response_format, etag_user, get_language(),
|
raw_etag = '%s%s:%s:%s' % (response_format, etag_user, get_language(),
|
||||||
(etag_func(request) if permissions else MapUpdate.current_cache_key()))
|
(etag_func(request) if permissions else MapUpdate.current_cache_key()))
|
||||||
if base_mapdata_check and self.base_mapdata:
|
if base_mapdata_check and self.base_mapdata:
|
||||||
raw_etag += ':%d' % can_access_base_mapdata(request)
|
raw_etag += ':%d' % request.user_permissions.can_access_base_mapdata
|
||||||
etag = quote_etag(raw_etag)
|
etag = quote_etag(raw_etag)
|
||||||
|
|
||||||
response = get_conditional_response(request, etag=etag)
|
response = get_conditional_response(request, etag=etag)
|
||||||
|
@ -104,8 +104,10 @@ class MapdataViewSet(ReadOnlyModelViewSet):
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def can_access_geometry(request, obj):
|
def can_access_geometry(request, obj):
|
||||||
if isinstance(obj, (Building, Space, Door)):
|
if isinstance(obj, Space):
|
||||||
return can_access_base_mapdata(request)
|
return obj.base_mapdata_accessible or request.user_permissions.can_access_base_mapdata
|
||||||
|
elif isinstance(obj, (Building, Door)):
|
||||||
|
return request.user_permissions.can_access_base_mapdata
|
||||||
return True
|
return True
|
||||||
|
|
||||||
qs_filter = namedtuple('qs_filter', ('field', 'model', 'key', 'value'))
|
qs_filter = namedtuple('qs_filter', ('field', 'model', 'key', 'value'))
|
||||||
|
@ -372,7 +374,7 @@ class LocationViewSet(LocationViewSetBase):
|
||||||
cache_key = 'mapdata:api:location:list:%d:%s:%d' % (
|
cache_key = 'mapdata:api:location:list:%d:%s:%d' % (
|
||||||
searchable + detailed*2 + geometry*4,
|
searchable + detailed*2 + geometry*4,
|
||||||
AccessPermission.cache_key_for_request(request),
|
AccessPermission.cache_key_for_request(request),
|
||||||
can_access_base_mapdata(request)
|
request.user_permissions.can_access_base_mapdata
|
||||||
)
|
)
|
||||||
result = cache.get(cache_key, None)
|
result = cache.get(cache_key, None)
|
||||||
if result is None:
|
if result is None:
|
||||||
|
|
|
@ -31,9 +31,5 @@ def get_user_data(request):
|
||||||
get_user_data_lazy = lazy(get_user_data, dict)
|
get_user_data_lazy = lazy(get_user_data, dict)
|
||||||
|
|
||||||
|
|
||||||
def can_access_base_mapdata(request):
|
|
||||||
return settings.PUBLIC_BASE_MAPDATA or request.user_permissions.base_mapdata_access
|
|
||||||
|
|
||||||
|
|
||||||
def can_access_editor(request):
|
def can_access_editor(request):
|
||||||
return settings.PUBLIC_EDITOR or request.user_permissions.editor_access
|
return settings.PUBLIC_EDITOR or request.user_permissions.editor_access
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue