@@ -541,6 +541,12 @@ class BaseDocument(object): | |||||
return val | return val | ||||
def _extract_images_from_text_editor(self): | |||||
from frappe.utils.file_manager import extract_images_from_html | |||||
if self.doctype != "DocType": | |||||
for df in self.meta.get("fields", {"fieldtype":"Text Editor"}): | |||||
extract_images_from_html(self, df.fieldname) | |||||
def _filter(data, filters, limit=None): | def _filter(data, filters, limit=None): | ||||
"""pass filters as: | """pass filters as: | ||||
{"key": "val", "key": ["!=", "val"], | {"key": "val", "key": ["!=", "val"], | ||||
@@ -299,11 +299,15 @@ class Document(BaseDocument): | |||||
self._validate_links() | self._validate_links() | ||||
self._validate_selects() | self._validate_selects() | ||||
self._validate_constants() | self._validate_constants() | ||||
self._extract_images_from_text_editor() | |||||
for d in self.get_all_children(): | |||||
children = self.get_all_children() | |||||
for d in children: | |||||
d._validate_selects() | d._validate_selects() | ||||
d._validate_constants() | d._validate_constants() | ||||
# extract images after validations to save processing if some validation error is raised | |||||
self._extract_images_from_text_editor() | |||||
for d in children: | |||||
d._extract_images_from_text_editor() | d._extract_images_from_text_editor() | ||||
def validate_higher_perm_levels(self): | def validate_higher_perm_levels(self): | ||||
@@ -488,12 +492,6 @@ class Document(BaseDocument): | |||||
ret.extend(value) | ret.extend(value) | ||||
return ret | return ret | ||||
def _extract_images_from_text_editor(self): | |||||
from frappe.utils.file_manager import extract_images_from_html | |||||
if self.doctype != "DocType": | |||||
for df in self.meta.get("fields", {"fieldtype":"Text Editor"}): | |||||
extract_images_from_html(self, df.fieldname) | |||||
def run_method(self, method, *args, **kwargs): | def run_method(self, method, *args, **kwargs): | ||||
"""run standard triggers, plus those in hooks""" | """run standard triggers, plus those in hooks""" | ||||
if "flags" in kwargs: | if "flags" in kwargs: | ||||
@@ -98,15 +98,18 @@ def extract_images_from_html(doc, fieldname): | |||||
mtype = headers.split(";")[0] | mtype = headers.split(";")[0] | ||||
filename = get_random_filename(content_type=mtype) | filename = get_random_filename(content_type=mtype) | ||||
doctype = doc.parenttype if doc.parent else doc.doctype | |||||
name = doc.parent or doc.name | |||||
# TODO fix this | # TODO fix this | ||||
file_url = save_file(filename, content, doc.doctype, doc.name, decode=True).get("file_url") | |||||
file_url = save_file(filename, content, doctype, name, decode=True).get("file_url") | |||||
if not frappe.flags.has_dataurl: | if not frappe.flags.has_dataurl: | ||||
frappe.flags.has_dataurl = True | frappe.flags.has_dataurl = True | ||||
return '<img src="{file_url}"'.format(file_url=file_url) | return '<img src="{file_url}"'.format(file_url=file_url) | ||||
if content: | if content: | ||||
content = re.sub('<img\s*src=\s*["\'](?=data:)(.*?)["\']', _save_file, content) | |||||
content = re.sub('<img[^>]*src\s*=\s*["\'](?=data:)(.*?)["\']', _save_file, content) | |||||
if frappe.flags.has_dataurl: | if frappe.flags.has_dataurl: | ||||
doc.set(fieldname, content) | doc.set(fieldname, content) | ||||