Skip to content

Commit

Permalink
fix: Resolve conflicts
Browse files Browse the repository at this point in the history
* Fixed imports
* Compatible typing
* Revert permission_map
  • Loading branch information
gavindsouza committed May 10, 2023
1 parent 088931a commit 43ce286
Show file tree
Hide file tree
Showing 5 changed files with 11 additions and 73 deletions.
6 changes: 1 addition & 5 deletions frappe/desk/reportview.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,7 @@
import frappe.permissions
from frappe import _
from frappe.core.doctype.access_log.access_log import make_access_log
<<<<<<< HEAD
from frappe.model import default_fields, optional_fields
=======
from frappe.model import child_table_fields, default_fields, get_permitted_fields, optional_fields
>>>>>>> 707e485d9b (fix: Check permission_type in get_permitted_fieldnames [v14] (#20905))
from frappe.model import default_fields, get_permitted_fields, optional_fields
from frappe.model.base_document import get_controller
from frappe.model.db_query import DatabaseQuery
from frappe.utils import cstr, format_duration
Expand Down
25 changes: 8 additions & 17 deletions frappe/model/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -183,16 +183,11 @@ def delete_fields(args_dict, delete=0):


def get_permitted_fields(
<<<<<<< HEAD
doctype: str, parenttype: Optional[str] = None, user: Optional[str] = None
) -> List[str]:
=======
doctype: str,
parenttype: str | None = None,
user: str | None = None,
permission_type: str | None = None,
) -> list[str]:
>>>>>>> 707e485d9b (fix: Check permission_type in get_permitted_fieldnames [v14] (#20905))
parenttype: Optional[str] = None,
user: Optional[str] = None,
permission_type: Optional[str] = None,
) -> List[str]:
meta = frappe.get_meta(doctype)
valid_columns = meta.get_valid_columns()

Expand All @@ -203,21 +198,17 @@ def get_permitted_fields(
if set(valid_columns).issubset(default_fields):
return valid_columns

<<<<<<< HEAD
permitted_fields = meta.get_permitted_fieldnames(parenttype=parenttype, user=user)

if permitted_fields:
=======
if permission_type is None:
permission_type = "select" if frappe.only_has_select_perm(doctype, user=user) else "read"

if permitted_fields := meta.get_permitted_fieldnames(
permitted_fields = meta.get_permitted_fieldnames(
parenttype=parenttype, user=user, permission_type=permission_type
):
)

if permitted_fields:
if permission_type == "select":
return permitted_fields

>>>>>>> 707e485d9b (fix: Check permission_type in get_permitted_fieldnames [v14] (#20905))
meta_fields = meta.default_fields.copy()
optional_meta_fields = [x for x in optional_fields if x in valid_columns]

Expand Down
44 changes: 0 additions & 44 deletions frappe/model/db_query.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,26 +93,16 @@ def execute(
strict=True,
pluck=None,
ignore_ddl=False,
<<<<<<< HEAD
) -> List:
if (
not ignore_permissions
and not frappe.has_permission(self.doctype, "select", user=user)
and not frappe.has_permission(self.doctype, "read", user=user)
):

frappe.flags.error_message = _("Insufficient Permission for {0}").format(
frappe.bold(self.doctype)
)
raise frappe.PermissionError(self.doctype)
=======
*,
parent_doctype=None,
) -> list:

if not ignore_permissions:
self.check_read_permission(self.doctype, parent_doctype=parent_doctype)
>>>>>>> 707e485d9b (fix: Check permission_type in get_permitted_fieldnames [v14] (#20905))

# filters and fields swappable
# its hard to remember what comes first
Expand Down Expand Up @@ -428,37 +418,7 @@ def append_table(self, table_name):
doctype = table_name[4:-1]
ptype = "select" if frappe.only_has_select_perm(doctype) else "read"

<<<<<<< HEAD
if (not self.flags.ignore_permissions) and (not frappe.has_permission(doctype, ptype=ptype)):
=======
def append_link_table(self, doctype, fieldname):
for d in self.link_tables:
if d.doctype == doctype and d.fieldname == fieldname:
return
self.check_read_permission(doctype)
self.link_tables.append(
frappe._dict(doctype=doctype, fieldname=fieldname, table_name=f"`tab{doctype}`")
)
def check_read_permission(self, doctype: str, parent_doctype: str | None = None):
if self.flags.ignore_permissions:
return
if doctype not in self.permission_map:
self._set_permission_map(doctype, parent_doctype)
return self.permission_map[doctype]
def _set_permission_map(self, doctype: str, parent_doctype: str | None = None):
ptype = "select" if frappe.only_has_select_perm(doctype) else "read"
val = frappe.has_permission(
doctype,
ptype=ptype,
parent_doctype=parent_doctype or self.doctype,
)
if not val:
>>>>>>> 707e485d9b (fix: Check permission_type in get_permitted_fieldnames [v14] (#20905))
frappe.flags.error_message = _("Insufficient Permission for {0}").format(frappe.bold(doctype))
raise frappe.PermissionError(doctype)
self.permission_map[doctype] = ptype
Expand Down Expand Up @@ -566,15 +526,11 @@ def apply_fieldlevel_read_permissions(self):
return

asterisk_fields = []
<<<<<<< HEAD
permitted_fields = get_permitted_fields(doctype=self.doctype)
=======
permitted_fields = get_permitted_fields(
doctype=self.doctype,
parenttype=self.parent_doctype,
permission_type=self.permission_map.get(self.doctype),
)
>>>>>>> 707e485d9b (fix: Check permission_type in get_permitted_fieldnames [v14] (#20905))

for i, field in enumerate(self.fields):
if "distinct" in field.lower():
Expand Down
5 changes: 0 additions & 5 deletions frappe/tests/test_permissions.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,7 @@
update_permission_property,
)
from frappe.test_runner import make_test_records_for_doctype
<<<<<<< HEAD
=======
from frappe.tests.test_db_query import enable_permlevel_restrictions
from frappe.tests.utils import FrappeTestCase
from frappe.utils.data import now_datetime
>>>>>>> 707e485d9b (fix: Check permission_type in get_permitted_fieldnames [v14] (#20905))

test_dependencies = ["Blogger", "Blog Post", "User", "Contact", "Salutation"]

Expand Down
4 changes: 2 additions & 2 deletions frappe/workflow/doctype/workflow/workflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -128,15 +128,15 @@ def set_active(self):

@frappe.whitelist()
def get_fieldnames_for(doctype):
frappe.has_permission(doctype=doctype, ptype='read', throw=True)
frappe.has_permission(doctype=doctype, ptype="read", throw=True)
return [
f.fieldname for f in frappe.get_meta(doctype).fields if f.fieldname not in no_value_fields
]


@frappe.whitelist()
def get_workflow_state_count(doctype, workflow_state_field, states):
frappe.has_permission(doctype=doctype, ptype='read', throw=True)
frappe.has_permission(doctype=doctype, ptype="read", throw=True)
states = frappe.parse_json(states)
result = frappe.get_all(
doctype,
Expand Down

0 comments on commit 43ce286

Please sign in to comment.