diff --git a/cubicweb_rodolf/import_data.py b/cubicweb_rodolf/import_data.py index 8eb2bf70e04c9c5d84371b5e601a9d8600757a03_Y3ViaWN3ZWJfcm9kb2xmL2ltcG9ydF9kYXRhLnB5..62e286eb878fab7090aa0209ed3bec8c0810fe4b_Y3ViaWN3ZWJfcm9kb2xmL2ltcG9ydF9kYXRhLnB5 100644 --- a/cubicweb_rodolf/import_data.py +++ b/cubicweb_rodolf/import_data.py @@ -143,7 +143,7 @@ f"from {dataservice.dc_title()} to populate {import_procedure.dc_title()}" ) process_to_apply = cnx.vreg["rodolf.appobject.processtype"].select( - import_recipe.process_type, req=cnx + import_recipe.use_process[0].regid, req=cnx ) rdf_graph = process_to_apply(import_process, log) log.info(f"Data was successfully downloaded from {dataservice.dc_title()}") diff --git a/cubicweb_rodolf/migration/0.5.0_Any.py b/cubicweb_rodolf/migration/0.5.0_Any.py index 8eb2bf70e04c9c5d84371b5e601a9d8600757a03_Y3ViaWN3ZWJfcm9kb2xmL21pZ3JhdGlvbi8wLjUuMF9BbnkucHk=..62e286eb878fab7090aa0209ed3bec8c0810fe4b_Y3ViaWN3ZWJfcm9kb2xmL21pZ3JhdGlvbi8wLjUuMF9BbnkucHk= 100644 --- a/cubicweb_rodolf/migration/0.5.0_Any.py +++ b/cubicweb_rodolf/migration/0.5.0_Any.py @@ -1,1 +1,30 @@ +from functools import cache + +add_entity_type("ProcessType") +add_relation_definition("ImportRecipe", "use_process", "ProcessType") + +process_type_label_map = { + "default": "Processus d'import standard", + "default-dryrun": "Processus d'import standard sans publication", +} + + +@cache +def get_process(process_type): + return cnx.create_entity( + "ProcessType", + name=process_type_label_map.get(process_type, process_type), + regid=process_type, + activated=False, + ) + + +for recipe in cnx.find("ImportRecipe").entities(): + # create a deactivated process + # the process, if the corresponding code exists, will be activated on + # startup + process = get_process(recipe.process_type) + recipe.cw_set(use_process=process) + +drop_attribute("ImportRecipe", "process_type") sync_schema_props_perms() diff --git a/cubicweb_rodolf/schema.py b/cubicweb_rodolf/schema.py index 8eb2bf70e04c9c5d84371b5e601a9d8600757a03_Y3ViaWN3ZWJfcm9kb2xmL3NjaGVtYS5weQ==..62e286eb878fab7090aa0209ed3bec8c0810fe4b_Y3ViaWN3ZWJfcm9kb2xmL3NjaGVtYS5weQ== 100644 --- a/cubicweb_rodolf/schema.py +++ b/cubicweb_rodolf/schema.py @@ -70,11 +70,7 @@ name = String(required=True) dataservice = SubjectRelation("DataService", cardinality="1*", composite="object") graph_uri = String() - process_type = String( - required=True, - vocabulary=["default", "default-dryrun"], - default="default", - ) + use_process = SubjectRelation("ProcessType", cardinality="1*", composite="object") class ImportProcess(WorkflowableEntityType): diff --git a/test/test_importprocedure.py b/test/test_importprocedure.py index 8eb2bf70e04c9c5d84371b5e601a9d8600757a03_dGVzdC90ZXN0X2ltcG9ydHByb2NlZHVyZS5weQ==..62e286eb878fab7090aa0209ed3bec8c0810fe4b_dGVzdC90ZXN0X2ltcG9ydHByb2NlZHVyZS5weQ== 100644 --- a/test/test_importprocedure.py +++ b/test/test_importprocedure.py @@ -32,6 +32,7 @@ self.fakeredis = fakeredis.FakeStrictRedis() def _create_test_data(self, cnx): + process_dryrun = cnx.find("ProcessFunction", regid="default-dryrun").one() ds1 = cnx.create_entity( "DataService", data_url="https://dbpedia.org/resource/Leonardo_da_Vinci", @@ -41,7 +42,7 @@ "ImportRecipe", name="IR1", dataservice=[ds1], - process_type="default-dryrun", + use_process=process_dryrun, ) ds2 = cnx.create_entity( "DataService", @@ -52,7 +53,7 @@ "ImportRecipe", name="IR2", dataservice=[ds2], - process_type="default-dryrun", + use_process=process_dryrun, ) importprocedure = cnx.create_entity( "ImportProcedure", diff --git a/test/test_rodolf.py b/test/test_rodolf.py index 8eb2bf70e04c9c5d84371b5e601a9d8600757a03_dGVzdC90ZXN0X3JvZG9sZi5weQ==..62e286eb878fab7090aa0209ed3bec8c0810fe4b_dGVzdC90ZXN0X3JvZG9sZi5weQ== 100644 --- a/test/test_rodolf.py +++ b/test/test_rodolf.py @@ -74,7 +74,7 @@ "ImportRecipe", name="Ma recette", dataservice=[dataservice], - process_type="default-dryrun", + use_process=cnx.find("ProcessType", regid="default-dryrun").one(), ) with open(self.datapath("dboPerson.rdf"), "rb") as fp: file = cnx.create_entity(