Skip to content

Commit

Permalink
refactor: better function name
Browse files Browse the repository at this point in the history
  • Loading branch information
ankush committed Jan 16, 2024
1 parent 1089e8f commit 43d6de7
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 23 deletions.
4 changes: 2 additions & 2 deletions frappe/desk/reportview.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ def validate_fields(data):
wildcard = update_wildcard_field_param(data)

for field in list(data.fields or []):
fieldname = extract_fieldname(field)[0]
fieldname = extract_fieldnames(field)[0]
if not fieldname:
raise_invalid_field(fieldname)

Expand Down Expand Up @@ -178,7 +178,7 @@ def is_standard(fieldname):
)


def extract_fieldname(field):
def extract_fieldnames(field):
parser = Parser(f"select {field}, frappe_dummy from dummy")
columns = [col for col in parser.columns if col != "frappe_dummy"]

Expand Down
4 changes: 2 additions & 2 deletions frappe/model/db_query.py
Original file line number Diff line number Diff line change
Expand Up @@ -625,7 +625,7 @@ def apply_fieldlevel_read_permissions(self):
- Query: fields=["*"]
- Result: fields=["title", ...] // will also include Frappe's meta field like `name`, `owner`, etc.
"""
from frappe.desk.reportview import extract_fieldname
from frappe.desk.reportview import extract_fieldnames

if self.flags.ignore_permissions:
return
Expand All @@ -643,7 +643,7 @@ def apply_fieldlevel_read_permissions(self):
# column: 'tabPhoto.name'
# field: 'count(`tabPhoto`.name) as total_count'
# column: 'tabPhoto.name'
columns = extract_fieldname(field)
columns = extract_fieldnames(field)
if not columns:
continue

Expand Down
40 changes: 21 additions & 19 deletions frappe/tests/test_reportview.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# License: MIT. See LICENSE

import frappe
from frappe.desk.reportview import export_query, extract_fieldname
from frappe.desk.reportview import export_query, extract_fieldnames
from frappe.tests.utils import FrappeTestCase


Expand Down Expand Up @@ -35,58 +35,60 @@ def test_csv(self):

def test_extract_fieldname(self):
self.assertEqual(
extract_fieldname("count(distinct `tabPhoto`.name) as total_count")[0], "tabPhoto.name"
extract_fieldnames("count(distinct `tabPhoto`.name) as total_count")[0], "tabPhoto.name"
)

self.assertEqual(extract_fieldname("owner")[0], "owner")
self.assertEqual(extract_fieldnames("owner")[0], "owner")

self.assertEqual(extract_fieldname("module")[0], "module")
self.assertEqual(extract_fieldnames("module")[0], "module")

self.assertEqual(extract_fieldname("count(`tabPhoto`.name) as total_count")[0], "tabPhoto.name")
self.assertEqual(extract_fieldnames("count(`tabPhoto`.name) as total_count")[0], "tabPhoto.name")

self.assertEqual(extract_fieldname("count(distinct `tabPhoto`.name)")[0], "tabPhoto.name")
self.assertEqual(extract_fieldnames("count(distinct `tabPhoto`.name)")[0], "tabPhoto.name")

self.assertEqual(extract_fieldname("count(`tabPhoto`.name)")[0], "tabPhoto.name")
self.assertEqual(extract_fieldnames("count(`tabPhoto`.name)")[0], "tabPhoto.name")

self.assertEqual(
extract_fieldname("count(distinct `tabJob Applicant`.name) as total_count")[0],
extract_fieldnames("count(distinct `tabJob Applicant`.name) as total_count")[0],
"tabJob Applicant.name",
)

self.assertEqual(
extract_fieldname("(1 / nullif(locate('a', `tabAddress`.`name`), 0)) as `_relevance`")[0],
extract_fieldnames("(1 / nullif(locate('a', `tabAddress`.`name`), 0)) as `_relevance`")[0],
"tabAddress.name",
)

self.assertEqual(
extract_fieldname("(1 / nullif(locate('(a)', `tabAddress`.`name`), 0)) as `_relevance`")[0],
extract_fieldnames("(1 / nullif(locate('(a)', `tabAddress`.`name`), 0)) as `_relevance`")[0],
"tabAddress.name",
)

self.assertEqual(extract_fieldname("EXTRACT(MONTH FROM date_column) AS month")[0], "date_column")
self.assertEqual(
extract_fieldnames("EXTRACT(MONTH FROM date_column) AS month")[0], "date_column"
)

self.assertEqual(extract_fieldname("COUNT(*) AS count")[0], "*")
self.assertEqual(extract_fieldnames("COUNT(*) AS count")[0], "*")

self.assertEqual(extract_fieldname("COUNT(1) AS count")[0], "*")
self.assertEqual(extract_fieldnames("COUNT(1) AS count")[0], "*")

self.assertEqual(extract_fieldname("COUNT(1) AS count, SUM(1) AS sum")[0], "*")
self.assertEqual(extract_fieldnames("COUNT(1) AS count, SUM(1) AS sum")[0], "*")

self.assertEqual(
extract_fieldname("first_name + ' ' + last_name AS full_name"), ["first_name", "last_name"]
extract_fieldnames("first_name + ' ' + last_name AS full_name"), ["first_name", "last_name"]
)

self.assertEqual(
extract_fieldname("CONCAT(first_name, ' ', last_name) AS full_name"),
extract_fieldnames("CONCAT(first_name, ' ', last_name) AS full_name"),
["first_name", "last_name"],
)

self.assertEqual(
extract_fieldname("CONCAT(id, '/', name, '/', age, '/', marks) AS student"),
extract_fieldnames("CONCAT(id, '/', name, '/', age, '/', marks) AS student"),
["id", "name", "age", "marks"],
)

self.assertEqual(extract_fieldname("tablefield.fiedname")[0], "tablefield.fiedname")
self.assertEqual(extract_fieldnames("tablefield.fiedname")[0], "tablefield.fiedname")

self.assertEqual(
extract_fieldname("`tabChild DocType`.`fiedname`")[0], "tabChild DocType.fiedname"
extract_fieldnames("`tabChild DocType`.`fiedname`")[0], "tabChild DocType.fiedname"
)

0 comments on commit 43d6de7

Please sign in to comment.