Ejemplo n.º 1
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()
Ejemplo n.º 2
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
Ejemplo n.º 3
0
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()
Ejemplo n.º 4
0
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()
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
def get_all_rooms(session):
    return RoomMdl.get_all_rooms(session=session)
Ejemplo n.º 7
0
def add_room(item, session):
    room = RoomMdl(name=item)
    session.add(room)
    session.flush()
    return room
Ejemplo n.º 8
0
def delete_room(item, session):
    room = RoomMdl.get_room_with_uuid(item)
    session.delete(room)
    session.flush()
    return room
Ejemplo n.º 9
0
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
Ejemplo n.º 10
0
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()
Ejemplo n.º 11
0
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
Ejemplo n.º 12
0
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)