def take_backups_dropbox(): did_not_upload, error_log = [], [] try: from frappe.integrations.doctype.dropbox_backup.dropbox_backup import backup_to_dropbox did_not_upload, error_log = backup_to_dropbox() if did_not_upload: raise Exception send_email(True, "Dropbox") except Exception: file_and_error = [" - ".join(f) for f in zip(did_not_upload, error_log)] error_message = ("\n".join(file_and_error) + "\n" + frappe.get_traceback()) frappe.errprint(error_message) send_email(False, "Dropbox", error_message)
def take_backups_dropbox(): did_not_upload, error_log = [], [] try: from frappe.integrations.doctype.dropbox_backup.dropbox_backup import backup_to_dropbox did_not_upload, error_log = backup_to_dropbox() if did_not_upload: raise Exception send_email(True, "Dropbox") except Exception: file_and_error = [ " - ".join(f) for f in zip(did_not_upload, error_log) ] error_message = ("\n".join(file_and_error) + "\n" + frappe.get_traceback()) frappe.errprint(error_message) send_email(False, "Dropbox", error_message)
sess = session.DropboxSession(frappe.conf.dropbox_access_key, frappe.conf.dropbox_secret_key, "app_folder") return sess def upload_file_to_dropbox(filename, folder, dropbox_client): from dropbox import rest size = os.stat(filename).st_size with open(filename, 'r') as f: # if max packet size reached, use chunked uploader max_packet_size = 4194304 if size > max_packet_size: uploader = dropbox_client.get_chunked_uploader(f, size) while uploader.offset < size: try: uploader.upload_chunked() uploader.finish(folder + "/" + os.path.basename(filename), overwrite=True) except rest.ErrorResponse: pass else: dropbox_client.put_file(folder + "/" + os.path.basename(filename), f, overwrite=True) if __name__ == "__main__": backup_to_dropbox()
except: frappe.msgprint(_("Please install dropbox python module"), raise_exception=1) if not (frappe.conf.dropbox_access_key or frappe.conf.dropbox_secret_key): frappe.throw(_("Please set Dropbox access keys in your site config")) sess = session.DropboxSession(frappe.conf.dropbox_access_key, frappe.conf.dropbox_secret_key, "app_folder") return sess def upload_file_to_dropbox(filename, folder, dropbox_client): from dropbox import rest size = os.stat(filename).st_size with open(filename, 'r') as f: # if max packet size reached, use chunked uploader max_packet_size = 4194304 if size > max_packet_size: uploader = dropbox_client.get_chunked_uploader(f, size) while uploader.offset < size: try: uploader.upload_chunked() uploader.finish(folder + "/" + os.path.basename(filename), overwrite=True) except rest.ErrorResponse: pass else: dropbox_client.put_file(folder + "/" + os.path.basename(filename), f, overwrite=True) if __name__=="__main__": backup_to_dropbox()