57 lines
1.5 KiB
Python
57 lines
1.5 KiB
Python
class DefaultEditUtils:
|
|
def __init__(self, request):
|
|
self.request = request
|
|
|
|
@classmethod
|
|
def from_obj(cls, obj, request):
|
|
return cls(request)
|
|
|
|
@property
|
|
def can_access_child_base_mapdata(self):
|
|
return self.request.user_permissions.can_access_base_mapdata
|
|
|
|
@property
|
|
def can_create(self):
|
|
return self.can_access_child_base_mapdata
|
|
|
|
@property
|
|
def _geometry_url(self):
|
|
return None
|
|
|
|
@property
|
|
def geometry_url(self):
|
|
return self._geometry_url if self.can_access_child_base_mapdata else None
|
|
|
|
|
|
class LevelChildEditUtils(DefaultEditUtils):
|
|
def __init__(self, level, request):
|
|
super().__init__(request)
|
|
self.level = level
|
|
|
|
@classmethod
|
|
def from_obj(cls, obj, request):
|
|
return cls(obj.level, request)
|
|
|
|
@property
|
|
def _geometry_url(self):
|
|
return '/api/editor/geometries/?level=' + str(self.level.primary_level_pk)
|
|
|
|
|
|
class SpaceChildEditUtils(DefaultEditUtils):
|
|
def __init__(self, space, request):
|
|
super().__init__(request)
|
|
self.space = space
|
|
|
|
@classmethod
|
|
def from_obj(cls, obj, request):
|
|
return cls(obj.space, request)
|
|
|
|
@property
|
|
def can_access_child_base_mapdata(self):
|
|
return (self.request.user_permissions.can_access_base_mapdata or
|
|
self.space.base_mapdata_accessible or
|
|
self.space.pk in self.request.user_space_accesses)
|
|
|
|
@property
|
|
def _geometry_url(self):
|
|
return '/api/editor/geometries/?space='+str(self.space.pk)
|