seitime-frappe/frappe/desk/link_preview.py

28 lines
903 B
Python

import frappe
from frappe.model import no_value_fields
import json
@frappe.whitelist()
def get_preview_data(doctype, docname, fields):
fields = json.loads(fields)
preview_fields = [field['name'] for field in fields if field['type'] not in no_value_fields]
preview_fields.append(frappe.get_meta(doctype).get_title_field())
if 'name' not in fields:
preview_fields.append('name')
preview_fields.append(frappe.get_meta(doctype).image_field)
preview_data = frappe.get_list(doctype, filters={
'name': docname
}, fields=preview_fields, limit=1)
if preview_data:
preview_data = preview_data[0]
preview_data = {k: v for k, v in preview_data.items() if v is not None}
for k,v in preview_data.items():
if frappe.get_meta(doctype).has_field(k):
preview_data[k] = frappe.format(v,frappe.get_meta(doctype).get_field(k).fieldtype)
if not preview_data:
return None
return preview_data