[IMP] split import check result in two different templates, wait before everything's ready to setup autocompletes and check required fields & al

bzr revid: xmo@openerp.com-20110923092346-007j09xf5wfzq9zo
This commit is contained in:
Xavier Morel 2011-09-23 11:23:46 +02:00
parent 99cd8a01a3
commit a7a71dea83
3 changed files with 48 additions and 42 deletions

View File

@ -1419,8 +1419,8 @@ class Import(View):
return fields
@openerpweb.httprequest
def detect_data(self, req, model, csvfile, csvsep, csvdel, csvcode, csvskip,
file_has_headers, jsonp):
def detect_data(self, req, model, csvfile, csvsep, csvdel, csvcode,
csvskip, file_has_headers, jsonp):
try:
data = list(csv.reader(
csvfile, quotechar=str(csvdel), delimiter=str(csvsep)))
@ -1436,13 +1436,16 @@ class Import(View):
# of the ascii range (in range [128, 256))
'preview': csvfile.read(200).decode('iso-8859-1')}}))
records = data[:5]
header_fields = [word.decode(csvcode) for word in records[0]]
return '<script>window.top.%s(%s);</script>' % (
jsonp, simplejson.dumps({
'records':records[1:],'header':header_fields}))
try:
return '<script>window.top.%s(%s);</script>' % (
jsonp, simplejson.dumps(
{'records': data[:10]}, encoding=csvcode))
except UnicodeDecodeError:
return '<script>window.top.%s(%s);</script>' % (
jsonp, simplejson.dumps({
'message': u"Failed to decode CSV file using encoding %s, "
u"try switching to a different encoding" % csvcode
}))
@openerpweb.httprequest
def import_data(self, req, model, csvfile, csvsep, csvdel, csvcode, csvskip,

View File

@ -126,13 +126,15 @@ openerp.web.DataImport = openerp.web.Dialog.extend({
on_import_results: function(results) {
this.$element.find('#result, #success').empty();
var result_node = this.$element.find("#result");
var records = {};
if (results['records']) {
records = {'header': results['header'], 'row': results['records']};
result_node.append(QWeb.render('ImportView-result', {'records': records}));
result_node.append(QWeb.render('ImportView.result', {
'headers': results.records[0],
'records': results.records.slice(1)
}));
} else if (results['error']) {
result_node.append(QWeb.render('ImportView-result', {'error': results['error']}));
result_node.append(QWeb.render('ImportView.error', {
'error': results['error']}));
} else if (results['success']) {
self.stop();
if (this.widget_parent.widget_parent.active_view == "list") {
@ -141,15 +143,16 @@ openerp.web.DataImport = openerp.web.Dialog.extend({
}
var self = this;
this.$element.find('.sel_fields').autocomplete({
minLength: 0,
source: this.all_fields,
change: self.on_check_field_values
}).focus(function () {
$(this).autocomplete('search');
this.ready.then(function () {
self.$element.find('.sel_fields').autocomplete({
minLength: 0,
source: self.all_fields,
change: self.on_check_field_values
}).focus(function () {
$(this).autocomplete('search');
});
self.on_check_field_values();
});
this.on_check_field_values();
},
/**
* Looks through all the field selections, and tries to find if two

View File

@ -1433,28 +1433,28 @@
</fieldset>
</form>
</t>
<t t-name="ImportView-result">
<t t-if="error">
<p style="white-space:pre-line;">The import failed due to:<t t-esc="error.message"/></p>
<t t-if="error.preview">
<p>Here is a preview of the file we could not import:</p>
<pre><t t-esc="error.preview"/></pre>
</t>
<table t-name="ImportView.result"
class="oe_import_grid" width="100%" style="margin: 5px 0;">
<tr class="oe_import_grid-header">
<td t-foreach="headers" t-as="header" class="oe_import_grid-cell">
<t t-esc="header"/></td>
</tr>
<tr>
<td t-foreach="headers" t-as="header">
<input class="sel_fields"/>
</td>
</tr>
<tr t-foreach="records" t-as="record" class="oe_import_grid-row">
<td t-foreach="record" t-as="cell" class="oe_import_grid-cell">
<t t-esc="cell"/></td>
</tr>
</table>
<t t-name="ImportView.error">
<p style="white-space:pre-line;">The import failed due to:<t t-esc="error.message"/></p>
<t t-if="error.preview">
<p>Here is a preview of the file we could not import:</p>
<pre><t t-esc="error.preview"/></pre>
</t>
<table t-if="records" class="oe_import_grid" width="100%" style="margin: 5px 0;">
<tr class="oe_import_grid-header">
<td t-foreach="records.header" t-as="header" class="oe_import_grid-cell">
<t t-esc="header"/></td>
</tr>
<tr>
<td t-foreach="records.header" t-as="header">
<input class="sel_fields"/>
</td>
</tr>
<tr t-foreach="records.row" t-as="row" class="oe_import_grid-row">
<td t-foreach="row" t-as="column" class="oe_import_grid-cell"><t t-esc="column"/></td>
</tr>
</table>
</t>
<t t-name="About-Page">