refactor: simplify fetching of readable records (#17417)

- remove encoding, use cstr directly
- remove falsy values by default None, empty string.
This commit is contained in:
Ankush Menat 2022-07-07 14:40:59 +05:30 committed by GitHub
parent 44117f6702
commit b5128a35fd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 12 additions and 20 deletions

View file

@ -21,7 +21,7 @@ from frappe.social.doctype.energy_point_settings.energy_point_settings import (
is_energy_point_enabled,
)
from frappe.translate import get_lang_dict
from frappe.utils import add_user_info, get_time_zone
from frappe.utils import add_user_info, cstr, get_time_zone
from frappe.utils.change_log import get_versions
from frappe.website.doctype.web_page_view.web_page_view import is_tracking_enabled
@ -142,6 +142,10 @@ def get_allowed_reports(cache=False):
return get_user_pages_or_reports("Report", cache=cache)
def get_allowed_report_names(cache=False) -> set[str]:
return {cstr(report) for report in get_allowed_reports(cache).keys() if report}
def get_user_pages_or_reports(parent, cache=False):
_cache = frappe.cache()

View file

@ -8,7 +8,6 @@ from frappe.core.doctype.doctype.doctype import validate_series
from frappe.model.document import Document
from frappe.model.naming import NamingSeries
from frappe.permissions import get_doctypes_with_read
from frappe.utils import cint
class NamingSeriesNotSetError(frappe.ValidationError):

View file

@ -6,7 +6,7 @@ import json
import frappe
from frappe import _
from frappe.boot import get_allowed_reports
from frappe.boot import get_allowed_report_names
from frappe.config import get_modules_from_all_apps_for_user
from frappe.model.document import Document
from frappe.model.naming import append_number_if_name_exists
@ -40,10 +40,7 @@ def get_permission_query_conditions(user):
allowed_doctypes = [
frappe.db.escape(doctype) for doctype in frappe.permissions.get_doctypes_with_read()
]
allowed_reports = [
frappe.db.escape(key) if type(key) == str else key.encode("UTF8")
for key in get_allowed_reports()
]
allowed_reports = [frappe.db.escape(report) for report in get_allowed_report_names()]
allowed_modules = [
frappe.db.escape(module.get("module_name")) for module in get_modules_from_all_apps_for_user()
]
@ -83,10 +80,7 @@ def has_permission(doc, ptype, user):
return True
if doc.chart_type == "Report":
allowed_reports = [
key if type(key) == str else key.encode("UTF8") for key in get_allowed_reports()
]
if doc.report_name in allowed_reports:
if doc.report_name in get_allowed_report_names():
return True
else:
allowed_doctypes = frappe.permissions.get_doctypes_with_read()

View file

@ -3,7 +3,7 @@
import frappe
from frappe import _
from frappe.boot import get_allowed_reports
from frappe.boot import get_allowed_report_names
from frappe.config import get_modules_from_all_apps_for_user
from frappe.model.document import Document
from frappe.model.naming import append_number_if_name_exists
@ -91,10 +91,7 @@ def has_permission(doc, ptype, user):
return True
if doc.type == "Report":
allowed_reports = [
key if type(key) == str else key.encode("UTF8") for key in get_allowed_reports()
]
if doc.report_name in allowed_reports:
if doc.report_name in get_allowed_report_names():
return True
else:
allowed_doctypes = tuple(frappe.permissions.get_doctypes_with_read())

View file

@ -6,7 +6,7 @@ import frappe
import frappe.share
from frappe import _, msgprint
from frappe.query_builder import DocType
from frappe.utils import cint
from frappe.utils import cint, cstr
rights = (
"select",
@ -360,9 +360,7 @@ def has_controller_permissions(doc, ptype, user=None):
def get_doctypes_with_read():
return list(
{p.parent if type(p.parent) == str else p.parent.encode("UTF8") for p in get_valid_perms()}
)
return list({cstr(p.parent) for p in get_valid_perms() if p.parent})
def get_valid_perms(doctype=None, user=None):