From 4b519bdadac36622318ed31fc9c086ce51c6de3b Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Tue, 30 Sep 2014 17:44:41 +0530 Subject: [PATCH] [api] frappe.get_all --- frappe/__init__.py | 14 +++++--------- frappe/client.py | 2 +- frappe/database.py | 13 ++++++++++--- frappe/desk/doctype/todo/todo.py | 4 ++-- frappe/desk/form/load.py | 5 ++--- .../email/doctype/email_account/email_account.py | 4 ++-- frappe/model/delete_doc.py | 2 +- .../v4_3/remove_allow_on_submit_customization.py | 4 ++-- frappe/utils/jinja.py | 1 + 9 files changed, 26 insertions(+), 23 deletions(-) diff --git a/frappe/__init__.py b/frappe/__init__.py index 7b1323dc74..59ad6cf041 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -608,17 +608,13 @@ def build_match_conditions(doctype, as_condition=True): import frappe.desk.reportview return frappe.desk.reportview.build_match_conditions(doctype, as_condition) -def get_list(doctype, filters=None, fields=None, or_filters=None, docstatus=None, - group_by=None, order_by=None, limit_start=0, limit_page_length=None, - as_list=False, debug=False, ignore_permissions=False, user=None): +def get_list(doctype, *args, **kwargs): import frappe.model.db_query - return frappe.model.db_query.DatabaseQuery(doctype).execute(filters=filters, - fields=fields, docstatus=docstatus, or_filters=or_filters, - group_by=group_by, order_by=order_by, limit_start=limit_start, - limit_page_length=limit_page_length, as_list=as_list, debug=debug, - ignore_permissions=ignore_permissions, user=user) + return frappe.model.db_query.DatabaseQuery(doctype).execute(None, *args, **kwargs) -run_query = get_list +def get_all(doctype, *args, **kwargs): + kwargs["ignore_permissions"] = True + return get_list(doctype, *args, **kwargs) def add_version(doc): get_doc({ diff --git a/frappe/client.py b/frappe/client.py index 2e72c47712..924b3a0b22 100644 --- a/frappe/client.py +++ b/frappe/client.py @@ -12,7 +12,7 @@ import json, os def get_list(doctype, fields=None, filters=None, order_by=None, limit_start=None, limit_page_length=None): return frappe.get_list(doctype, fields=fields, filters=filters, order_by=order_by, - limit_start=limit_start, limit_page_length=limit_page_length) + limit_start=limit_start, limit_page_length=limit_page_length, ignore_permissions=True) @frappe.whitelist() def get(doctype, name=None, filters=None): diff --git a/frappe/database.py b/frappe/database.py index d40bf90cb8..e4ab2eecb3 100644 --- a/frappe/database.py +++ b/frappe/database.py @@ -407,6 +407,9 @@ class Database: else: return {} + def update(self, *args, **kwargs): + return self.set_value(*args, **kwargs) + def set_value(self, dt, dn, field, val, modified=None, modified_by=None): if not modified: modified = now() @@ -414,9 +417,13 @@ class Database: modified_by = frappe.session.user if dn and dt!=dn: - self.sql("""update `tab%s` set `%s`=%s, modified=%s, modified_by=%s - where name=%s""" % (dt, field, "%s", "%s", "%s", "%s"), - (val, modified, modified_by, dn)) + conditions, values = self.build_conditions(dn) + + values.update({"val": val, "modified": modified, "modified_by": modified_by}) + + self.sql("""update `tab{0}` set `{1}`=%(val)s, modified=%(modified)s, modified_by=%(modified_by)s where + {2}""".format(dt, field, conditions), values) + else: if self.sql("select value from tabSingles where field=%s and doctype=%s", (field, dt)): self.sql("""update tabSingles set value=%s where field=%s and doctype=%s""", diff --git a/frappe/desk/doctype/todo/todo.py b/frappe/desk/doctype/todo/todo.py index 13320d9549..9aba609c74 100644 --- a/frappe/desk/doctype/todo/todo.py +++ b/frappe/desk/doctype/todo/todo.py @@ -44,13 +44,13 @@ class ToDo(Document): return try: - assignments = [d[0] for d in frappe.get_list("ToDo", + assignments = [d[0] for d in frappe.get_all("ToDo", filters={ "reference_type": self.reference_type, "reference_name": self.reference_name, "status": "Open" }, - fields=["owner"], ignore_permissions=True, as_list=True)] + fields=["owner"], as_list=True)] assignments.reverse() frappe.db.set_value(self.reference_type, self.reference_name, diff --git a/frappe/desk/form/load.py b/frappe/desk/form/load.py index 8b263bb449..1ada2bde57 100644 --- a/frappe/desk/form/load.py +++ b/frappe/desk/form/load.py @@ -91,9 +91,8 @@ def get_user_permissions(meta): return out def get_attachments(dt, dn): - return frappe.get_list("File Data", fields=["name", "file_name", "file_url"], - filters = {"attached_to_name": dn, "attached_to_doctype": dt}, - ignore_permissions=True) + return frappe.get_all("File Data", fields=["name", "file_name", "file_url"], + filters = {"attached_to_name": dn, "attached_to_doctype": dt}) def get_comments(dt, dn, limit=100): comments = frappe.db.sql("""select name, comment, comment_by, creation, diff --git a/frappe/email/doctype/email_account/email_account.py b/frappe/email/doctype/email_account/email_account.py index 9d507c6ebb..6cf1dd04a7 100644 --- a/frappe/email/doctype/email_account/email_account.py +++ b/frappe/email/doctype/email_account/email_account.py @@ -46,8 +46,8 @@ class EmailAccount(Document): def there_must_be_only_one_default(self): if self.is_default: - for email_account in frappe.get_list("Email Account", - {"is_default": 1}, ignore_permissions=True): + for email_account in frappe.get_all("Email Account", + {"is_default": 1}): if email_account.name==self.name: continue email_account = frappe.get_doc("Email Account", diff --git a/frappe/model/delete_doc.py b/frappe/model/delete_doc.py index 625b8ceaa2..97652b1050 100644 --- a/frappe/model/delete_doc.py +++ b/frappe/model/delete_doc.py @@ -133,7 +133,7 @@ def check_if_doc_is_linked(doc, method="Delete"): if item and item.parent != doc.name and ((method=="Delete" and item.docstatus<2) or (method=="Cancel" and item.docstatus==1)): frappe.throw(_("Cannot delete or cancel because {0} {1} is linked with {2} {3}").format(doc.doctype, - doc.name, item.parent or item.name, item.parenttype if item.parent else link_dt), + doc.name, item.parenttype if item.parent else link_dt, item.parent or item.name), frappe.LinkExistsError) def check_if_doc_is_dynamically_linked(doc): diff --git a/frappe/patches/v4_3/remove_allow_on_submit_customization.py b/frappe/patches/v4_3/remove_allow_on_submit_customization.py index 0e6cd3a11e..1554ee55f8 100644 --- a/frappe/patches/v4_3/remove_allow_on_submit_customization.py +++ b/frappe/patches/v4_3/remove_allow_on_submit_customization.py @@ -5,7 +5,7 @@ from __future__ import unicode_literals import frappe def execute(): - for d in frappe.get_list("Property Setter", fields=["name", "doc_type"], - filters={"doctype_or_field": "DocField", "property": "allow_on_submit", "value": "1"}, ignore_permissions=True): + for d in frappe.get_all("Property Setter", fields=["name", "doc_type"], + filters={"doctype_or_field": "DocField", "property": "allow_on_submit", "value": "1"}): frappe.delete_doc("Property Setter", d.name) frappe.clear_cache(doctype=d.doc_type) diff --git a/frappe/utils/jinja.py b/frappe/utils/jinja.py index 6885da1733..2534b6d424 100644 --- a/frappe/utils/jinja.py +++ b/frappe/utils/jinja.py @@ -51,6 +51,7 @@ def get_allowed_functions_for_jenv(): "get_meta": frappe.get_meta, "get_doc": frappe.get_doc, "get_list": frappe.get_list, + "get_all": frappe.get_all, "utils": datautils, "user": frappe.session.user, "date_format": frappe.db.get_default("date_format") or "yyyy-mm-dd"