fix: always keep default rows set in default_list_data

This commit is contained in:
Shariq Ansari 2023-11-28 15:37:24 +05:30
parent 72a7770d31
commit f05c352461

View File

@ -2,7 +2,7 @@
# For license information, please see license.txt
import json
import frappe
from frappe.model.document import Document
from frappe.model.document import Document, get_controller
class CRMListViewSettings(Document):
@ -11,19 +11,35 @@ class CRMListViewSettings(Document):
@frappe.whitelist()
def update(doctype, columns, rows):
default_rows = sync_default_list_rows(doctype)
if default_rows:
rows = rows + default_rows
rows = remove_duplicates(rows)
if not frappe.db.exists("CRM List View Settings", doctype):
# create new CRM List View Settings
doc = frappe.new_doc("CRM List View Settings")
doc.name = doctype
doc.columns = json.dumps(columns)
doc.rows = json.dumps(remove_duplicates(rows))
doc.rows = json.dumps(rows)
doc.insert()
else:
# update existing CRM List View Settings
doc = frappe.get_doc("CRM List View Settings", doctype)
doc.columns = json.dumps(columns)
doc.rows = json.dumps(remove_duplicates(rows))
doc.rows = json.dumps(rows)
doc.save()
def remove_duplicates(l):
return list(dict.fromkeys(l))
return list(dict.fromkeys(l))
def sync_default_list_rows(doctype):
list = get_controller(doctype)
rows = []
if hasattr(list, "default_list_data"):
rows = list.default_list_data().get("rows")
return rows