# HG changeset patch # User Fabien Amarger <fabien.amarger@logilab.fr> # Date 1708961725 -3600 # Mon Feb 26 16:35:25 2024 +0100 # Node ID a633599acb05f833d0bb1a6817a686d7807b7b55 # Parent a626feac4ea4c29a9fdb11bcadd9d55523f557e9 feat(process): Add default dry run process type diff --git a/cubicweb_rodolf/entities.py b/cubicweb_rodolf/entities.py --- a/cubicweb_rodolf/entities.py +++ b/cubicweb_rodolf/entities.py @@ -19,10 +19,11 @@ from datetime import datetime, timedelta import pytz -from cubicweb import NoResultError +from cubicweb import NoResultError, Binary from cubicweb.entities import AnyEntity from rdf_data_manager import VirtuosoCredentials +from rdflib import Graph TIMEDELTA_REFRESH = { @@ -104,3 +105,20 @@ except NoResultError: return True return False + + +class ImportProcess(AnyEntity): + __regid__ = "ImportProcess" + + def update_dataset(self, graph: Graph): + dataset_file = self._cw.create_entity( + "File", + title=f"Graph file for ImportProcess#{self.eid}", + data=Binary(graph.serialize(format="ttl").encode("utf8")), + data_name=f"data_ImportProcess_{self.eid}.ttl", + data_format="text/turtle", + ) + self.cw_set( + has_output_dataset=dataset_file, + ) + return dataset_file diff --git a/cubicweb_rodolf/sobjects/process_type_registry.py b/cubicweb_rodolf/sobjects/process_type_registry.py --- a/cubicweb_rodolf/sobjects/process_type_registry.py +++ b/cubicweb_rodolf/sobjects/process_type_registry.py @@ -19,16 +19,7 @@ import_procedure = import_process.import_procedure[0] dataservice = import_recipe.dataservice[0] graph = get_graph_from_url(dataservice.data_url, log) - dataset_file = self._cw.create_entity( - "File", - title=f"Graph file for ImportProcess#{import_process.eid}", - data=Binary(graph.serialize(format="ttl").encode("utf8")), - data_name=f"data_ImportProcess_{import_process.eid}.ttl", - data_format="text/turtle", - ) - import_process.cw_set( - has_output_dataset=dataset_file, - ) + dataset_file = import_process.update_dataset(graph) upload_graph_to_sparql_endpoint( import_procedure, graph, @@ -37,3 +28,15 @@ log, ) return graph + + +class DefaultDryRunProcessType(AppObject): + __registry__ = "rodolf.appobject.processtype" + __regid__ = "default-dryrun" + + def __call__(self, import_process: ImportProcess, log: logging.Logger) -> Graph: + import_recipe = import_process.import_recipe[0] + dataservice = import_recipe.dataservice[0] + graph = get_graph_from_url(dataservice.data_url, log) + import_process.update_dataset(graph) + return graph