def user_can_access_query_execution(uid, execution_id, session=None): execution = query_execution_logic.get_query_execution_by_id( execution_id, session=session ) if execution.uid == uid: return True execution_data_doc_ids = query_execution_logic.get_datadoc_id_from_query_execution_id( execution_id, session=session ) if execution_data_doc_ids: for data_doc_pair in execution_data_doc_ids: doc_id, cell_id = data_doc_pair if user_can_read(doc_id=doc_id, uid=uid, session=session): return True return ( QueryExecutionViewer.get(uid=uid, query_execution_id=execution_id) is not None )
def get_datadoc_ids_by_query_execution(query_execution_id): with DBSession() as session: verify_query_execution_permission(query_execution_id, session=session) pair_id = next( iter( logic.get_datadoc_id_from_query_execution_id( query_execution_id, session=session)), None, ) if pair_id is None: return None doc_id, cell_id = pair_id cell_title = None if user_can_read(doc_id, current_user.id, session=session): cell_info = datadoc_logic.get_data_cell_by_id(cell_id, session=session) if cell_info: cell_title = cell_info.meta.get("title") return {"doc_id": doc_id, "cell_id": cell_id, "cell_title": cell_title}