From 5cd22894b090f29b1c435ce5207bf34e5fa744a3 Mon Sep 17 00:00:00 2001 From: WebNotes Date: Mon, 11 Mar 2013 10:58:42 +0530 Subject: [PATCH 1/4] it's done --- .../doctype/backup_manager/backup_dropbox.py | 51 +++++++++---------- .../doctype/backup_manager/backup_manager.py | 5 +- 2 files changed, 29 insertions(+), 27 deletions(-) diff --git a/setup/doctype/backup_manager/backup_dropbox.py b/setup/doctype/backup_manager/backup_dropbox.py index 3b0857fdd9..e8eed3be19 100644 --- a/setup/doctype/backup_manager/backup_dropbox.py +++ b/setup/doctype/backup_manager/backup_dropbox.py @@ -1,6 +1,7 @@ import os import webnotes -from webnotes.utils import get_request_site_address +from webnotes.utils import get_request_site_address, get_base_path +from webnotes import _ @webnotes.whitelist() def get_dropbox_authorize_url(): @@ -67,22 +68,23 @@ def backup_to_dropbox(): backup = new_backup() filename = backup.backup_path_db upload_file_to_dropbox(filename, "database", dropbox_client) - - # upload files - response = dropbox_client.metadata("files") - + path1 = os.path.join(get_base_path(), "public", "backups") + response = dropbox_client.metadata('/database') - # add missing files - for filename in os.listdir(os.path.join("public", "files")): + #add missing files + found = False + for filename in os.listdir(path1): found = False + pth=path1+'/'+filename + size=os.stat(pth).st_size for file_metadata in response["contents"]: if filename==os.path.basename(file_metadata["path"]): - if os.stat(os.path.join("public", "files", filename)).st_size==file_metadata["bytes"]: + if size==file_metadata["bytes"]: found=True - if not found: - upload_file_to_dropbox(os.path.join("public", "files", filename), "files", dropbox_client) - + upload_file_to_dropbox(pth, "database", dropbox_client) + if found: + webnotes.msgprint("no backup required everything is upto date") def get_dropbox_session(): from dropbox import session @@ -96,20 +98,17 @@ def get_dropbox_session(): return sess def upload_file_to_dropbox(filename, folder, dropbox_client): - if __name__=="__main__": - print "Uploading " + filename - size = os.stat(filename).st_size - f = open(filename,'r') - - if size > 4194304: - uploader = dropbox_client.get_chunked_uploader(f, size) - while uploader.offset < size: - try: - uploader.upload_chunked() - except rest.ErrorResponse, e: - pass - else: - response = dropbox_client.put_file(folder + "/" + os.path.basename(filename), f, overwrite=True) + size = os.stat(filename).st_size + f = open(filename,'r') + if size > 4194304: + uploader = dropbox_client.get_chunked_uploader(f, size) + while uploader.offset < size: + try: + uploader.upload_chunked() + except rest.ErrorResponse, e: + pass + else: + response = dropbox_client.put_file(folder + "/" + os.path.basename(filename), f, overwrite=True) if __name__=="__main__": - backup_to_dropbox() \ No newline at end of file + backup_to_dropbox() \ No newline at end of file diff --git a/setup/doctype/backup_manager/backup_manager.py b/setup/doctype/backup_manager/backup_manager.py index 48d48e817c..2b9cfca85a 100644 --- a/setup/doctype/backup_manager/backup_manager.py +++ b/setup/doctype/backup_manager/backup_manager.py @@ -3,6 +3,7 @@ from __future__ import unicode_literals import webnotes from webnotes import _ +from webnotes.utils import getTraceback class DocType: def __init__(self, d, dl): @@ -25,6 +26,7 @@ def take_backups(): backup_to_dropbox() send_email(True, "Dropbox") except Exception, e: + webnotes.errprint(e) send_email(False, "Dropbox", e) def send_email(success, service_name, error_status=None): @@ -40,7 +42,8 @@ def send_email(success, service_name, error_status=None): failed.

Error message: %s

Please contact your system manager for more information.

