diff options
Diffstat (limited to 'opendc/models/tile.py')
| -rw-r--r-- | opendc/models/tile.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/opendc/models/tile.py b/opendc/models/tile.py new file mode 100644 index 00000000..95445419 --- /dev/null +++ b/opendc/models/tile.py @@ -0,0 +1,47 @@ +from opendc.models.model import Model +from opendc.models.room import Room +from opendc.models.object import Object +from opendc.util import database, exceptions + +class Tile(Model): + + JSON_TO_PYTHON_DICT = { + 'tile': { + 'id': 'id', + 'roomId': 'room_id', + 'objectId': 'object_id', + 'objectType': 'object_type', + 'positionX': 'position_x', + 'positionY': 'position_y' + } + } + + PATH = '/v1/simulations/{simulationId}/datacenters/{datacenterId}/rooms/{roomId}/tiles' + + TABLE_NAME = 'tiles' + COLUMNS = ['id', 'position_x', 'position_y', 'room_id', 'object_id'] + COLUMNS_PRIMARY_KEY = ['id'] + + def google_id_has_at_least(self, google_id, authorization_level): + """Return True if the user has at least the given auth level over this Tile.""" + + # Get the Room + + try: + room = Room.from_primary_key((self.room_id,)) + except exceptions.RowNotFoundError: + return False + + # Check the Room's Authorization + + return room.google_id_has_at_least(google_id, authorization_level) + + def read(self): + """Read this Tile by also getting its associated object type.""" + + super(Tile, self).read() + + if self.object_id is not None: + + obj = Object.from_primary_key((self.object_id,)) + self.object_type = obj.type |
