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

Conflicts:
	version.num
This commit is contained in:
Anand Doshi 2012-02-07 10:59:29 +05:30
commit 67d2c8396c
27 changed files with 634 additions and 369 deletions

View File

@ -1,7 +0,0 @@
index_path = '/'
include_paths = [
'erpnext',
'lib/py',
'lib/py/legacy'
]

View File

@ -125,7 +125,7 @@ pscript.make_ac_tree = function() {
var imgsrc=null; var imgsrc=null;
var has_children = true; var has_children = true;
if(cl[i].group_or_ledger=='Ledger') { if(cl[i].group_or_ledger=='Ledger') {
var imgsrc = 'lib/images/icons/page.gif'; var imgsrc = 'lib/images/icons/page.png';
has_children = false; has_children = false;
} }
var t = tree.addNode(n, cl[i].account_name, imgsrc,tree.std_onclick, has_children ? tree.std_onexp : null); 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 imgsrc=null;
var has_children = true; var has_children = true;
if(cl[i].group_or_ledger=='Ledger') { if(cl[i].group_or_ledger=='Ledger') {
var imgsrc = 'lib/images/icons/page.gif'; var imgsrc = 'lib/images/icons/page.png';
has_children = false; has_children = false;
} }
var t = tree.addNode(n, cl[i].cost_center_name, imgsrc,tree.std_onclick, has_children ? tree.std_onexp : null); var t = tree.addNode(n, cl[i].cost_center_name, imgsrc,tree.std_onclick, has_children ? tree.std_onexp : null);

View File

@ -34,23 +34,33 @@ feed_dict = {
'Support Ticket': ['[%(status)s] %(subject)s', '#000080'] '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" "makes a new Feed record"
#msgprint(subject) #msgprint(subject)
from webnotes.model.doc import Document 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 = Document('Feed')
f.doc_type = doc.doctype f.owner = owner
f.doc_name = doc.name f.feed_type = feedtype
f.doc_type = doctype
f.doc_name = name
f.subject = subject f.subject = subject
f.color = color f.color = color
f.save(1) f.save()
def update_feed(doc, method=None): def update_feed(doc, method=None):
"adds a new feed" "adds a new feed"
if method=='on_update': if method=='on_update':
subject, color = feed_dict.get(doc.doctype, [None, None]) subject, color = feed_dict.get(doc.doctype, [None, None])
if subject: if subject:
subject = subject % doc.fields make_feed('', doc.doctype, doc.name, doc.owner, subject % doc.fields, color)
make_feed(doc, subject, color)

View File

@ -3,9 +3,9 @@
# These values are common in all dictionaries # These values are common in all dictionaries
{ {
'creation': '2011-04-08 10:50:41', 'creation': '2011-04-06 18:11:38',
'docstatus': 0, 'docstatus': 0,
'modified': '2011-04-05 09:16:57', 'modified': '2012-02-03 11:28:16',
'modified_by': 'Administrator', 'modified_by': 'Administrator',
'owner': 'Administrator' 'owner': 'Administrator'
}, },
@ -14,18 +14,18 @@
{ {
'autoname': '_FEED.#####', 'autoname': '_FEED.#####',
'colour': 'White:FFF', 'colour': 'White:FFF',
'default_print_format': 'Standard',
'doctype': 'DocType', 'doctype': 'DocType',
'module': 'Home', 'module': 'Home',
'name': '__common__', 'name': '__common__',
'section_style': 'Simple', 'section_style': 'Simple',
'show_in_menu': 0, 'show_in_menu': 0,
'version': 1 'version': 2
}, },
# These values are common for all DocField # These values are common for all DocField
{ {
'doctype': 'DocField', 'doctype': 'DocField',
'fieldtype': 'Data',
'name': '__common__', 'name': '__common__',
'parent': 'Feed', 'parent': 'Feed',
'parentfield': 'fields', 'parentfield': 'fields',
@ -39,11 +39,19 @@
'name': 'Feed' 'name': 'Feed'
}, },
# DocField
{
'doctype': 'DocField',
'fieldname': 'feed_type',
'fieldtype': 'Select',
'label': 'Feed Type'
},
# DocField # DocField
{ {
'doctype': 'DocField', 'doctype': 'DocField',
'fieldname': 'doc_type', 'fieldname': 'doc_type',
'idx': 1, 'fieldtype': 'Data',
'label': 'Doc Type' 'label': 'Doc Type'
}, },
@ -51,7 +59,7 @@
{ {
'doctype': 'DocField', 'doctype': 'DocField',
'fieldname': 'doc_name', 'fieldname': 'doc_name',
'idx': 2, 'fieldtype': 'Data',
'label': 'Doc Name' 'label': 'Doc Name'
}, },
@ -59,7 +67,7 @@
{ {
'doctype': 'DocField', 'doctype': 'DocField',
'fieldname': 'subject', 'fieldname': 'subject',
'idx': 3, 'fieldtype': 'Data',
'label': 'Subject' 'label': 'Subject'
}, },
@ -67,7 +75,7 @@
{ {
'doctype': 'DocField', 'doctype': 'DocField',
'fieldname': 'color', 'fieldname': 'color',
'idx': 4, 'fieldtype': 'Data',
'label': 'Color' 'label': 'Color'
} }
] ]

View File

