コード例 #1
0
def insert_data_cell(doc_id,
                     index,
                     cell_type,
                     context=None,
                     meta=None,
                     sid="",
                     session=None):
    assert_can_write(doc_id, session=session)
    verify_data_doc_permission(doc_id, session=session)

    data_cell = logic.create_data_cell(cell_type=cell_type,
                                       context=context,
                                       meta=meta,
                                       commit=False,
                                       session=session)
    logic.insert_data_doc_cell(data_doc_id=doc_id,
                               cell_id=data_cell.id,
                               index=index,
                               session=session)
    data_cell_dict = data_cell.to_dict()
    socketio.emit(
        "data_cell_inserted",
        (
            sid,
            index,
            data_cell_dict,
        ),
        namespace=DATA_DOC_NAMESPACE,
        room=doc_id,
        broadcast=True,
    )

    return data_cell_dict
コード例 #2
0
ファイル: datadoc.py プロジェクト: meowcodes/querybook
def update_datadoc_schedule(id, cron=None, enabled=None, kwargs=None):
    if kwargs is not None:
        kwargs_valid, kwargs_valid_reason = validate_datadoc_schedule_config(
            kwargs)
        api_assert(kwargs_valid, kwargs_valid_reason)
    if cron is not None:
        api_assert(validate_cron(cron), "Invalid cron expression")

    schedule_name = schedule_logic.get_data_doc_schedule_name(id)
    with DBSession() as session:
        assert_can_write(id, session=session)

        schedule = schedule_logic.get_task_schedule_by_name(schedule_name,
                                                            session=session)
        api_assert(schedule, "Schedule does not exist")
        verify_data_doc_permission(id, session=session)

        updated_fields = {}
        if cron is not None:
            updated_fields["cron"] = cron
        if enabled is not None:
            updated_fields["enabled"] = enabled
        if kwargs is not None:
            updated_fields["kwargs"] = {
                **kwargs,
                "user_id": current_user.id,
                "doc_id": id,
            }

        return schedule_logic.update_task_schedule(
            schedule.id,
            session=session,
            **updated_fields,
        )
コード例 #3
0
def get_datadoc_schedule_run(id):
    with DBSession() as session:
        assert_can_read(id, session=session)
        verify_data_doc_permission(id, session=session)

        runs, _ = schedule_logic.get_task_run_record_run_by_name(
            name=get_data_doc_schedule_name(id), session=session)
        return runs
コード例 #4
0
ファイル: datadoc.py プロジェクト: meowcodes/querybook
def run_data_doc(id):
    schedule_name = schedule_logic.get_data_doc_schedule_name(id)
    with DBSession() as session:
        assert_can_write(id, session=session)
        verify_data_doc_permission(id, session=session)
        schedule = schedule_logic.get_task_schedule_by_name(schedule_name,
                                                            session=session)
        api_assert(schedule, "Schedule does not exist")
        run_and_log_scheduled_task(schedule.id, session=session)
コード例 #5
0
ファイル: datadoc.py プロジェクト: meowcodes/querybook
def delete_datadoc_schedule(id):
    schedule_name = schedule_logic.get_data_doc_schedule_name(id)
    with DBSession() as session:
        assert_can_write(id, session=session)
        verify_data_doc_permission(id, session=session)

        schedule = schedule_logic.get_task_schedule_by_name(schedule_name,
                                                            session=session)
        if schedule:
            schedule_logic.delete_task_schedule(schedule.id, session=session)
コード例 #6
0
ファイル: datadoc.py プロジェクト: meowcodes/querybook
def get_datadoc_schedule(id):
    with DBSession() as session:
        assert_can_read(id, session=session)
        verify_data_doc_permission(id, session=session)

        schedule_name = schedule_logic.get_data_doc_schedule_name(id)
        schedule = schedule_logic.get_task_schedule_by_name(schedule_name,
                                                            session=session)
        if not schedule:
            return None

        schedule_dict = schedule.to_dict()
        schedule_dict["kwargs"] = convert_if_legacy_datadoc_schedule(
            schedule_dict["kwargs"])
        return schedule_dict
コード例 #7
0
ファイル: datadoc.py プロジェクト: meowcodes/querybook
def clone_data_doc(id):
    with DBSession() as session:
        assert_can_read(id, session=session)
        try:
            verify_data_doc_permission(id, session=session)
            data_doc = logic.clone_data_doc(id=id,
                                            owner_uid=current_user.id,
                                            session=session)
            doc_dict = data_doc.to_dict(with_cells=True)
        except AssertionError as e:
            LOG.debug("Assert error")
            LOG.debug(e)
            api_assert(False, str(e))

        return doc_dict
コード例 #8
0
def delete_data_cell(doc_id, cell_id, sid="", session=None):
    assert_can_write(doc_id, session=session)
    verify_data_doc_permission(doc_id, session=session)
    logic.delete_data_doc_cell(data_doc_id=doc_id,
                               data_cell_id=int(cell_id),
                               session=session)

    socketio.emit(
        "data_cell_deleted",
        (
            sid,
            cell_id,
        ),
        namespace=DATA_DOC_NAMESPACE,
        room=doc_id,
        broadcast=True,
    )

    return True
コード例 #9
0
def update_datadoc(doc_id, fields, sid="", session=None):
    # Check to see if author has permission
    assert_can_write(doc_id, session=session)
    verify_data_doc_permission(doc_id, session=session)
    doc = logic.update_data_doc(
        id=doc_id,
        session=session,
        **fields,
    )
    doc_dict = doc.to_dict()

    socketio.emit(
        "data_doc_updated",
        (
            sid,
            doc_dict,
        ),
        namespace=DATA_DOC_NAMESPACE,
        room=doc_id,
        broadcast=True,
    )

    return doc_dict
コード例 #10
0
def move_data_cell(doc_id, from_index, to_index, sid="", session=None):
    assert_can_write(doc_id, session=session)
    verify_data_doc_permission(doc_id, session=session)
    logic.move_data_doc_cell(
        data_doc_id=doc_id,
        from_index=int(from_index),
        to_index=int(to_index),
        session=session,
    )

    socketio.emit(
        "data_cell_moved",
        (
            sid,
            from_index,
            to_index,
        ),
        namespace=DATA_DOC_NAMESPACE,
        room=doc_id,
        broadcast=True,
    )

    # Should we return data instead?
    return True
コード例 #11
0
def get_dag_export(id):
    assert_can_read(id)
    verify_data_doc_permission(id)
    return logic.get_dag_export_by_data_doc_id(data_doc_id=id)