refactor: Simplify property setter deletion logic and enforce required fields
This commit is contained in:
parent
fdf74f32b9
commit
8d328e2f94
1 changed files with 21 additions and 11 deletions
|
|
@ -111,9 +111,7 @@ def delete_property_setter(doc_type, property=None, field_name=None, row_name=No
|
||||||
if row_name:
|
if row_name:
|
||||||
filters["row_name"] = row_name
|
filters["row_name"] = row_name
|
||||||
|
|
||||||
property_setters = frappe.db.get_values("Property Setter", filters)
|
_delete_property_setters(filters)
|
||||||
for ps in property_setters:
|
|
||||||
frappe.get_doc("Property Setter", ps).delete(ignore_permissions=True, force=True)
|
|
||||||
|
|
||||||
|
|
||||||
def bulk_delete_property_setters(property_setters: list[dict], bypass_hooks: bool = False):
|
def bulk_delete_property_setters(property_setters: list[dict], bypass_hooks: bool = False):
|
||||||
|
|
@ -130,12 +128,18 @@ def bulk_delete_property_setters(property_setters: list[dict], bypass_hooks: boo
|
||||||
{"doctype": "ToDo", "fieldname": "status", "property": "read_only"},
|
{"doctype": "ToDo", "fieldname": "status", "property": "read_only"},
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Note: `doctype` and `fieldname` are mandatory.
|
||||||
"""
|
"""
|
||||||
field_map = {
|
field_map = {
|
||||||
"doctype": "doc_type",
|
"doctype": "doc_type",
|
||||||
"fieldname": "field_name",
|
"fieldname": "field_name",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
doctypes_to_clear = set()
|
||||||
|
|
||||||
for property_setter in property_setters:
|
for property_setter in property_setters:
|
||||||
filters = property_setter.copy()
|
filters = property_setter.copy()
|
||||||
|
|
||||||
|
|
@ -146,15 +150,21 @@ def bulk_delete_property_setters(property_setters: list[dict], bypass_hooks: boo
|
||||||
if not filters:
|
if not filters:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
if not filters.get("doc_type") or not filters.get("field_name"):
|
||||||
|
frappe.throw(_("`doctype` and `fieldname` are required for deleting property setters."))
|
||||||
|
|
||||||
if bypass_hooks:
|
if bypass_hooks:
|
||||||
frappe.db.delete("Property Setter", filters)
|
frappe.db.delete("Property Setter", filters)
|
||||||
|
doctypes_to_clear.add(filters["doc_type"])
|
||||||
if filters.get("doc_type"):
|
|
||||||
frappe.clear_cache(doctype=filters["doc_type"])
|
|
||||||
else:
|
else:
|
||||||
property_setter_names = frappe.get_all("Property Setter", filters=filters, pluck="name")
|
_delete_property_setters(filters)
|
||||||
|
|
||||||
for property_setter_name in property_setter_names:
|
for doctype in doctypes_to_clear:
|
||||||
frappe.get_doc("Property Setter", property_setter_name).delete(
|
frappe.clear_cache(doctype=doctype)
|
||||||
ignore_permissions=True, force=True
|
|
||||||
)
|
|
||||||
|
def _delete_property_setters(filters: dict):
|
||||||
|
property_setters = frappe.get_all("Property Setter", filters=filters, pluck="name")
|
||||||
|
|
||||||
|
for ps in property_setters:
|
||||||
|
frappe.get_doc("Property Setter", ps).delete(ignore_permissions=True, force=True)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue