def _download_media(data, srv, dir_path, settings): """ Downloads the media and saves it """ if srv not in DOWNLOAD_FIEDLS: return for i in DOWNLOAD_FIEDLS[srv]: if not data[i]: continue if not settings[DOWNLOAD_FIEDLS[srv][i][0]]: continue path = DOWNLOAD_FIEDLS[srv][i][1] if srv == 'speakers': path %= make_filename(data['name']), data['id'] elif srv == 'sponsors': path %= make_filename(data['name']), data['id'] elif srv != 'event': path = path % (data['id']) if data[i].find('.') > -1: # add extension ext = data[i].rsplit('.', 1)[1] if ext.find('/') == -1: path += '.' + ext full_path = dir_path + path # make dir cdir = full_path.rsplit('/', 1)[0] if not os.path.isdir(cdir): os.makedirs(cdir) # download and set url = data[i] if not is_downloadable(url): continue try: r = requests.get(url, allow_redirects=True) ext = get_filename_from_cd(r.headers.get('content-disposition'))[1] full_path += ext path += ext open(full_path, 'wb').write(r.content) data[i] = path except Exception: pass
def _download_media(data, srv, dir_path, settings): """ Downloads the media and saves it """ if srv not in DOWNLOAD_FIEDLS: return for i in DOWNLOAD_FIEDLS[srv]: if not data[i]: continue if not settings[DOWNLOAD_FIEDLS[srv][i][0]]: continue path = DOWNLOAD_FIEDLS[srv][i][1] if srv == 'speakers': path %= make_filename(data['name']), data['id'] elif srv == 'sponsors': path %= make_filename(data['name']), data['id'] elif srv != 'event': path = path % (data['id']) if data[i].find('.') > -1: # add extension ext = data[i].rsplit('.', 1)[1] if ext.find('/') == -1: path += '.' + ext full_path = dir_path + path # make dir cdir = full_path.rsplit('/', 1)[0] if not os.path.isdir(cdir): os.makedirs(cdir) # download and set url = data[i] if not is_downloadable(url): continue try: r = requests.get(url, allow_redirects=True) ext = get_filename_from_cd(r.headers.get('content-disposition'))[1] full_path += ext path += ext open(full_path, 'wb').write(r.content) data[i] = path except Exception: pass
def _upload_media(task_handle, event_id, base_path): """ Actually uploads the resources """ global UPLOAD_QUEUE total = len(UPLOAD_QUEUE) ct = 0 for i in UPLOAD_QUEUE: # update progress ct += 1 update_state(task_handle, 'Uploading media (%d/%d)' % (ct, total)) # get upload infos name, model = i['srv'] id_ = i['id'] if name == 'event': item = db.session.query(model).filter_by(id=event_id).first() else: item = db.session.query(model).filter_by(event_id=event_id).filter_by(id=id_).first() # get cur file if i['field'] in ['original', 'large', 'thumbnail', 'small', 'icon']: field = '{}_image_url'.format(i['field']) else: field = '{}_url'.format(i['field']) path = getattr(item, field) if path.startswith('/'): # relative files path = base_path + path if os.path.isfile(path): filename = path.rsplit('/', 1)[1] file = UploadedFile(path, filename) else: file = '' # remove current file setting else: # absolute links try: filename = UPLOAD_PATHS[name][field].rsplit('/', 1)[1] if is_downloadable(path): r = requests.get(path, allow_redirects=True) file = UploadedMemory(r.content, filename) else: file = None except: file = None # don't update current file setting if file is None: continue # upload try: if file == '': raise Exception() key = UPLOAD_PATHS[name][field] if name == 'event': key = key.format(event_id=event_id) else: key = key.format(event_id=event_id, id=id_) print(key) new_url = upload(file, key) except Exception: print(traceback.format_exc()) new_url = None setattr(item, field, new_url) save_to_db(item, msg='Url updated') # clear queue UPLOAD_QUEUE = [] return
def _upload_media(task_handle, event_id, base_path): """ Actually uploads the resources """ global UPLOAD_QUEUE total = len(UPLOAD_QUEUE) ct = 0 for i in UPLOAD_QUEUE: # update progress ct += 1 update_state(task_handle, 'Uploading media (%d/%d)' % (ct, total)) # get upload infos name, model = i['srv'] id_ = i['id'] if name == 'event': item = db.session.query(model).filter_by(id=event_id).first() else: item = db.session.query(model).filter_by(event_id=event_id).filter_by(id=id_).first() # get cur file if i['field'] in ['original', 'large', 'thumbnail', 'small', 'icon']: field = '{}_image_url'.format(i['field']) else: field = '{}_url'.format(i['field']) path = getattr(item, field) if path.startswith('/'): # relative files path = base_path + path if os.path.isfile(path): filename = path.rsplit('/', 1)[1] file = UploadedFile(path, filename) else: file = '' # remove current file setting else: # absolute links try: filename = UPLOAD_PATHS[name][field].rsplit('/', 1)[1] if is_downloadable(path): r = requests.get(path, allow_redirects=True) file = UploadedMemory(r.content, filename) else: file = None except: file = None # don't update current file setting if file is None: continue # upload try: if file == '': raise Exception() key = UPLOAD_PATHS[name][field] if name == 'event': key = key.format(event_id=event_id) else: key = key.format(event_id=event_id, id=id_) print(key) new_url = upload(file, key) except Exception: print(traceback.format_exc()) new_url = None setattr(item, field, new_url) save_to_db(item, msg='Url updated') # clear queue UPLOAD_QUEUE = [] return