Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
def get_datadoc_editors(doc_id):
    return logic.get_data_doc_editors_by_doc_id(doc_id)
Ejemplo n.º 4
0
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]