[website] [minor] moving website helper methods to doctypes
diff --git a/config.json b/config.json
index e0f98d8..19f787e 100644
--- a/config.json
+++ b/config.json
@@ -90,7 +90,7 @@
 			},
 			"blog": {
 				"template": "app/website/templates/pages/blog",
-				"args_method": "website.helpers.blog.get_blog_template_args"
+				"args_method": "website.doctype.blog_post.blog_post.get_blog_template_args"
 			},
 			"contact": {
 				"template": "app/website/templates/pages/contact",
@@ -185,7 +185,7 @@
 			},
 			"partners": {
 				"template": "app/website/templates/pages/partners",
-				"args_method": "website.helpers.partner.get_partner_args"
+				"args_method": "setup.doctype.sales_partner.sales_partner.get_partner_args"
 			}
 		},
 		"generators": {
diff --git a/setup/doctype/item_group/item_group.py b/setup/doctype/item_group/item_group.py
index 81f6903..e2eb5e9 100644
--- a/setup/doctype/item_group/item_group.py
+++ b/setup/doctype/item_group/item_group.py
@@ -60,6 +60,6 @@
 		self.doc.title = self.doc.name
 
 		if self.doc.slideshow:
-			from website.helpers.slideshow import get_slideshow
+			from website.doctype.website_slideshow.website_slideshow import get_slideshow
 			get_slideshow(self)
 		
\ No newline at end of file
diff --git a/setup/doctype/sales_partner/sales_partner.py b/setup/doctype/sales_partner/sales_partner.py
index 2c39e67..d63376d 100644
--- a/setup/doctype/sales_partner/sales_partner.py
+++ b/setup/doctype/sales_partner/sales_partner.py
@@ -43,3 +43,9 @@
 				"partner_address": filter_strip_join(address_rows, "\n<br>"),
 				"phone": filter_strip_join(cstr(address.phone).split(","), "\n<br>")
 			})
+
+def get_partner_args():
+	return {
+		"partners": webnotes.conn.sql("""select * from `tabSales Partner`
+			where show_in_website=1 order by name asc""", as_dict=True),
+	}
\ No newline at end of file
diff --git a/startup/event_handlers.py b/startup/event_handlers.py
index fa08962..84a91a4 100644
--- a/startup/event_handlers.py
+++ b/startup/event_handlers.py
@@ -65,7 +65,7 @@
 	raise webnotes.AuthenticationError
 
 def on_build():
-	from website.helpers.make_web_include_files import make
+	from website.doctype.website_settings.make_web_include_files import make
 	make()
 	
 	from home.page.latest_updates import latest_updates
diff --git a/stock/doctype/item/item.py b/stock/doctype/item/item.py
index 75e2b03..dab7dea 100644
--- a/stock/doctype/item/item.py
+++ b/stock/doctype/item/item.py
@@ -264,7 +264,7 @@
 		self.doc.title = self.doc.item_name
 
 		if self.doc.slideshow:
-			from website.helpers.slideshow import get_slideshow
+			from website.doctype.website_slideshow.website_slideshow import get_slideshow
 			get_slideshow(self)								
 
 	def get_file_details(self, arg = ''):
diff --git a/website/helpers/blog_feed.py b/website/doctype/blog_post/blog_feed.py
similarity index 100%
rename from website/helpers/blog_feed.py
rename to website/doctype/blog_post/blog_feed.py
diff --git a/website/doctype/blog_post/blog_post.py b/website/doctype/blog_post/blog_post.py
index 48b3206..143b64d 100644
--- a/website/doctype/blog_post/blog_post.py
+++ b/website/doctype/blog_post/blog_post.py
@@ -67,3 +67,110 @@
 		for comment in self.doc.comment_list:
 			comment['comment_date'] = webnotes.utils.global_date_format(comment['creation'])
 			comment['comment'] = markdown2.markdown(comment['comment'])
