瀏覽代碼

[fix] save images attached in text editor fields of children

version-14
Anand Doshi 10 年之前
父節點
當前提交
1845c08676
共有 3 個檔案被更改,包括 17 行新增10 行删除
  1. +6
    -0
      frappe/model/base_document.py
  2. +6
    -8
      frappe/model/document.py
  3. +5
    -2
      frappe/utils/file_manager.py

+ 6
- 0
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"],


+ 6
- 8
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:


+ 5
- 2
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 '<img src="{file_url}"'.format(file_url=file_url)

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:
doc.set(fieldname, content)



Loading…
取消
儲存