|  | 
|  | 1 | +from prefect import flow | 
|  | 2 | + | 
|  | 3 | +import utils | 
|  | 4 | +from configuration.config import settings | 
|  | 5 | +from flows.dataset_workflows.dataverse_deletion import dataverse_metadata_deletion | 
|  | 6 | +from tasks.harvest_tasks import oai_harvest_metadata | 
|  | 7 | + | 
|  | 8 | + | 
|  | 9 | +@flow(name="Dataverse Deleted Pipeline") | 
|  | 10 | +def dataverse_deletion_pipeline(settings_dict_name: str, | 
|  | 11 | +                                target_url: str = None, | 
|  | 12 | +                                target_key: str = None, | 
|  | 13 | +                                do_harvest: bool = True | 
|  | 14 | +                                ): | 
|  | 15 | +    """ Deletion pipeline dedicated to the Dataverse to Dataverse workflow. | 
|  | 16 | +
 | 
|  | 17 | +    :param do_harvest: Boolean stating if the dataset metadata should be | 
|  | 18 | +     harvested before ingestion. | 
|  | 19 | +    :param target_url: Optional target dataverse url. | 
|  | 20 | +    :param target_key: API key of the optional target dataverse. | 
|  | 21 | +    :param settings_dict_name: string, name of the settings you wish to use | 
|  | 22 | +    """ | 
|  | 23 | +    settings_dict = getattr(settings, settings_dict_name) | 
|  | 24 | + | 
|  | 25 | +    if target_url: | 
|  | 26 | +        settings_dict.DESTINATION_DATAVERSE_URL = target_url | 
|  | 27 | + | 
|  | 28 | +    if target_key: | 
|  | 29 | +        settings_dict.DESTINATION_DATAVERSE_API_KEY = target_key | 
|  | 30 | + | 
|  | 31 | + | 
|  | 32 | +    minio_client = utils.create_s3_client() | 
|  | 33 | + | 
|  | 34 | +    if hasattr(settings_dict, | 
|  | 35 | +               'OAI_SET') and settings_dict.OAI_SET and do_harvest: | 
|  | 36 | +        oai_harvest_metadata( | 
|  | 37 | +            settings.METADATA_PREFIX, | 
|  | 38 | +            f'{settings_dict.SOURCE_DATAVERSE_URL}/oai', | 
|  | 39 | +            settings_dict.BUCKET_NAME, | 
|  | 40 | +            'ListIdentifiers', | 
|  | 41 | +            'start_harvest', | 
|  | 42 | +            settings_dict.OAI_SET, | 
|  | 43 | +            settings_dict.FROM | 
|  | 44 | +        ) | 
|  | 45 | + | 
|  | 46 | +    elif do_harvest: | 
|  | 47 | +        oai_harvest_metadata( | 
|  | 48 | +            settings.METADATA_PREFIX, | 
|  | 49 | +            f'{settings_dict.SOURCE_DATAVERSE_URL}/oai', | 
|  | 50 | +            settings_dict.BUCKET_NAME, | 
|  | 51 | +            'ListIdentifiers', | 
|  | 52 | +            'start_harvest' | 
|  | 53 | +        ) | 
|  | 54 | +    utils.identifier_list_workflow_executor( | 
|  | 55 | +        dataverse_metadata_deletion, | 
|  | 56 | +        settings_dict, | 
|  | 57 | +        minio_client, | 
|  | 58 | +        "identifiers-deleted.json", | 
|  | 59 | +    ) | 
0 commit comments