From 19ce3e7586f65b1cc9ef013c1c2b32f741440e52 Mon Sep 17 00:00:00 2001
From: Rushabh Mehta
Date: Mon, 27 Jun 2016 14:54:23 +0530
Subject: [PATCH] [fixes] website
---
frappe/core/doctype/doctype/doctype.py | 13 ++++++
frappe/public/js/legacy/form.js | 2 +-
frappe/templates/generators/blog_post.html | 2 +-
frappe/templates/includes/blog/blog_row.html | 2 +-
frappe/templates/includes/search_box.html | 40 +++++++++----------
.../doctype/blog_category/blog_category.json | 2 +-
frappe/website/doctype/blog_post/blog_post.py | 9 +++--
7 files changed, 42 insertions(+), 28 deletions(-)
diff --git a/frappe/core/doctype/doctype/doctype.py b/frappe/core/doctype/doctype/doctype.py
index e8871b681b..a3f7aca40d 100644
--- a/frappe/core/doctype/doctype/doctype.py
+++ b/frappe/core/doctype/doctype/doctype.py
@@ -58,6 +58,7 @@ class DocType(Document):
validate_permissions(self)
self.make_amendable()
+ self.validate_website()
def check_developer_mode(self):
"""Throw exception if not developer mode or via patch"""
@@ -73,6 +74,18 @@ class DocType(Document):
if self.document_type=="Master":
self.document_type = "Setup"
+ def validate_website(self):
+ """Ensure that website generator has field 'route'"""
+ from frappe.model.base_document import get_controller
+ try:
+ controller = get_controller(self.name)
+ except:
+ controller = None
+
+ if controller and controller.website:
+ if not 'route' in [d.fieldname for d in self.fields]:
+ frappe.throw('Field "route" is mandatory for Website Generator pages', title='Missing Field')
+
def change_modified_of_parent(self):
"""Change the timestamp of parent DocType if the current one is a child to clear caches."""
if frappe.flags.in_import:
diff --git a/frappe/public/js/legacy/form.js b/frappe/public/js/legacy/form.js
index 2ac064861a..6a55f2cef7 100644
--- a/frappe/public/js/legacy/form.js
+++ b/frappe/public/js/legacy/form.js
@@ -365,7 +365,7 @@ _f.Frm.prototype.show_web_link = function() {
_f.Frm.prototype.add_web_link = function(path) {
this.web_link = this.sidebar.add_user_action("See on Website",
- function() {}).attr("href", path).attr("target", "_blank");
+ function() {}).attr("href", this.doc.route).attr("target", "_blank");
}
_f.Frm.prototype.check_doc_perm = function() {
diff --git a/frappe/templates/generators/blog_post.html b/frappe/templates/generators/blog_post.html
index b2c8079141..45786de49f 100644
--- a/frappe/templates/generators/blog_post.html
+++ b/frappe/templates/generators/blog_post.html
@@ -11,7 +11,7 @@
By {{ blogger_info and blogger_info.full_name or full_name }}
{{ frappe.format_date(published_on) }}
- {{ blog_category }}
+ {{ category.title }}
{{ comment_text }}
diff --git a/frappe/templates/includes/blog/blog_row.html b/frappe/templates/includes/blog/blog_row.html
index 897a640a4f..6861e7f668 100644
--- a/frappe/templates/includes/blog/blog_row.html
+++ b/frappe/templates/includes/blog/blog_row.html
@@ -8,7 +8,7 @@
By {{ post.full_name }}
{{ frappe.format_date(post.published_on) }}
- {{ post.blog_category }}
+ {{ post.category.title }}
{{ post.comment_text }}
diff --git a/frappe/templates/includes/search_box.html b/frappe/templates/includes/search_box.html
index 5e94ee62f3..32c2cb9733 100644
--- a/frappe/templates/includes/search_box.html
+++ b/frappe/templates/includes/search_box.html
@@ -1,39 +1,37 @@
-
+
diff --git a/frappe/website/doctype/blog_category/blog_category.json b/frappe/website/doctype/blog_category/blog_category.json
index 61e0acb4fd..011681c37e 100644
--- a/frappe/website/doctype/blog_category/blog_category.json
+++ b/frappe/website/doctype/blog_category/blog_category.json
@@ -120,7 +120,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
- "modified": "2016-06-23 14:45:10.682909",
+ "modified": "2016-06-27 12:25:12.502119",
"modified_by": "Administrator",
"module": "Website",
"name": "Blog Category",
diff --git a/frappe/website/doctype/blog_post/blog_post.py b/frappe/website/doctype/blog_post/blog_post.py
index b4926cd57e..accfe37394 100644
--- a/frappe/website/doctype/blog_post/blog_post.py
+++ b/frappe/website/doctype/blog_post/blog_post.py
@@ -84,8 +84,10 @@ class BlogPost(WebsiteGenerator):
else:
context.comment_text = _('{0} comments').format(len(context.comment_list))
- context.category = frappe.db.get_value("Blog Category", context.doc.blog_category, ["title", "route"], as_dict=1)
- context.parents = [{"title": context.category.title, "name": context.category.route}]
+ context.category = frappe.db.get_value("Blog Category",
+ context.doc.blog_category, ["title", "route"], as_dict=1)
+ context.parents = [{"title": context.category.title, "name":
+ context.category.route}]
def get_list_context(context=None):
list_context = frappe._dict(
@@ -178,7 +180,8 @@ def get_blog_list(doctype, txt=None, filters=None, limit_start=0, limit_page_len
post.comment_text = _('{0} comments').format(str(post.comments))
post.avatar = post.avatar or ""
- post.blog_category_route = frappe.db.get_value('Blog Post', post.blog_category, 'route')
+ post.category = frappe.db.get_value('Blog Category', post.blog_category,
+ ['route', 'title'], as_dict=True)
if (not "http:" in post.avatar or "https:" in post.avatar) and not post.avatar.startswith("/"):
post.avatar = "/" + post.avatar