diff --git a/frappe/model/base_document.py b/frappe/model/base_document.py index 0fb6caa206..d140a8330b 100644 --- a/frappe/model/base_document.py +++ b/frappe/model/base_document.py @@ -541,6 +541,12 @@ class BaseDocument(object): 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): """pass filters as: {"key": "val", "key": ["!=", "val"], diff --git a/frappe/model/document.py b/frappe/model/document.py index 357d978e3e..13ee0ced6e 100644 --- a/frappe/model/document.py +++ b/frappe/model/document.py @@ -299,11 +299,15 @@ class Document(BaseDocument): self._validate_links() self._validate_selects() 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_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() def validate_higher_perm_levels(self): @@ -488,12 +492,6 @@ class Document(BaseDocument): ret.extend(value) 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): """run standard triggers, plus those in hooks""" if "flags" in kwargs: diff --git a/frappe/public/css/page.css b/frappe/public/css/page.css index b6f7ada743..62dd52bd5f 100644 --- a/frappe/public/css/page.css +++ b/frappe/public/css/page.css @@ -20,6 +20,7 @@ } .page-body { overflow-x: hidden; + min-height: calc(60vh); } .page-title h6 { margin-top: -8px; diff --git a/frappe/public/less/page.less b/frappe/public/less/page.less index 3f58b5ffcf..e260af1821 100644 --- a/frappe/public/less/page.less +++ b/frappe/public/less/page.less @@ -26,6 +26,7 @@ .page-body { overflow-x: hidden; + min-height: calc(100vh - 40px); } .page-title { diff --git a/frappe/utils/file_manager.py b/frappe/utils/file_manager.py index cbfcecccf9..8b0c0a93ae 100644 --- a/frappe/utils/file_manager.py +++ b/frappe/utils/file_manager.py @@ -98,15 +98,18 @@ def extract_images_from_html(doc, fieldname): mtype = headers.split(";")[0] 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 - 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: frappe.flags.has_dataurl = True return ']*src\s*=\s*["\'](?=data:)(.*?)["\']', _save_file, content) if frappe.flags.has_dataurl: doc.set(fieldname, content)