54 lines
1.4 KiB
Python
54 lines
1.4 KiB
Python
import frappe
|
|
from frappe.model import no_value_fields, table_fields
|
|
|
|
|
|
@frappe.whitelist()
|
|
def get_preview_data(doctype, docname):
|
|
preview_fields = []
|
|
meta = frappe.get_meta(doctype)
|
|
if not meta.show_preview_popup:
|
|
return
|
|
|
|
preview_fields = [
|
|
field.fieldname
|
|
for field in meta.fields
|
|
if field.in_preview
|
|
and field.fieldtype not in no_value_fields
|
|
and field.fieldtype not in table_fields
|
|
]
|
|
|
|
# no preview fields defined, build list from mandatory fields
|
|
if not preview_fields:
|
|
preview_fields = [
|
|
field.fieldname for field in meta.fields if field.reqd and field.fieldtype not in table_fields
|
|
]
|
|
|
|
title_field = meta.get_title_field()
|
|
image_field = meta.image_field
|
|
|
|
preview_fields.append(title_field)
|
|
preview_fields.append(image_field)
|
|
preview_fields.append("name")
|
|
|
|
preview_data = frappe.get_list(doctype, filters={"name": docname}, fields=preview_fields, limit=1)
|
|
|
|
if not preview_data:
|
|
return
|
|
|
|
preview_data = preview_data[0]
|
|
|
|
formatted_preview_data = {
|
|
"preview_image": preview_data.get(image_field),
|
|
"preview_title": preview_data.get(title_field),
|
|
"name": preview_data.get("name"),
|
|
}
|
|
|
|
for key, val in preview_data.items():
|
|
if val and meta.has_field(key) and key not in [image_field, title_field, "name"]:
|
|
formatted_preview_data[meta.get_field(key).label] = frappe.format(
|
|
val,
|
|
meta.get_field(key).fieldtype,
|
|
translated=True,
|
|
)
|
|
|
|
return formatted_preview_data
|