def update_data_cell( id, commit=True, session=None, **fields, ): data_cell = get_data_cell_by_id(id, session=session) if not data_cell: return if "meta" in fields: fields["meta"] = sanitize_data_cell_meta( data_cell.cell_type.name, fields["meta"] ) updated = update_model_fields( data_cell, skip_if_value_none=True, field_names=["meta", "context"], **fields ) if updated: data_cell.updated_at = datetime.datetime.now() data_cell.doc.updated_at = datetime.datetime.now() if commit: session.commit() if data_cell.doc: update_es_data_doc_by_id(data_cell.doc.id) return data_cell
def create_data_cell(cell_type=None, context=None, meta=None, commit=True, session=None): assert cell_type in cell_types, "Invalid cell type" assert isinstance(context, str), "Context must be string" processed_meta = sanitize_data_cell_meta(cell_type, meta) data_cell = DataCell( cell_type=cell_type, context=context, meta=processed_meta, ) session.add(data_cell) if commit: session.commit() data_cell.id if data_cell.cell_type == DataCellType.query: update_es_query_cell_by_id(data_cell.id) else: session.flush() return data_cell