Exemple #1
0
 def make_backup_google_drive(self, ts, name, dump_stream, info_file,
                              info_file_content, cloud_params):
     # Upload two backup objects to Google Drive
     GoogleDriveService = self.env[
         "ir.config_parameter"].get_google_drive_service()
     folder_id = self.env["ir.config_parameter"].get_param(
         "odoo_backup_sh_google_disk.google_disk_folder_id")
     db_metadata = {
         "name":
         compute_backup_filename(name, ts,
                                 info_file_content.get("encrypted")),
         "parents": [folder_id],
     }
     info_metadata = {
         "name": compute_backup_info_filename(name, ts),
         "parents": [folder_id],
     }
     db_mimetype = "application/zip"
     info_mimetype = "text/plain"
     dump_stream.seek(0)
     info_file.seek(0)
     for obj, mimetype, metadata in [
         [dump_stream, db_mimetype, db_metadata],
         [info_file, info_mimetype, info_metadata],
     ]:
         media = MediaIoBaseUpload(obj, mimetype, resumable=True)
         GoogleDriveService.files().create(body=metadata,
                                           media_body=media,
                                           fields="id").execute()
 def make_backup_dropbox(self, ts, name, dump_stream, info_file, info_file_content, cloud_params):
     # Upload two backup objects to Dropbox
     DropboxService = self.env['ir.config_parameter'].get_dropbox_service()
     folder_path = self.env['ir.config_parameter'].get_param("odoo_backup_sh_dropbox.dropbox_folder_path")
     info_file_size = info_file.tell()
     dump_stream.seek(0)
     info_file.seek(0)
     for obj, obj_name, file_size in \
             [[dump_stream, compute_backup_filename(name, ts, info_file_content.get('encrypted')), info_file_content.get("backup_size") * 1024 * 1024],
              [info_file, compute_backup_info_filename(name, ts), info_file_size]]:
         # The full path to upload the file to, including the file name
         full_path = "{folder_path}/{file_name}".format(
             folder_path=folder_path,
             file_name=obj_name,
         )
         # from here: https://www.dropboxforum.com/t5/API-Support-Feedback/python-upload-big-file-example/m-p/166627/highlight/true#M6013
         if file_size <= CHUNK_SIZE:
             DropboxService.files_upload(obj.read(), full_path)
         else:
             upload_session_start_result = DropboxService.files_upload_session_start(obj.read(CHUNK_SIZE))
             cursor = UploadSessionCursor(session_id=upload_session_start_result.session_id, offset=obj.tell())
             commit = CommitInfo(path=full_path)
             while obj.tell() < file_size:
                 if ((file_size - obj.tell()) <= CHUNK_SIZE):
                     DropboxService.files_upload_session_finish(obj.read(CHUNK_SIZE), cursor, commit)
                 else:
                     DropboxService.files_upload_session_append(obj.read(CHUNK_SIZE), cursor.session_id,
                                                                cursor.offset)
                     cursor.offset = obj.tell()