brotherton-erpnext/patches/june_2012/cms2.py
2013-05-16 15:35:08 +05:30

86 lines
2.4 KiB
Python

from __future__ import unicode_literals
def execute():
import webnotes
# sync doctypes required for the patch
webnotes.reload_doc('website', 'doctype', 'web_page')
webnotes.reload_doc('website', 'doctype', 'website_settings')
webnotes.reload_doc('stock', 'doctype', 'item')
cleanup()
save_pages()
save_website_settings()
def cleanup():
import webnotes
# delete pages from `tabPage` of module Website or of type Webpage
webnotes.conn.sql("""\
delete from `tabPage`
where module='Website' and ifnull(web_page, 'No') = 'Yes'""")
# change show_in_website value in item table to 0 or 1
webnotes.conn.sql("""\
update `tabItem`
set show_in_website = if(show_in_website = 'Yes', 1, 0)
where show_in_website is not null""")
# move comments from comment_doctype Page to Blog
webnotes.conn.sql("""\
update `tabComment` comm, `tabBlog` blog
set comm.comment_doctype = 'Blog', comm.comment_docname = blog.name
where comm.comment_docname = blog.page_name""")
# delete deprecated pages
import webnotes.model
for page in ['products', 'contact', 'blog', 'about']:
try:
webnotes.model.delete_doc('Page', page)
except Exception, e:
webnotes.modules.patch_handler.log(unicode(e))
import os
import conf
# delete other html files
exception_list = ['app.html', 'unsupported.html', 'blank.html']
conf_dir = os.path.dirname(os.path.abspath(conf.__file__))
public_path = os.path.join(conf_dir, 'public')
for f in os.listdir(public_path):
if f.endswith('.html') and f not in exception_list:
os.remove(os.path.join(public_path, f))
def save_pages():
"""save all web pages, blogs to create content"""
query_map = {
'Web Page': """select name from `tabWeb Page` where docstatus=0""",
'Blog': """\
select name from `tabBlog`
where docstatus = 0 and ifnull(published, 0) = 1""",
'Item': """\
select name from `tabItem`
where docstatus = 0 and ifnull(show_in_website, 0) = 1""",
}
import webnotes
from webnotes.model.bean import Bean
import webnotes.modules.patch_handler
for dt in query_map:
for result in webnotes.conn.sql(query_map[dt], as_dict=1):
try:
Bean(dt, result['name'].encode('utf-8')).save()
except Exception, e:
webnotes.modules.patch_handler.log(unicode(e))
def save_website_settings():
from webnotes.model.code import get_obj
# rewrite pages
get_obj('Website Settings').on_update()
ss = get_obj('Style Settings')
ss.validate()
ss.doc.save()
ss.on_update()