From 6e667a7cbdd62fbcdf93c1a4d0e744d2f44fa48a Mon Sep 17 00:00:00 2001 From: pateljannat Date: Fri, 12 Feb 2021 16:00:43 +0530 Subject: [PATCH 1/3] fix: method-not-found-error --- frappe/desk/search.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/frappe/desk/search.py b/frappe/desk/search.py index f4e6543844..6faa827dde 100644 --- a/frappe/desk/search.py +++ b/frappe/desk/search.py @@ -80,13 +80,15 @@ def search_widget(doctype, txt, query=None, searchfield=None, start=0, is_whitelisted(frappe.get_attr(query)) frappe.response["values"] = frappe.call(query, doctype, txt, searchfield, start, page_length, filters, as_dict=as_dict) - except Exception as e: + except frappe.exceptions.PermissionError as e: if frappe.local.conf.developer_mode: raise e else: frappe.respond_as_web_page(title='Invalid Method', html='Method not found', indicator_color='red', http_status_code=404) return + except Exception as e: + raise e elif not query and doctype in standard_queries: # from standard queries search_widget(doctype, txt, standard_queries[doctype][0], From 523112fd8bd0e1db864c58377a6b38a123fcee3d Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Mon, 15 Feb 2021 17:39:23 +0530 Subject: [PATCH 2/3] docs: update docs of some most used functions Update following function/methods: BaseDocument.update BaseDocument.append utils.cint utils.flt utils.getdate [skip travis] --- frappe/model/base_document.py | 23 ++++++++++++++++++--- frappe/utils/data.py | 38 ++++++++++++++++++++++++++++++++--- 2 files changed, 55 insertions(+), 6 deletions(-) diff --git a/frappe/model/base_document.py b/frappe/model/base_document.py index 7a90ecaca5..295585665f 100644 --- a/frappe/model/base_document.py +++ b/frappe/model/base_document.py @@ -69,13 +69,13 @@ def get_controller(doctype): if frappe.local.dev_server: return _get_controller() - + site_controllers = frappe.controllers.setdefault(frappe.local.site, {}) if doctype not in site_controllers: site_controllers[doctype] = _get_controller() - + return site_controllers[doctype] - + class BaseDocument(object): ignore_in_getter = ("doctype", "_meta", "meta", "_table_fields", "_valid_columns") @@ -94,6 +94,14 @@ class BaseDocument(object): return self._meta def update(self, d): + """ Update multiple fields of a doctype using a dictionary of key-value pairs. + + Example: + doc.update({ + "user": "admin", + "balance": 42000 + }) + """ if "doctype" in d: self.set("doctype", d.get("doctype")) @@ -159,6 +167,15 @@ class BaseDocument(object): del self.__dict__[key] def append(self, key, value=None): + """ Append an item to a child table. + + Example: + doc.append("childtable", { + "child_table_field": "value", + "child_table_int_field": 0, + ... + }) + """ if value==None: value={} if isinstance(value, (dict, BaseDocument)): diff --git a/frappe/utils/data.py b/frappe/utils/data.py index c38d3ec027..21fa609b80 100644 --- a/frappe/utils/data.py +++ b/frappe/utils/data.py @@ -31,7 +31,8 @@ def is_invalid_date_string(date_string): # datetime functions def getdate(string_date=None): """ - Converts string date (yyyy-mm-dd) to datetime.date object + Converts string date (yyyy-mm-dd) to datetime.date object. + If no input is provided, current date is returned. """ if not string_date: @@ -518,7 +519,25 @@ def cast_fieldtype(fieldtype, value): return value def flt(s, precision=None): - """Convert to float (ignore commas)""" + """Convert to float (ignoring commas in string) + + :param s: Number in string or other numeric format. + :param precision: optional argument to specify precision for rounding. + :returns: Converted number in python float type. + + Returns 0 if input can not be converted to float. + + Examples: + + >>> flt("43.5", precision=0) + 44 + >>> flt("42.5", precision=0) + 42 + >>> flt("10,500.5666", precision=2) + 10500.57 + >>> flt("a") + 0.0 + """ if isinstance(s, string_types): s = s.replace(',','') @@ -532,7 +551,20 @@ def flt(s, precision=None): return num def cint(s): - """Convert to integer""" + """Convert to integer + + :param s: Number in string or other numeric format. + :returns: Converted number in python integer type. + + Returns 0 if input can not be converted to integer. + + Examples: + >>> cint("100") + 100 + >>> cint("a") + 0 + + """ try: num = int(float(s)) except: num = 0 return num From fe2a16e0af3e618298b2a331516df4b546722a8b Mon Sep 17 00:00:00 2001 From: Mainul Islam Date: Tue, 16 Feb 2021 13:08:19 +0600 Subject: [PATCH 3/3] fix: Unknow column `home_settings` on migrate from old version. --- frappe/patches/v12_0/reset_home_settings.py | 1 + 1 file changed, 1 insertion(+) diff --git a/frappe/patches/v12_0/reset_home_settings.py b/frappe/patches/v12_0/reset_home_settings.py index db16c31f15..e4b9de6cb2 100644 --- a/frappe/patches/v12_0/reset_home_settings.py +++ b/frappe/patches/v12_0/reset_home_settings.py @@ -1,6 +1,7 @@ import frappe def execute(): + frappe.reload_doc('core', 'doctype', 'user') frappe.db.sql(''' UPDATE `tabUser` SET `home_settings` = ''