fix: added api's to create, update & delete CRM View Settings

This commit is contained in:
Shariq Ansari 2023-12-31 14:50:25 +05:30
parent 0b791516a5
commit 95f16759dd

View File

@ -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)