- """ % (service_name, error_status) +

Detailed Error Trace: %s

""" % \ + (service_name, error_status, getTraceback().replace("\n", "
")) # email system managers from webnotes.utils.email_lib import sendmail From 6f7531813411af3dfda736f06585dff2ef00d20c Mon Sep 17 00:00:00 2001 From: Saurabh Date: Wed, 20 Mar 2013 12:55:28 +0530 Subject: [PATCH 2/4] no -ve balance accepted in sales and purchase invoice --- controllers/accounts_controller.py | 4 ++++ controllers/buying_controller.py | 5 +++-- controllers/selling_controller.py | 1 + 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/controllers/accounts_controller.py b/controllers/accounts_controller.py index 576921a530..cd40d61956 100644 --- a/controllers/accounts_controller.py +++ b/controllers/accounts_controller.py @@ -21,6 +21,10 @@ from webnotes.utils import flt from utilities.transaction_base import TransactionBase class AccountsController(TransactionBase): + def validate(self): + if self.meta.get_field("grand_total"): + self.validate_value("grand_total", ">=", 0) + def get_gl_dict(self, args, cancel=None): """this method populates the common properties of a gl entry record""" if cancel is None: diff --git a/controllers/buying_controller.py b/controllers/buying_controller.py index 2f3128c98c..0509de0074 100644 --- a/controllers/buying_controller.py +++ b/controllers/buying_controller.py @@ -27,7 +27,8 @@ from webnotes.model.utils import round_floats_in_doc from controllers.accounts_controller import AccountsController class BuyingController(AccountsController): - def validate(self): + def validate(self): + super(BuyingController, self).validate() if self.meta.get_field("currency"): self.company_currency = get_company_currency(self.doc.company) self.validate_conversion_rate("currency", "conversion_rate") @@ -37,7 +38,7 @@ class BuyingController(AccountsController): # IMPORTANT: enable this only when client side code is similar to this one # self.calculate_taxes_and_totals() - + # set total in words self.set_total_in_words() diff --git a/controllers/selling_controller.py b/controllers/selling_controller.py index 40606c3198..9db8f4acad 100644 --- a/controllers/selling_controller.py +++ b/controllers/selling_controller.py @@ -23,6 +23,7 @@ from controllers.accounts_controller import AccountsController class SellingController(AccountsController): def validate(self): + super(SellingController, self).validate() self.set_total_in_words() def set_total_in_words(self): From 9c02b81cdd02bb32b47b45f7d6821b9ef1dc930f Mon Sep 17 00:00:00 2001 From: Saurabh Date: Wed, 20 Mar 2013 13:51:43 +0530 Subject: [PATCH 3/4] merged backup dropbox file --- setup/doctype/backup_manager/backup_dropbox.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/setup/doctype/backup_manager/backup_dropbox.py b/setup/doctype/backup_manager/backup_dropbox.py index b66880305e..2c7fda6ca9 100644 --- a/setup/doctype/backup_manager/backup_dropbox.py +++ b/setup/doctype/backup_manager/backup_dropbox.py @@ -86,8 +86,6 @@ def backup_to_dropbox(): filename = os.path.join(get_base_path(), "public", "files") for filename in os.listdir(filename): found = False - pth=path1+'/'+filename - size=os.stat(pth).st_size for file_metadata in response["contents"]: if filename==os.path.basename(file_metadata["path"]): if os.stat(filename).st_size==file_metadata["bytes"]: @@ -121,4 +119,4 @@ def upload_file_to_dropbox(filename, folder, dropbox_client): response = dropbox_client.put_file(folder + "/" + os.path.basename(filename), f, overwrite=True) if __name__=="__main__": - backup_to_dropbox() + backup_to_dropbox() \ No newline at end of file From f848b8bafc07be0d5123014fff3bc8251f50010c Mon Sep 17 00:00:00 2001 From: Saurabh Date: Wed, 20 Mar 2013 13:55:08 +0530 Subject: [PATCH 4/4] merged backup manager python file --- setup/doctype/backup_manager/backup_manager.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/setup/doctype/backup_manager/backup_manager.py b/setup/doctype/backup_manager/backup_manager.py index 69de823df1..213aa85500 100644 --- a/setup/doctype/backup_manager/backup_manager.py +++ b/setup/doctype/backup_manager/backup_manager.py @@ -30,7 +30,6 @@ def take_backups_dropbox(): backup_to_dropbox() send_email(True, "Dropbox") except Exception, e: - webnotes.errprint(e) send_email(False, "Dropbox", e) #backup to gdrive @@ -56,10 +55,9 @@ def send_email(success, service_name, error_status=None): failed.

Error message: %s

Please contact your system manager for more information.

-

Detailed Error Trace: %s

""" % \ - (service_name, error_status, getTraceback().replace("\n", "
")) + """ % (service_name, error_status) # email system managers from webnotes.utils.email_lib import sendmail sendmail(webnotes.conn.get_value("Backup Manager", None, "send_notifications_to").split(","), - subject=subject, msg=message) + subject=subject, msg=message) \ No newline at end of file