Merge pull request #902 from nabinhait/hotfix
[Fix] rebuild page name on change of obj name
This commit is contained in:
commit
620c80d8b2
1 changed files with 29 additions and 11 deletions
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
from frappe.utils import now
|
||||
from frappe.model.document import Document
|
||||
from frappe.model.naming import append_number_if_name_exists
|
||||
from frappe.website.utils import cleanup_page_name, get_home_page
|
||||
|
|
@ -22,9 +23,16 @@ class WebsiteGenerator(Document):
|
|||
|
||||
def validate(self):
|
||||
self.set_parent_website_route()
|
||||
if self.website_published() and self.meta.get_field("page_name") and not self.page_name:
|
||||
self.page_name = self.get_page_name()
|
||||
self.update_routes_of_descendants()
|
||||
|
||||
if self.meta.get_field("page_name") and not self.get("__islocal"):
|
||||
current_route = self.get_route()
|
||||
current_page_name = self.page_name
|
||||
|
||||
self.page_name = self.make_page_name()
|
||||
|
||||
# page name changed, rename everything
|
||||
if current_page_name and current_page_name != self.page_name:
|
||||
self.update_routes_of_descendants(current_route)
|
||||
|
||||
def on_update(self):
|
||||
clear_cache(self.get_route())
|
||||
|
|
@ -32,9 +40,6 @@ class WebsiteGenerator(Document):
|
|||
frappe.add_version(self)
|
||||
|
||||
def get_route(self, doc = None):
|
||||
if not self.website_published():
|
||||
return None
|
||||
|
||||
self.get_page_name()
|
||||
return make_route(self)
|
||||
|
||||
|
|
@ -47,11 +52,14 @@ class WebsiteGenerator(Document):
|
|||
def get_or_make_page_name(self):
|
||||
page_name = self.get("page_name")
|
||||
if not page_name:
|
||||
page_name = cleanup_page_name(self.get(self.page_title_field))
|
||||
page_name = self.make_page_name()
|
||||
self.set("page_name", page_name)
|
||||
|
||||
return page_name
|
||||
|
||||
def make_page_name(self):
|
||||
return cleanup_page_name(self.get(self.page_title_field))
|
||||
|
||||
def before_rename(self, oldname, name, merge):
|
||||
self._local = self.get_route()
|
||||
self.clear_cache()
|
||||
|
|
@ -84,10 +92,20 @@ class WebsiteGenerator(Document):
|
|||
old_route = frappe.get_doc(self.doctype, self.name).get_route()
|
||||
|
||||
if old_route and old_route != self.get_route():
|
||||
frappe.db.sql("""update `tab{0}` set
|
||||
parent_website_route = replace(parent_website_route, %s, %s)
|
||||
where parent_website_route like %s""".format(self.doctype),
|
||||
(old_route, self.get_route(), old_route + "%"))
|
||||
# clear cache of old routes
|
||||
old_routes = frappe.get_all(self.doctype, fields=["parent_website_route", "page_name"],
|
||||
filters={"parent_website_route": ("like", old_route + "%")})
|
||||
|
||||
if old_routes:
|
||||
for old_route in old_routes:
|
||||
clear_cache(old_route)
|
||||
|
||||
frappe.db.sql("""update `tab{0}` set
|
||||
parent_website_route = replace(parent_website_route, %s, %s),
|
||||
modified = %s
|
||||
modified_by = %s
|
||||
where parent_website_route like %s""".format(self.doctype),
|
||||
(old_route, self.get_route(), now(), frappe.session.user, old_route + "%"))
|
||||
|
||||
def get_website_route(self):
|
||||
route = frappe._dict()
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue