Browse Source

Merge pull request #18455 from frappe/mergify/bp/version-14-hotfix/pr-18453

fix: dont `db_set` on unsaved document (backport #18453)
version-14
Ankush Menat 2 years ago
committed by GitHub
parent
commit
41ab732739
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 15 additions and 4 deletions
  1. +3
    -0
      frappe/model/document.py
  2. +6
    -0
      frappe/tests/test_document.py
  3. +6
    -4
      frappe/tests/utils.py

+ 3
- 0
frappe/model/document.py View File

@@ -1173,6 +1173,9 @@ class Document(BaseDocument):
# to trigger notification on value change
self.run_method("before_change")

if self.name is None:
return

frappe.db.set_value(
self.doctype,
self.name,


+ 6
- 0
frappe/tests/test_document.py View File

@@ -163,6 +163,12 @@ class TestDocument(FrappeTestCase):
self.assertRaises(frappe.ValidationError, d.run_method, "validate")
self.assertRaises(frappe.ValidationError, d.save)

def test_db_set_no_query_on_new_docs(self):
user = frappe.new_doc("User")
user.db_set("user_type", "Magical Wizard")
with self.assertQueryCount(0):
user.db_set("user_type", "Magical Wizard")

def test_update_after_submit(self):
d = self.test_insert()
d.starts_on = "2014-09-09"


+ 6
- 4
frappe/tests/utils.py View File

@@ -69,16 +69,18 @@ class FrappeTestCase(unittest.TestCase):

@contextmanager
def assertQueryCount(self, count):
queries = []

def _sql_with_count(*args, **kwargs):
frappe.db.sql_query_count += 1
return orig_sql(*args, **kwargs)
ret = orig_sql(*args, **kwargs)
queries.append(frappe.db.last_query)
return ret

try:
orig_sql = frappe.db.sql
frappe.db.sql_query_count = 0
frappe.db.sql = _sql_with_count
yield
self.assertLessEqual(frappe.db.sql_query_count, count)
self.assertLessEqual(len(queries), count, msg="Queries executed: " + "\n\n".join(queries))
finally:
frappe.db.sql = orig_sql



Loading…
Cancel
Save