[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:
parent
99cd8a01a3
commit
a7a71dea83
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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">
|
||||
|
|
Loading…
Reference in New Issue