fix(minor): frappe.db.set_value to allow multiple values
This commit is contained in:
parent
d1196a94da
commit
0192bcf45f
2 changed files with 21 additions and 9 deletions
|
|
@ -660,20 +660,17 @@ class Database(object):
|
|||
|
||||
if dn and dt!=dn:
|
||||
# with table
|
||||
values = dict(
|
||||
name=self.get_value(dt, dn, 'name', for_update=for_update)
|
||||
)
|
||||
|
||||
values.update(to_update)
|
||||
|
||||
set_values = []
|
||||
for key in to_update:
|
||||
set_values.append('`{0}`=%({0})s'.format(key))
|
||||
|
||||
self.sql("""update `tab{0}`
|
||||
set {1} where name=%(name)s""".format(dt, ', '.join(set_values)),
|
||||
values, debug=debug)
|
||||
for name in self.get_values(dt, dn, 'name', for_update=for_update):
|
||||
values = dict(name=name[0])
|
||||
values.update(to_update)
|
||||
|
||||
self.sql("""update `tab{0}`
|
||||
set {1} where name=%(name)s""".format(dt, ', '.join(set_values)),
|
||||
values, debug=debug)
|
||||
else:
|
||||
# for singles
|
||||
keys = list(to_update)
|
||||
|
|
|
|||
|
|
@ -22,6 +22,21 @@ class TestDB(unittest.TestCase):
|
|||
self.assertEqual(frappe.db.sql("""SELECT name FROM `tabUser` WHERE name >= 't' ORDER BY MODIFIED DESC""")[0][0],
|
||||
frappe.db.get_value("User", {"name": [">=", "t"]}))
|
||||
|
||||
def test_set_value(self):
|
||||
todo1 = frappe.get_doc(dict(doctype='ToDo', description = 'test_set_value 1')).insert()
|
||||
todo2 = frappe.get_doc(dict(doctype='ToDo', description = 'test_set_value 2')).insert()
|
||||
|
||||
frappe.db.set_value('ToDo', todo1.name, 'description', 'test_set_value change 1')
|
||||
self.assertEqual(frappe.db.get_value('ToDo', todo1.name, 'description'), 'test_set_value change 1')
|
||||
|
||||
# multiple set-value
|
||||
frappe.db.set_value('ToDo', dict(description=('like', '%test_set_value%')),
|
||||
'description', 'change 2')
|
||||
|
||||
self.assertEqual(frappe.db.get_value('ToDo', todo1.name, 'description'), 'change 2')
|
||||
self.assertEqual(frappe.db.get_value('ToDo', todo2.name, 'description'), 'change 2')
|
||||
|
||||
|
||||
def test_escape(self):
|
||||
frappe.db.escape("香港濟生堂製藥有限公司 - IT".encode("utf-8"))
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue