From 5f4cf98ee20f5aac96fb1cbb947469414cefe44d Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Thu, 28 May 2020 22:09:19 +0530 Subject: [PATCH] feat: added featured checkbox and validation --- frappe/website/doctype/blog_post/blog_post.json | 14 +++++++++++--- frappe/website/doctype/blog_post/blog_post.py | 10 ++++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/frappe/website/doctype/blog_post/blog_post.json b/frappe/website/doctype/blog_post/blog_post.json index 3d24879c62..3fb18af2cd 100644 --- a/frappe/website/doctype/blog_post/blog_post.json +++ b/frappe/website/doctype/blog_post/blog_post.json @@ -10,12 +10,13 @@ "title", "published_on", "published", - "read_time", + "featured", "disable_comments", "column_break_3", "blog_category", "blogger", "route", + "read_time", "section_break_5", "blog_intro", "content_type", @@ -143,7 +144,8 @@ { "fieldname": "meta_image", "fieldtype": "Attach Image", - "label": "Meta Image" + "label": "Meta Image", + "mandatory_depends_on": "eval:doc.featured" }, { "fieldname": "section_break_20", @@ -167,6 +169,12 @@ "fieldtype": "Int", "label": "Read Time", "read_only": 1 + }, + { + "default": "0", + "fieldname": "featured", + "fieldtype": "Check", + "label": "Featured" } ], "has_web_view": 1, @@ -175,7 +183,7 @@ "is_published_field": "published", "links": [], "max_attachments": 5, - "modified": "2020-04-30 17:32:41.055883", + "modified": "2020-05-28 21:40:26.068480", "modified_by": "Administrator", "module": "Website", "name": "Blog Post", diff --git a/frappe/website/doctype/blog_post/blog_post.py b/frappe/website/doctype/blog_post/blog_post.py index 5516d17780..0492173ad6 100644 --- a/frappe/website/doctype/blog_post/blog_post.py +++ b/frappe/website/doctype/blog_post/blog_post.py @@ -39,8 +39,18 @@ class BlogPost(WebsiteGenerator): if self.published and not self.published_on: self.published_on = today() + if self.featured: + if not self.meta_image: + frappe.throw(_("A featured post must have a cover image")) + self.reset_featured_for_other_blogs() + self.set_read_time() + def reset_featured_for_other_blogs(self): + all_posts = frappe.get_all("Blog Post", {"featured": 1}) + for post in all_posts: + frappe.db.set_value("Blog Post", post.name, "featured", 0) + def on_update(self): super(BlogPost, self).on_update() clear_cache("writers")