+			
+def clear_blog_cache():
+	for blog in webnotes.conn.sql_list("""select page_name from 
+		`tabBlog Post` where ifnull(published,0)=1"""):
+		webnotes.webutils.delete_page_cache(blog)
+	
+	webnotes.webutils.delete_page_cache("writers")
+
+@webnotes.whitelist(allow_guest=True)
+def get_blog_list(start=0, by=None, category=None):
+	import webnotes
+	condition = ""
+	if by:
+		condition = " and t1.blogger='%s'" % by.replace("'", "\'")
+	if category:
+		condition += " and t1.blog_category='%s'" % category.replace("'", "\'")
+	query = """\
+		select
+			t1.title, t1.name, t1.page_name, t1.published_on as creation, 
+				ifnull(t1.blog_intro, t1.content) as content, 
+				t2.full_name, t2.avatar, t1.blogger,
+				(select count(name) from `tabComment` where
+					comment_doctype='Blog Post' and comment_docname=t1.name) as comments
+		from `tabBlog Post` t1, `tabBlogger` t2
+		where ifnull(t1.published,0)=1
+		and t1.blogger = t2.name
+		%(condition)s
+		order by published_on desc, name asc
+		limit %(start)s, 20""" % {"start": start, "condition": condition}
+		
+	result = webnotes.conn.sql(query, as_dict=1)
+
+	# strip html tags from content
+	import webnotes.utils
+	
+	for res in result:
+		from webnotes.utils import global_date_format
+		res['published'] = global_date_format(res['creation'])
+		if not res['content']:
+			res['content'] = webnotes.webutils.get_html(res['page_name'])
+		res['content'] = res['content'][:140]
+		
+	return result
+
+@webnotes.whitelist(allow_guest=True)
+def add_comment(args=None):
+	"""
+		args = {
+			'comment': '',
+			'comment_by': '',
+			'comment_by_fullname': '',
+			'comment_doctype': '',
+			'comment_docname': '',
+			'page_name': '',
+		}
+	"""
+	import webnotes
+	import webnotes.utils, markdown2
+	
+	if not args: args = webnotes.form_dict
+	args['comment'] = unicode(markdown2.markdown(args.get('comment') or ''))
+	args['doctype'] = "Comment"
+	
+	page_name = args.get("page_name")
+	if "page_name" in args:
+		del args["page_name"]
+	if "cmd" in args:
+		del args["cmd"]
+		
+	comment = webnotes.bean(args)
+	comment.ignore_permissions = True
+	comment.insert()
+	
+	# since comments are embedded in the page, clear the web cache
+	webnotes.webutils.clear_cache(page_name)
+	
+	args['comment_date'] = webnotes.utils.global_date_format(comment.doc.creation)
+	template_args = { 'comment_list': [args], 'template': 'app/website/templates/html/comment.html' }
+	
+	# get html of comment row
+	comment_html = webnotes.webutils.build_html(template_args)
+	
+	# notify commentors 
+	commentors = [d[0] for d in webnotes.conn.sql("""select comment_by from tabComment where
+		comment_doctype='Blog Post' and comment_docname=%s and
+		ifnull(unsubscribed, 0)=0""", args.get('comment_docname'))]
+	
+	blog = webnotes.doc("Blog Post", args.get("comment_docname"))
+	blogger_profile = webnotes.conn.get_value("Blogger", blog.blogger, "profile")
+	blogger_email = webnotes.conn.get_value("Profile", blogger_profile, "email")
+	
+	from webnotes.utils.email_lib.bulk import send
+	send(recipients=list(set(commentors + [blogger_email])), 
+		doctype='Comment', 
+		email_field='comment_by', 
+		subject='New Comment on Blog: ' + blog.title, 
+		message='%(comment)s<p>By %(comment_by_fullname)s</p>' % args,
+		ref_doctype='Blog Post', ref_docname=blog.name)
+	
+	return comment_html.replace("\n", "")
+
+def get_blog_template_args():
+	args = {
+		"categories": webnotes.conn.sql_list("select name from `tabBlog Category` order by name")
+	}
+	args.update(webnotes.doc("Blog Settings", "Blog Settings").fields)
+	return args
diff --git a/website/doctype/blogger/blogger.py b/website/doctype/blogger/blogger.py
index 9cb4a44..fd646fd 100644
--- a/website/doctype/blogger/blogger.py
+++ b/website/doctype/blogger/blogger.py
@@ -14,7 +14,7 @@
 	def on_update(self):
 		"if profile is set, then update all older blogs"
 		
-		from website.helpers.blog import clear_blog_cache
+		from website.doctype.blog_post.blog_post import clear_blog_cache
 		clear_blog_cache()
 		
 		if self.doc.profile:
diff --git a/website/doctype/style_settings/style_settings.py b/website/doctype/style_settings/style_settings.py
index 7efe861..073d3f9 100644
--- a/website/doctype/style_settings/style_settings.py
+++ b/website/doctype/style_settings/style_settings.py
@@ -94,5 +94,5 @@
 	
 	def on_update(self):
 		"""rebuild pages"""
-		from website.helpers.make_web_include_files import make
+		from website.doctype.website_settings.make_web_include_files import make
 		make()
\ No newline at end of file
diff --git a/website/doctype/web_page/web_page.py b/website/doctype/web_page/web_page.py
index dbcd68e..f0045fd 100644
--- a/website/doctype/web_page/web_page.py
+++ b/website/doctype/web_page/web_page.py
@@ -29,7 +29,7 @@
 			
 	def prepare_template_args(self):
 		if self.doc.slideshow:
