# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors # License: MIT. See LICENSE import datetime import re from dateutil.parser import ParserError import frappe from frappe.model.meta import get_field_currency, get_field_precision from frappe.utils import ( cint, cstr, flt, fmt_money, format_datetime, format_duration, format_time, format_timedelta, formatdate, ) BLOCK_TAGS_PATTERN = re.compile(r"(") elif df.get("fieldtype") == "Markdown Editor": return frappe.utils.markdown(value) elif df.get("fieldtype") == "Table MultiSelect": values = [] meta = frappe.get_meta(df.options) link_field = [df for df in meta.fields if df.fieldtype == "Link"][0] for v in value: v.update({"__link_titles": doc.get("__link_titles")}) formatted_value = frappe.format_value(v.get(link_field.fieldname, ""), link_field, v) values.append(formatted_value) return ", ".join(values) elif df.get("fieldtype") == "Duration": hide_days = df.hide_days return format_duration(value, hide_days) elif df.get("fieldtype") == "Text Editor": return f"
{value}
" elif df.get("fieldtype") in ["Link", "Dynamic Link"]: if not doc or not doc.get("__link_titles") or not df.options: return value doctype = df.options if df.get("fieldtype") == "Dynamic Link": if not df.parent: return value meta = frappe.get_meta(df.parent) _field = meta.get_field(df.options) doctype = _field.options return doc.__link_titles.get(f"{doctype}::{value}", value) return value