From 2d98c02ec6a03a0ff7d6dc4efb64bba9aa1e28e3 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Thu, 7 May 2015 12:24:35 -0700 Subject: [PATCH 1/2] [css] min-height for page-body --- frappe/public/css/page.css | 1 + frappe/public/less/page.less | 1 + 2 files changed, 2 insertions(+) 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 { From 1845c08676f659465aeb4ea5927e75a7e8c8540a Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Thu, 7 May 2015 12:25:54 -0700 Subject: [PATCH 2/2] [fix] save images attached in text editor fields of children --- frappe/model/base_document.py | 6 ++++++ frappe/model/document.py | 14 ++++++-------- frappe/utils/file_manager.py | 7 +++++-- 3 files changed, 17 insertions(+), 10 deletions(-) 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/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)