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)
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"])
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
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)
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)
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)
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)
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)
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)
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)
def remove_board_access_request( board_id, uid, ): assert_can_edit(board_id) logic.remove_board_access_request(board_id=board_id, uid=uid)
def get_board_access_requests(board_id): assert_can_edit(board_id) return logic.get_board_access_requests_by_board_id(board_id)