def datadocs_to_es(datadoc, session=None): title = datadoc.title cells_as_text = [] for cell in datadoc.cells: if cell.cell_type == DataCellType.text: cells_as_text.append(richtext_to_plaintext(cell.context)) elif cell.cell_type == DataCellType.query: cell_title = cell.meta.get("title", "") cell_text = (cell.context if not cell_title else f"{cell_title}\n{cell.context}") cells_as_text.append(cell_text) else: cells_as_text.append("[... additional unparsable content ...]") joined_cells = escape("\n".join(cells_as_text)) # There is no need to compute the list of editors # for public datadoc since everyone is able to see it editors = ([ editor.uid for editor in get_data_doc_editors_by_doc_id(data_doc_id=datadoc.id, session=session) ] if not datadoc.public else []) expand_datadoc = { "id": datadoc.id, "environment_id": datadoc.environment_id, "owner_uid": datadoc.owner_uid, "created_at": DATETIME_TO_UTC(datadoc.created_at), "cells": joined_cells, "title": title, "public": datadoc.public, "readable_user_ids": editors, } return expand_datadoc
def fetch_data_doc_editors(doc_id): with DBSession() as session: doc = datadoc_collab.get_datadoc(doc_id, session=session) if doc: editors = logic.get_data_doc_editors_by_doc_id(doc_id, session=session) editor_dicts = [editor.to_dict() for editor in editors] socketio.emit( "data_doc_editors", (request.sid, editor_dicts), namespace=DATA_DOC_NAMESPACE, broadcast=False, room=request.sid, ) send_data_doc_session_info(doc_id, room=request.sid)
def get_datadoc_editors(doc_id): return logic.get_data_doc_editors_by_doc_id(doc_id)
def _get_datadoc_editors(datadoc, session) -> List[str]: if datadoc is None or datadoc.public: return [] editors = datadoc_logic.get_data_doc_editors_by_doc_id( data_doc_id=datadoc.id, session=session) return [editor.uid for editor in editors]