-			from website.helpers.slideshow import get_slideshow
+			from website.doctype.website_slideshow.website_slideshow import get_slideshow
 			get_slideshow(self)
 			
 		self.doc.meta_description = self.doc.description
diff --git a/website/doctype/website_script/website_script.py b/website/doctype/website_script/website_script.py
index 2a5b9e2..c449df6 100644
--- a/website/doctype/website_script/website_script.py
+++ b/website/doctype/website_script/website_script.py
@@ -12,5 +12,5 @@
 		
 	def on_update(self):
 		# make js and css
-		from website.helpers.make_web_include_files import make
+		from website.doctype.website_settings.make_web_include_files import make
 		make()
\ No newline at end of file
diff --git a/website/helpers/make_web_include_files.py b/website/doctype/website_settings/make_web_include_files.py
similarity index 100%
rename from website/helpers/make_web_include_files.py
rename to website/doctype/website_settings/make_web_include_files.py
diff --git a/website/doctype/website_settings/website_settings.py b/website/doctype/website_settings/website_settings.py
index 5d6c874..135c753 100644
--- a/website/doctype/website_settings/website_settings.py
+++ b/website/doctype/website_settings/website_settings.py
@@ -58,7 +58,7 @@
 
 	def on_update(self):
 		# make js and css
-		from website.helpers.make_web_include_files import make
+		from website.doctype.website_settings.make_web_include_files import make
 		make()
 		
 		# clear web cache (for menus!)
diff --git a/website/doctype/website_slideshow/website_slideshow.py b/website/doctype/website_slideshow/website_slideshow.py
index 8bc0447..eb7de7a 100644
--- a/website/doctype/website_slideshow/website_slideshow.py
+++ b/website/doctype/website_slideshow/website_slideshow.py
@@ -13,4 +13,9 @@
 	def on_update(self):
 		# a slide show can be in use and any change in it should get reflected
 		from webnotes.webutils import clear_cache
