From cc338238f975554128eb42278b2518284730973f Mon Sep 17 00:00:00 2001 From: barredterra <14891507+barredterra@users.noreply.github.com> Date: Wed, 28 Oct 2020 10:59:20 +0100 Subject: [PATCH 1/5] fix: display web template after save --- frappe/website/doctype/web_template/web_template.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/frappe/website/doctype/web_template/web_template.js b/frappe/website/doctype/web_template/web_template.js index df5b3cb2c1..c687c494c4 100644 --- a/frappe/website/doctype/web_template/web_template.js +++ b/frappe/website/doctype/web_template/web_template.js @@ -8,6 +8,9 @@ frappe.ui.form.on('Web Template', { } frm.toggle_display('standard', frappe.boot.developer_mode); + // necessary to show template field again, after it was hidden when + // unchecking 'standard'. + frm.toggle_display('template', !frm.doc.standard); }, standard: function(frm) { if (!frm.doc.standard && !frm.is_new()) { From 292f14c1614cfa46af99c2c183b7259fd3bf00a1 Mon Sep 17 00:00:00 2001 From: barredterra <14891507+barredterra@users.noreply.github.com> Date: Wed, 28 Oct 2020 11:44:18 +0100 Subject: [PATCH 2/5] fix: don't save template twice --- .../doctype/web_template/web_template.py | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/frappe/website/doctype/web_template/web_template.py b/frappe/website/doctype/web_template/web_template.py index 8831bfbf58..0a8980a4e8 100644 --- a/frappe/website/doctype/web_template/web_template.py +++ b/frappe/website/doctype/web_template/web_template.py @@ -11,7 +11,7 @@ import frappe from frappe.model.document import Document from frappe import _ from frappe.modules.export_file import ( - export_to_files, + write_document_file, get_module_path, scrub_dt_dn, ) @@ -30,24 +30,36 @@ class WebTemplate(Document): if frappe.conf.developer_mode: # custom to standard if self.standard: - export_to_files(record_list=[["Web Template", self.name]], create_init=True) - self.create_template_file() - self.template = "" + self.export_to_files() # standard to custom was_standard = (self.get_doc_before_save() or {}).get("standard") if was_standard and not self.standard: - self.template = self.get_template(standard=True) - rmtree(self.get_template_folder()) + self.import_from_files() - def create_template_file(self): + def export_to_files(self): + """Export We Template to a new folder. + + Doc is exported as JSON. The content of the `template` field gets + written into a separate HTML file. The template should not be contained + in the JSON. + """ + html, self.template = self.template, "" + write_document_file(self, create_init=True) + self.create_template_file(html) + + def import_from_files(self): + self.template = self.get_template(standard=True) + rmtree(self.get_template_folder()) + + def create_template_file(self, html=None): """Touch a HTML file for the Web Template and add existing content, if any.""" if self.standard: path = self.get_template_path() if not os.path.exists(path): with open(path, "w") as template_file: - if self.template: - template_file.write(self.template) + if html: + template_file.write(html) def get_template_folder(self): """Return the absolute path to the template's folder.""" From 5faccc7f7f2c61bf0e8c593d6e6ef5345130da6c Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Thu, 5 Nov 2020 18:30:23 +0530 Subject: [PATCH 3/5] fix: Use before_save instead of on_update on_update runs after the save operation so any document changes do not persist --- frappe/website/doctype/web_template/web_template.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/website/doctype/web_template/web_template.py b/frappe/website/doctype/web_template/web_template.py index 0a8980a4e8..c57317a0f9 100644 --- a/frappe/website/doctype/web_template/web_template.py +++ b/frappe/website/doctype/web_template/web_template.py @@ -26,7 +26,7 @@ class WebTemplate(Document): if not field.fieldname: field.fieldname = frappe.scrub(field.label) - def on_update(self): + def before_save(self): if frappe.conf.developer_mode: # custom to standard if self.standard: From e4ea747fe78650c5ec0107f00af425b8eff89206 Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Thu, 5 Nov 2020 18:30:40 +0530 Subject: [PATCH 4/5] fix: Delete template folder on document delete --- frappe/website/doctype/web_template/web_template.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/frappe/website/doctype/web_template/web_template.py b/frappe/website/doctype/web_template/web_template.py index c57317a0f9..ed46e82bdc 100644 --- a/frappe/website/doctype/web_template/web_template.py +++ b/frappe/website/doctype/web_template/web_template.py @@ -37,6 +37,11 @@ class WebTemplate(Document): if was_standard and not self.standard: self.import_from_files() + def on_trash(self): + if frappe.conf.developer_mode and self.standard: + # delete template html and json files + rmtree(self.get_template_folder()) + def export_to_files(self): """Export We Template to a new folder. From 8887baa6be155a394c4767b39a2c68be201d0577 Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Thu, 5 Nov 2020 18:32:02 +0530 Subject: [PATCH 5/5] fix: typo --- frappe/website/doctype/web_template/web_template.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/website/doctype/web_template/web_template.py b/frappe/website/doctype/web_template/web_template.py index ed46e82bdc..3c61807099 100644 --- a/frappe/website/doctype/web_template/web_template.py +++ b/frappe/website/doctype/web_template/web_template.py @@ -43,7 +43,7 @@ class WebTemplate(Document): rmtree(self.get_template_folder()) def export_to_files(self): - """Export We Template to a new folder. + """Export Web Template to a new folder. Doc is exported as JSON. The content of the `template` field gets written into a separate HTML file. The template should not be contained