1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
@@ -9,10 +9,10 import zipfile | |||||
9 | import concurrent.futures |
|
9 | import concurrent.futures | |
10 | import requests |
|
10 | import requests | |
11 | import json |
|
11 | import json | |
12 |
import a |
|
12 | import pathlib | |
|
13 | import uuid | |||
13 | from datetime import datetime |
|
14 | from datetime import datetime | |
14 | from tqdm import tqdm |
|
15 | from tqdm import tqdm | |
15 | from six import string_types |
|
|||
16 |
|
16 | |||
17 | class JROAPI(): |
|
17 | class JROAPI(): | |
18 | """ |
|
18 | """ | |
@@ -134,13 +134,107 class JROAPI(): | |||||
134 |
|
134 | |||
135 | if not os.path.isfile(file_path): |
|
135 | if not os.path.isfile(file_path): | |
136 | return 'File "%s" not exist' % (file_path) |
|
136 | return 'File "%s" not exist' % (file_path) | |
|
137 | ||||
|
138 | if not 'format' in self.dict: | |||
|
139 | self.str = ''.join(pathlib.Path(file_path).suffixes) | |||
|
140 | if len(self.str) > 0: | |||
|
141 | self.dict['format'] = self.str.upper()[1:] | |||
137 |
|
142 | |||
138 | try: |
|
143 | try: | |
139 |
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=file_path. |
|
144 | 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=pathlib.Path(file_path).name, **self.dict) | |
140 | except: |
|
145 | except: | |
141 | _, exc_value, _ = sys.exc_info() |
|
146 | _, exc_value, _ = sys.exc_info() | |
142 | return exc_value |
|
147 | return exc_value | |
|
148 | ||||
|
149 | ||||
|
150 | def upload_multiple_files_advance(self, dataset_id, path_files, file_date, file_type, **kwargs): | |||
|
151 | ''' | |||
|
152 | FINALIDAD: | |||
|
153 | Funcion para subir multiples archivos al repositorio del ROJ. | |||
|
154 | ||||
|
155 | PARAMETROS DISPONIBLES: | |||
|
156 | CONSULTAR: "GUIA DE SCRIPT.pdf" | |||
|
157 | ||||
|
158 | ESTRUCTURA: | |||
|
159 | <access_name>.upload_multiple_files_advance(dataset_id = <class 'str'>, path_files = <class 'list of strings'>, file_date = <class 'str'>, file_type = <class 'str'>, param_1 = <class 'param_1'>, ...) | |||
|
160 | ''' | |||
|
161 | self.list = ['package_id', 'upload', 'voc_file_type', 'name'] | |||
|
162 | ||||
|
163 | for key1, value1 in kwargs.items(): | |||
|
164 | if not key1 in self.list: | |||
|
165 | self.dict[key1] = value1 | |||
|
166 | ||||
|
167 | #---------------------------# | |||
|
168 | if not 'others' in kwargs: | |||
|
169 | self.dict['others'] = '' | |||
|
170 | else: | |||
|
171 | if isinstance(kwargs['others'], list): | |||
|
172 | self.dict['others'] = json.dumps(kwargs['others']) | |||
|
173 | #---------------------------# | |||
|
174 | ||||
|
175 | params_dict = {'upload':[], 'name':[]} | |||
|
176 | #---------------CASO : "path" or "path_list"-----------------# | |||
|
177 | if type(path_files) is list: | |||
|
178 | if len(path_files) != 0: | |||
|
179 | path_files.sort() | |||
|
180 | for u in path_files: | |||
|
181 | if os.path.isfile(u): | |||
|
182 | params_dict['upload'].append(open(u, 'rb')) | |||
|
183 | params_dict['name'].append(pathlib.Path(u).name) | |||
|
184 | else: | |||
|
185 | return 'File "%s" does not exist' % (u) | |||
|
186 | else: | |||
|
187 | return 'ERROR:: "path_list is empty"' | |||
|
188 | elif type(path_files) is str: | |||
|
189 | if os.path.isdir(path_files): | |||
|
190 | path_order = [f for f in os.listdir(path_files) if os.path.isfile(os.path.join(path_files, f))] | |||
|
191 | path_order.sort() | |||
|
192 | if path_order: | |||
|
193 | for name in path_order: | |||
|
194 | params_dict['upload'].append(open(os.path.join(path_files, name), 'rb')) | |||
|
195 | params_dict['name'].append(name) | |||
|
196 | else: | |||
|
197 | return "ERROR:: There aren't files in this directory" | |||
|
198 | else: | |||
|
199 | return 'ERROR:: Directory "%s" does not exist' % (path_files) | |||
|
200 | else: | |||
|
201 | return 'ERROR:: "path_files" must be a str or list' | |||
|
202 | #------------------------------------------------------------# | |||
|
203 | resource_extend = [] | |||
|
204 | files_dict = {} | |||
|
205 | for count, name in enumerate(params_dict['name']): | |||
|
206 | param_list = {"name": name, "file_date": file_date, "voc_file_type": file_type} | |||
|
207 | param_list.update(self.dict) | |||
|
208 | ||||
|
209 | if not 'format' in param_list: | |||
|
210 | format = ''.join(pathlib.Path(name).suffixes) | |||
|
211 | if len(format) > 0: | |||
|
212 | param_list['format'] = format.upper()[1:] | |||
143 |
|
213 | |||
|
214 | resource_extend.append(param_list) | |||
|
215 | files_dict['update__resources__-'+ str(len(params_dict['name'])-count) +'__upload'] = (name, params_dict['upload'][count]) | |||
|
216 | ||||
|
217 | #------------------------------------------------------------# | |||
|
218 | try: | |||
|
219 | uuid.UUID(str(dataset_id), version=4) | |||
|
220 | package_id_or_name = '"id": "' + str(dataset_id) + '"' | |||
|
221 | except ValueError: | |||
|
222 | package_id_or_name = '"name": "' + str(dataset_id) + '"' | |||
|
223 | #------------------------------------------------------------# | |||
|
224 | print('"{}" file(s) found >> uploading'.format(len(params_dict['name']))) | |||
|
225 | try: | |||
|
226 | result = self.ckan.call_action( | |||
|
227 | 'package_revise', | |||
|
228 | {'match': '{'+ str(package_id_or_name) +'}', 'update__resources__extend': json.dumps(resource_extend)}, | |||
|
229 | files=files_dict | |||
|
230 | ) | |||
|
231 | print('Uploaded file(s) successfully') | |||
|
232 | return result | |||
|
233 | except: | |||
|
234 | print('ERROR :: Use the "print" option for more information') | |||
|
235 | _, exc_value, _ = sys.exc_info() | |||
|
236 | return exc_value | |||
|
237 | ||||
144 | def upload_multiple_files(self, dataset_id, path_files, date_files, type_files, **kwargs): |
|
238 | def upload_multiple_files(self, dataset_id, path_files, date_files, type_files, **kwargs): | |
145 | ''' |
|
239 | ''' | |
146 | FINALIDAD: |
|
240 | FINALIDAD: | |
@@ -152,7 +246,10 class JROAPI(): | |||||
152 | ESTRUCTURA: |
|
246 | ESTRUCTURA: | |
153 | <access_name>.upload_multiple_files(dataset_id = <class 'str'>, path_files = <class 'str'> or <class 'list of strings'>, date_files = <class 'str'> or <class 'list of strings'>, type_files = <class 'str'> or <class 'list of strings'>, param_1 = <class 'param_1'>, ...) |
|
247 | <access_name>.upload_multiple_files(dataset_id = <class 'str'>, path_files = <class 'str'> or <class 'list of strings'>, date_files = <class 'str'> or <class 'list of strings'>, type_files = <class 'str'> or <class 'list of strings'>, param_1 = <class 'param_1'>, ...) | |
154 | ''' |
|
248 | ''' | |
155 | params_dict = {'upload':[], 'name':[]} #ADD FORMAT |
|
249 | ||
|
250 | params_dict = {'upload':[], 'name':[]} | |||
|
251 | if not 'format' in kwargs: | |||
|
252 | params_dict.update({'format':[]}) | |||
156 | #---------------CASO : "path" or "path_list"-----------------# |
|
253 | #---------------CASO : "path" or "path_list"-----------------# | |
157 | if type(path_files) is list: |
|
254 | if type(path_files) is list: | |
158 | if len(path_files) != 0: |
|
255 | if len(path_files) != 0: | |
@@ -160,9 +257,15 class JROAPI(): | |||||
160 | for u in path_files: |
|
257 | for u in path_files: | |
161 | if os.path.isfile(u): |
|
258 | if os.path.isfile(u): | |
162 | params_dict['upload'].append(open(u, 'rb')) |
|
259 | params_dict['upload'].append(open(u, 'rb')) | |
163 |
params_dict['name'].append(u. |
|
260 | params_dict['name'].append(pathlib.Path(u).name) | |
|
261 | if not 'format' in kwargs: | |||
|
262 | format = ''.join(pathlib.Path(u).suffixes) | |||
|
263 | if len(format) > 0: | |||
|
264 | params_dict['format'].append(format.upper()[1:]) | |||
|
265 | else: | |||
|
266 | params_dict['format'].append('') | |||
164 | else: |
|
267 | else: | |
165 | return 'File "%s" not exist' % (u) |
|
268 | return 'File "%s" does not exist' % (u) | |
166 | else: |
|
269 | else: | |
167 | return 'ERROR:: "path_list is empty"' |
|
270 | return 'ERROR:: "path_list is empty"' | |
168 | elif type(path_files) is str: |
|
271 | elif type(path_files) is str: | |
@@ -173,10 +276,16 class JROAPI(): | |||||
173 | for name in path_order: |
|
276 | for name in path_order: | |
174 | params_dict['upload'].append(open(os.path.join(path_files, name), 'rb')) |
|
277 | params_dict['upload'].append(open(os.path.join(path_files, name), 'rb')) | |
175 | params_dict['name'].append(name) |
|
278 | params_dict['name'].append(name) | |
|
279 | if not 'format' in kwargs: | |||
|
280 | format = ''.join(pathlib.Path(name).suffixes) | |||
|
281 | if len(format) > 0: | |||
|
282 | params_dict['format'].append(format.upper()[1:]) | |||
|
283 | else: | |||
|
284 | params_dict['format'].append('') | |||
176 | else: |
|
285 | else: | |
177 |
return ' |
|
286 | return "ERROR:: There aren't files in this directory" | |
178 | else: |
|
287 | else: | |
179 | return 'ERROR:: Directory "%s" not exist' % (path_files) |
|
288 | return 'ERROR:: Directory "%s" does not exist' % (path_files) | |
180 | else: |
|
289 | else: | |
181 | return 'ERROR:: "path_files" must be a str or list' |
|
290 | return 'ERROR:: "path_files" must be a str or list' | |
182 | #------------------------------------------------------------# |
|
291 | #------------------------------------------------------------# | |
@@ -217,7 +326,7 class JROAPI(): | |||||
217 | if len(list(set(len_params_dict))) > 1: |
|
326 | if len(list(set(len_params_dict))) > 1: | |
218 | return 'ERROR:: All lists must be the same length: %s' % (len(params_dict['name'])) |
|
327 | return 'ERROR:: All lists must be the same length: %s' % (len(params_dict['name'])) | |
219 | #------------------------------------------------------------# |
|
328 | #------------------------------------------------------------# | |
220 |
|
329 | print('"{}" file(s) found >> uploading'.format(len(params_dict['name']))) | ||
221 | for v in range(len(params_dict['name'])): |
|
330 | for v in range(len(params_dict['name'])): | |
222 | try: |
|
331 | try: | |
223 | send = {} |
|
332 | send = {} | |
@@ -227,11 +336,11 class JROAPI(): | |||||
227 | send[key_no_dict] = value_no_dict |
|
336 | send[key_no_dict] = value_no_dict | |
228 |
|
337 | |||
229 | self.list.append(getattr(self.ckan.action, 'resource_create')(**send)) |
|
338 | self.list.append(getattr(self.ckan.action, 'resource_create')(**send)) | |
230 | print('File "{}" was uploaded successfully'.format(params_dict['name'][v])) |
|
339 | print('File #{} :: "{}" was uploaded successfully'.format(v+1, params_dict['name'][v])) | |
231 | except: |
|
340 | except: | |
232 | _, exc_value, _ = sys.exc_info() |
|
341 | _, exc_value, _ = sys.exc_info() | |
233 | self.list.append(exc_value) |
|
342 | self.list.append(exc_value) | |
234 | print('Error uploading "{}" file'.format(params_dict['name'][v])) |
|
343 | print('File #{} :: Error uploading "{}" file'.format(v+1, params_dict['name'][v])) | |
235 | return self.list |
|
344 | return self.list | |
236 | #------------------------------------------------------------# |
|
345 | #------------------------------------------------------------# | |
237 |
|
346 |
General Comments 0
You need to be logged in to leave comments.
Login now