def handle_html(data): from html2text import HTML2Text # return if no html tags found data = frappe.as_unicode(data) if "<" not in data or ">" not in data: return data h = unescape_html(data or "") obj = HTML2Text() obj.ignore_links = True obj.body_width = 0 try: value = obj.handle(h) except Exception: # unable to parse html, send it raw return data value = ", ".join(value.split(" \n")) value = " ".join(value.split("\n")) value = ", ".join(value.split("# ")) return value
def get_formatted_value(value, field): """ Prepare field from raw data :param value: :param field: :return: """ if getattr(field, 'fieldtype', None) in ["Text", "Text Editor"]: value = unescape_html(frappe.safe_decode(value)) value = (re.subn(r'<[\s]*(script|style).*?</\1>(?s)', '', text_type(value))[0]) value = ' '.join(value.split()) return field.label + " : " + strip_html_tags(text_type(value))
def set_fetch_from_value(self, doctype, df, values): fetch_from_fieldname = df.fetch_from.split('.')[-1] value = values[fetch_from_fieldname] if df.fieldtype == 'Small Text' or df.fieldtype == 'Text' or df.fieldtype == 'Data': if fetch_from_fieldname in default_fields: from frappe.model.meta import get_default_df fetch_from_df = get_default_df(fetch_from_fieldname) else: fetch_from_df = frappe.get_meta(doctype).get_field( fetch_from_fieldname) fetch_from_ft = fetch_from_df.get('fieldtype') if fetch_from_ft == 'Text Editor' and value: value = unescape_html(strip_html(value)) setattr(self, df.fieldname, value)
def set_fetch_from_value(self, doctype, df, values): fetch_from_fieldname = df.fetch_from.split('.')[-1] value = values[fetch_from_fieldname] if df.fieldtype in ['Small Text', 'Text', 'Data']: if fetch_from_fieldname in default_fields: from frappe.model.meta import get_default_df fetch_from_df = get_default_df(fetch_from_fieldname) else: fetch_from_df = frappe.get_meta(doctype).get_field(fetch_from_fieldname) if not fetch_from_df: frappe.throw( _('Please check the value of "Fetch From" set for field {0}').format(frappe.bold(df.label)), title = _('Wrong Fetch From value') ) fetch_from_ft = fetch_from_df.get('fieldtype') if fetch_from_ft == 'Text Editor' and value: value = unescape_html(strip_html(value)) setattr(self, df.fieldname, value)