Merge branch 'master' into edge

Conflicts:
	setup/doctype/backup_manager/backup_dropbox.py
This commit is contained in:
Anand Doshi
2013-03-22 18:43:47 +05:30
10 changed files with 64 additions and 105 deletions

View File

@@ -61,7 +61,7 @@ def dropbox_callback(oauth_token=None, not_approved=False):
webnotes.response['page_name'] = 'message.html'
def backup_to_dropbox():
from dropbox import client, session, rest
from dropbox import client, session
from conf import dropbox_access_key, dropbox_secret_key
from webnotes.utils.backups import new_backup
if not webnotes.conn:
@@ -81,24 +81,23 @@ def backup_to_dropbox():
upload_file_to_dropbox(filename, "database", dropbox_client)
response = dropbox_client.metadata("/files")
# upload files to files folder
filename = os.path.join(get_base_path(), "public", "files")
for filename in os.listdir(filename):
path = os.path.join(get_base_path(), "public", "files")
for filename in os.listdir(path):
found = False
filepath = os.path.join(path, filename)
for file_metadata in response["contents"]:
if filename==os.path.basename(file_metadata["path"]):
if os.stat(filename).st_size==file_metadata["bytes"]:
found=True
if os.path.basename(filepath) == os.path.basename(file_metadata["path"]) and os.stat(filepath).st_size == int(file_metadata["bytes"]):
found = True
break
if not found:
upload_file_to_dropbox(os.path.join(get_base_path(),"public", "files", filename), "files", dropbox_client)
upload_file_to_dropbox(filepath, "files", dropbox_client)
def get_dropbox_session():
from dropbox import session
try:
from conf import dropbox_access_key, dropbox_secret_key
except ImportError, e:
except ImportError:
webnotes.msgprint(_("Please set Dropbox access keys in") + " conf.py",
raise_exception=True)
sess = session.DropboxSession(dropbox_access_key, dropbox_secret_key, "app_folder")
@@ -113,11 +112,11 @@ def upload_file_to_dropbox(filename, folder, dropbox_client):
while uploader.offset < size:
try:
uploader.upload_chunked()
uploader.finish(folder + '/' + os.path.basename(filename), overwrite='True')
except rest.ErrorResponse, e:
uploader.finish(os.path.join(folder, os.path.basename(filename)), overwrite=True)
except rest.ErrorResponse:
pass
else:
response = dropbox_client.put_file(folder + "/" + os.path.basename(filename), f, overwrite=True)
dropbox_client.put_file(os.path.join(folder, os.path.basename(filename)), f, overwrite=True)
if __name__=="__main__":
backup_to_dropbox()

View File

@@ -51,8 +51,6 @@ def upload_files(name, mimetype, service, folder_id):
def backup_to_gdrive():
from webnotes.utils.backups import new_backup
found_database = False
found_files = False
if not webnotes.conn:
webnotes.connect()
flow = get_gdrive_flow()
@@ -73,10 +71,11 @@ def backup_to_gdrive():
# upload files to files folder
path = os.path.join(get_base_path(), "public", "files")
for files in os.listdir(path):
filename = path + "/" + files
for filename in os.listdir(path):
found = False
filepath = os.path.join(path, filename)
ext = filename.split('.')[-1]
size = os.path.getsize(filename)
size = os.path.getsize(filepath)
if ext == 'gz' or ext == 'gzip':
mimetype = 'application/x-gzip'
else:
@@ -88,11 +87,11 @@ def backup_to_gdrive():
**param).execute()
for child in children.get('items', []):
file = drive_service.files().get(fileId=child['id']).execute()
if files == file['title'] and size == int(file['fileSize']):
found_files = True
if filename == file['title'] and size == int(file['fileSize']):
found = True
break
if not found_files:
upload_files(filename, mimetype, drive_service, webnotes.conn.get_value("Backup Manager", None, "files_folder_id"))
if not found:
upload_files(filepath, mimetype, drive_service, webnotes.conn.get_value("Backup Manager", None, "files_folder_id"))
def get_gdrive_flow():
from oauth2client.client import OAuth2WebServerFlow
@@ -106,10 +105,9 @@ def get_gdrive_flow():
# + "?cmd=setup.doctype.backup_manager.backup_googledrive.googledrive_callback"
# for installed apps since google does not support subdomains
redirect_uri = "urn:ietf:wg:oauth:2.0:oob"
flow = OAuth2WebServerFlow(conf.gdrive_client_id, conf.gdrive_client_secret,
"https://www.googleapis.com/auth/drive", redirect_uri)
"https://www.googleapis.com/auth/drive", 'urn:ietf:wg:oauth:2.0:oob')
return flow
@webnotes.whitelist()