From 19d5924fa8b485b59d6fa7f8d6a981916f3a1ef8 2022-09-05 22:08:09 From: Edson Date: 2022-09-05 22:08:09 Subject: [PATCH] v2.9.2 :: Add 'validator name' upload file and multiple_file --- diff --git a/CKAN_JRO-2.9.2.0.tar.gz b/CKAN_JRO-2.9.2.0.tar.gz index 919bfa522c4fb8bd7020ac4684ef7e849430f777..77ecef4fe29e5fcb471853eedb021c4352fdcbfa 100644 GIT binary patch literal 8132 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 literal 8083 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 JhQf!2`akHc+GYR% diff --git a/script/CKAN_JRO/jro_api.py b/script/CKAN_JRO/jro_api.py index 3699242..4f30f81 100755 --- a/script/CKAN_JRO/jro_api.py +++ b/script/CKAN_JRO/jro_api.py @@ -144,6 +144,22 @@ class JROAPI(): # if len(self.str) > 0: # self.dict['format'] = self.str.upper()[1:] + #-------------------------PACKAGE SHOW-----------------------# + try: + dataset_show = getattr(self.ckan.action, 'package_show')(id=dataset_id)['resources'] + except: + _, exc_value, _ = sys.exc_info() + print('ERROR obtaining metadata dataset:: Use the "print" for more information') + return exc_value + + resources_name = [] + for u in dataset_show: + resources_name.append(u['name'].lower()) + + if os.path.basename(file_path).lower() in resources_name: + return 'ERROR:: "%s" file already exist in this dataset' % (os.path.basename(file_path)) + #------------------------------------------------------------# + try: return getattr(self.ckan.action, 'resource_create')(package_id=dataset_id, file_date=file_date, upload=open(file_path, 'rb'), voc_file_type=file_type, name=os.path.basename(file_path), **self.dict) except: @@ -288,7 +304,7 @@ class JROAPI(): else: return "ERROR:: No file(s) found to upload" - def upload_multiple_files(self, dataset_id, path_files, date_files, type_files, **kwargs): + def upload_multiple_files(self, dataset_id, path_files, date_files, type_files, ignore_repetition=False, **kwargs): # Agregar si es interruptido por teclado ''' FINALIDAD: @@ -300,6 +316,18 @@ class JROAPI(): ESTRUCTURA: .upload_multiple_files(dataset_id = , path_files = or , date_files = or , type_files = or , param_1 = , ...) ''' + #-------------------------PACKAGE SHOW-----------------------# + try: + dataset_show = getattr(self.ckan.action, 'package_show')(id=dataset_id)['resources'] + except: + _, exc_value, _ = sys.exc_info() + print('ERROR obtaining metadata dataset:: Use the "print" for more information') + return exc_value + #------------------------------------------------------------# + resources_name = [] + for u in dataset_show: + resources_name.append(u['name'].lower()) + #------------------------------------------------------------# params_dict = {'upload':[], 'name':[]} #if not 'format' in kwargs: @@ -310,14 +338,19 @@ class JROAPI(): path_files.sort() for u in path_files: if os.path.isfile(u): - params_dict['upload'].append(open(u, 'rb')) - params_dict['name'].append(os.path.basename(u)) - #if not 'format' in kwargs: - # format = ''.join(pathlib.Path(u).suffixes) - # if len(format) > 0: - # params_dict['format'].append(format.upper()[1:]) - # else: - # params_dict['format'].append('') + if os.path.basename(u).lower() in resources_name: + if not ignore_repetition: + return 'ERROR:: "%s" file already exist in this dataset' % (os.path.basename(u)) + print('WARRING:: "'+ str(os.path.basename(u)) +'" file was ignored because already exist in this dataset') + else: + params_dict['upload'].append(open(u, 'rb')) + params_dict['name'].append(os.path.basename(u)) + #if not 'format' in kwargs: + # format = ''.join(pathlib.Path(u).suffixes) + # if len(format) > 0: + # params_dict['format'].append(format.upper()[1:]) + # else: + # params_dict['format'].append('') else: return 'File "%s" does not exist' % (u) else: @@ -328,14 +361,19 @@ class JROAPI(): path_order.sort() if path_order: for name in path_order: - params_dict['upload'].append(open(os.path.join(path_files, name), 'rb')) - params_dict['name'].append(name) - #if not 'format' in kwargs: - # format = ''.join(pathlib.Path(name).suffixes) - # if len(format) > 0: - # params_dict['format'].append(format.upper()[1:]) - # else: - # params_dict['format'].append('') + if name.lower() in resources_name: + if not ignore_repetition: + return 'ERROR:: "%s" file already exist in this dataset' % (name) + print('WARRING:: "'+ str(name) +'" file was ignored because already exist in this dataset') + else: + params_dict['upload'].append(open(os.path.join(path_files, name), 'rb')) + params_dict['name'].append(name) + #if not 'format' in kwargs: + # format = ''.join(pathlib.Path(name).suffixes) + # if len(format) > 0: + # params_dict['format'].append(format.upper()[1:]) + # else: + # params_dict['format'].append('') else: return "ERROR:: There aren't files in this directory" else: