@@ -1,19 +0,0 @@ | |||
{ | |||
"default.css": [ | |||
"body.css", | |||
"menus.css", | |||
"messages.css", | |||
"forms.css", | |||
"grid.css", | |||
"listing.css", | |||
"report.css", | |||
"calendar.css", | |||
"autosuggest.css", | |||
"dialog.css", | |||
"wntoolbar.css", | |||
"tabs.css", | |||
"bw-icons.css", | |||
"sidebar.css", | |||
"bootstrap-buttons.css" | |||
] | |||
} |
@@ -1 +0,0 @@ | |||
/* User CSS */ |
@@ -1,4 +1,13 @@ | |||
// find files changed since last version | |||
if(!console) { | |||
var console = { | |||
log: function(txt) { | |||
errprint(txt); | |||
} | |||
} | |||
} | |||
wn.versions.check(); | |||
/* overload links for ajax pages */ | |||
@@ -90,4 +90,5 @@ throw new SyntaxError('JSON.parse');};}}()); | |||
/* | |||
* lib/js/core.js | |||
*/ | |||
if(!console){var console={log:function(txt){errprint(txt);}}} | |||
wn.versions.check();$(document).bind('ready',function(){var base=window.location.href.split('#')[0];$.each($('a[softlink!="false"]'),function(i,v){if(v.href.substr(0,base.length)==base){var path=(v.href.substr(base.length));if(path.substr(0,1)!='#'){v.href=base+'#'+path;}}});if(!wn.settings.no_history&&window.location.hash){wn.page.set(window.location.hash.substr(1));}}); |
@@ -75,12 +75,4 @@ var pscript = {}; | |||
var validated = true; | |||
var validation_message = ''; | |||
var tinymce_loaded = null; | |||
var cur_autosug = null; | |||
if(!console) { | |||
var console = { | |||
log: function(txt) { | |||
errprint(txt); | |||
} | |||
} | |||
} | |||
var cur_autosug = null; |
@@ -270,6 +270,10 @@ function loadscript(src, call_back) { | |||
var doc_browser_page; | |||
function loaddocbrowser(dt, label, fields) { | |||
//wn.require('lib/js/wn/pages/doclistview.js'); | |||
//wn.pages.doclistview.show(dt); | |||
//return; | |||
wn.require('lib/js/legacy/webpage/docbrowser.js'); | |||
dt = get_label_doctype(dt); | |||
if(!doc_browser_page) | |||
@@ -16,7 +16,7 @@ var def_ph_style = { | |||
wrapper: {marginBottom:'16px', backgroundColor:'#EEE'} | |||
,main_heading: { } | |||
,sub_heading: { marginBottom:'8px', color:'#555', display:'none' } | |||
,separator: { borderTop:'3px solid #444' } // show this when there is no toolbar | |||
,separator: { borderTop:'3px solid #777' } // show this when there is no toolbar | |||
,toolbar_area: { padding:'3px 0px', display:'none',borderBottom:'1px solid #AAA'} | |||
} | |||
@@ -36,7 +36,7 @@ function PageHeader(parent, main_text, sub_text) { | |||
// close btn | |||
$y($td(this.t1, 0, 1),{textAlign:'right', padding:'3px'}); | |||
this.close_btn = $a($td(this.t1, 0, 1), 'span', 'close', {}, '×'); | |||
this.close_btn = $a($td(this.t1, 0, 1), 'span', 'close', {}, '×'); | |||
this.close_btn.onclick = function() { nav_obj.show_last_open(); }; | |||
if(main_text) this.main_head.innerHTML = main_text; | |||
@@ -99,6 +99,11 @@ _f.FormGrid.prototype.refresh = function() { | |||
data[data.length] = docset[i].name; | |||
} | |||
this.set_data(data); | |||
// if form open, refresh form | |||
if(_f.frm_dialog && _f.frm_dialog.dialog.display && _f.frm_dialog.cur_frm) { | |||
_f.frm_dialog.cur_frm.refresh(); | |||
} | |||
} | |||
_f.FormGrid.prototype.set_unsaved = function() { | |||
@@ -443,5 +443,4 @@ _f.Grid.prototype.refresh_row = function(ridx, docname) { | |||
for(var cidx=0; cidx<row.cells.length; cidx++) { | |||
this.set_cell_value(row.cells[cidx]); | |||
} | |||
} |
@@ -0,0 +1,301 @@ | |||
wn.provide('wn.body'); | |||
wn.provide('wn.list_views'); | |||
wn.body.ListPage = function(doctype) { | |||
wn.require('lib/css/body/list.css'); | |||
wn.require('lib/js/wn/body/tags.js'); | |||
wn.require('lib/js/wn/utils/datetime.js'); | |||
var me = this; | |||
$.extend(this, { | |||
make: function() { | |||
// page | |||
me.label = 'List/' + doctype; | |||
wn.require('lib/js/wn/body/page.js'); | |||
me.page = new wn.body.Page(me.label, 1); | |||
me.page.update_history = function() { | |||
window.location.hash = 'List/' + encodeURIComponent(doctype); | |||
} | |||
var $w = $(me.page.wrapper); | |||
$w.append("<div></div><div></div>") | |||
me.page_head = | |||
new wn.body.PageHead($w.find('> div:eq(0)').get(0), | |||
wn.model.label_of(doctype) + ' List'); | |||
me.list = | |||
new wn.body.List(me, $w.find('> div:eq(1)').get(0), doctype); | |||
me.make_sidebar(); | |||
}, | |||
make_sidebar: function() { | |||
me.page.sidebar.style.marginTop = '13px'; | |||
if(wn.profile.can_read.indexOf(doctype)!=-1) { | |||
new wn.ui.Button({ | |||
parent: me.page.sidebar, | |||
css_class: 'blue-pill', | |||
label: '+ New ' + wn.model.label_of(doctype), | |||
style: {fontSize:'11px', margin: '13px', marginTop:'0px'}, | |||
onclick: function() { | |||
wn.open('Form', doctype); | |||
} | |||
}) | |||
} | |||
// sidebar | |||
wn.require('lib/js/wn/body/page_sidebar.js') | |||
me.sidebar = new wn.body.page_sidebar.Sidebar(me.page.sidebar, { | |||
sections: [ | |||
{ | |||
title: 'Top Tags', | |||
render: function(body) { | |||
new wn.body.tags.TagCloud(body, doctype, function(tag) { | |||
me.set_tag_filter(tag) }); | |||
} | |||
} | |||
] | |||
}); | |||
}, | |||
// add a filter when a tag is clicked | |||
set_tag_filter: function(tag) { | |||
me.list.flist.set_filter_display(); | |||
var l = tag.label; | |||
if(tag.fieldname=='_user_tags') l = '%' + tag.label | |||
me.list.flist.add_filter(tag.fieldname, 'like', l); | |||
me.list.refresh(); | |||
} | |||
}); | |||
me.make(); | |||
} | |||
// args (list name) | |||
wn.body.List = function(list_page, parent, doctype) { | |||
var me = this; | |||
me.start = 0; | |||
me.page_len = 20; | |||
$.extend(this, { | |||
setup: function() { | |||
wn.require('lib/js/wn/model/list.js'); | |||
// doctype for rendering | |||
var dt = wn.model.get_doctype(doctype); | |||
me.preloaded = wn.list.has(doctype); | |||
// get the list | |||
var res = wn.list.get(doctype, null, me.start, me.page_len, 1); | |||
me.list = res.message || []; | |||
if(res.list_view_js) { | |||
eval('me.list_view_obj=' + res.list_view_js); | |||
} | |||
}, | |||
make: function() { | |||
// body | |||
me.make_body(); | |||
me.make_filters(); | |||
me.setup(); | |||
me.render(me.list); | |||
if(me.preloaded) | |||
me.reload(); | |||
}, | |||
make_body: function() { | |||
// new / refresh area | |||
me.toolbar_area = wn.dom.add(parent, 'div'); | |||
// list area | |||
me.list_area = wn.dom.add(parent, 'div'); | |||
// more btn | |||
me.more_btn_area = wn.dom.add(parent, 'div', 'more_btn_area'); | |||
me.nothing_more = wn.dom.add(parent, 'div', 'nothing_more round'); | |||
}, | |||
make_filters: function() { | |||
me.filter_area = wn.dom.add(me.toolbar_area, 'div'); | |||
wn.require('lib/js/wn/body/filter.js'); | |||
me.flist = new wn.body.FilterList(me, me.filter_area, doctype); | |||
}, | |||
reload: function() { | |||
list_page.page_head.set_status('Checking for updates...'); | |||
wn.list.diff(doctype, (me.list.length ? me.list[0].modified : null), | |||
me.render_reload); | |||
}, | |||
render_reload: function(res) { | |||
me.list = res.new_list; | |||
me.list_area.innerHTML = '' | |||
if(res.list_view_js) { | |||
eval('me.list_view_obj=' + res.list_view_js); | |||
} | |||
me.render(me.list); | |||
// update heading | |||
list_page.page_head.set_status(''); | |||
}, | |||
refresh: function() { | |||
// get the list | |||
me.start = 0; | |||
me.list = wn.list.get(doctype, | |||
me.flist.get_filters(), | |||
me.start, me.page_len); | |||
me.render(me.list); | |||
}, | |||
extend: function() { | |||
me.start += me.page_len | |||
var add = wn.list.get(doctype, me.flist.get_filters(), me.start, me.page_len); | |||
me.list = me.list.concat(add); | |||
me.render(add); | |||
}, | |||
// render the list | |||
render: function(list) { | |||
if(me.start==0) | |||
me.list_area.innerHTML = ''; | |||
$.each(list, function(i, d) { | |||
d.doctype = doctype; | |||
if(!d.__deleted) | |||
new wn.body.ListItem(me, me.list_area, d); | |||
}); | |||
// show filters, they may be hidden later | |||
wn.dom.show(me.filter_area); | |||
if(list.length >= me.page_len) { | |||
me.show_more_btn(); | |||
} else { | |||
me.hide_more_btn(); | |||
} | |||
}, | |||
show_more_btn: function() { | |||
if(!me.more_btn) { | |||
me.more_btn = new wn.ui.Button({ | |||
parent: me.more_btn_area, | |||
label: 'Show more results', | |||
onclick: function() { | |||
me.extend(); | |||
}, | |||
style: { | |||
width: '200px', | |||
fontSize:'14px' | |||
} | |||
}) | |||
} | |||
wn.dom.show(me.more_btn_area); | |||
wn.dom.hide(me.nothing_more); | |||
}, | |||
hide_more_btn: function() { | |||
wn.dom.hide(me.more_btn_area); | |||
wn.dom.show(me.nothing_more); | |||
if(me.list.length) { | |||
me.nothing_more.innerHTML = 'Thats it'; | |||
} else { | |||
me.nothing_more.innerHTML = 'No matches :( Try again.'; | |||
if(!me.flist.get_filters().length) { | |||
wn.dom.hide(me.filter_area); | |||
// new link | |||
if(wn.profile.can_create.indexOf(doctype)!=-1) { | |||
$(me.nothing_more).html('<div class="new_link">\ | |||
<span class="link_type" onclick="wn.open(\'Form\', \'%(doctype)s\')">\ | |||
Click here to create your first %(doctype_label)s\ | |||
</span>\ | |||
</div>'.repl({ | |||
doctype:doctype, | |||
doctype_label: wn.model.label_of(doctype) | |||
})); | |||
} | |||
} | |||
} | |||
} | |||
}); | |||
me.make(); | |||
} | |||
// title (link), owner, last update, delete / archive, tags | |||
wn.body.ListItem = function(list, parent, args) { | |||
var me = this; | |||
$.extend(this, { | |||
make: function() { | |||
me.wrapper = wn.dom.add(parent, 'div', 'list_item'); | |||
me.wrapper.innerHTML = '<div>\ | |||
<span class="pre_subject"></span>\ | |||
<span class="link_type subject">%(label)s</span>\ | |||
<span class="post_subject"></span>\ | |||
<span class="wn-icon ic-round_minus delete_btn"></span>\ | |||
<span class="user_info">%(owner)s %(timestamp)s</span>\ | |||
</div>\ | |||
<div class="list_view"></div>'.repl({ | |||
label: args.label || args.name, | |||
owner: args.owner, | |||
timestamp: wn.utils.datetime.when(args.modified) | |||
}); | |||
$w = $(me.wrapper); | |||
// hide delete if no perms | |||
if(!(wn.model.get_doctype(args.doctype).get_perm()[0] || {}).cancel) { | |||
$w.find('.delete_btn').css('display','none'); | |||
} else { | |||
$w.find('.delete_btn').click(function() { | |||
wn.require('lib/js/wn/ui/confirm.js'); | |||
if(wn.ui.confirm('You sure you want to delete?', function() { | |||
wn.http.post({ | |||
args: { | |||
cmd:'webnotes.widgets.menus.delete_doc', | |||
doctype:args.doctype, | |||
name:args.name | |||
} | |||
}); | |||
$w.slideUp(); | |||
})); | |||
}) | |||
} | |||
// open | |||
$w.find('.subject') | |||
.bind('click', function() { | |||
wn.open('Form', args.doctype, args.name); | |||
}); | |||
// render body | |||
me.render_body($w); | |||
}, | |||
render_body: function($w) { | |||
var lv = list.list_view_obj | |||
if(lv) { | |||
if(lv.subject) { | |||
$w.find('.subject').html(lv.subject.repl(args)); | |||
} | |||
if(lv.render) { | |||
lv.render($w, args); | |||
} | |||
} | |||
}, | |||
render_tag: function() { | |||
} | |||
}); | |||
me.make(); | |||
} |
@@ -1,301 +1,33 @@ | |||
wn.provide('wn.body'); | |||
wn.provide('wn.list_views'); | |||
wn.body.ListPage = function(doctype) { | |||
wn.require('lib/css/body/list.css'); | |||
wn.require('lib/js/wn/body/tags.js'); | |||
wn.require('lib/js/wn/utils/datetime.js'); | |||
var me = this; | |||
$.extend(this, { | |||
make: function() { | |||
// page | |||
me.label = 'List/' + doctype; | |||
wn.require('lib/js/wn/body/page.js'); | |||
me.page = new wn.body.Page(me.label, 1); | |||
me.page.update_history = function() { | |||
window.location.hash = 'List/' + encodeURIComponent(doctype); | |||
} | |||
var $w = $(me.page.wrapper); | |||
$w.append("<div></div><div></div>") | |||
me.page_head = | |||
new wn.body.PageHead($w.find('> div:eq(0)').get(0), | |||
wn.model.label_of(doctype) + ' List'); | |||
me.list = | |||
new wn.body.List(me, $w.find('> div:eq(1)').get(0), doctype); | |||
me.make_sidebar(); | |||
}, | |||
make_sidebar: function() { | |||
me.page.sidebar.style.marginTop = '13px'; | |||
if(wn.profile.can_read.indexOf(doctype)!=-1) { | |||
new wn.ui.Button({ | |||
parent: me.page.sidebar, | |||
css_class: 'blue-pill', | |||
label: '+ New ' + wn.model.label_of(doctype), | |||
style: {fontSize:'11px', margin: '13px', marginTop:'0px'}, | |||
onclick: function() { | |||
wn.open('Form', doctype); | |||
} | |||
}) | |||
} | |||
// sidebar | |||
wn.require('lib/js/wn/body/page_sidebar.js') | |||
me.sidebar = new wn.body.page_sidebar.Sidebar(me.page.sidebar, { | |||
sections: [ | |||
{ | |||
title: 'Top Tags', | |||
render: function(body) { | |||
new wn.body.tags.TagCloud(body, doctype, function(tag) { | |||
me.set_tag_filter(tag) }); | |||
} | |||
} | |||
] | |||
}); | |||
}, | |||
// add a filter when a tag is clicked | |||
set_tag_filter: function(tag) { | |||
me.list.flist.set_filter_display(); | |||
var l = tag.label; | |||
if(tag.fieldname=='_user_tags') l = '%' + tag.label | |||
me.list.flist.add_filter(tag.fieldname, 'like', l); | |||
me.list.refresh(); | |||
} | |||
}); | |||
me.make(); | |||
} | |||
// args (list name) | |||
wn.body.List = function(list_page, parent, doctype) { | |||
var me = this; | |||
me.start = 0; | |||
me.page_len = 20; | |||
$.extend(this, { | |||
setup: function() { | |||
wn.require('lib/js/wn/model/list.js'); | |||
// doctype for rendering | |||
var dt = wn.model.get_doctype(doctype); | |||
me.preloaded = wn.list.has(doctype); | |||
// get the list | |||
var res = wn.list.get(doctype, null, me.start, me.page_len, 1); | |||
me.list = res.message || []; | |||
if(res.list_view_js) { | |||
eval('me.list_view_obj=' + res.list_view_js); | |||
} | |||
}, | |||
make: function() { | |||
// body | |||
me.make_body(); | |||
me.make_filters(); | |||
me.setup(); | |||
me.render(me.list); | |||
if(me.preloaded) | |||
me.reload(); | |||
}, | |||
make_body: function() { | |||
// new / refresh area | |||
me.toolbar_area = wn.dom.add(parent, 'div'); | |||
// list area | |||
me.list_area = wn.dom.add(parent, 'div'); | |||
// more btn | |||
me.more_btn_area = wn.dom.add(parent, 'div', 'more_btn_area'); | |||
me.nothing_more = wn.dom.add(parent, 'div', 'nothing_more round'); | |||
}, | |||
make_filters: function() { | |||
me.filter_area = wn.dom.add(me.toolbar_area, 'div'); | |||
wn.require('lib/js/wn/body/filter.js'); | |||
me.flist = new wn.body.FilterList(me, me.filter_area, doctype); | |||
}, | |||
reload: function() { | |||
list_page.page_head.set_status('Checking for updates...'); | |||
wn.list.diff(doctype, (me.list.length ? me.list[0].modified : null), | |||
me.render_reload); | |||
}, | |||
render_reload: function(res) { | |||
me.list = res.new_list; | |||
me.list_area.innerHTML = '' | |||
if(res.list_view_js) { | |||
eval('me.list_view_obj=' + res.list_view_js); | |||
} | |||
me.render(me.list); | |||
// update heading | |||
list_page.page_head.set_status(''); | |||
}, | |||
refresh: function() { | |||
// get the list | |||
me.start = 0; | |||
me.list = wn.list.get(doctype, | |||
me.flist.get_filters(), | |||
me.start, me.page_len); | |||
me.render(me.list); | |||
}, | |||
extend: function() { | |||
me.start += me.page_len | |||
var add = wn.list.get(doctype, me.flist.get_filters(), me.start, me.page_len); | |||
me.list = me.list.concat(add); | |||
me.render(add); | |||
}, | |||
// render the list | |||
render: function(list) { | |||
if(me.start==0) | |||
me.list_area.innerHTML = ''; | |||
$.each(list, function(i, d) { | |||
d.doctype = doctype; | |||
if(!d.__deleted) | |||
new wn.body.ListItem(me, me.list_area, d); | |||
}); | |||
// show filters, they may be hidden later | |||
wn.dom.show(me.filter_area); | |||
if(list.length >= me.page_len) { | |||
me.show_more_btn(); | |||
} else { | |||
me.hide_more_btn(); | |||
} | |||
}, | |||
show_more_btn: function() { | |||
if(!me.more_btn) { | |||
me.more_btn = new wn.ui.Button({ | |||
parent: me.more_btn_area, | |||
label: 'Show more results', | |||
onclick: function() { | |||
me.extend(); | |||
}, | |||
style: { | |||
width: '200px', | |||
fontSize:'14px' | |||
} | |||
}) | |||
} | |||
wn.dom.show(me.more_btn_area); | |||
wn.dom.hide(me.nothing_more); | |||
}, | |||
hide_more_btn: function() { | |||
wn.dom.hide(me.more_btn_area); | |||
wn.dom.show(me.nothing_more); | |||
if(me.list.length) { | |||
me.nothing_more.innerHTML = 'Thats it'; | |||
} else { | |||
me.nothing_more.innerHTML = 'No matches :( Try again.'; | |||
if(!me.flist.get_filters().length) { | |||
wn.dom.hide(me.filter_area); | |||
// new link | |||
if(wn.profile.can_create.indexOf(doctype)!=-1) { | |||
$(me.nothing_more).html('<div class="new_link">\ | |||
<span class="link_type" onclick="wn.open(\'Form\', \'%(doctype)s\')">\ | |||
Click here to create your first %(doctype_label)s\ | |||
</span>\ | |||
</div>'.repl({ | |||
doctype:doctype, | |||
doctype_label: wn.model.label_of(doctype) | |||
})); | |||
} | |||
} | |||
} | |||
} | |||
}); | |||
me.make(); | |||
wn.provide('wn.pages.doclistview'); | |||
wn.pages.doclistview.pages = {}; | |||
wn.pages.doclistview.show = function(doctype) { | |||
var pagename = doctype + ' List'; | |||
if(!wn.pages.doclistview.pages[pagename]) { | |||
var page = page_body.add_page(pagename); | |||
page.doclistview = new wn.pages.DocListView(doctype, page); | |||
wn.pages.doclistview.pages[pagename] = page; | |||
} | |||
page_body.change_to(pagename); | |||
} | |||
// title (link), owner, last update, delete / archive, tags | |||
wn.body.ListItem = function(list, parent, args) { | |||
var me = this; | |||
$.extend(this, { | |||
make: function() { | |||
me.wrapper = wn.dom.add(parent, 'div', 'list_item'); | |||
me.wrapper.innerHTML = '<div>\ | |||
<span class="pre_subject"></span>\ | |||
<span class="link_type subject">%(label)s</span>\ | |||
<span class="post_subject"></span>\ | |||
<span class="wn-icon ic-round_minus delete_btn"></span>\ | |||
<span class="user_info">%(owner)s %(timestamp)s</span>\ | |||
</div>\ | |||
<div class="list_view"></div>'.repl({ | |||
label: args.label || args.name, | |||
owner: args.owner, | |||
timestamp: wn.utils.datetime.when(args.modified) | |||
}); | |||
$w = $(me.wrapper); | |||
// hide delete if no perms | |||
if(!(wn.model.get_doctype(args.doctype).get_perm()[0] || {}).cancel) { | |||
$w.find('.delete_btn').css('display','none'); | |||
} else { | |||
$w.find('.delete_btn').click(function() { | |||
wn.require('lib/js/wn/ui/confirm.js'); | |||
if(wn.ui.confirm('You sure you want to delete?', function() { | |||
wn.http.post({ | |||
args: { | |||
cmd:'webnotes.widgets.menus.delete_doc', | |||
doctype:args.doctype, | |||
name:args.name | |||
} | |||
}); | |||
$w.slideUp(); | |||
})); | |||
}) | |||
} | |||
// open | |||
$w.find('.subject') | |||
.bind('click', function() { | |||
wn.open('Form', args.doctype, args.name); | |||
}); | |||
// render body | |||
me.render_body($w); | |||
}, | |||
render_body: function($w) { | |||
var lv = list.list_view_obj | |||
if(lv) { | |||
if(lv.subject) { | |||
$w.find('.subject').html(lv.subject.repl(args)); | |||
} | |||
if(lv.render) { | |||
lv.render($w, args); | |||
} | |||
} | |||
}, | |||
render_tag: function() { | |||
} | |||
}); | |||
me.make(); | |||
} | |||
wn.pages.DocListView = Class.extend({ | |||
init: function(doctype, page) { | |||
this.doctype = doctype; | |||
this.wrapper = page; | |||
this.label = get_doctype_label(doctype); | |||
this.label = (this.label.toLowerCase().substr(-4) == 'list') ? | |||
this.label : (this.label + ' List') | |||
this.make(); | |||
}, | |||
make: function() { | |||
$(this.wrapper).html('<div class="layout_wrapper">\ | |||
<div class="header"></div>\ | |||
<div class="filters">[filters]</div>\ | |||
<div class="body">[body]</div>\ | |||
</div>'); | |||
new PageHeader($(this.wrapper).find('.header').get(0), this.label) | |||
} | |||
}) |
@@ -36,7 +36,13 @@ class ValidationError(Exception): | |||
class AuthenticationError(Exception): | |||
pass | |||
class UnknownDomainError(Exception): | |||
def __init__(self, value): | |||
self.value = value | |||
def __str__(self): | |||
return repr(self.value) | |||
def getTraceback(): | |||
import utils | |||
return utils.getTraceback() | |||
@@ -90,12 +90,12 @@ class CSVImport: | |||
def validate_fields(self, lb_list): | |||
self.msg.append('<p><b>Checking fieldnames for %s</b></p>' % self.dt_list[0]) | |||
if len(self.dt_list) > 1 and self.overwrite: | |||
self.msg.append('<div style="color:RED"> Error: Overwrite is not possible for Document %s </div>' % self.dt_list[0]) | |||
self.validate_success = 0 | |||
return | |||
#if len(self.dt_list) > 1 and self.overwrite: | |||
# self.msg.append('<div style="color:RED"> Error: Overwrite is not possible for Document %s </div>' % self.dt_list[0]) | |||
# self.validate_success = 0 | |||
# return | |||
elif self.overwrite and 'Name' != lb_list[0]: | |||
if self.overwrite and len(self.dt_list) == 1 and 'Name' != lb_list[0]: | |||
self.msg.append('<div style="color:RED"> Error : At Row 4 and Column 1: To Overwrite fieldname should be Name </div>') | |||
self.validate_success = 0 | |||
return | |||
@@ -107,7 +107,7 @@ class CSVImport: | |||
lb_list.pop(lb_list.index(self.dt_list[1])) | |||
dtd = sql("select autoname from `tabDocType` where name = '%s' " % self.dt_list[0])[0][0] | |||
if self.prompt_autoname_flag or self.overwrite: | |||
if (self.prompt_autoname_flag or self.overwrite) and len(self.dt_list) == 1: | |||
self.fields.append('name') | |||
res.append('Name') | |||
lb_list.pop(lb_list.index('Name')) | |||
@@ -243,7 +243,12 @@ class CSVImport: | |||
self.msg.append('<p><b>Checking Data for %s</b></p>' % self.dt_list[0]) | |||
date_list, link_list, select_list, reqd_list = self.get_field_type_list() | |||
# Delete all data of child tables before over-writing | |||
if len(self.dt_list) > 1 and self.overwrite: | |||
webnotes.conn.sql("delete from `tab%s`" % self.dt_list[0]) | |||
self.msg.append('<div style="color: ORANGE">Deleted all data from %s before re-importing</div>' % self.dt_list[0]) | |||
# load data | |||
row = 5 | |||
for d in self.data: | |||
@@ -304,13 +309,12 @@ class CSVImport: | |||
self.msg.append('<div style="color: ORANGE">Row %s => Over-written: %s</div>' % (row, cur_doc.name)) | |||
else: | |||
self.msg.append('<div style="color: ORANGE">Row %s => Ignored: %s</div>' % (row, cur_doc.name)) | |||
else: | |||
if cur_doc.parent and webnotes.conn.exists(cur_doc.parenttype, cur_doc.parent) or not cur_doc.parent: | |||
cur_doc.save(1) | |||
obj = webnotes.model.code.get_obj(cur_doc.parent and cur_doc.parenttype or cur_doc.doctype, cur_doc.parent or cur_doc.name, with_children = 1) | |||
self.msg.append('<div style="color: GREEN">Row %s => Created: %s</div>' % (row, cur_doc.name)) | |||
else: | |||
self.msg.append('<div style="color: RED">Row %s => Invalid %s : %s</div>' % (row, cur_doc.parenttype, cur_doc.parent)) | |||
elif cur_doc.parent and webnotes.conn.exists(cur_doc.parenttype, cur_doc.parent) or not cur_doc.parent: | |||
cur_doc.save(1) | |||
obj = webnotes.model.code.get_obj(cur_doc.parent and cur_doc.parenttype or cur_doc.doctype, cur_doc.parent or cur_doc.name, with_children = 1) | |||
self.msg.append('<div style="color: GREEN">Row %s => Created: %s</div>' % (row, cur_doc.name)) | |||
else: | |||
self.msg.append('<div style="color: RED">Row %s => Invalid %s : %s</div>' % (row, cur_doc.parenttype, cur_doc.parent)) | |||
except Exception: | |||
self.msg.append('<div style="color: RED"> Validation: %s</div>' % str(webnotes.utils.getTraceback())) | |||
try: | |||