@ -456,7 +456,7 @@ FeedList.prototype.make_list = function() {
this.list = new wn.widgets.Listing({ this.list = new wn.widgets.Listing({
parent: this.list_area, parent: this.list_area,
query: repl('select \ 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, \ concat(ifnull(t2.first_name,""), " ", ifnull(t2.last_name,"")) as full_name, \
t1.modified, t1.color \ t1.modified, t1.color \
from tabFeed t1, tabProfile t2, tabUserRole t3, tabDocPerm t4 \ 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)+'%']); this.tab = make_table(this.wrapper, 1, 2, '100%', [(100/7)+'%', (600/7)+'%']);
$y(this.tab,{tableLayout:'fixed'}) $y(this.tab,{tableLayout:'fixed'})
// image
$y($td(this.tab,0,0),{textAlign:'right',paddingRight:'4px'}); $y($td(this.tab,0,0),{textAlign:'right',paddingRight:'4px'});
// text // text
this.text_area = $a($td(this.tab,0,1), 'div'); 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); this.render_tag(det);
// add day separator // add day separator
@ -537,13 +535,21 @@ FeedItem.prototype.add_day_sep = function(det) {
// ------------------------------------------------- // -------------------------------------------------
FeedItem.prototype.render_tag = function(det) { FeedItem.prototype.render_tag = function(det) {
// type is the name
tag = $a($td(this.tab,0,0), 'div', '', 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'); $br(tag,'3px');
$y(tag, {backgroundColor:(det.color || '#273')}); $y(tag, {backgroundColor:(det.color || '#273')});
tag.innerHTML = get_doctype_label(det.doc_type);
tag.dt = det.doc_type; // tag label
tag.onclick = function() { loaddocbrowser(this.dt); } 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) { 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 var dt = det.doc_type; var dn = det.doc_name
// link // link
var allow = in_list(profile.can_read, dt); if(det.feed_type=='Login') {
var span = $a($td(div.tab,0,0), 'span', (allow ? 'link_type': ''), null, det.doc_name); // nothing - no link
span.dt = dt; span.dn = dn; } else {
if(allow) span.onclick = function() { loaddoc(this.dt, this.dn); } 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 // subject
if(det.subject) { if(det.subject) {

View File

@ -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 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'}); 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.role = role;
ic.onclick = function(){ ic.onclick = function(){

View File

@ -0,0 +1,35 @@
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")
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.sql("""delete from __SessionCache""")
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""")

View File

@ -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')

View File

@ -0,0 +1,19 @@
import webnotes
from webnotes.model.doc import Document
from webnotes.modules import reload_doc
def execute():
add_default_home_page()
reload_doc('setup','doctype','manage_account')
def add_default_home_page():
if not webnotes.conn.sql("""select name from `tabDefault Home Page`
where role='Guest' and home_page='Login Page'"""):
d = Document('Default Home Page')
d.parent = 'Control Panel'
d.parenttype = 'Control Panel'
d.parentfield = 'default_home_pages'
d.role = 'Guest'
d.home_page = 'Login Page'
d.save(1)

View File

@ -5,28 +5,56 @@ from webnotes.model.doc import Document
def execute(): def execute():
add_website_manager() add_website_manager()
cleanup_file_data()
update_patch_log()
from webnotes.modules import reload_doc from webnotes.modules import reload_doc
reload_doc('website', 'Role', 'Website Manager') 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', 'Module Def', 'Website')
reload_doc('website', 'doctype', 'website_settings') reload_doc('website', 'Role', 'Website Manager')
reload_doc('website', 'doctype', 'style_settings')
reload_doc('website', 'doctype', 'top_bar_item') webnotes.conn.sql("""delete from `tabModule Def Role` where parent='Website'""")
reload_doc('website', 'doctype', 'contact_us_settings') 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', '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')
reload_doc('website', 'doctype', 'blog_subscriber') reload_doc('website', 'doctype', 'blog_subscriber')
reload_doc('website', 'doctype', 'contact_us_settings')
reload_doc('website', 'doctype', 'product') 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', 'web_page')
reload_doc('website', 'doctype', 'website_settings')
reload_doc('website', 'page', 'contact')
reload_doc('website', 'page', 'about') reload_doc('website', 'page', 'about')
reload_doc('website', 'page', 'blog') reload_doc('website', 'page', 'blog')
reload_doc('website', 'page', 'unsubscribe') reload_doc('website', 'page', 'contact')
reload_doc('website', 'page', 'products') reload_doc('website', 'page', 'products')
reload_doc('website', 'page', 'unsubscribe')
create_home_page()
def create_home_page():
"""create a dummy home page"""
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 = "<h1>Your Headline</h1>"
d.main_section = "<p>Some introduction about your company</p>"
d.side_section = "<p>Links to other pages</p>"
d.save()
obj = get_obj(doc = d)
obj.validate()
obj.doc.save()
def add_website_manager(): def add_website_manager():
"""add website manager to system manager""" """add website manager to system manager"""
for i in webnotes.conn.sql("""select distinct parent from tabUserRole for i in webnotes.conn.sql("""select distinct parent from tabUserRole
@ -37,13 +65,3 @@ def add_website_manager():
d.parent = i[0] d.parent = i[0]
d.role = 'Website Manager' d.role = 'Website Manager'
d.save(1) d.save(1)
def cleanup_file_data():
webnotes.conn.commit()
webnotes.conn.sql("""alter table `tabFile Data` drop column blob_content""")
webnotes.conn.begin()
def update_patch_log():
webnotes.conn.commit()
webnotes.conn.sql("""alter table __PatchLog engine=InnoDB""")
webnotes.conn.begin()

View File

@ -1,40 +0,0 @@
import webnotes
from webnotes.model.doc import Document
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`
where role='Guest' and home_page='Login Page'"""):
d = Document('Default Home Page')
d.parent = 'Control Panel'
d.parenttype = 'Control Panel'
d.parentfield = 'default_home_pages'
d.role = 'Guest'
d.home_page = 'Login Page'
d.save(1)

View File

@ -140,7 +140,7 @@ SalesBrowser.prototype.make_tree = function() {
var has_children = true; var has_children = true;
if(cl[i].is_group=='No') { if(cl[i].is_group=='No') {
var imgsrc = 'lib/images/icons/page.gif'; var imgsrc = 'lib/images/icons/page.png';
has_children = false; has_children = false;
} }
var t = me.tree.addNode(n, cl[i].name, imgsrc,me.tree.std_onclick, has_children ? me.tree.std_onexp : null); 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; var has_children = true;
if(cl[i].is_group=='No') { if(cl[i].is_group=='No') {
var imgsrc = 'lib/images/icons/page.gif'; var imgsrc = 'lib/images/icons/page.png';
has_children = false; has_children = false;
} }
me.tree_area.innerHTML = ''; me.tree_area.innerHTML = '';

View File

@ -5,54 +5,54 @@
{ {
'creation': '2010-08-08 17:09:06', 'creation': '2010-08-08 17:09:06',
'docstatus': 0, 'docstatus': 0,
'modified': '2012-01-30 12:14:30', 'modified': '2012-02-06 17:38:00',
'modified_by': 'Administrator', 'modified_by': u'Administrator',
'owner': 'Administrator' 'owner': u'Administrator'
}, },
# These values are common for all DocType # These values are common for all DocType
{ {
'_last_update': '1322549700', '_last_update': u'1322549700',
'allow_trash': 1, 'allow_trash': 1,
'autoname': 'field:item_group_name', 'autoname': u'field:item_group_name',
'colour': 'White:FFF', 'colour': u'White:FFF',
'default_print_format': 'Standard', 'default_print_format': u'Standard',
'doctype': 'DocType', 'doctype': 'DocType',
'document_type': 'Master', 'document_type': u'Master',
'in_create': 1, 'in_create': 1,
'issingle': 0, 'issingle': 0,
'module': 'Setup', 'module': u'Setup',
'name': '__common__', 'name': '__common__',
'search_fields': 'parent_item_group', 'search_fields': u'parent_item_group',
'section_style': 'Simple', 'section_style': u'Simple',
'server_code_error': ' ', 'server_code_error': u' ',
'show_in_menu': 0, 'show_in_menu': 0,
'version': 57 'version': 58
}, },
# These values are common for all DocField # These values are common for all DocField
{ {
'doctype': 'DocField', 'doctype': u'DocField',
'name': '__common__', 'name': '__common__',
'parent': 'Item Group', 'parent': u'Item Group',
'parentfield': 'fields', 'parentfield': u'fields',
'parenttype': 'DocType' 'parenttype': u'DocType'
}, },
# These values are common for all DocPerm # These values are common for all DocPerm
{ {
'doctype': 'DocPerm', 'doctype': u'DocPerm',
'name': '__common__', 'name': '__common__',
'parent': 'Item Group', 'parent': u'Item Group',
'parentfield': 'permissions', 'parentfield': u'permissions',
'parenttype': 'DocType', 'parenttype': u'DocType',
'read': 1 'read': 1
}, },
# DocType, Item Group # DocType, Item Group
{ {
'doctype': 'DocType', 'doctype': 'DocType',
'name': 'Item Group' 'name': u'Item Group'
}, },
# DocPerm # DocPerm
@ -60,9 +60,9 @@
'amend': 0, 'amend': 0,
'cancel': 0, 'cancel': 0,
'create': 0, 'create': 0,
'doctype': 'DocPerm', 'doctype': u'DocPerm',
'permlevel': 1, 'permlevel': 1,
'role': 'Material Manager', 'role': u'Material Manager',
'submit': 0, 'submit': 0,
'write': 0 'write': 0
}, },
@ -72,9 +72,9 @@
'amend': 0, 'amend': 0,
'cancel': 0, 'cancel': 0,
'create': 0, 'create': 0,
'doctype': 'DocPerm', 'doctype': u'DocPerm',
'permlevel': 0, 'permlevel': 0,
'role': 'Material Manager', 'role': u'Material Manager',
'submit': 0, 'submit': 0,
'write': 0 'write': 0
}, },
@ -84,9 +84,9 @@
'amend': 0, 'amend': 0,
'cancel': 0, 'cancel': 0,
'create': 0, 'create': 0,
'doctype': 'DocPerm', 'doctype': u'DocPerm',
'permlevel': 1, 'permlevel': 1,
'role': 'Material User', 'role': u'Material User',
'submit': 0, 'submit': 0,
'write': 0 'write': 0
}, },
@ -96,9 +96,9 @@
'amend': 0, 'amend': 0,
'cancel': 0, 'cancel': 0,
'create': 0, 'create': 0,
'doctype': 'DocPerm', 'doctype': u'DocPerm',
'permlevel': 0, 'permlevel': 0,
'role': 'Material User', 'role': u'Material User',
'submit': 0, 'submit': 0,
'write': 0 'write': 0
}, },
@ -107,9 +107,9 @@
{ {
'cancel': 1, 'cancel': 1,
'create': 1, 'create': 1,
'doctype': 'DocPerm', 'doctype': u'DocPerm',
'permlevel': 0, 'permlevel': 0,
'role': 'System Manager', 'role': u'System Manager',
'write': 1 'write': 1
}, },
@ -117,87 +117,98 @@
{ {
'cancel': 1, 'cancel': 1,
'create': 1, 'create': 1,
'doctype': 'DocPerm', 'doctype': u'DocPerm',
'permlevel': 0, 'permlevel': 0,
'role': 'Material Master Manager', 'role': u'Material Master Manager',
'write': 1 'write': 1
}, },
# DocField # DocField
{ {
'doctype': 'DocField', 'doctype': u'DocField',
'fieldname': 'item_group_name', 'fieldname': u'item_group_name',
'fieldtype': 'Data', 'fieldtype': u'Data',
'label': 'Item Group Name', 'label': u'Item Group Name',
'oldfieldname': 'item_group_name', 'oldfieldname': u'item_group_name',
'oldfieldtype': 'Data', 'oldfieldtype': u'Data',
'permlevel': 0, 'permlevel': 0,
'reqd': 1 'reqd': 1
}, },
# DocField # DocField
{ {
'doctype': 'DocField', 'doctype': u'DocField',
'fieldname': 'description', 'fieldname': u'description',
'fieldtype': 'Text', 'fieldtype': u'Text',
'label': 'Description', 'label': u'Description',
'oldfieldname': 'description', 'oldfieldname': u'description',
'oldfieldtype': 'Text', 'oldfieldtype': u'Text',
'permlevel': 0, 'permlevel': 0,
'width': '300px' 'width': u'300px'
}, },
# DocField # DocField
{ {
'doctype': 'DocField', 'colour': u'White:FFF',
'fieldname': 'parent_item_group', 'description': u'Check this if you want to show in website',
'fieldtype': 'Link', 'doctype': u'DocField',
'label': 'Parent Item Group', 'fieldname': u'show_in_website',
'oldfieldname': 'parent_item_group', 'fieldtype': u'Check',
'oldfieldtype': 'Link', 'label': u'Show in Website',
'options': 'Item Group', '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, 'permlevel': 0,
'reqd': 1, 'reqd': 1,
'trigger': 'Client' 'trigger': u'Client'
}, },
# DocField # DocField
{ {
'colour': 'White:FFF', 'colour': u'White:FFF',
'description': 'Only leaf nodes are allowed in transaction', 'description': u'Only leaf nodes are allowed in transaction',
'doctype': 'DocField', 'doctype': u'DocField',
'fieldname': 'is_group', 'fieldname': u'is_group',
'fieldtype': 'Select', 'fieldtype': u'Select',
'label': 'Has Child Node', 'label': u'Has Child Node',
'oldfieldname': 'is_group', 'oldfieldname': u'is_group',
'oldfieldtype': 'Select', 'oldfieldtype': u'Select',
'options': '\nYes\nNo', 'options': u'\nYes\nNo',
'permlevel': 0, 'permlevel': 0,
'reqd': 1 'reqd': 1
}, },
# DocField # DocField
{ {
'doctype': 'DocField', 'doctype': u'DocField',
'fieldname': 'trash_reason', 'fieldname': u'trash_reason',
'fieldtype': 'Small Text', 'fieldtype': u'Small Text',
'label': 'Trash Reason', 'label': u'Trash Reason',
'oldfieldname': 'trash_reason', 'oldfieldname': u'trash_reason',
'oldfieldtype': 'Small Text', 'oldfieldtype': u'Small Text',
'permlevel': 1 'permlevel': 1
}, },
# DocField # DocField
{ {
'doctype': 'DocField', 'doctype': u'DocField',
'fieldname': 'lft', 'fieldname': u'lft',
'fieldtype': 'Int', 'fieldtype': u'Int',
'hidden': 1, 'hidden': 1,
'in_filter': 1, 'in_filter': 1,
'label': 'lft', 'label': u'lft',
'no_copy': 1, 'no_copy': 1,
'oldfieldname': 'lft', 'oldfieldname': u'lft',
'oldfieldtype': 'Int', 'oldfieldtype': u'Int',
'permlevel': 0, 'permlevel': 0,
'print_hide': 1, 'print_hide': 1,
'report_hide': 0, 'report_hide': 0,
@ -206,15 +217,15 @@
# DocField # DocField
{ {
'doctype': 'DocField', 'doctype': u'DocField',
'fieldname': 'rgt', 'fieldname': u'rgt',
'fieldtype': 'Int', 'fieldtype': u'Int',
'hidden': 1, 'hidden': 1,
'in_filter': 1, 'in_filter': 1,
'label': 'rgt', 'label': u'rgt',
'no_copy': 1, 'no_copy': 1,
'oldfieldname': 'rgt', 'oldfieldname': u'rgt',
'oldfieldtype': 'Int', 'oldfieldtype': u'Int',
'permlevel': 0, 'permlevel': 0,
'print_hide': 1, 'print_hide': 1,
'report_hide': 0, 'report_hide': 0,
@ -223,17 +234,17 @@
# DocField # DocField
{ {
'doctype': 'DocField', 'doctype': u'DocField',
'fieldname': 'old_parent', 'fieldname': u'old_parent',
'fieldtype': 'Link', 'fieldtype': u'Link',
'hidden': 1, 'hidden': 1,
'label': 'old_parent', 'label': u'old_parent',
'no_copy': 1, 'no_copy': 1,
'oldfieldname': 'old_parent', 'oldfieldname': u'old_parent',
'oldfieldtype': 'Data', 'oldfieldtype': u'Data',
'options': 'Item Group', 'options': u'Item Group',
'permlevel': 0, 'permlevel': 0,
'print_hide': 1, 'print_hide': 1,
'report_hide': 1 'report_hide': 1
} }
] ]

View File

@ -1,18 +1,18 @@
import webnotes import webnotes
import webnotes.defs import webnotes.defs
from webnotes.utils import cint from webnotes.utils import cint
import home
def on_login(login_manager): def on_login(login_manager):
""" """
called from login manager, before login 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 import server_tools.gateway_utils
server_tools.gateway_utils.check_login(login_manager.user) server_tools.gateway_utils.check_login(login_manager.user)
except ImportError: except ImportError:
pass pass
def on_login_post_session(login_manager): def on_login_post_session(login_manager):
""" """
@ -29,9 +29,21 @@ def on_login_post_session(login_manager):
sid!=%s""", \ sid!=%s""", \
(webnotes.session['user'], webnotes.session['sid']), as_list=1) (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,
'<i>"' + doc.comment + '"</i>', '#6B24B3')
def doclist_all(doc, method): def doclist_all(doc, method):
"""doclist trigger called from webnotes.model.doclist on any event""" """doclist trigger called from webnotes.model.doclist on any event"""
import home
home.update_feed(doc, method) home.update_feed(doc, method)
def boot_session(bootinfo): def boot_session(bootinfo):
@ -41,7 +53,7 @@ def boot_session(bootinfo):
if webnotes.session['user']=='Guest': if webnotes.session['user']=='Guest':
bootinfo['website_settings'] = webnotes.model.doc.getsingle('Website Settings') 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 parent_label, parentfield
from `tabTop Bar Item` where parent='Website Settings' order by idx asc""", as_dict=1) 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 '' bootinfo['custom_css'] = webnotes.conn.get_value('Style Settings', None, 'custom_css') or ''
@ -51,5 +63,6 @@ def boot_session(bootinfo):
def get_letter_heads(): def get_letter_heads():
"""load letter heads with startup""" """load letter heads with startup"""
import webnotes 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) return dict(ret)

View File

@ -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'
}
]

View File

@ -14,11 +14,11 @@ class DocType:
path = os.path.join(os.path.dirname(__file__), 'template.html') path = os.path.join(os.path.dirname(__file__), 'template.html')
self.doc.about_team = webnotes.conn.sql("""select * from `tabAbout Us Team` 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 import markdown2
for t in self.doc.about_team: 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', 'title', self.doc.headline)
webnotes.conn.set_value('Page', 'about', 'content', make_template(self.doc, path)) webnotes.conn.set_value('Page', 'about', 'content', make_template(self.doc, path))

View File

@ -1,3 +1,5 @@
import webnotes
class DocType: class DocType:
def __init__(self, d, dl): def __init__(self, d, dl):
self.doc, self.doclist = d, dl self.doc, self.doclist = d, dl
@ -24,4 +26,14 @@ class DocType:
website.utils.add_guest_access_to_page(p.name) website.utils.add_guest_access_to_page(p.name)
self.doc.page_name = p.name self.doc.page_name = p.name
del self.doc.fields['long_description_html'] 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()

View File

@ -5,245 +5,245 @@
{ {
'creation': '2012-01-30 16:21:29', 'creation': '2012-01-30 16:21:29',
'docstatus': 0, 'docstatus': 0,
'modified': '2012-01-31 13:46:23', 'modified': '2012-02-06 16:15:29',
'modified_by': 'Administrator', 'modified_by': u'Administrator',
'owner': 'Administrator' 'owner': u'Administrator'
}, },
# These values are common for all DocType # These values are common for all DocType
{ {
'_last_update': '1327995660', '_last_update': u'1327997783',
'allow_attach': 1, 'allow_attach': 1,
'autoname': 'field:item', 'autoname': u'field:item',
'colour': 'White:FFF', 'colour': u'White:FFF',
'description': 'A Product is shown on the website and is linked to an item.', 'description': u'A Product is shown on the website and is linked to an item.',
'doctype': 'DocType', 'doctype': 'DocType',
'max_attachments': 5, 'max_attachments': 5,
'module': 'Website', 'module': u'Website',
'name': '__common__', 'name': '__common__',
'section_style': 'Simple', 'section_style': u'Simple',
'show_in_menu': 0, 'show_in_menu': 0,
'version': 10 'version': 11
}, },
# These values are common for all DocField # These values are common for all DocField
{ {
'doctype': 'DocField', 'doctype': u'DocField',
'name': '__common__', 'name': '__common__',
'parent': 'Product', 'parent': u'Product',
'parentfield': 'fields', 'parentfield': u'fields',
'parenttype': 'DocType' 'parenttype': u'DocType'
}, },
# These values are common for all DocPerm # These values are common for all DocPerm
{ {
'doctype': 'DocPerm', 'doctype': u'DocPerm',
'name': '__common__', 'name': '__common__',
'parent': 'Product', 'parent': u'Product',
'parentfield': 'permissions', 'parentfield': u'permissions',
'parenttype': 'DocType', 'parenttype': u'DocType',
'read': 1, 'read': 1,
'role': 'Website Manager' 'role': u'Website Manager'
}, },
# DocType, Product # DocType, Product
{ {
'doctype': 'DocType', 'doctype': 'DocType',
'name': 'Product' 'name': u'Product'
}, },
# DocPerm # DocPerm
{ {
'create': 1, 'create': 1,
'doctype': 'DocPerm', 'doctype': u'DocPerm',
'permlevel': 0, 'permlevel': 0,
'write': 1 'write': 1
}, },
# DocPerm # DocPerm
{ {
'doctype': 'DocPerm', 'doctype': u'DocPerm',
'permlevel': 1 'permlevel': 1
}, },
# DocField # DocField
{ {
'colour': 'White:FFF', 'colour': u'White:FFF',
'doctype': 'DocField', 'doctype': u'DocField',
'fieldname': 'item', 'fieldname': u'item',
'fieldtype': 'Link', 'fieldtype': u'Link',
'label': 'Item', 'label': u'Item',
'options': 'Item', 'options': u'Item',
'permlevel': 0, 'permlevel': 0,
'reqd': 1 'reqd': 1
}, },
# DocField # DocField
{ {
'doctype': 'DocField', 'doctype': u'DocField',
'fieldname': 'title', 'fieldname': u'title',
'fieldtype': 'Link', 'fieldtype': u'Data',
'label': 'Title', 'label': u'Title',
'permlevel': 0 'permlevel': 0
}, },
# DocField # DocField
{ {
'doctype': 'DocField', 'doctype': u'DocField',
'fieldname': 'published', 'fieldname': u'published',
'fieldtype': 'Check', 'fieldtype': u'Check',
'label': 'Published', 'label': u'Published',
'permlevel': 0 'permlevel': 0
}, },
# DocField # DocField
{ {
'colour': 'White:FFF', 'colour': u'White:FFF',
'description': 'Select Price List for the web. Leave blank to hide price.', 'description': u'Select Price List for the web. Leave blank to hide price.',
'doctype': 'DocField', 'doctype': u'DocField',
'fieldname': 'price_list', 'fieldname': u'price_list',
'fieldtype': 'Link', 'fieldtype': u'Link',
'label': 'Price List', 'label': u'Price List',
'options': 'Price List', 'options': u'Price List',
'permlevel': 0 'permlevel': 0
}, },
# DocField # DocField
{ {
'colour': 'White:FFF', 'colour': u'White:FFF',
'description': 'Select shipping warehouse to show "In Stock" or "Out of Stock". To hide, leave blank', 'description': u'Select shipping warehouse to show "In Stock" or "Out of Stock". To hide, leave blank',
'doctype': 'DocField', 'doctype': u'DocField',
'fieldname': 'warehouse', 'fieldname': u'warehouse',
'fieldtype': 'Link', 'fieldtype': u'Link',
'label': 'Warehouse', 'label': u'Warehouse',
'options': 'Warehouse', 'options': u'Warehouse',
'permlevel': 0 'permlevel': 0
}, },
# DocField # DocField
{ {
'doctype': 'DocField', 'doctype': u'DocField',
'fieldtype': 'Column Break', 'fieldtype': u'Column Break',
'permlevel': 0 'permlevel': 0
}, },
# DocField # DocField
{ {
'colour': 'White:FFF', 'colour': u'White:FFF',
'description': 'Image for listing (Width: 100px) (Attach First)', 'description': u'Image for listing (Width: 100px) (Attach First)',
'doctype': 'DocField', 'doctype': u'DocField',
'fieldname': 'thumbnail_image', 'fieldname': u'thumbnail_image',
'fieldtype': 'Select', 'fieldtype': u'Select',
'label': 'Thumbnail Image', 'label': u'Thumbnail Image',
'options': 'attach_files:', 'options': u'attach_files:',
'permlevel': 0 'permlevel': 0
}, },
# DocField # DocField
{ {
'colour': 'White:FFF', 'colour': u'White:FFF',
'description': 'Image for listing (Width: 300px) (Attach First)', 'description': u'Image for listing (Width: 300px) (Attach First)',
'doctype': 'DocField', 'doctype': u'DocField',
'fieldname': 'full_image', 'fieldname': u'full_image',
'fieldtype': 'Select', 'fieldtype': u'Select',
'label': 'Full Image', 'label': u'Full Image',
'options': 'attach_files:', 'options': u'attach_files:',
'permlevel': 0 'permlevel': 0
}, },
# DocField # DocField
{ {
'colour': 'White:FFF', 'colour': u'White:FFF',
'doctype': 'DocField', 'doctype': u'DocField',
'fieldname': 'short_description', 'fieldname': u'short_description',
'fieldtype': 'Text', 'fieldtype': u'Text',
'label': 'Short Description', 'label': u'Short Description',
'permlevel': 0, 'permlevel': 0,
'reqd': 1 'reqd': 1
}, },
# DocField # DocField
{ {
'doctype': 'DocField', 'doctype': u'DocField',
'fieldtype': 'Section Break', 'fieldtype': u'Section Break',
'permlevel': 0 'permlevel': 0
}, },
# DocField # DocField
{ {
'colour': 'White:FFF', 'colour': u'White:FFF',
'description': 'Full description (formatted as markdown)', 'description': u'Full description (formatted as markdown)',
'doctype': 'DocField', 'doctype': u'DocField',
'fieldname': 'long_description', 'fieldname': u'long_description',
'fieldtype': 'Code', 'fieldtype': u'Code',
'label': 'Long Description', 'label': u'Long Description',
'permlevel': 0, 'permlevel': 0,
'reqd': 0 'reqd': 0
}, },
# DocField # DocField
{ {
'doctype': 'DocField', 'doctype': u'DocField',
'fieldtype': 'Section Break', 'fieldtype': u'Section Break',
'permlevel': 0 'permlevel': 0
}, },
# DocField # DocField
{ {
'doctype': 'DocField', 'doctype': u'DocField',
'fieldname': 'page_name', 'fieldname': u'page_name',
'fieldtype': 'Data', 'fieldtype': u'Data',
'label': 'Page Name', 'label': u'Page Name',
'permlevel': 1 'permlevel': 1
}, },
# DocField # DocField
{ {
'colour': 'White:FFF', 'colour': u'White:FFF',
'doctype': 'DocField', 'doctype': u'DocField',
'fieldname': 'price', 'fieldname': u'price',
'fieldtype': 'Currency', 'fieldtype': u'Currency',
'hidden': 0, 'hidden': 0,
'label': 'Price', 'label': u'Price',
'permlevel': 1 'permlevel': 1
}, },
# DocField # DocField
{ {
'colour': 'White:FFF', 'colour': u'White:FFF',
'doctype': 'DocField', 'doctype': u'DocField',
'fieldname': 'sales', 'fieldname': u'sales',
'fieldtype': 'Currency', 'fieldtype': u'Currency',
'label': 'Sales', 'label': u'Sales',
'permlevel': 1 'permlevel': 1
}, },
# DocField # DocField
{ {
'doctype': 'DocField', 'doctype': u'DocField',
'fieldname': 'stock', 'fieldname': u'stock',
'fieldtype': 'Currency', 'fieldtype': u'Currency',
'label': 'Stock', 'label': u'Stock',
'permlevel': 1 'permlevel': 1
}, },
# DocField # DocField
{ {
'doctype': 'DocField', 'doctype': u'DocField',
'fieldname': 'currency', 'fieldname': u'currency',
'fieldtype': 'Link', 'fieldtype': u'Link',
'label': 'Currency', 'label': u'Currency',
'options': 'Currency', 'options': u'Currency',
'permlevel': 1 'permlevel': 1
}, },
# DocField # DocField
{ {
'doctype': 'DocField', 'doctype': u'DocField',
'fieldname': 'file_list', 'fieldname': u'file_list',
'fieldtype': 'Text', 'fieldtype': u'Text',
'hidden': 1, 'hidden': 1,
'label': 'File List', 'label': u'File List',
'no_copy': 1, 'no_copy': 1,
'permlevel': 0, 'permlevel': 0,
'print_hide': 1 'print_hide': 1

View File

@ -5,45 +5,45 @@
{ {
'creation': '2012-02-01 16:16:47', 'creation': '2012-02-01 16:16:47',
'docstatus': 0, 'docstatus': 0,
'modified': '2012-02-01 16:16:48', 'modified': '2012-02-06 12:24:29',
'modified_by': 'Administrator', 'modified_by': u'Administrator',
'owner': 'Administrator' 'owner': u'Administrator'
}, },
# These values are common for all DocType # These values are common for all DocType
{ {
'colour': 'White:FFF', 'colour': u'White:FFF',
'doctype': 'DocType', 'doctype': 'DocType',
'istable': 1, 'istable': 1,
'module': 'Website', 'module': u'Website',
'name': '__common__', 'name': '__common__',
'section_style': 'Simple', 'section_style': u'Simple',
'show_in_menu': 0, 'show_in_menu': 0,
'version': 1 'version': 3
}, },
# These values are common for all DocField # These values are common for all DocField
{ {
'doctype': 'DocField', 'doctype': u'DocField',
'fieldname': 'page', 'fieldname': u'page',
'fieldtype': 'Link', 'fieldtype': u'Link',
'label': 'Page', 'label': u'Page',
'name': '__common__', 'name': '__common__',
'options': 'Page', 'options': u'Page',
'parent': 'Related Page', 'parent': u'Related Page',
'parentfield': 'fields', 'parentfield': u'fields',
'parenttype': 'DocType', 'parenttype': u'DocType',
'permlevel': 0 'permlevel': 0
}, },
# DocType, Related Page # DocType, Related Page
{ {
'doctype': 'DocType', 'doctype': 'DocType',
'name': 'Related Page' 'name': u'Related Page'
}, },
# DocField # DocField
{ {
'doctype': 'DocField' 'doctype': u'DocField'
} }
] ]

View File

@ -5,70 +5,69 @@
{ {
'creation': '2012-01-24 10:24:19', 'creation': '2012-01-24 10:24:19',
'docstatus': 0, 'docstatus': 0,
'modified': '2012-01-30 14:14:48', 'modified': '2012-02-07 10:35:19',
'modified_by': 'Administrator', 'modified_by': u'Administrator',
'owner': 'Administrator' 'owner': u'Administrator'
}, },
# These values are common for all DocType # These values are common for all DocType
{ {
'colour': 'White:FFF', 'colour': u'White:FFF',
'doctype': 'DocType', 'doctype': 'DocType',
'istable': 1, 'istable': 1,
'module': 'Website', 'module': u'Website',
'name': '__common__', 'name': '__common__',
'section_style': 'Simple', 'section_style': u'Simple',
'show_in_menu': 0, 'show_in_menu': 0,
'version': 2 'version': 4
}, },
# These values are common for all DocField # These values are common for all DocField
{ {
'doctype': 'DocField', 'doctype': u'DocField',
'name': '__common__', 'name': '__common__',
'parent': 'Top Bar Item', 'parent': u'Top Bar Item',
'parentfield': 'fields', 'parentfield': u'fields',
'parenttype': 'DocType', 'parenttype': u'DocType',
'permlevel': 0 'permlevel': 0
}, },
# DocType, Top Bar Item # DocType, Top Bar Item
{ {
'doctype': 'DocType', 'doctype': 'DocType',
'name': 'Top Bar Item' 'name': u'Top Bar Item'
}, },
# DocField # DocField
{ {
'doctype': 'DocField', 'doctype': u'DocField',
'fieldname': 'label', 'fieldname': u'label',
'fieldtype': 'Data', 'fieldtype': u'Data',
'label': 'Label' 'label': u'Label'
}, },
# DocField # DocField
{ {
'doctype': 'DocField', 'doctype': u'DocField',
'fieldname': 'std_page', 'fieldname': u'custom_page',
'fieldtype': 'Select', 'fieldtype': u'Link',
'label': 'Std Page', 'label': u'Page',
'options': 'Home\nAbout\nContact\nProducts\nBlog\nCustom' 'options': u'Page'
}, },
# DocField # DocField
{ {
'doctype': 'DocField', 'doctype': u'DocField',
'fieldname': 'custom_page', 'fieldname': u'url',
'fieldtype': 'Link', 'fieldtype': u'Data',
'label': 'Custom Page', 'label': u'URL'
'options': 'Web Page'
}, },
# DocField # DocField
{ {
'doctype': 'DocField', 'doctype': u'DocField',
'fieldname': 'parent_label', 'fieldname': u'parent_label',
'fieldtype': 'Select', 'fieldtype': u'Select',
'label': 'Parent Label' 'label': u'Parent Label'
} }
] ]

View File

@ -37,10 +37,13 @@ class DocType:
"title": webnotes.conn.get_value("Page", self.doc.next_page, "title")} "title": webnotes.conn.get_value("Page", self.doc.next_page, "title")}
self.doc.see_also = '' self.doc.see_also = ''
for l in webnotes.conn.sql("""select distinct t1.page, t2.title from for d in self.doclist:
`tabRelated Page` t1, tabPage t2 where if d.doctype=='Related Page':
t1.page = t2.name order by t2.title""", as_dict=1): tmp = {"page":d.page, "title":webnotes.conn.get_value('Page', d.page, 'title')}
self.doc.see_also += """<p><a href="#!%(page)s">%(title)s</a></p>""" % l self.doc.see_also += """<li><a href="#!%(page)s">%(title)s</a></li>""" % tmp
if self.doc.see_also:
self.doc.see_also = '<ul>%s</ul>' % self.doc.see_also
def cleanup_temp(self): def cleanup_temp(self):
"""cleanup temp fields""" """cleanup temp fields"""

View File

@ -37,7 +37,7 @@ erpnext.topbar.TopBar = Class.extend({
for(var i=0;i<items.length;i++) { for(var i=0;i<items.length;i++) {
var item = items[i]; var item = items[i];
if(!item.parent_label && item.parentfield=='top_bar_items') { if(!item.parent_label && item.parentfield=='top_bar_items') {
item.route = item.std_page ? item.std_page.toLowerCase() : item.custom_page; item.route = item.url || item.custom_page;
$('header .nav:first').append(repl('<li><a href="#!%(route)s" \ $('header .nav:first').append(repl('<li><a href="#!%(route)s" \
data-label="%(label)s">%(label)s</a></li>', item)) data-label="%(label)s">%(label)s</a></li>', item))
} }
@ -64,7 +64,7 @@ erpnext.Footer = Class.extend({
for(var i=0;i<items.length;i++) { for(var i=0;i<items.length;i++) {
var item = items[i]; var item = items[i];
if(!item.parent_label && item.parentfield=='footer_items') { if(!item.parent_label && item.parentfield=='footer_items') {
item.route = item.std_page ? item.std_page.toLowerCase() : item.custom_page; item.route = item.url || item.custom_page;
$('.web-footer-menu ul').append(repl('<li><a href="#!%(route)s" \ $('.web-footer-menu ul').append(repl('<li><a href="#!%(route)s" \
data-label="%(label)s">%(label)s</a></li>', item)) data-label="%(label)s">%(label)s</a></li>', item))
} }
@ -72,4 +72,4 @@ erpnext.Footer = Class.extend({
} }
}); });
erpnext.footer = new erpnext.Footer(); erpnext.footer = new erpnext.Footer();

View File

@ -25,7 +25,8 @@ def markdown(doc, fields):
def page_name(title): def page_name(title):
"""make page name from title, and check that there is no duplicate""" """make page name from title, and check that there is no duplicate"""
import re import re
name = re.sub('[~!@#$%^&*()<>,."\']', '', title.lower()) name = title.lower()
name = re.sub('[~!@#$%^&*()<>,."\']', '', name)
return '-'.join(name.split()[:4]) return '-'.join(name.split()[:4])
def add_page(title): def add_page(title):
@ -50,4 +51,4 @@ def add_guest_access_to_page(page):
d = Document('Page Role') d = Document('Page Role')
d.parent = page d.parent = page
d.role = 'Guest' d.role = 'Guest'
d.save() d.save()

View File

@ -19,7 +19,13 @@ def init():
webnotes.form_dict[key] = webnotes.form.getvalue(key) webnotes.form_dict[key] = webnotes.form.getvalue(key)
# init request # 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(): def respond():
import webnotes import webnotes
@ -34,4 +40,4 @@ def respond():
if __name__=="__main__": if __name__=="__main__":
init() init()
respond() respond()

View File

@ -1 +1 @@
353 359

134
wnf.py Executable file
View File

@ -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('--reload_doc', nargs=3, metavar = "module doctype docname",
help="reload doc")
return parser.parse_args()
def run():
sys.path.append('lib')
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
# connect
if options.db_name is not None:
webnotes.connect(options.db_name)
# 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 = []
# 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":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
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()