From 95f16759dd3158be6dac6131fddd30e10a481c96 Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Sun, 31 Dec 2023 14:50:25 +0530 Subject: [PATCH] fix: added api's to create, update & delete CRM View Settings --- .../crm_view_settings/crm_view_settings.py | 74 ++++++++++++++----- 1 file changed, 54 insertions(+), 20 deletions(-) diff --git a/crm/fcrm/doctype/crm_view_settings/crm_view_settings.py b/crm/fcrm/doctype/crm_view_settings/crm_view_settings.py index 4b4faefb..416ee2ef 100644 --- a/crm/fcrm/doctype/crm_view_settings/crm_view_settings.py +++ b/crm/fcrm/doctype/crm_view_settings/crm_view_settings.py @@ -8,29 +8,68 @@ from frappe.model.document import Document, get_controller class CRMViewSettings(Document): pass +@frappe.whitelist() +def create(view, duplicate=False): + view = frappe._dict(view) + + if duplicate: + view.filters = json.loads(view.filters) + view.columns = json.loads(view.columns) + view.rows = json.loads(view.rows) + + doc = frappe.new_doc("CRM View Settings") + doc.name = view.label + doc.label = view.label + doc.dt = view.doctype + doc.user = frappe.session.user + doc.filters = json.dumps(view.filters) + doc.order_by = view.order_by + doc.default_columns = view.default_columns or False + + if not view.columns: + view.columns = [] + if not view.rows: + view.rows = [] + + default_rows = sync_default_list_rows(view.doctype) + + if default_rows: + view.rows = view.rows + default_rows + + view.rows = remove_duplicates(view.rows) + + doc.columns = json.dumps(view.columns) + doc.rows = json.dumps(view.rows) + doc.insert() + return doc @frappe.whitelist() -def update(doctype, columns, rows): - default_rows = sync_default_list_rows(doctype) +def update(view): + view = frappe._dict(view) + default_rows = sync_default_list_rows(view.doctype) + columns = view.columns or [] + filters = view.filters + rows = view.rows or [] + default_columns = view.default_columns or False if default_rows: rows = rows + default_rows rows = remove_duplicates(rows) - if not frappe.db.exists("CRM View Settings", doctype): - # create new CRM View Settings - doc = frappe.new_doc("CRM View Settings") - doc.name = doctype - doc.columns = json.dumps(columns) - doc.rows = json.dumps(rows) - doc.insert() - else: - # update existing CRM View Settings - doc = frappe.get_doc("CRM View Settings", doctype) - doc.columns = json.dumps(columns) - doc.rows = json.dumps(rows) - doc.save() + doc = frappe.get_doc("CRM View Settings", view.name) + doc.default_columns = default_columns + doc.filters = json.dumps(filters) + doc.order_by = view.order_by + doc.columns = json.dumps(columns) + doc.rows = json.dumps(rows) + doc.save() + return doc + +@frappe.whitelist() +def delete(name): + if frappe.db.exists("CRM View Settings", name): + frappe.delete_doc("CRM View Settings", name) def remove_duplicates(l): return list(dict.fromkeys(l)) @@ -43,8 +82,3 @@ def sync_default_list_rows(doctype): rows = list.default_list_data().get("rows") return rows - -@frappe.whitelist() -def reset_to_default(doctype): - if frappe.db.exists("CRM View Settings", doctype): - frappe.delete_doc("CRM View Settings", doctype) \ No newline at end of file