fix: fixed list of Field objects as fields in get_values
tests: added test for list of field objects
This commit is contained in:
parent
62247431ca
commit
e862ae83da
2 changed files with 26 additions and 6 deletions
|
|
@ -583,7 +583,7 @@ class Database(object):
|
|||
|
||||
if not isinstance(fields, Criterion):
|
||||
for field in fields:
|
||||
if "(" in field or " as " in field:
|
||||
if "(" in str(field) or " as " in str(field):
|
||||
field_objects.append(PseudoColumn(field))
|
||||
else:
|
||||
field_objects.append(field)
|
||||
|
|
@ -842,7 +842,7 @@ class Database(object):
|
|||
cache_count = frappe.cache().get_value('doctype:count:{}'.format(dt))
|
||||
if cache_count is not None:
|
||||
return cache_count
|
||||
query = self.query.build_conditions(table=dt, filters=filters).select(Count("*"))
|
||||
query = self.query.get_sql(table=dt, filters=filters, fields=Count("*"))
|
||||
if filters:
|
||||
count = self.sql(query, debug=debug)[0][0]
|
||||
return count
|
||||
|
|
|
|||
|
|
@ -24,10 +24,30 @@ class TestDB(unittest.TestCase):
|
|||
self.assertNotEqual(frappe.db.get_value("User", {"name": ["!=", "Guest"]}), "Guest")
|
||||
self.assertEqual(frappe.db.get_value("User", {"name": ["<", "Adn"]}), "Administrator")
|
||||
self.assertEqual(frappe.db.get_value("User", {"name": ["<=", "Administrator"]}), "Administrator")
|
||||
self.assertEqual(frappe.db.get_value("User", {}, ["Max(name)"], order_by=None), frappe.db.sql("SELECT Max(name) FROM tabUser")[0][0])
|
||||
self.assertEqual(frappe.db.get_value("User", {}, "Min(name)", order_by=None), frappe.db.sql("SELECT Min(name) FROM tabUser")[0][0])
|
||||
self.assertIn("for update", frappe.db.get_value("User", Field("name") == "Administrator", for_update=True, run=False).lower())
|
||||
|
||||
self.assertEqual(
|
||||
frappe.db.get_value("User", {}, ["Max(name)"], order_by=None),
|
||||
frappe.db.sql("SELECT Max(name) FROM tabUser")[0][0],
|
||||
)
|
||||
self.assertEqual(
|
||||
frappe.db.get_value("User", {}, "Min(name)", order_by=None),
|
||||
frappe.db.sql("SELECT Min(name) FROM tabUser")[0][0],
|
||||
)
|
||||
self.assertIn(
|
||||
"for update",
|
||||
frappe.db.get_value(
|
||||
"User", Field("name") == "Administrator", for_update=True, run=False
|
||||
).lower(),
|
||||
)
|
||||
doctype = frappe.qb.DocType("User")
|
||||
self.assertEqual(
|
||||
frappe.qb.from_(doctype).select(doctype.name, doctype.email).run(),
|
||||
frappe.db.get_values(
|
||||
doctype,
|
||||
filters={},
|
||||
fieldname=[doctype.name, doctype.email],
|
||||
order_by=None,
|
||||
),
|
||||
)
|
||||
self.assertEqual(frappe.db.sql("""SELECT name FROM `tabUser` WHERE name > 's' ORDER BY MODIFIED DESC""")[0][0],
|
||||
frappe.db.get_value("User", {"name": [">", "s"]}))
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue