From 50e2cfe78eb4f3f46a92da73c607e401e33a0b2f Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Thu, 2 Feb 2012 16:40:01 +0530 Subject: [PATCH 01/15] dateutil.js/patch fix --- config/conf.py | 7 ------ erpnext/patches/jan_mar_2012/website.py | 29 ++++++++++++++++++------- version.num | 2 +- 3 files changed, 22 insertions(+), 16 deletions(-) delete mode 100644 config/conf.py diff --git a/config/conf.py b/config/conf.py deleted file mode 100644 index 1cf35e21cb8..00000000000 --- a/config/conf.py +++ /dev/null @@ -1,7 +0,0 @@ -index_path = '/' - -include_paths = [ - 'erpnext', - 'lib/py', - 'lib/py/legacy' -] \ No newline at end of file diff --git a/erpnext/patches/jan_mar_2012/website.py b/erpnext/patches/jan_mar_2012/website.py index 2d25e1f515e..4221cea6f29 100644 --- a/erpnext/patches/jan_mar_2012/website.py +++ b/erpnext/patches/jan_mar_2012/website.py @@ -8,24 +8,37 @@ def execute(): cleanup_file_data() update_patch_log() from webnotes.modules import reload_doc - reload_doc('website', 'Role', 'Website Manager') + from webnotes.model import delete_doc + + delete_doc('Website', 'Module Def', 'Website') reload_doc('website', 'Module Def', 'Website') - reload_doc('website', 'doctype', 'website_settings') - reload_doc('website', 'doctype', 'style_settings') - reload_doc('website', 'doctype', 'top_bar_item') - reload_doc('website', 'doctype', 'contact_us_settings') + reload_doc('website', 'Role', 'Website Manager') + + webnotes.conn.sql("""delete from `tabModule Def Role` where parent='Website'"""): + d = Document('Module Def Role') + d.parent = 'Website' + d.role = 'Website Manager' + d.save() + reload_doc('website', 'doctype', 'about_us_settings') - reload_doc('website', 'doctype', 'products_settings') + reload_doc('website', 'doctype', 'about_us_team') reload_doc('website', 'doctype', 'blog') reload_doc('website', 'doctype', 'blog_subscriber') + reload_doc('website', 'doctype', 'contact_us_settings') reload_doc('website', 'doctype', 'product') + reload_doc('website', 'doctype', 'product_group') + reload_doc('website', 'doctype', 'products_settings') + reload_doc('website', 'doctype', 'related_page') + reload_doc('website', 'doctype', 'style_settings') + reload_doc('website', 'doctype', 'top_bar_item') reload_doc('website', 'doctype', 'web_page') + reload_doc('website', 'doctype', 'website_settings') - reload_doc('website', 'page', 'contact') reload_doc('website', 'page', 'about') reload_doc('website', 'page', 'blog') - reload_doc('website', 'page', 'unsubscribe') + reload_doc('website', 'page', 'contact') reload_doc('website', 'page', 'products') + reload_doc('website', 'page', 'unsubscribe') def add_website_manager(): """add website manager to system manager""" diff --git a/version.num b/version.num index 0a1b63de8b7..db057cf772e 100644 --- a/version.num +++ b/version.num @@ -1 +1 @@ -353 \ No newline at end of file +354 \ No newline at end of file From adc9a61bd71685cb7c3f28a329f553715bf41af2 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Thu, 2 Feb 2012 16:45:26 +0530 Subject: [PATCH 02/15] bugfix --- erpnext/patches/jan_mar_2012/website.py | 7 +++++-- version.num | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/erpnext/patches/jan_mar_2012/website.py b/erpnext/patches/jan_mar_2012/website.py index 4221cea6f29..1b4754aef56 100644 --- a/erpnext/patches/jan_mar_2012/website.py +++ b/erpnext/patches/jan_mar_2012/website.py @@ -14,7 +14,7 @@ def execute(): reload_doc('website', 'Module Def', 'Website') reload_doc('website', 'Role', 'Website Manager') - webnotes.conn.sql("""delete from `tabModule Def Role` where parent='Website'"""): + webnotes.conn.sql("""delete from `tabModule Def Role` where parent='Website'""") d = Document('Module Def Role') d.parent = 'Website' d.role = 'Website Manager' @@ -53,7 +53,10 @@ def add_website_manager(): def cleanup_file_data(): webnotes.conn.commit() - webnotes.conn.sql("""alter table `tabFile Data` drop column blob_content""") + try: + webnotes.conn.sql("""alter table `tabFile Data` drop column blob_content""") + except: + pass webnotes.conn.begin() def update_patch_log(): diff --git a/version.num b/version.num index db057cf772e..ac471d3ba0c 100644 --- a/version.num +++ b/version.num @@ -1 +1 @@ -354 \ No newline at end of file +355 \ No newline at end of file From 63d669f390d9b69d731db45dc19dbad1098ff832 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Fri, 3 Feb 2012 12:56:12 +0530 Subject: [PATCH 03/15] updated feed for comments and login --- erpnext/home/__init__.py | 28 ++++++++++----- erpnext/home/doctype/feed/feed.txt | 24 ++++++++----- .../home/page/event_updates/event_updates.js | 35 ++++++++++++------- erpnext/patches/jan_mar_2012/latest/feed.py | 6 ++++ .../login.py} | 0 .../jan_mar_2012/{ => latest}/website.py | 0 erpnext/startup/event_handlers.py | 27 ++++++++++---- version.num | 2 +- 8 files changed, 85 insertions(+), 37 deletions(-) create mode 100644 erpnext/patches/jan_mar_2012/latest/feed.py rename erpnext/patches/jan_mar_2012/{subdomain_login_patch.py => latest/login.py} (100%) rename erpnext/patches/jan_mar_2012/{ => latest}/website.py (100%) diff --git a/erpnext/home/__init__.py b/erpnext/home/__init__.py index 7059cec7e5f..5ebf7c01647 100644 --- a/erpnext/home/__init__.py +++ b/erpnext/home/__init__.py @@ -34,23 +34,33 @@ feed_dict = { 'Support Ticket': ['[%(status)s] %(subject)s', '#000080'] } -def make_feed(doc, subject, color): +def make_feed(feedtype, doctype, name, owner, subject, color): "makes a new Feed record" #msgprint(subject) from webnotes.model.doc import Document - webnotes.conn.sql("delete from tabFeed where doc_type=%s and doc_name=%s", (doc.doctype, doc.name)) + + if feedtype in ('Login', 'Comment'): + # delete old login, comment feed + webnotes.conn.sql("""delete from tabFeed where + datediff(curdate(), creation) > 7 and doc_type in ('Comment', 'Login')""") + else: + # one feed per item + webnotes.conn.sql("""delete from tabFeed + where doc_type=%s and doc_name=%s + and ifnull(feed_type,'') != 'Comment'""", (doctype, name)) + f = Document('Feed') - f.doc_type = doc.doctype - f.doc_name = doc.name + f.owner = owner + f.feed_type = feedtype + f.doc_type = doctype + f.doc_name = name f.subject = subject f.color = color - f.save(1) + f.save() def update_feed(doc, method=None): "adds a new feed" if method=='on_update': subject, color = feed_dict.get(doc.doctype, [None, None]) - if subject: - subject = subject % doc.fields - - make_feed(doc, subject, color) + if subject: + make_feed('', doc.doctype, doc.name, doc.owner, subject % doc.fields, color) diff --git a/erpnext/home/doctype/feed/feed.txt b/erpnext/home/doctype/feed/feed.txt index 5aa4f910e46..f239f7c7c86 100644 --- a/erpnext/home/doctype/feed/feed.txt +++ b/erpnext/home/doctype/feed/feed.txt @@ -3,9 +3,9 @@ # These values are common in all dictionaries { - 'creation': '2011-04-08 10:50:41', + 'creation': '2011-04-06 18:11:38', 'docstatus': 0, - 'modified': '2011-04-05 09:16:57', + 'modified': '2012-02-03 11:28:16', 'modified_by': 'Administrator', 'owner': 'Administrator' }, @@ -14,18 +14,18 @@ { 'autoname': '_FEED.#####', 'colour': 'White:FFF', + 'default_print_format': 'Standard', 'doctype': 'DocType', 'module': 'Home', 'name': '__common__', 'section_style': 'Simple', 'show_in_menu': 0, - 'version': 1 + 'version': 2 }, # These values are common for all DocField { 'doctype': 'DocField', - 'fieldtype': 'Data', 'name': '__common__', 'parent': 'Feed', 'parentfield': 'fields', @@ -39,11 +39,19 @@ 'name': 'Feed' }, + # DocField + { + 'doctype': 'DocField', + 'fieldname': 'feed_type', + 'fieldtype': 'Select', + 'label': 'Feed Type' + }, + # DocField { 'doctype': 'DocField', 'fieldname': 'doc_type', - 'idx': 1, + 'fieldtype': 'Data', 'label': 'Doc Type' }, @@ -51,7 +59,7 @@ { 'doctype': 'DocField', 'fieldname': 'doc_name', - 'idx': 2, + 'fieldtype': 'Data', 'label': 'Doc Name' }, @@ -59,7 +67,7 @@ { 'doctype': 'DocField', 'fieldname': 'subject', - 'idx': 3, + 'fieldtype': 'Data', 'label': 'Subject' }, @@ -67,7 +75,7 @@ { 'doctype': 'DocField', 'fieldname': 'color', - 'idx': 4, + 'fieldtype': 'Data', 'label': 'Color' } ] \ No newline at end of file diff --git a/erpnext/home/page/event_updates/event_updates.js b/erpnext/home/page/event_updates/event_updates.js index 784577a2742..90aef9e6961 100644 --- a/erpnext/home/page/event_updates/event_updates.js +++ b/erpnext/home/page/event_updates/event_updates.js @@ -456,7 +456,7 @@ FeedList.prototype.make_list = function() { this.list = new wn.widgets.Listing({ parent: this.list_area, query: repl('select \ - distinct t1.name, t1.doc_type, t1.doc_name, t1.subject, t1.modified_by, \ + distinct t1.name, t1.feed_type, t1.doc_type, t1.doc_name, t1.subject, t1.modified_by, \ concat(ifnull(t2.first_name,""), " ", ifnull(t2.last_name,"")) as full_name, \ t1.modified, t1.color \ from tabFeed t1, tabProfile t2, tabUserRole t3, tabDocPerm t4 \ @@ -495,13 +495,11 @@ FeedItem = function(cell, det, feedlist) { this.tab = make_table(this.wrapper, 1, 2, '100%', [(100/7)+'%', (600/7)+'%']); $y(this.tab,{tableLayout:'fixed'}) - // image $y($td(this.tab,0,0),{textAlign:'right',paddingRight:'4px'}); // text this.text_area = $a($td(this.tab,0,1), 'div'); - this.render_references(this.text_area, det); - + this.render_references(this.text_area, det); this.render_tag(det); // add day separator @@ -537,13 +535,21 @@ FeedItem.prototype.add_day_sep = function(det) { // ------------------------------------------------- FeedItem.prototype.render_tag = function(det) { + // type is the name tag = $a($td(this.tab,0,0), 'div', '', - {color:'#FFF', padding:'3px', textAlign:'right', fontSize:'11px', whiteSpace:'nowrap', overflow:'hidden', cursor:'pointer'}); + {color:'#FFF', padding:'3px', textAlign:'right', fontSize:'11px', + whiteSpace:'nowrap', overflow:'hidden', cursor:'pointer'}); $br(tag,'3px'); $y(tag, {backgroundColor:(det.color || '#273')}); - tag.innerHTML = get_doctype_label(det.doc_type); - tag.dt = det.doc_type; - tag.onclick = function() { loaddocbrowser(this.dt); } + + // tag label + tag.innerHTML = det.feed_type || get_doctype_label(det.doc_type); + + // not comment / label + if(!det.feed_type) { + tag.dt = det.doc_type; + tag.onclick = function() { loaddocbrowser(this.dt); } + } } FeedItem.prototype.render_references = function(div, det) { @@ -552,10 +558,15 @@ FeedItem.prototype.render_references = function(div, det) { var dt = det.doc_type; var dn = det.doc_name // link - var allow = in_list(profile.can_read, dt); - var span = $a($td(div.tab,0,0), 'span', (allow ? 'link_type': ''), null, det.doc_name); - span.dt = dt; span.dn = dn; - if(allow) span.onclick = function() { loaddoc(this.dt, this.dn); } + if(det.feed_type=='Login') { + // nothing - no link + } else { + var allow = in_list(profile.can_read, dt); + var span = $a($td(div.tab,0,0), 'span', (allow ? 'link_type': ''), null, + det.doc_name); + span.dt = dt; span.dn = dn; + if(allow) span.onclick = function() { loaddoc(this.dt, this.dn); } + } // subject if(det.subject) { diff --git a/erpnext/patches/jan_mar_2012/latest/feed.py b/erpnext/patches/jan_mar_2012/latest/feed.py new file mode 100644 index 00000000000..c913c49c181 --- /dev/null +++ b/erpnext/patches/jan_mar_2012/latest/feed.py @@ -0,0 +1,6 @@ +import webnotes +from webnotes.model.doc import Document +from webnotes.modules import reload_doc + +def execute(): + reload_doc('home', 'doctype', 'feed') \ No newline at end of file diff --git a/erpnext/patches/jan_mar_2012/subdomain_login_patch.py b/erpnext/patches/jan_mar_2012/latest/login.py similarity index 100% rename from erpnext/patches/jan_mar_2012/subdomain_login_patch.py rename to erpnext/patches/jan_mar_2012/latest/login.py diff --git a/erpnext/patches/jan_mar_2012/website.py b/erpnext/patches/jan_mar_2012/latest/website.py similarity index 100% rename from erpnext/patches/jan_mar_2012/website.py rename to erpnext/patches/jan_mar_2012/latest/website.py diff --git a/erpnext/startup/event_handlers.py b/erpnext/startup/event_handlers.py index d9fb4511a83..e3e7fa95d57 100644 --- a/erpnext/startup/event_handlers.py +++ b/erpnext/startup/event_handlers.py @@ -1,18 +1,18 @@ import webnotes import webnotes.defs from webnotes.utils import cint +import home def on_login(login_manager): """ called from login manager, before login """ - try: - if login_manager.user not in ('Guest', None, ''): + if login_manager.user not in ('Guest', None, ''): + try: import server_tools.gateway_utils server_tools.gateway_utils.check_login(login_manager.user) - except ImportError: - pass - + except ImportError: + pass def on_login_post_session(login_manager): """ @@ -29,9 +29,21 @@ def on_login_post_session(login_manager): sid!=%s""", \ (webnotes.session['user'], webnotes.session['sid']), as_list=1) + if webnotes.session['user'] not in ('Guest'): + # create feed + from webnotes.utils import nowtime + home.make_feed('Login', 'Profile', login_manager.user, login_manager.user, + '%s logged in at %s' % (login_manager.user_fullname, nowtime()), + login_manager.user=='Administrator' and '#8CA2B3' or '#1B750D') + +def comment_added(doc): + """add comment to feed""" + import json + home.make_feed('Comment', doc.comment_doctype, doc.comment_docname, doc.comment_by, + '"' + doc.comment + '"', '#6B24B3') + def doclist_all(doc, method): """doclist trigger called from webnotes.model.doclist on any event""" - import home home.update_feed(doc, method) def boot_session(bootinfo): @@ -51,5 +63,6 @@ def boot_session(bootinfo): def get_letter_heads(): """load letter heads with startup""" import webnotes - ret = webnotes.conn.sql("select name, content from `tabLetter Head` where ifnull(disabled,0)=0") + ret = webnotes.conn.sql("""select name, content from `tabLetter Head` + where ifnull(disabled,0)=0""") return dict(ret) diff --git a/version.num b/version.num index ac471d3ba0c..2a9c18ad50e 100644 --- a/version.num +++ b/version.num @@ -1 +1 @@ -355 \ No newline at end of file +357 \ No newline at end of file From b4c814484ee442394395dbe24de153936f7f0ea7 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Fri, 3 Feb 2012 13:36:44 +0530 Subject: [PATCH 04/15] fix to patch --- erpnext/patches/jan_mar_2012/latest/__init__.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 erpnext/patches/jan_mar_2012/latest/__init__.py diff --git a/erpnext/patches/jan_mar_2012/latest/__init__.py b/erpnext/patches/jan_mar_2012/latest/__init__.py new file mode 100644 index 00000000000..e69de29bb2d From 479670e4e13587b62b8b231e3540f01404d6ca86 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Fri, 3 Feb 2012 16:56:18 +0530 Subject: [PATCH 05/15] added unicode to mysql, fix in about us --- .../website/doctype/about_us_settings/about_us_settings.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/erpnext/website/doctype/about_us_settings/about_us_settings.py b/erpnext/website/doctype/about_us_settings/about_us_settings.py index 8a31ff098e2..770f1d2bceb 100644 --- a/erpnext/website/doctype/about_us_settings/about_us_settings.py +++ b/erpnext/website/doctype/about_us_settings/about_us_settings.py @@ -14,11 +14,11 @@ class DocType: path = os.path.join(os.path.dirname(__file__), 'template.html') self.doc.about_team = webnotes.conn.sql("""select * from `tabAbout Us Team` - where parent='About Us Settings'""", as_dict=1) + where parent='About Us Settings' order by idx""", as_dict=1) import markdown2 for t in self.doc.about_team: - t['bio'] = markdown2.markdown(t['bio']) + t['bio'] = markdown2.markdown(t.get('bio') or '') webnotes.conn.set_value('Page', 'about', 'title', self.doc.headline) webnotes.conn.set_value('Page', 'about', 'content', make_template(self.doc, path)) From 6147451da3821a6d4aaeab0dc69e805256f77cb4 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Sat, 4 Feb 2012 09:53:25 +0530 Subject: [PATCH 06/15] refactored patches, bug fix for assign_to --- .../patches/jan_mar_2012/latest/cleanups.py | 33 +++++++++++++++++++ erpnext/patches/jan_mar_2012/latest/login.py | 21 ------------ .../patches/jan_mar_2012/latest/website.py | 15 --------- version.num | 2 +- 4 files changed, 34 insertions(+), 37 deletions(-) create mode 100644 erpnext/patches/jan_mar_2012/latest/cleanups.py diff --git a/erpnext/patches/jan_mar_2012/latest/cleanups.py b/erpnext/patches/jan_mar_2012/latest/cleanups.py new file mode 100644 index 00000000000..44d24c034b7 --- /dev/null +++ b/erpnext/patches/jan_mar_2012/latest/cleanups.py @@ -0,0 +1,33 @@ +import webnotes + +def execute(): + from webnotes.model import delete_doc + delete_doc("DocType", "SSO Control") + delete_doc("DocType", "WN ERP Client Control") + delete_doc("DocType", "Production Tips Common") + delete_doc("DocType", "DocTrigger") + delete_doc("Page", "Setup Wizard") + + # cleanup control panel + delete_doc("DocType", "Control Panel") + reload_doc("core", "doctype", "control_panel") + + # cleanup page + delete_doc("DocType", "Page") + reload_doc("core", "doctype", "page") + + webnotes.conn.sql("""delete from tabSingles + where field like 'startup_%' and doctype='Control Panel'""") + + webnotes.conn.commit() + + # DDLs + # ------------------- + + webnotes.conn.sql("drop table if exists tabDocTrigger") + + try: webnotes.conn.sql("""alter table `tabFile Data` drop column blob_content""") + except: pass + + webnotes.conn.sql("""alter table __PatchLog engine=InnoDB""") + \ No newline at end of file diff --git a/erpnext/patches/jan_mar_2012/latest/login.py b/erpnext/patches/jan_mar_2012/latest/login.py index fcf72dc0e47..97cd323d6ae 100644 --- a/erpnext/patches/jan_mar_2012/latest/login.py +++ b/erpnext/patches/jan_mar_2012/latest/login.py @@ -5,28 +5,7 @@ from webnotes.modules import reload_doc def execute(): add_default_home_page() reload_doc('setup','doctype','manage_account') - webnotes.conn.commit() - webnotes.conn.sql("drop table if exists tabDocTrigger") - cleanup() - -def cleanup(): - webnotes.conn.begin() - from webnotes.model import delete_doc - delete_doc("DocType", "SSO Control") - delete_doc("DocType", "WN ERP Client Control") - delete_doc("DocType", "Production Tips Common") - delete_doc("DocType", "DocTrigger") - # cleanup control panel - delete_doc("DocType", "Control Panel") - reload_doc("core", "doctype", "control_panel") - - # cleanup page - delete_doc("DocType", "Page") - reload_doc("core", "doctype", "page") - - webnotes.conn.sql("""delete from tabSingles - where field like 'startup_%' and doctype='Control Panel'""") def add_default_home_page(): if not webnotes.conn.sql("""select name from `tabDefault Home Page` diff --git a/erpnext/patches/jan_mar_2012/latest/website.py b/erpnext/patches/jan_mar_2012/latest/website.py index 1b4754aef56..a6f1310ee09 100644 --- a/erpnext/patches/jan_mar_2012/latest/website.py +++ b/erpnext/patches/jan_mar_2012/latest/website.py @@ -5,8 +5,6 @@ from webnotes.model.doc import Document def execute(): add_website_manager() - cleanup_file_data() - update_patch_log() from webnotes.modules import reload_doc from webnotes.model import delete_doc @@ -50,16 +48,3 @@ def add_website_manager(): d.parent = i[0] d.role = 'Website Manager' d.save(1) - -def cleanup_file_data(): - webnotes.conn.commit() - try: - webnotes.conn.sql("""alter table `tabFile Data` drop column blob_content""") - except: - pass - webnotes.conn.begin() - -def update_patch_log(): - webnotes.conn.commit() - webnotes.conn.sql("""alter table __PatchLog engine=InnoDB""") - webnotes.conn.begin() diff --git a/version.num b/version.num index 2a9c18ad50e..b0e9f8d0ff9 100644 --- a/version.num +++ b/version.num @@ -1 +1 @@ -357 \ No newline at end of file +358 \ No newline at end of file From af1cb632d60cbbac89d2ed66324eab538d6b090c Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 6 Feb 2012 07:29:52 +0100 Subject: [PATCH 07/15] bugfix to topbar --- erpnext/website/js/topbar.js | 6 +++--- erpnext/website/utils.py | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/erpnext/website/js/topbar.js b/erpnext/website/js/topbar.js index 8a7870c7de6..90e530d0ded 100644 --- a/erpnext/website/js/topbar.js +++ b/erpnext/website/js/topbar.js @@ -37,7 +37,7 @@ erpnext.topbar.TopBar = Class.extend({ for(var i=0;i%(label)s', item)) } @@ -64,7 +64,7 @@ erpnext.Footer = Class.extend({ for(var i=0;i%(label)s', item)) } @@ -72,4 +72,4 @@ erpnext.Footer = Class.extend({ } }); -erpnext.footer = new erpnext.Footer(); \ No newline at end of file +erpnext.footer = new erpnext.Footer(); diff --git a/erpnext/website/utils.py b/erpnext/website/utils.py index 330f7a39a47..66be4d2bb5f 100644 --- a/erpnext/website/utils.py +++ b/erpnext/website/utils.py @@ -25,7 +25,8 @@ def markdown(doc, fields): def page_name(title): """make page name from title, and check that there is no duplicate""" import re - name = re.sub('[~!@#$%^&*()<>,."\']', '', title.lower()) + name = title.lower() + name = re.sub('[~!@#$%^&*()<>,."\']', '', name) return '-'.join(name.split()[:4]) def add_page(title): @@ -50,4 +51,4 @@ def add_guest_access_to_page(page): d = Document('Page Role') d.parent = page d.role = 'Guest' - d.save() \ No newline at end of file + d.save() From 594a0ca11d2acfe88c650f9b94bd2d085d5c068f Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 6 Feb 2012 12:52:15 +0530 Subject: [PATCH 08/15] fix in related page --- .../doctype/related_page/related_page.txt | 34 +++++++++---------- erpnext/website/doctype/web_page/web_page.py | 11 +++--- 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/erpnext/website/doctype/related_page/related_page.txt b/erpnext/website/doctype/related_page/related_page.txt index 3cb674fd53c..67a30b7cf23 100644 --- a/erpnext/website/doctype/related_page/related_page.txt +++ b/erpnext/website/doctype/related_page/related_page.txt @@ -5,45 +5,45 @@ { 'creation': '2012-02-01 16:16:47', 'docstatus': 0, - 'modified': '2012-02-01 16:16:48', - 'modified_by': 'Administrator', - 'owner': 'Administrator' + 'modified': '2012-02-06 12:24:29', + 'modified_by': u'Administrator', + 'owner': u'Administrator' }, # These values are common for all DocType { - 'colour': 'White:FFF', + 'colour': u'White:FFF', 'doctype': 'DocType', 'istable': 1, - 'module': 'Website', + 'module': u'Website', 'name': '__common__', - 'section_style': 'Simple', + 'section_style': u'Simple', 'show_in_menu': 0, - 'version': 1 + 'version': 3 }, # These values are common for all DocField { - 'doctype': 'DocField', - 'fieldname': 'page', - 'fieldtype': 'Link', - 'label': 'Page', + 'doctype': u'DocField', + 'fieldname': u'page', + 'fieldtype': u'Link', + 'label': u'Page', 'name': '__common__', - 'options': 'Page', - 'parent': 'Related Page', - 'parentfield': 'fields', - 'parenttype': 'DocType', + 'options': u'Page', + 'parent': u'Related Page', + 'parentfield': u'fields', + 'parenttype': u'DocType', 'permlevel': 0 }, # DocType, Related Page { 'doctype': 'DocType', - 'name': 'Related Page' + 'name': u'Related Page' }, # DocField { - 'doctype': 'DocField' + 'doctype': u'DocField' } ] \ No newline at end of file diff --git a/erpnext/website/doctype/web_page/web_page.py b/erpnext/website/doctype/web_page/web_page.py index 14a082b0910..8f7c38f18d7 100644 --- a/erpnext/website/doctype/web_page/web_page.py +++ b/erpnext/website/doctype/web_page/web_page.py @@ -37,10 +37,13 @@ class DocType: "title": webnotes.conn.get_value("Page", self.doc.next_page, "title")} self.doc.see_also = '' - for l in webnotes.conn.sql("""select distinct t1.page, t2.title from - `tabRelated Page` t1, tabPage t2 where - t1.page = t2.name order by t2.title""", as_dict=1): - self.doc.see_also += """

%(title)s

""" % l + for d in self.doclist: + if d.doctype=='Related Page': + tmp = {"page":d.page, "title":webnotes.conn.get_value('Page', d.page, 'title')} + self.doc.see_also += """
  • %(title)s
  • """ % tmp + + if self.doc.see_also: + self.doc.see_also = '
      %s
    ' % self.doc.see_also def cleanup_temp(self): """cleanup temp fields""" From 74fab559483d01be0ad67ae68585f8a92721422a Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 6 Feb 2012 14:34:42 +0530 Subject: [PATCH 09/15] add home in website patch --- erpnext/patches/jan_mar_2012/latest/website.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/erpnext/patches/jan_mar_2012/latest/website.py b/erpnext/patches/jan_mar_2012/latest/website.py index a6f1310ee09..cd40ccbb876 100644 --- a/erpnext/patches/jan_mar_2012/latest/website.py +++ b/erpnext/patches/jan_mar_2012/latest/website.py @@ -38,6 +38,21 @@ def execute(): reload_doc('website', 'page', 'products') reload_doc('website', 'page', 'unsubscribe') + create_home_page() + +def create_home_page(): + """create a dummy home page""" + if not webnotes.conn.sql("""select name from `tabWeb Page` where name='home'""") + d = Document('Web Page') + d.title = 'Home' + d.head_section = "

    Your Headline

    " + d.main_section = "

    Some introduction about your company

    " + d.side_section = "

    Links to other pages

    " + d.save() + obj = get_obj(doc = d) + obj.validate() + obj.doc.save() + def add_website_manager(): """add website manager to system manager""" for i in webnotes.conn.sql("""select distinct parent from tabUserRole From 4167e2f97a0e444e29297100cfc85034e2b1e990 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 6 Feb 2012 10:58:48 +0100 Subject: [PATCH 10/15] patch fix --- erpnext/patches/jan_mar_2012/latest/cleanups.py | 6 ++++-- index.cgi | 10 ++++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/erpnext/patches/jan_mar_2012/latest/cleanups.py b/erpnext/patches/jan_mar_2012/latest/cleanups.py index 44d24c034b7..9a78a70dd51 100644 --- a/erpnext/patches/jan_mar_2012/latest/cleanups.py +++ b/erpnext/patches/jan_mar_2012/latest/cleanups.py @@ -2,6 +2,7 @@ import webnotes def execute(): from webnotes.model import delete_doc + from webnotes.modules import reload_doc delete_doc("DocType", "SSO Control") delete_doc("DocType", "WN ERP Client Control") delete_doc("DocType", "Production Tips Common") @@ -18,7 +19,8 @@ def execute(): webnotes.conn.sql("""delete from tabSingles where field like 'startup_%' and doctype='Control Panel'""") - + webnotes.conn.sql("""delete from __SessionCache""") + webnotes.conn.commit() # DDLs @@ -30,4 +32,4 @@ def execute(): except: pass webnotes.conn.sql("""alter table __PatchLog engine=InnoDB""") - \ No newline at end of file + diff --git a/index.cgi b/index.cgi index a119daeeda9..bc1de92863f 100755 --- a/index.cgi +++ b/index.cgi @@ -19,7 +19,13 @@ def init(): webnotes.form_dict[key] = webnotes.form.getvalue(key) # init request - webnotes.http_request = webnotes.auth.HTTPRequest() + try: + webnotes.http_request = webnotes.auth.HTTPRequest() + except Exception, e: + if webnotes.response['message']=='Authentication Failed': + pass + else: + raise e def respond(): import webnotes @@ -34,4 +40,4 @@ def respond(): if __name__=="__main__": init() - respond() \ No newline at end of file + respond() From e219db0e201c338d397b41800c187647707ff9eb Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 6 Feb 2012 15:33:08 +0530 Subject: [PATCH 11/15] moved wnf.py to erpnext and added website manager role --- .../Role/Website Manager/Website Manager.txt | 26 ++++ wnf.py | 134 ++++++++++++++++++ 2 files changed, 160 insertions(+) create mode 100644 erpnext/website/Role/Website Manager/Website Manager.txt create mode 100755 wnf.py diff --git a/erpnext/website/Role/Website Manager/Website Manager.txt b/erpnext/website/Role/Website Manager/Website Manager.txt new file mode 100644 index 00000000000..ad1ad9aef3b --- /dev/null +++ b/erpnext/website/Role/Website Manager/Website Manager.txt @@ -0,0 +1,26 @@ +# Role, Website Manager +[ + + # These values are common in all dictionaries + { + 'creation': '2012-01-24 10:18:47', + 'docstatus': 0, + 'modified': '2012-02-06 15:22:27', + 'modified_by': u'Administrator', + 'owner': u'Administrator' + }, + + # These values are common for all Role + { + 'doctype': 'Role', + 'module': u'Website', + 'name': '__common__', + 'role_name': u'Website Manager' + }, + + # Role, Website Manager + { + 'doctype': 'Role', + 'name': u'Website Manager' + } +] \ No newline at end of file diff --git a/wnf.py b/wnf.py new file mode 100755 index 00000000000..bc113879291 --- /dev/null +++ b/wnf.py @@ -0,0 +1,134 @@ +#!/usr/bin/env python + +import os, sys + +def replace_code(start, txt1, txt2, extn): + """replace all txt1 by txt2 in files with extension (extn)""" + import os, re + for wt in os.walk(start, followlinks=1): + for fn in wt[2]: + if fn.split('.')[-1]==extn: + fpath = os.path.join(wt[0], fn) + with open(fpath, 'r') as f: + content = f.read() + + if re.search(txt1, content): + a = raw_input('Change in %s [y/n]?' % fpath) + if a=='y': + with open(fpath, 'w') as f: + f.write(re.sub(txt1, txt2, content)) + + print 'updated in %s' % fpath + +def setup_options(): + from optparse import OptionParser + parser = OptionParser() + parser.add_option("-b", "--build", default=False, action="store_true", + help="minify + concat js files") + parser.add_option("-c", "--clear", default=False, action="store_true", + help="increment version") + parser.add_option("--replace", nargs=3, default=False, + metavar = "search replace_by extension", + help="file search-replace") + parser.add_option("--status", default=False, action="store_true", + help="git status") + parser.add_option("--pull", nargs=2, default=False, + metavar = "remote branch", + help="git pull (both repos)") + parser.add_option("--push", nargs=3, default=False, + metavar = "remote branch comment", + help="git commit + push (both repos) [remote] [branch] [comment]") + parser.add_option("-l", "--latest", + action="store_true", dest="run_latest", default=False, + help="Apply the latest patches") + parser.add_option("-p", "--patch", nargs=1, dest="patch_list", metavar='patch_module', + action="append", + help="Apply patch") + parser.add_option("-f", "--force", + action="store_true", dest="force", default=False, + help="Force Apply all patches specified using option -p or --patch") + parser.add_option("-d", "--db", + dest="db_name", + help="Apply the patches on given db") + parser.add_option('-r', '--reload_doc', nargs=3, metavar = "module doctype docname", + help="reload doc") + + return parser.parse_args() + +def run(): + sys.path.append('.') + sys.path.append('lib/py') + import webnotes + import webnotes.defs + sys.path.append(webnotes.defs.modules_path) + + (options, args) = setup_options() + + + from webnotes.db import Database + import webnotes.modules.patch_handler + + # build + if options.build: + import build.project + build.project.build() + + elif options.clear: + from build.project import increment_version + print "Version:" + str(increment_version()) + + # code replace + elif options.replace: + replace_code('.', options.replace[0], options.replace[1], options.replace[2]) + + # git + elif options.status: + os.system('git status') + os.chdir('lib') + os.system('git status') + + elif options.pull: + os.system('git pull %s %s' % (options.pull[0], options.pull[1])) + os.chdir('lib') + os.system('git pull %s %s' % (options.pull[0], options.pull[1])) + + elif options.push: + os.system('git commit -a -m "%s"' % options.push[2]) + os.system('git push %s %s' % (options.push[0], options.push[1])) + os.chdir('lib') + os.system('git commit -a -m "%s"' % options.push[2]) + os.system('git push %s %s' % (options.push[0], options.push[1])) + + + + # patch + elif options.patch_list: + # clear log + webnotes.modules.patch_handler.log_list = [] + + # connect to db + if options.db_name is not None: + webnotes.connect(options.db_name) + else: + webnotes.connect() + + # run individual patches + for patch in options.patch_list: + webnotes.modules.patch_handler.run_single(\ + patchmodule = patch, force = options.force) + + print '\n'.join(webnotes.modules.patch_handler.log_list) + + # reload + elif options.reload_doc: + webnotes.modules.patch_handler.reload_doc(\ + {"module":args[0], "dt":args[1], "dn":args[2]}) + print '\n'.join(webnotes.modules.patch_handler.log_list) + + # run all pending + elif options.run_latest: + webnotes.modules.patch_handler.run_all() + print '\n'.join(webnotes.modules.patch_handler.log_list) + +if __name__=='__main__': + run() From e651648b1be4c2b37062ecd69d6b599095838f08 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 6 Feb 2012 16:28:06 +0530 Subject: [PATCH 12/15] added missing icons --- .../page/accounts_browser/accounts_browser.js | 4 +- erpnext/home/page/my_company/my_company.js | 2 +- .../page/sales_browser/sales_browser.js | 4 +- erpnext/website/doctype/product/product.txt | 216 +++++++++--------- version.num | 2 +- wnf.py | 6 +- 6 files changed, 117 insertions(+), 117 deletions(-) diff --git a/erpnext/accounts/page/accounts_browser/accounts_browser.js b/erpnext/accounts/page/accounts_browser/accounts_browser.js index e5fca9f1fd9..13416e6a534 100644 --- a/erpnext/accounts/page/accounts_browser/accounts_browser.js +++ b/erpnext/accounts/page/accounts_browser/accounts_browser.js @@ -125,7 +125,7 @@ pscript.make_ac_tree = function() { var imgsrc=null; var has_children = true; if(cl[i].group_or_ledger=='Ledger') { - var imgsrc = 'lib/images/icons/page.gif'; + var imgsrc = 'lib/images/icons/page.png'; has_children = false; } var t = tree.addNode(n, cl[i].account_name, imgsrc,tree.std_onclick, has_children ? tree.std_onexp : null); @@ -138,7 +138,7 @@ pscript.make_ac_tree = function() { var imgsrc=null; var has_children = true; if(cl[i].group_or_ledger=='Ledger') { - var imgsrc = 'lib/images/icons/page.gif'; + var imgsrc = 'lib/images/icons/page.png'; has_children = false; } var t = tree.addNode(n, cl[i].cost_center_name, imgsrc,tree.std_onclick, has_children ? tree.std_onexp : null); diff --git a/erpnext/home/page/my_company/my_company.js b/erpnext/home/page/my_company/my_company.js index e85623f80c1..298b3138388 100644 --- a/erpnext/home/page/my_company/my_company.js +++ b/erpnext/home/page/my_company/my_company.js @@ -858,7 +858,7 @@ RoleObj.prototype.make_label = function(tbl, ridx, cidx, role){ var t = make_table($td(tbl, ridx, cidx),1,2,null,['16px', null],{marginRight:'5px'}); var ic = $a($td(t,0,0), 'img','',{cursor:'pointer', marginRight:'5px'}); - ic.src= 'lib/images/icons/help.gif'; + ic.src= 'lib/images/icons/help.png'; ic.role = role; ic.onclick = function(){ diff --git a/erpnext/selling/page/sales_browser/sales_browser.js b/erpnext/selling/page/sales_browser/sales_browser.js index d2ba627afde..c7e400e4cc5 100644 --- a/erpnext/selling/page/sales_browser/sales_browser.js +++ b/erpnext/selling/page/sales_browser/sales_browser.js @@ -140,7 +140,7 @@ SalesBrowser.prototype.make_tree = function() { var has_children = true; if(cl[i].is_group=='No') { - var imgsrc = 'lib/images/icons/page.gif'; + var imgsrc = 'lib/images/icons/page.png'; has_children = false; } var t = me.tree.addNode(n, cl[i].name, imgsrc,me.tree.std_onclick, has_children ? me.tree.std_onexp : null); @@ -220,7 +220,7 @@ SalesBrowser.prototype.first_level_node = function(){ var has_children = true; if(cl[i].is_group=='No') { - var imgsrc = 'lib/images/icons/page.gif'; + var imgsrc = 'lib/images/icons/page.png'; has_children = false; } me.tree_area.innerHTML = ''; diff --git a/erpnext/website/doctype/product/product.txt b/erpnext/website/doctype/product/product.txt index fac4cfbda44..6258691a911 100644 --- a/erpnext/website/doctype/product/product.txt +++ b/erpnext/website/doctype/product/product.txt @@ -5,245 +5,245 @@ { 'creation': '2012-01-30 16:21:29', 'docstatus': 0, - 'modified': '2012-01-31 13:46:23', - 'modified_by': 'Administrator', - 'owner': 'Administrator' + 'modified': '2012-02-06 16:15:29', + 'modified_by': u'Administrator', + 'owner': u'Administrator' }, # These values are common for all DocType { - '_last_update': '1327995660', + '_last_update': u'1327997783', 'allow_attach': 1, - 'autoname': 'field:item', - 'colour': 'White:FFF', - 'description': 'A Product is shown on the website and is linked to an item.', + 'autoname': u'field:item', + 'colour': u'White:FFF', + 'description': u'A Product is shown on the website and is linked to an item.', 'doctype': 'DocType', 'max_attachments': 5, - 'module': 'Website', + 'module': u'Website', 'name': '__common__', - 'section_style': 'Simple', + 'section_style': u'Simple', 'show_in_menu': 0, - 'version': 10 + 'version': 11 }, # These values are common for all DocField { - 'doctype': 'DocField', + 'doctype': u'DocField', 'name': '__common__', - 'parent': 'Product', - 'parentfield': 'fields', - 'parenttype': 'DocType' + 'parent': u'Product', + 'parentfield': u'fields', + 'parenttype': u'DocType' }, # These values are common for all DocPerm { - 'doctype': 'DocPerm', + 'doctype': u'DocPerm', 'name': '__common__', - 'parent': 'Product', - 'parentfield': 'permissions', - 'parenttype': 'DocType', + 'parent': u'Product', + 'parentfield': u'permissions', + 'parenttype': u'DocType', 'read': 1, - 'role': 'Website Manager' + 'role': u'Website Manager' }, # DocType, Product { 'doctype': 'DocType', - 'name': 'Product' + 'name': u'Product' }, # DocPerm { 'create': 1, - 'doctype': 'DocPerm', + 'doctype': u'DocPerm', 'permlevel': 0, 'write': 1 }, # DocPerm { - 'doctype': 'DocPerm', + 'doctype': u'DocPerm', 'permlevel': 1 }, # DocField { - 'colour': 'White:FFF', - 'doctype': 'DocField', - 'fieldname': 'item', - 'fieldtype': 'Link', - 'label': 'Item', - 'options': 'Item', + 'colour': u'White:FFF', + 'doctype': u'DocField', + 'fieldname': u'item', + 'fieldtype': u'Link', + 'label': u'Item', + 'options': u'Item', 'permlevel': 0, 'reqd': 1 }, # DocField { - 'doctype': 'DocField', - 'fieldname': 'title', - 'fieldtype': 'Link', - 'label': 'Title', + 'doctype': u'DocField', + 'fieldname': u'title', + 'fieldtype': u'Data', + 'label': u'Title', 'permlevel': 0 }, # DocField { - 'doctype': 'DocField', - 'fieldname': 'published', - 'fieldtype': 'Check', - 'label': 'Published', + 'doctype': u'DocField', + 'fieldname': u'published', + 'fieldtype': u'Check', + 'label': u'Published', 'permlevel': 0 }, # DocField { - 'colour': 'White:FFF', - 'description': 'Select Price List for the web. Leave blank to hide price.', - 'doctype': 'DocField', - 'fieldname': 'price_list', - 'fieldtype': 'Link', - 'label': 'Price List', - 'options': 'Price List', + 'colour': u'White:FFF', + 'description': u'Select Price List for the web. Leave blank to hide price.', + 'doctype': u'DocField', + 'fieldname': u'price_list', + 'fieldtype': u'Link', + 'label': u'Price List', + 'options': u'Price List', 'permlevel': 0 }, # DocField { - 'colour': 'White:FFF', - 'description': 'Select shipping warehouse to show "In Stock" or "Out of Stock". To hide, leave blank', - 'doctype': 'DocField', - 'fieldname': 'warehouse', - 'fieldtype': 'Link', - 'label': 'Warehouse', - 'options': 'Warehouse', + 'colour': u'White:FFF', + 'description': u'Select shipping warehouse to show "In Stock" or "Out of Stock". To hide, leave blank', + 'doctype': u'DocField', + 'fieldname': u'warehouse', + 'fieldtype': u'Link', + 'label': u'Warehouse', + 'options': u'Warehouse', 'permlevel': 0 }, # DocField { - 'doctype': 'DocField', - 'fieldtype': 'Column Break', + 'doctype': u'DocField', + 'fieldtype': u'Column Break', 'permlevel': 0 }, # DocField { - 'colour': 'White:FFF', - 'description': 'Image for listing (Width: 100px) (Attach First)', - 'doctype': 'DocField', - 'fieldname': 'thumbnail_image', - 'fieldtype': 'Select', - 'label': 'Thumbnail Image', - 'options': 'attach_files:', + 'colour': u'White:FFF', + 'description': u'Image for listing (Width: 100px) (Attach First)', + 'doctype': u'DocField', + 'fieldname': u'thumbnail_image', + 'fieldtype': u'Select', + 'label': u'Thumbnail Image', + 'options': u'attach_files:', 'permlevel': 0 }, # DocField { - 'colour': 'White:FFF', - 'description': 'Image for listing (Width: 300px) (Attach First)', - 'doctype': 'DocField', - 'fieldname': 'full_image', - 'fieldtype': 'Select', - 'label': 'Full Image', - 'options': 'attach_files:', + 'colour': u'White:FFF', + 'description': u'Image for listing (Width: 300px) (Attach First)', + 'doctype': u'DocField', + 'fieldname': u'full_image', + 'fieldtype': u'Select', + 'label': u'Full Image', + 'options': u'attach_files:', 'permlevel': 0 }, # DocField { - 'colour': 'White:FFF', - 'doctype': 'DocField', - 'fieldname': 'short_description', - 'fieldtype': 'Text', - 'label': 'Short Description', + 'colour': u'White:FFF', + 'doctype': u'DocField', + 'fieldname': u'short_description', + 'fieldtype': u'Text', + 'label': u'Short Description', 'permlevel': 0, 'reqd': 1 }, # DocField { - 'doctype': 'DocField', - 'fieldtype': 'Section Break', + 'doctype': u'DocField', + 'fieldtype': u'Section Break', 'permlevel': 0 }, # DocField { - 'colour': 'White:FFF', - 'description': 'Full description (formatted as markdown)', - 'doctype': 'DocField', - 'fieldname': 'long_description', - 'fieldtype': 'Code', - 'label': 'Long Description', + 'colour': u'White:FFF', + 'description': u'Full description (formatted as markdown)', + 'doctype': u'DocField', + 'fieldname': u'long_description', + 'fieldtype': u'Code', + 'label': u'Long Description', 'permlevel': 0, 'reqd': 0 }, # DocField { - 'doctype': 'DocField', - 'fieldtype': 'Section Break', + 'doctype': u'DocField', + 'fieldtype': u'Section Break', 'permlevel': 0 }, # DocField { - 'doctype': 'DocField', - 'fieldname': 'page_name', - 'fieldtype': 'Data', - 'label': 'Page Name', + 'doctype': u'DocField', + 'fieldname': u'page_name', + 'fieldtype': u'Data', + 'label': u'Page Name', 'permlevel': 1 }, # DocField { - 'colour': 'White:FFF', - 'doctype': 'DocField', - 'fieldname': 'price', - 'fieldtype': 'Currency', + 'colour': u'White:FFF', + 'doctype': u'DocField', + 'fieldname': u'price', + 'fieldtype': u'Currency', 'hidden': 0, - 'label': 'Price', + 'label': u'Price', 'permlevel': 1 }, # DocField { - 'colour': 'White:FFF', - 'doctype': 'DocField', - 'fieldname': 'sales', - 'fieldtype': 'Currency', - 'label': 'Sales', + 'colour': u'White:FFF', + 'doctype': u'DocField', + 'fieldname': u'sales', + 'fieldtype': u'Currency', + 'label': u'Sales', 'permlevel': 1 }, # DocField { - 'doctype': 'DocField', - 'fieldname': 'stock', - 'fieldtype': 'Currency', - 'label': 'Stock', + 'doctype': u'DocField', + 'fieldname': u'stock', + 'fieldtype': u'Currency', + 'label': u'Stock', 'permlevel': 1 }, # DocField { - 'doctype': 'DocField', - 'fieldname': 'currency', - 'fieldtype': 'Link', - 'label': 'Currency', - 'options': 'Currency', + 'doctype': u'DocField', + 'fieldname': u'currency', + 'fieldtype': u'Link', + 'label': u'Currency', + 'options': u'Currency', 'permlevel': 1 }, # DocField { - 'doctype': 'DocField', - 'fieldname': 'file_list', - 'fieldtype': 'Text', + 'doctype': u'DocField', + 'fieldname': u'file_list', + 'fieldtype': u'Text', 'hidden': 1, - 'label': 'File List', + 'label': u'File List', 'no_copy': 1, 'permlevel': 0, 'print_hide': 1 diff --git a/version.num b/version.num index b0e9f8d0ff9..755152b7ef4 100644 --- a/version.num +++ b/version.num @@ -1 +1 @@ -358 \ No newline at end of file +359 \ No newline at end of file diff --git a/wnf.py b/wnf.py index bc113879291..368e5c88a81 100755 --- a/wnf.py +++ b/wnf.py @@ -50,13 +50,13 @@ def setup_options(): parser.add_option("-d", "--db", dest="db_name", help="Apply the patches on given db") - parser.add_option('-r', '--reload_doc', nargs=3, metavar = "module doctype docname", + parser.add_option('--reload_doc', nargs=3, metavar = "module doctype docname", help="reload doc") return parser.parse_args() def run(): - sys.path.append('.') + sys.path.append('lib') sys.path.append('lib/py') import webnotes import webnotes.defs @@ -122,7 +122,7 @@ def run(): # reload elif options.reload_doc: webnotes.modules.patch_handler.reload_doc(\ - {"module":args[0], "dt":args[1], "dn":args[2]}) + {"module":options.reload_doc[0], "dt":options.reload_doc[1], "dn":options.reload_doc[2]}) print '\n'.join(webnotes.modules.patch_handler.log_list) # run all pending From cc54fd46bc623996e1e57d109012e4521244cf24 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 6 Feb 2012 13:09:08 +0100 Subject: [PATCH 13/15] website fixes --- .../patches/jan_mar_2012/latest/website.py | 24 ++++++++++--------- .../setup/doctype/item_group/item_group.txt | 2 +- erpnext/website/doctype/product/product.py | 14 ++++++++++- wnf.py | 18 +++++++------- 4 files changed, 36 insertions(+), 22 deletions(-) diff --git a/erpnext/patches/jan_mar_2012/latest/website.py b/erpnext/patches/jan_mar_2012/latest/website.py index cd40ccbb876..9c930e2659b 100644 --- a/erpnext/patches/jan_mar_2012/latest/website.py +++ b/erpnext/patches/jan_mar_2012/latest/website.py @@ -7,7 +7,8 @@ def execute(): add_website_manager() from webnotes.modules import reload_doc from webnotes.model import delete_doc - + + reload_doc('setup', 'doctype', 'item_group') delete_doc('Website', 'Module Def', 'Website') reload_doc('website', 'Module Def', 'Website') reload_doc('website', 'Role', 'Website Manager') @@ -42,16 +43,17 @@ def execute(): def create_home_page(): """create a dummy home page""" - if not webnotes.conn.sql("""select name from `tabWeb Page` where name='home'""") - d = Document('Web Page') - d.title = 'Home' - d.head_section = "

    Your Headline

    " - d.main_section = "

    Some introduction about your company

    " - d.side_section = "

    Links to other pages

    " - d.save() - obj = get_obj(doc = d) - obj.validate() - obj.doc.save() + from webnotes.model.code import get_obj + if not webnotes.conn.sql("""select name from `tabWeb Page` where name='home'"""): + d = Document('Web Page') + d.title = 'Home' + d.head_section = "

    Your Headline

    " + d.main_section = "

    Some introduction about your company

    " + d.side_section = "

    Links to other pages

    " + d.save() + obj = get_obj(doc = d) + obj.validate() + obj.doc.save() def add_website_manager(): """add website manager to system manager""" diff --git a/erpnext/setup/doctype/item_group/item_group.txt b/erpnext/setup/doctype/item_group/item_group.txt index 2e0731c2394..548c1733b34 100644 --- a/erpnext/setup/doctype/item_group/item_group.txt +++ b/erpnext/setup/doctype/item_group/item_group.txt @@ -236,4 +236,4 @@ 'print_hide': 1, 'report_hide': 1 } -] \ No newline at end of file +] diff --git a/erpnext/website/doctype/product/product.py b/erpnext/website/doctype/product/product.py index 935d762010e..5880d34c7b5 100644 --- a/erpnext/website/doctype/product/product.py +++ b/erpnext/website/doctype/product/product.py @@ -1,3 +1,5 @@ +import webnotes + class DocType: def __init__(self, d, dl): self.doc, self.doclist = d, dl @@ -24,4 +26,14 @@ class DocType: website.utils.add_guest_access_to_page(p.name) self.doc.page_name = p.name - del self.doc.fields['long_description_html'] \ No newline at end of file + del self.doc.fields['long_description_html'] + self.make_item_group_active() + + + def make_item_group_active(self): + """show item group in website""" + if self.doc.published: + from webnotes.model.doc import Document + ig = Document('Item Group', webnotes.conn.get_value('Item', self.doc.item, 'item_group')) + ig.show_in_website = 1 + ig.save() diff --git a/wnf.py b/wnf.py index 368e5c88a81..355474f58c6 100755 --- a/wnf.py +++ b/wnf.py @@ -68,6 +68,10 @@ def run(): from webnotes.db import Database import webnotes.modules.patch_handler + # connect + if options.db_name is not None: + webnotes.connect(options.db_name) + # build if options.build: import build.project @@ -99,19 +103,11 @@ def run(): os.system('git commit -a -m "%s"' % options.push[2]) os.system('git push %s %s' % (options.push[0], options.push[1])) - - # patch elif options.patch_list: # clear log webnotes.modules.patch_handler.log_list = [] - # connect to db - if options.db_name is not None: - webnotes.connect(options.db_name) - else: - webnotes.connect() - # run individual patches for patch in options.patch_list: webnotes.modules.patch_handler.run_single(\ @@ -129,6 +125,10 @@ def run(): elif options.run_latest: webnotes.modules.patch_handler.run_all() print '\n'.join(webnotes.modules.patch_handler.log_list) - + + # print messages + if webnotes.message_log: + print '\n'.join(webnotes.message_log) + if __name__=='__main__': run() From 28307193a130a183c42e23d9c0fabbe8f20a2458 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 6 Feb 2012 17:40:37 +0530 Subject: [PATCH 14/15] item group txt --- .../setup/doctype/item_group/item_group.txt | 189 +++++++++--------- 1 file changed, 100 insertions(+), 89 deletions(-) diff --git a/erpnext/setup/doctype/item_group/item_group.txt b/erpnext/setup/doctype/item_group/item_group.txt index 2e0731c2394..4d5a0b8f36f 100644 --- a/erpnext/setup/doctype/item_group/item_group.txt +++ b/erpnext/setup/doctype/item_group/item_group.txt @@ -5,54 +5,54 @@ { 'creation': '2010-08-08 17:09:06', 'docstatus': 0, - 'modified': '2012-01-30 12:14:30', - 'modified_by': 'Administrator', - 'owner': 'Administrator' + 'modified': '2012-02-06 17:38:00', + 'modified_by': u'Administrator', + 'owner': u'Administrator' }, # These values are common for all DocType { - '_last_update': '1322549700', + '_last_update': u'1322549700', 'allow_trash': 1, - 'autoname': 'field:item_group_name', - 'colour': 'White:FFF', - 'default_print_format': 'Standard', + 'autoname': u'field:item_group_name', + 'colour': u'White:FFF', + 'default_print_format': u'Standard', 'doctype': 'DocType', - 'document_type': 'Master', + 'document_type': u'Master', 'in_create': 1, 'issingle': 0, - 'module': 'Setup', + 'module': u'Setup', 'name': '__common__', - 'search_fields': 'parent_item_group', - 'section_style': 'Simple', - 'server_code_error': ' ', + 'search_fields': u'parent_item_group', + 'section_style': u'Simple', + 'server_code_error': u' ', 'show_in_menu': 0, - 'version': 57 + 'version': 58 }, # These values are common for all DocField { - 'doctype': 'DocField', + 'doctype': u'DocField', 'name': '__common__', - 'parent': 'Item Group', - 'parentfield': 'fields', - 'parenttype': 'DocType' + 'parent': u'Item Group', + 'parentfield': u'fields', + 'parenttype': u'DocType' }, # These values are common for all DocPerm { - 'doctype': 'DocPerm', + 'doctype': u'DocPerm', 'name': '__common__', - 'parent': 'Item Group', - 'parentfield': 'permissions', - 'parenttype': 'DocType', + 'parent': u'Item Group', + 'parentfield': u'permissions', + 'parenttype': u'DocType', 'read': 1 }, # DocType, Item Group { 'doctype': 'DocType', - 'name': 'Item Group' + 'name': u'Item Group' }, # DocPerm @@ -60,9 +60,9 @@ 'amend': 0, 'cancel': 0, 'create': 0, - 'doctype': 'DocPerm', + 'doctype': u'DocPerm', 'permlevel': 1, - 'role': 'Material Manager', + 'role': u'Material Manager', 'submit': 0, 'write': 0 }, @@ -72,9 +72,9 @@ 'amend': 0, 'cancel': 0, 'create': 0, - 'doctype': 'DocPerm', + 'doctype': u'DocPerm', 'permlevel': 0, - 'role': 'Material Manager', + 'role': u'Material Manager', 'submit': 0, 'write': 0 }, @@ -84,9 +84,9 @@ 'amend': 0, 'cancel': 0, 'create': 0, - 'doctype': 'DocPerm', + 'doctype': u'DocPerm', 'permlevel': 1, - 'role': 'Material User', + 'role': u'Material User', 'submit': 0, 'write': 0 }, @@ -96,9 +96,9 @@ 'amend': 0, 'cancel': 0, 'create': 0, - 'doctype': 'DocPerm', + 'doctype': u'DocPerm', 'permlevel': 0, - 'role': 'Material User', + 'role': u'Material User', 'submit': 0, 'write': 0 }, @@ -107,9 +107,9 @@ { 'cancel': 1, 'create': 1, - 'doctype': 'DocPerm', + 'doctype': u'DocPerm', 'permlevel': 0, - 'role': 'System Manager', + 'role': u'System Manager', 'write': 1 }, @@ -117,87 +117,98 @@ { 'cancel': 1, 'create': 1, - 'doctype': 'DocPerm', + 'doctype': u'DocPerm', 'permlevel': 0, - 'role': 'Material Master Manager', + 'role': u'Material Master Manager', 'write': 1 }, # DocField { - 'doctype': 'DocField', - 'fieldname': 'item_group_name', - 'fieldtype': 'Data', - 'label': 'Item Group Name', - 'oldfieldname': 'item_group_name', - 'oldfieldtype': 'Data', + 'doctype': u'DocField', + 'fieldname': u'item_group_name', + 'fieldtype': u'Data', + 'label': u'Item Group Name', + 'oldfieldname': u'item_group_name', + 'oldfieldtype': u'Data', 'permlevel': 0, 'reqd': 1 }, # DocField { - 'doctype': 'DocField', - 'fieldname': 'description', - 'fieldtype': 'Text', - 'label': 'Description', - 'oldfieldname': 'description', - 'oldfieldtype': 'Text', + 'doctype': u'DocField', + 'fieldname': u'description', + 'fieldtype': u'Text', + 'label': u'Description', + 'oldfieldname': u'description', + 'oldfieldtype': u'Text', 'permlevel': 0, - 'width': '300px' + 'width': u'300px' }, # DocField { - 'doctype': 'DocField', - 'fieldname': 'parent_item_group', - 'fieldtype': 'Link', - 'label': 'Parent Item Group', - 'oldfieldname': 'parent_item_group', - 'oldfieldtype': 'Link', - 'options': 'Item Group', + 'colour': u'White:FFF', + 'description': u'Check this if you want to show in website', + 'doctype': u'DocField', + 'fieldname': u'show_in_website', + 'fieldtype': u'Check', + 'label': u'Show in Website', + 'permlevel': 0 + }, + + # DocField + { + 'doctype': u'DocField', + 'fieldname': u'parent_item_group', + 'fieldtype': u'Link', + 'label': u'Parent Item Group', + 'oldfieldname': u'parent_item_group', + 'oldfieldtype': u'Link', + 'options': u'Item Group', 'permlevel': 0, 'reqd': 1, - 'trigger': 'Client' + 'trigger': u'Client' }, # DocField { - 'colour': 'White:FFF', - 'description': 'Only leaf nodes are allowed in transaction', - 'doctype': 'DocField', - 'fieldname': 'is_group', - 'fieldtype': 'Select', - 'label': 'Has Child Node', - 'oldfieldname': 'is_group', - 'oldfieldtype': 'Select', - 'options': '\nYes\nNo', + 'colour': u'White:FFF', + 'description': u'Only leaf nodes are allowed in transaction', + 'doctype': u'DocField', + 'fieldname': u'is_group', + 'fieldtype': u'Select', + 'label': u'Has Child Node', + 'oldfieldname': u'is_group', + 'oldfieldtype': u'Select', + 'options': u'\nYes\nNo', 'permlevel': 0, 'reqd': 1 }, # DocField { - 'doctype': 'DocField', - 'fieldname': 'trash_reason', - 'fieldtype': 'Small Text', - 'label': 'Trash Reason', - 'oldfieldname': 'trash_reason', - 'oldfieldtype': 'Small Text', + 'doctype': u'DocField', + 'fieldname': u'trash_reason', + 'fieldtype': u'Small Text', + 'label': u'Trash Reason', + 'oldfieldname': u'trash_reason', + 'oldfieldtype': u'Small Text', 'permlevel': 1 }, # DocField { - 'doctype': 'DocField', - 'fieldname': 'lft', - 'fieldtype': 'Int', + 'doctype': u'DocField', + 'fieldname': u'lft', + 'fieldtype': u'Int', 'hidden': 1, 'in_filter': 1, - 'label': 'lft', + 'label': u'lft', 'no_copy': 1, - 'oldfieldname': 'lft', - 'oldfieldtype': 'Int', + 'oldfieldname': u'lft', + 'oldfieldtype': u'Int', 'permlevel': 0, 'print_hide': 1, 'report_hide': 0, @@ -206,15 +217,15 @@ # DocField { - 'doctype': 'DocField', - 'fieldname': 'rgt', - 'fieldtype': 'Int', + 'doctype': u'DocField', + 'fieldname': u'rgt', + 'fieldtype': u'Int', 'hidden': 1, 'in_filter': 1, - 'label': 'rgt', + 'label': u'rgt', 'no_copy': 1, - 'oldfieldname': 'rgt', - 'oldfieldtype': 'Int', + 'oldfieldname': u'rgt', + 'oldfieldtype': u'Int', 'permlevel': 0, 'print_hide': 1, 'report_hide': 0, @@ -223,15 +234,15 @@ # DocField { - 'doctype': 'DocField', - 'fieldname': 'old_parent', - 'fieldtype': 'Link', + 'doctype': u'DocField', + 'fieldname': u'old_parent', + 'fieldtype': u'Link', 'hidden': 1, - 'label': 'old_parent', + 'label': u'old_parent', 'no_copy': 1, - 'oldfieldname': 'old_parent', - 'oldfieldtype': 'Data', - 'options': 'Item Group', + 'oldfieldname': u'old_parent', + 'oldfieldtype': u'Data', + 'options': u'Item Group', 'permlevel': 0, 'print_hide': 1, 'report_hide': 1 From f35992f6955c83d2d5b2bfbd5ec7e8625d6c1ec2 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Tue, 7 Feb 2012 10:39:17 +0530 Subject: [PATCH 15/15] top bar to accept url --- erpnext/startup/event_handlers.py | 2 +- .../doctype/top_bar_item/top_bar_item.txt | 59 +++++++++---------- erpnext/website/js/topbar.js | 4 +- 3 files changed, 32 insertions(+), 33 deletions(-) diff --git a/erpnext/startup/event_handlers.py b/erpnext/startup/event_handlers.py index e3e7fa95d57..3c6281f1fda 100644 --- a/erpnext/startup/event_handlers.py +++ b/erpnext/startup/event_handlers.py @@ -53,7 +53,7 @@ def boot_session(bootinfo): if webnotes.session['user']=='Guest': bootinfo['website_settings'] = webnotes.model.doc.getsingle('Website Settings') - bootinfo['website_menus'] = webnotes.conn.sql("""select label, std_page, custom_page, + bootinfo['website_menus'] = webnotes.conn.sql("""select label, url, custom_page, parent_label, parentfield from `tabTop Bar Item` where parent='Website Settings' order by idx asc""", as_dict=1) bootinfo['custom_css'] = webnotes.conn.get_value('Style Settings', None, 'custom_css') or '' diff --git a/erpnext/website/doctype/top_bar_item/top_bar_item.txt b/erpnext/website/doctype/top_bar_item/top_bar_item.txt index 410352c2355..3ff23b3a63f 100644 --- a/erpnext/website/doctype/top_bar_item/top_bar_item.txt +++ b/erpnext/website/doctype/top_bar_item/top_bar_item.txt @@ -5,70 +5,69 @@ { 'creation': '2012-01-24 10:24:19', 'docstatus': 0, - 'modified': '2012-01-30 14:14:48', - 'modified_by': 'Administrator', - 'owner': 'Administrator' + 'modified': '2012-02-07 10:35:19', + 'modified_by': u'Administrator', + 'owner': u'Administrator' }, # These values are common for all DocType { - 'colour': 'White:FFF', + 'colour': u'White:FFF', 'doctype': 'DocType', 'istable': 1, - 'module': 'Website', + 'module': u'Website', 'name': '__common__', - 'section_style': 'Simple', + 'section_style': u'Simple', 'show_in_menu': 0, - 'version': 2 + 'version': 4 }, # These values are common for all DocField { - 'doctype': 'DocField', + 'doctype': u'DocField', 'name': '__common__', - 'parent': 'Top Bar Item', - 'parentfield': 'fields', - 'parenttype': 'DocType', + 'parent': u'Top Bar Item', + 'parentfield': u'fields', + 'parenttype': u'DocType', 'permlevel': 0 }, # DocType, Top Bar Item { 'doctype': 'DocType', - 'name': 'Top Bar Item' + 'name': u'Top Bar Item' }, # DocField { - 'doctype': 'DocField', - 'fieldname': 'label', - 'fieldtype': 'Data', - 'label': 'Label' + 'doctype': u'DocField', + 'fieldname': u'label', + 'fieldtype': u'Data', + 'label': u'Label' }, # DocField { - 'doctype': 'DocField', - 'fieldname': 'std_page', - 'fieldtype': 'Select', - 'label': 'Std Page', - 'options': 'Home\nAbout\nContact\nProducts\nBlog\nCustom' + 'doctype': u'DocField', + 'fieldname': u'custom_page', + 'fieldtype': u'Link', + 'label': u'Page', + 'options': u'Page' }, # DocField { - 'doctype': 'DocField', - 'fieldname': 'custom_page', - 'fieldtype': 'Link', - 'label': 'Custom Page', - 'options': 'Web Page' + 'doctype': u'DocField', + 'fieldname': u'url', + 'fieldtype': u'Data', + 'label': u'URL' }, # DocField { - 'doctype': 'DocField', - 'fieldname': 'parent_label', - 'fieldtype': 'Select', - 'label': 'Parent Label' + 'doctype': u'DocField', + 'fieldname': u'parent_label', + 'fieldtype': u'Select', + 'label': u'Parent Label' } ] \ No newline at end of file diff --git a/erpnext/website/js/topbar.js b/erpnext/website/js/topbar.js index 90e530d0ded..cffc825e90f 100644 --- a/erpnext/website/js/topbar.js +++ b/erpnext/website/js/topbar.js @@ -37,7 +37,7 @@ erpnext.topbar.TopBar = Class.extend({ for(var i=0;i%(label)s', item)) } @@ -64,7 +64,7 @@ erpnext.Footer = Class.extend({ for(var i=0;i%(label)s', item)) }