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
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, )
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
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)
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)
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
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
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
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
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
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)