-		clear_cache()
\ No newline at end of file
+		clear_cache()
+		
+def get_slideshow(obj):
+	slideshow = webnotes.bean("Website Slideshow", obj.doc.slideshow)
+	obj.slides = slideshow.doclist.get({"doctype":"Website Slideshow Item"})
+	obj.doc.slideshow_header = slideshow.doc.header or ""
\ No newline at end of file
diff --git a/website/helpers/blog.py b/website/helpers/blog.py
deleted file mode 100644
index 3f6d94f..0000000
--- a/website/helpers/blog.py
+++ /dev/null
@@ -1,121 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import webnotes
-import webnotes.webutils
-from webnotes import _
-
-def clear_blog_cache():
-	for blog in webnotes.conn.sql_list("""select page_name from 
-		`tabBlog Post` where ifnull(published,0)=1"""):
-		webnotes.webutils.delete_page_cache(blog)
-	
-	webnotes.webutils.delete_page_cache("writers")
-
-@webnotes.whitelist(allow_guest=True)
-def get_blog_list(start=0, by=None, category=None):
-	import webnotes
-	condition = ""
-	if by:
-		condition = " and t1.blogger='%s'" % by.replace("'", "\'")
-	if category:
-		condition += " and t1.blog_category='%s'" % category.replace("'", "\'")
-	query = """\
-		select
-			t1.title, t1.name, t1.page_name, t1.published_on as creation, 
-				ifnull(t1.blog_intro, t1.content) as content, 
-				t2.full_name, t2.avatar, t1.blogger,
-				(select count(name) from `tabComment` where
-					comment_doctype='Blog Post' and comment_docname=t1.name) as comments
-		from `tabBlog Post` t1, `tabBlogger` t2
-		where ifnull(t1.published,0)=1
-		and t1.blogger = t2.name
-		%(condition)s
-		order by published_on desc, name asc
-		limit %(start)s, 20""" % {"start": start, "condition": condition}
-		
-	result = webnotes.conn.sql(query, as_dict=1)
-
-	# strip html tags from content
-	import webnotes.utils
-	
-	for res in result:
-		from webnotes.utils import global_date_format
-		res['published'] = global_date_format(res['creation'])
-		if not res['content']:
-			res['content'] = webnotes.webutils.get_html(res['page_name'])
-		res['content'] = res['content'][:140]
-		
-	return result
-
-@webnotes.whitelist(allow_guest=True)
-def add_comment(args=None):
-	"""
-		args = {
-			'comment': '',
-			'comment_by': '',
-			'comment_by_fullname': '',
-			'comment_doctype': '',
-			'comment_docname': '',
-			'page_name': '',
-		}
-	"""
-	import webnotes
-	import webnotes.utils, markdown2
-	
-	if not args: args = webnotes.form_dict
-	args['comment'] = unicode(markdown2.markdown(args.get('comment') or ''))
-	args['doctype'] = "Comment"
-	
-	page_name = args.get("page_name")
-	if "page_name" in args:
-		del args["page_name"]
-	if "cmd" in args:
-		del args["cmd"]
-		
-	comment = webnotes.bean(args)
-	comment.ignore_permissions = True
-	comment.insert()
-	
-	# since comments are embedded in the page, clear the web cache
-	webnotes.webutils.clear_cache(page_name)
-	
-	args['comment_date'] = webnotes.utils.global_date_format(comment.doc.creation)
-	template_args = { 'comment_list': [args], 'template': 'app/website/templates/html/comment.html' }
-	
-	# get html of comment row
-	comment_html = webnotes.webutils.build_html(template_args)
-	
-	# notify commentors 
-	commentors = [d[0] for d in webnotes.conn.sql("""select comment_by from tabComment where
-		comment_doctype='Blog Post' and comment_docname=%s and
-		ifnull(unsubscribed, 0)=0""", args.get('comment_docname'))]
-	
-	blog = webnotes.doc("Blog Post", args.get("comment_docname"))
-	blogger_profile = webnotes.conn.get_value("Blogger", blog.blogger, "profile")
-	blogger_email = webnotes.conn.get_value("Profile", blogger_profile, "email")
-	
-	from webnotes.utils.email_lib.bulk import send
-	send(recipients=list(set(commentors + [blogger_email])), 
-		doctype='Comment', 
-		email_field='comment_by', 
-		subject='New Comment on Blog: ' + blog.title, 
-		message='%(comment)s<p>By %(comment_by_fullname)s</p>' % args,
-		ref_doctype='Blog Post', ref_docname=blog.name)
-	
-	return comment_html.replace("\n", "")
-
-def get_blog_content(blog_page_name):
-	import webnotes.webutils
-	content = webnotes.webutils.get_html(blog_page_name)
-	import webnotes.utils
-	content = webnotes.utils.escape_html(content)
-	return content
-
-def get_blog_template_args():
-	args = {
-		"categories": webnotes.conn.sql_list("select name from `tabBlog Category` order by name")
-	}
-	args.update(webnotes.doc("Blog Settings", "Blog Settings").fields)
-	return args
diff --git a/website/helpers/partner.py b/website/helpers/partner.py
deleted file mode 100644
index 404894e..0000000
--- a/website/helpers/partner.py
+++ /dev/null
@@ -1,11 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import webnotes
-
-def get_partner_args():
-	return {
-		"partners": webnotes.conn.sql("""select * from `tabSales Partner`
-			where show_in_website=1 order by name asc""", as_dict=True),
-	}
\ No newline at end of file
diff --git a/website/helpers/slideshow.py b/website/helpers/slideshow.py
deleted file mode 100644
index 7e3c398..0000000
--- a/website/helpers/slideshow.py
+++ /dev/null
@@ -1,10 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
-# License: GNU General Public License v3. See license.txt
-
-import webnotes
-
-def get_slideshow(obj):
-	slideshow = webnotes.bean("Website Slideshow", obj.doc.slideshow)
-	obj.slides = slideshow.doclist.get({"doctype":"Website Slideshow Item"})
-	obj.doc.slideshow_header = slideshow.doc.header or ""
-	
\ No newline at end of file
diff --git a/website/templates/js/blog.js b/website/templates/js/blog.js
index 8134b63..d5e9d50 100644
--- a/website/templates/js/blog.js
+++ b/website/templates/js/blog.js
@@ -28,7 +28,7 @@
 			method: "GET",
 			url: "server.py",
 			data: {
-				cmd: "website.helpers.blog.get_blog_list",
+				cmd: "website.doctype.blog_post.blog_post.get_blog_list",
 				start: blog.start,
 				by: get_url_arg("by"),
 				category: get_url_arg("category")
diff --git a/website/templates/js/blog_page.js b/website/templates/js/blog_page.js
index ee56d90..665dbf4 100644
--- a/website/templates/js/blog_page.js
+++ b/website/templates/js/blog_page.js
@@ -22,7 +22,7 @@
 			comment_by_fullname: $("[name='comment_by_fullname']").val(),
 			comment_by: $("[name='comment_by']").val(),
 			comment: $("[name='comment']").val(),
-			cmd: "website.helpers.blog.add_comment",
+			cmd: "website.doctype.blog_post.blog_post.add_comment",
 			comment_doctype: "Blog Post",
 			comment_docname: "{{ name }}",
 			page_name: "{{ page_name }}",