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 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()