def add_room(name, session): room = RoomMdl.get_room_with_name(name=name, session=session) if room is not None: raise ApiOperationError("Room with that name already exists", name) else: room = RoomMdl(name=name) session.add(room) session.commit()
def add_device(item, session): model = DemoDeviceInputDTO(item) if not model.is_valid(): raise SimpleException('Model is not valid!\n {}'.format(item)) device = DeviceMdl(name=model.name, dev_type=model.type) device.sources = list() device.room_binds = list() for source in model.sources: endpoint = EndpointMdl.get_endpoint_by_name(name=source.endpoint, session=session) device.sources.append(DeviceSourceMdl(endpoint_uuid=endpoint.uuid, endpoint_param=source.ep_param, device_param=source.device_param)) if model.interface['export'] is True: device.interface = InterfaceMdl(read_acl=model.interface['read_acl'], write_acl=model.interface['write_acl']) for room in model.rooms: mdl = RoomMdl.get_room_with_name(name=room, session=session) device.room_binds.append(DeviceRoomBinding(room=mdl)) session.add(device) session.flush() return device
def process_add(uuid, session, mods): room = RoomMdl.get_room_with_uuid(uuid=UUID(uuid), session=session) for item in mods: dev = DeviceMdl.get_device_with_uuid(uuid=UUID(item), session=session) room.devices.append(dev) session.add(room) session.flush()
def delete_room(uuid, session): room = RoomMdl.get_room_with_uuid(uuid=uuid, session=session) if room is None: raise ApiOperationError("Room with this uuid is not found", uuid) else: session.delete(room) session.commit()
def get_all_rooms(session, acl): rooms = RoomMdl.get_all_rooms(session=session) filtered = [ x for x in rooms if len(get_room_devices(uuid=x.uuid, acl=acl, session=session)) > 0 ] return filtered
def get_all_rooms(session): return RoomMdl.get_all_rooms(session=session)
def add_room(item, session): room = RoomMdl(name=item) session.add(room) session.flush() return room
def delete_room(item, session): room = RoomMdl.get_room_with_uuid(item) session.delete(room) session.flush() return room
def get_room_devices(uuid, acl, session): room = RoomMdl.get_room_with_uuid(uuid=uuid, session=session) devices = [x for x in room.devices if x.interface is not None and x.interface.read_acl <= acl] return devices
def process_delete(uuid, session, mods): room = RoomMdl.get_room_with_uuid(uuid=UUID(uuid), session=session) room.devices = [x for x in room.devices if str(x.uuid) not in mods] session.flush()
def get_room_devices(uuid, session): room = RoomMdl.get_room_with_uuid(uuid=UUID(uuid), session=session) devices = room.get_devices(session=session) return devices
def get_room(uuid, session): room = RoomMdl.get_room_with_uuid(uuid=uuid, session=session) if room is None: raise IncorrectTargetException(uuid, RoomMdl) return RoomMdl.get_room_with_uuid(uuid=uuid, session=session)