Merge branch 'master' of github.com:webnotes/erpnext into unicode

Conflicts:
	erpnext/accounts/doctype/sales_invoice/sales_invoice.py
	erpnext/patches/patch_list.py
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index 700c585..97848a3 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -364,14 +364,13 @@
 
 	def so_dn_required(self):
 		"""check in manage account if sales order / delivery note required or not."""
-		dict = {'Sales Order':'so_required','Delivery Note':'dn_required'}
-		for i in dict:	
-			res = webnotes.conn.sql("select value from `tabSingles` where doctype = 'Global Defaults' and field = '%s'"%dict[i])
-			if res and res[0][0] == 'Yes':
+		dic = {'Sales Order':'so_required','Delivery Note':'dn_required'}
+		for i in dic:	
+			if webnotes.conn.get_value('Global Defaults', 'Global Defaults', dic[i]) == 'Yes':
 				for d in getlist(self.doclist,'entries'):
-					if not d.fields[i.lower().replace(' ','_')]:
-						msgprint("%s No. required against item %s"%(i,d.item_code))
-						raise Exception
+					if webnotes.conn.get_value('Item', d.item_code, 'is_stock_item') == 'Yes' \
+						and not d.fields[i.lower().replace(' ','_')]:
+						msgprint("%s is mandatory for stock item which is not mentioed against item: %s"%(i,d.item_code), raise_exception=1)
 
 
 	def validate_proj_cust(self):
diff --git a/erpnext/patches/july_2012/blog_guest_permission.py b/erpnext/patches/july_2012/blog_guest_permission.py
new file mode 100644
index 0000000..eb254b1
--- /dev/null
+++ b/erpnext/patches/july_2012/blog_guest_permission.py
@@ -0,0 +1,11 @@
+def execute():
+	"""allocate read write permission to guest for doctype 'Blog'"""
+	import webnotes
+	webnotes.conn.sql("""delete from `tabDocPerm` where parent = 'Blog'""")
+	
+	webnotes.conn.commit()
+	
+	import webnotes.model.sync
+	webnotes.model.sync.sync('website', 'blog', 1)
+
+	webnotes.conn.begin()
diff --git a/erpnext/patches/patch_list.py b/erpnext/patches/patch_list.py
index 2cb0896..e560973 100644
--- a/erpnext/patches/patch_list.py
+++ b/erpnext/patches/patch_list.py
@@ -521,4 +521,8 @@
 		'patch_file': 'sync_trial_balance',
 		'description': "sync trial balance"
 	},
+	{
+		'patch_module': 'patches.july_2012',
+		'patch_file': 'blog_guest_permission',
+	},
 ]
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py
index d2080ac..06f14d4 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.py
@@ -142,8 +142,7 @@
 
 	def so_required(self):
 		"""check in manage account if sales order required or not"""
-		res = sql("select value from `tabSingles` where doctype = 'Global Defaults' and field = 'so_required'")
-		if res and res[0][0] == 'Yes':
+		if webnotes.conn.get_value('Global Defaults', 'Global Defaults', 'so_required') == 'Yes':
 			 for d in getlist(self.doclist,'delivery_note_details'):
 				 if not d.prevdoc_docname:
 					 msgprint("Sales Order No. required against item %s"%d.item_code)
diff --git a/erpnext/website/blog.py b/erpnext/website/blog.py
index 344277d..6f6cc40 100644
--- a/erpnext/website/blog.py
+++ b/erpnext/website/blog.py
@@ -35,6 +35,8 @@
 		from webnotes.utils import global_date_format, get_fullname
 		res['full_name'] = get_fullname(res['owner'])
 		res['published'] = global_date_format(res['published'])
+		if not res['content']:
+			res['content'] = website.web_cache.get_html(res['name'])
 		res['content'] = split_blog_content(res['content'])
 		res['content'] = res['content'][:1000]
 
@@ -95,9 +97,6 @@
 	website.web_cache.clear_cache(args.get('page_name'),
 		args.get('comment_doctype'), args.get('comment_docname'))
 	
-	# loads fresh blog into cache
-	get_blog_content(args.get('page_name'))
-	
 	import webnotes.utils
 	
 	comment['comment_date'] = webnotes.utils.pretty_date(comment['creation'])
diff --git a/erpnext/website/doctype/blog/blog.txt b/erpnext/website/doctype/blog/blog.txt
index 24187e3..6ed7143 100644
--- a/erpnext/website/doctype/blog/blog.txt
+++ b/erpnext/website/doctype/blog/blog.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-05-28 19:22:38',
+		'creation': '2012-07-13 13:02:27',
 		'docstatus': 0,
-		'modified': '2012-06-22 18:56:16',
+		'modified': '2012-07-27 14:15:24',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -40,6 +40,7 @@
 		'parent': u'Blog',
 		'parentfield': u'permissions',
 		'parenttype': u'DocType',
+		'permlevel': 0,
 		'read': 1
 	},
 
@@ -51,10 +52,8 @@
 
 	# DocPerm
 	{
-		'cancel': 1,
 		'create': 1,
 		'doctype': u'DocPerm',
-		'permlevel': 0,
 		'role': u'Website Manager',
 		'write': 1
 	},
@@ -63,7 +62,6 @@
 	{
 		'create': 1,
 		'doctype': u'DocPerm',
-		'permlevel': 0,
 		'role': u'Blogger',
 		'write': 1
 	},
@@ -71,15 +69,8 @@
 	# DocPerm
 	{
 		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Website Manager'
-	},
-
-	# DocPerm
-	{
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Blogger'
+		'role': u'Guest',
+		'write': 0
 	},
 
 	# DocField
diff --git a/erpnext/website/doctype/website_settings/website_settings.py b/erpnext/website/doctype/website_settings/website_settings.py
index a27250f..47a1245 100644
--- a/erpnext/website/doctype/website_settings/website_settings.py
+++ b/erpnext/website/doctype/website_settings/website_settings.py
@@ -35,7 +35,8 @@
 		
 		# clear web cache
 		import website.web_cache
-		website.web_cache.refresh_cache(build=['Blog'])
+		#website.web_cache.refresh_cache(build=['Blog'])
+		website.web_cache.refresh_cache()
 
 		from webnotes.session_cache import clear_cache
 		clear_cache('Guest')
@@ -49,6 +50,8 @@
 		
 		d = Document('Default Home Page')
 		d.parent = 'Control Panel'
+		d.parenttype = 'Control Panel'
+		d.parentfield = 'default_home_pages'
 		d.role = 'Guest'
 		d.home_page = self.doc.home_page
 		d.save()