diff --git a/cubicweb_rodolf/entities.py b/cubicweb_rodolf/entities.py index a626feac4ea4c29a9fdb11bcadd9d55523f557e9_Y3ViaWN3ZWJfcm9kb2xmL2VudGl0aWVzLnB5..a633599acb05f833d0bb1a6817a686d7807b7b55_Y3ViaWN3ZWJfcm9kb2xmL2VudGl0aWVzLnB5 100644 --- a/cubicweb_rodolf/entities.py +++ b/cubicweb_rodolf/entities.py @@ -19,7 +19,7 @@ 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 @@ -23,6 +23,7 @@ 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 index a626feac4ea4c29a9fdb11bcadd9d55523f557e9_Y3ViaWN3ZWJfcm9kb2xmL3NvYmplY3RzL3Byb2Nlc3NfdHlwZV9yZWdpc3RyeS5weQ==..a633599acb05f833d0bb1a6817a686d7807b7b55_Y3ViaWN3ZWJfcm9kb2xmL3NvYmplY3RzL3Byb2Nlc3NfdHlwZV9yZWdpc3RyeS5weQ== 100644 --- 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