示例#1
0
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
示例#2
0
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()