コード例 #1
0
def add_board_item(board_id, item_type, item_id):
    api_assert(item_type == "data_doc" or item_type == "table",
               "Invalid item type")

    with DBSession() as session:
        assert_can_edit(board_id, session=session)

        board = Board.get(id=board_id, session=session)
        # You can only add item in the same environment as the board
        item_env_ids = []
        if item_type == "data_doc":
            item_env_ids = get_data_doc_environment_ids(item_id,
                                                        session=session)
        else:
            item_env_ids = get_data_table_environment_ids(item_id,
                                                          session=session)

        api_assert(
            board.environment_id in item_env_ids,
            "Board item must be in the same environment as the board",
        )
        api_assert(
            logic.get_item_from_board(
                board_id, item_id, item_type, session=session) is None,
            "Item already exists",
        )

        return logic.add_item_to_board(board_id,
                                       item_id,
                                       item_type,
                                       session=session)
コード例 #2
0
def update_board(board_id, **fields):
    with DBSession() as session:
        assert_can_edit(board_id, session=session)
        board = Board.get(id=board_id, session=session)

        board = logic.update_board(id=board_id, **fields, session=session)
        return board.to_dict(extra_fields=["docs", "tables", "items"])
コード例 #3
0
def add_board_editor(
    board_id,
    uid,
    read=None,
    write=None,
):
    with DBSession() as session:
        assert_can_edit(board_id, session=session)
        editor = logic.create_board_editor(board_id=board_id,
                                           uid=uid,
                                           read=read,
                                           write=write,
                                           commit=False)

        access_request = logic.get_board_access_request_by_board_id(
            board_id=board_id, uid=uid)
        if access_request:
            logic.remove_board_access_request(board_id=board_id,
                                              uid=uid,
                                              commit=False)

        session.commit()

        logic.update_es_boards_by_id(board_id)
        send_add_board_editor_notification(board_id, uid, read, write)
        return editor
コード例 #4
0
def delete_board(board_id, **fields):
    with DBSession() as session:
        assert_can_edit(board_id, session=session)
        board = Board.get(id=board_id, session=session)
        api_assert(not board.board_type == "favorite",
                   "Cannot delete favorite")

        Board.delete(board.id, session=session)
コード例 #5
0
def move_board_item(board_id, from_index, to_index):
    if from_index != to_index:
        with DBSession() as session:
            assert_can_edit(board_id, session=session)
            logic.move_item_order(board_id,
                                  from_index,
                                  to_index,
                                  session=session)
コード例 #6
0
def delete_board_item(board_id, item_type, item_id):
    api_assert(item_type == "data_doc" or item_type == "table",
               "Invalid item type")
    with DBSession() as session:
        assert_can_edit(board_id, session=session)

        board = Board.get(id=board_id, session=session)
        logic.remove_item_from_board(board.id,
                                     item_id,
                                     item_type,
                                     session=session)
コード例 #7
0
def update_board_item_fields(board_item_id, **fields):
    with DBSession() as session:
        board_item = BoardItem.get(id=board_item_id, session=session)
        api_assert(
            board_item,
            "List item does not exist",
        )
        assert_can_edit(board_item.parent_board_id, session=session)

        return logic.update_board_item(id=board_item_id,
                                       **fields,
                                       session=session)
コード例 #8
0
def delete_board_editor(id, ):
    with DBSession() as session:
        editor = logic.get_board_editor_by_id(id, session=session)

        api_assert(
            editor,
            "List editor does not exist",
        )
        assert_can_edit(editor.board_id, session=session)

        return logic.delete_board_editor(id=id,
                                         board_id=editor.board_id,
                                         session=session)
コード例 #9
0
def update_board_editor(
    id,
    write=None,
    read=None,
):
    with DBSession() as session:
        editor = logic.get_board_editor_by_id(id, session=session)

        api_assert(
            editor,
            "List editor does not exist",
        )
        assert_can_edit(editor.board_id, session=session)

        return logic.update_board_editor(id, read, write, session=session)
コード例 #10
0
def add_board_item(board_id, item_type, item_id):
    api_assert(
        item_type in ["data_doc", "table", "board", "query"],
        "Invalid item type",
    )

    with DBSession() as session:
        assert_can_edit(board_id, session=session)
        api_assert(
            not (item_type == "board" and item_id == board_id),
            "List cannot be added to itself",
        )

        board = Board.get(id=board_id, session=session)
        # You can only add item in the same environment as the board
        item_env_ids = []
        if item_type == "data_doc":
            item_env_ids = get_data_doc_environment_ids(item_id,
                                                        session=session)
        elif item_type == "table":
            item_env_ids = get_data_table_environment_ids(item_id,
                                                          session=session)
        elif item_type == "board":
            item_env_ids = get_board_environment_ids(item_id, session=session)
        else:
            item_env_ids = [
                env.id
                for env in get_environments_by_execution_id(item_id,
                                                            session=session)
            ]

        api_assert(
            board.environment_id in item_env_ids,
            "List item must be in the same environment as the list",
        )
        api_assert(
            logic.get_item_from_board(
                board_id, item_id, item_type, session=session) is None,
            "Item already exists",
        )

        return logic.add_item_to_board(board_id,
                                       item_id,
                                       item_type,
                                       session=session)
コード例 #11
0
def remove_board_access_request(
    board_id,
    uid,
):
    assert_can_edit(board_id)
    logic.remove_board_access_request(board_id=board_id, uid=uid)
コード例 #12
0
def get_board_access_requests(board_id):
    assert_can_edit(board_id)
    return logic.get_board_access_requests_by_board_id(board_id)