From 63ee6a74a91a630f5b5049f10ae67291df85f760 Mon Sep 17 00:00:00 2001
From: "Divyesh Makwana (Open ERP)"
Date: Mon, 9 Jul 2012 17:09:54 +0530
Subject: [PATCH 01/68] [IMP] project : column
project_task_history_cumulative.project_id does not exist.
lp bug: https://launchpad.net/bugs/1022509 fixed
bzr revid: mdi@tinyerp.com-20120709113954-l17wlurxovz6z05i
---
addons/project/report/project_cumulative.xml | 3 ---
1 file changed, 3 deletions(-)
diff --git a/addons/project/report/project_cumulative.xml b/addons/project/report/project_cumulative.xml
index 3f7f3b26d96..535fbaf5f87 100644
--- a/addons/project/report/project_cumulative.xml
+++ b/addons/project/report/project_cumulative.xml
@@ -9,7 +9,6 @@
-
@@ -63,9 +62,7 @@
-
-
From e2ba0eb95c38a16839836deeaa9a73b58221e9aa Mon Sep 17 00:00:00 2001
From: "Divyesh Makwana (Open ERP)"
Date: Mon, 9 Jul 2012 18:42:59 +0530
Subject: [PATCH 02/68] [IMP] project : Revert the unneccessary changes.
bzr revid: mdi@tinyerp.com-20120709131259-c9fl7g3hgwhxutgb
---
addons/project/report/project_cumulative.xml | 1 +
1 file changed, 1 insertion(+)
diff --git a/addons/project/report/project_cumulative.xml b/addons/project/report/project_cumulative.xml
index 535fbaf5f87..177e945bc93 100644
--- a/addons/project/report/project_cumulative.xml
+++ b/addons/project/report/project_cumulative.xml
@@ -9,6 +9,7 @@
+
From 627bb128e04991fad61688b8b86ca82061a90977 Mon Sep 17 00:00:00 2001
From: Xavier Morel
Date: Wed, 26 Sep 2012 10:25:30 +0200
Subject: [PATCH 03/68] [IMP] adapt base_import to using Model.load instead of
Model.import_data
bzr revid: xmo@openerp.com-20120926082530-krhladsrn9mzs3lx
---
addons/base_import/models.py | 30 ++++++------------------------
1 file changed, 6 insertions(+), 24 deletions(-)
diff --git a/addons/base_import/models.py b/addons/base_import/models.py
index 1e5ad002b84..733532ae095 100644
--- a/addons/base_import/models.py
+++ b/addons/base_import/models.py
@@ -307,22 +307,14 @@ class ir_import(orm.TransientModel):
except ValueError, e:
return [{
'type': 'error',
- 'message': str(e),
+ 'message': unicode(e),
'record': False,
}]
- try:
- _logger.info('importing %d rows...', len(data))
- (code, record, message, _wat) = self.pool[record.res_model].import_data(
- cr, uid, import_fields, data, context=context)
- _logger.info('done')
-
- except Exception, e:
- _logger.exception("Import failed")
- # TODO: remove when exceptions stop being an "expected"
- # behavior of import_data on some (most) invalid
- # input.
- code, record, message = -1, None, str(e)
+ _logger.info('importing %d rows...', len(data))
+ import_result = self.pool[record.res_model].load(
+ cr, uid, import_fields, data, context=context)
+ _logger.info('done')
# If transaction aborted, RELEASE SAVEPOINT is going to raise
# an InternalError (ROLLBACK should work, maybe). Ignore that.
@@ -339,14 +331,4 @@ class ir_import(orm.TransientModel):
except psycopg2.InternalError:
pass
- if code != -1:
- return []
-
- # TODO: add key for error location?
- # TODO: error not within normal preview, how to display? Re-preview
- # with higher ``count``?
- return [{
- 'type': 'error',
- 'message': message,
- 'record': record or False
- }]
+ return import_result['messages']
From fd5d4e5dd34eeeec885ffd2fe5ae340c5bebb00c Mon Sep 17 00:00:00 2001
From: Xavier Morel
Date: Wed, 26 Sep 2012 13:42:35 +0200
Subject: [PATCH 04/68] [IMP] don't display deprecated fields in import window
bzr revid: xmo@openerp.com-20120926114235-iqkmi23yk2v1hq7w
---
addons/base_import/models.py | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/addons/base_import/models.py b/addons/base_import/models.py
index 733532ae095..16bb52d5856 100644
--- a/addons/base_import/models.py
+++ b/addons/base_import/models.py
@@ -83,6 +83,10 @@ class ir_import(orm.TransientModel):
}]
fields_got = self.pool[model].fields_get(cr, uid, context=context)
for name, field in fields_got.iteritems():
+ # an empty string means the field is deprecated, @deprecated must
+ # be absent or False to mean not-deprecated
+ if field.get('deprecated', False) is not False:
+ continue
if field.get('readonly'):
states = field.get('states')
if not states:
@@ -97,7 +101,7 @@ class ir_import(orm.TransientModel):
'id': name,
'name': name,
'string': field['string'],
- # Y U NO ALWAYS HAVE REQUIRED
+ # Y U NO ALWAYS HAS REQUIRED
'required': bool(field.get('required')),
'fields': [],
}
From f6f37632ceb0ed2a6abd043c884e5e9de1cb8d51 Mon Sep 17 00:00:00 2001
From: Xavier Morel
Date: Wed, 26 Sep 2012 15:50:13 +0200
Subject: [PATCH 05/68] [IMP] errors display, dryrun management (add button)
bzr revid: xmo@openerp.com-20120926135013-rkbvxluu6tqz9a1l
---
addons/base_import/static/src/js/import.js | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/addons/base_import/static/src/js/import.js b/addons/base_import/static/src/js/import.js
index c2deb660ff2..9cb2f74bd48 100644
--- a/addons/base_import/static/src/js/import.js
+++ b/addons/base_import/static/src/js/import.js
@@ -63,7 +63,7 @@ openerp.base_import = function (instance) {
{name: 'quoting', label: _lt("Quoting:"), value: '"'}
],
events: {
- 'change .oe_import_grid input': 'import_dryrun',
+ // 'change .oe_import_grid input': 'import_dryrun',
'change input.oe_import_file': 'file_update',
'change input.oe_import_has_header, .oe_import_options input': 'settings_updated',
'click a.oe_import_csv': function (e) {
@@ -85,9 +85,10 @@ openerp.base_import = function (instance) {
var self = this;
this._super(parent, {
buttons: [
- {text: _t("Import File"), click: function () {
- self.do_import();
- }, 'class': 'oe_import_dialog_button'}
+ {text: _t("Import"), click: self.proxy('do_import'),
+ 'class': 'oe_import_dialog_button'},
+ {text: _t("Validate"), click: self.proxy('import_dryrun'),
+ 'class': 'oe_import_dialog_button'}
]
});
this.res_model = parent.model;
@@ -134,11 +135,12 @@ openerp.base_import = function (instance) {
.then(this.proxy('preview'));
},
preview: function (result) {
+ this.$el.removeClass('oe_import_preview_error oe_import_error');
this.$el.toggleClass(
'oe_import_noheaders',
!this.$('input.oe_import_has_header').prop('checked'));
if (result.error) {
- this.$el.addClass('oe_import_error');
+ this.$el.addClass('oe_import_preview_error oe_import_error');
this.$('.oe_import_error_report').html(
QWeb.render('ImportView.preview.error', result));
return;
@@ -180,7 +182,7 @@ openerp.base_import = function (instance) {
width: 'resolve',
dropdownCssClass: 'oe_import_selector'
});
- this.import_dryrun();
+ //this.import_dryrun();
},
generate_fields_completion: function (root) {
var basic = [];
@@ -252,7 +254,6 @@ openerp.base_import = function (instance) {
//- import itself
call_import: function (options) {
- var self = this;
var fields = this.$('.oe_import_fields input.oe_import_match_field').map(function (index, el) {
return $(el).select2('val') || false;
}).get();
@@ -260,12 +261,12 @@ openerp.base_import = function (instance) {
'do', [this.id, fields, this.import_options()], options);
},
import_dryrun: function () {
-// this.call_import({ dryrun: true })
-// .then(this.proxy('render_import_errors'));
+ return this.call_import({ dryrun: true })
+ .then(this.proxy('render_import_errors'));
},
do_import: function () {
var self = this;
- this.call_import({ dryrun: false }).then(function (errors) {
+ return this.call_import({ dryrun: false }).then(function (errors) {
if (_.isEmpty(errors)) {
if (self.getParent().reload_content) {
self.getParent().reload_content();
From 27aeae974aa4a001e7c8f13cd01f98a5ca295334 Mon Sep 17 00:00:00 2001
From: Xavier Morel
Date: Wed, 26 Sep 2012 18:50:52 +0200
Subject: [PATCH 06/68] [IMP] warning and error reporting during import
bzr revid: xmo@openerp.com-20120926165052-7eq4ne62h63zbqqm
---
addons/base_import/static/src/css/import.css | 6 ++-
addons/base_import/static/src/js/import.js | 41 +++++++++++++++-----
addons/base_import/static/src/xml/import.xml | 26 +++++++++++--
3 files changed, 58 insertions(+), 15 deletions(-)
diff --git a/addons/base_import/static/src/css/import.css b/addons/base_import/static/src/css/import.css
index f6258f5aa50..da61473fdba 100644
--- a/addons/base_import/static/src/css/import.css
+++ b/addons/base_import/static/src/css/import.css
@@ -10,7 +10,8 @@
.oe_import .oe_import_grid,
.oe_import .oe_import_error_report,
.oe_import .oe_import_with_file,
-.oe_import .oe_import_noheaders {
+.oe_import .oe_import_noheaders,
+.oe_import .oe_import_report_more {
display: none;
}
@@ -19,7 +20,8 @@
}
.oe_import.oe_import_error .oe_import_error_report,
.oe_import.oe_import_with_file .oe_import_with_file,
-.oe_import.oe_import_noheaders .oe_import_noheaders {
+.oe_import.oe_import_noheaders .oe_import_noheaders,
+.oe_import .oe_import_report_showmore .oe_import_report_more {
display: block;
}
diff --git a/addons/base_import/static/src/js/import.js b/addons/base_import/static/src/js/import.js
index 9cb2f74bd48..d5f059d0656 100644
--- a/addons/base_import/static/src/js/import.js
+++ b/addons/base_import/static/src/js/import.js
@@ -79,6 +79,10 @@ openerp.base_import = function (instance) {
? $el.next()
: $el.parent().next())
.toggle();
+ },
+ 'click .oe_import_report a.oe_import_report_count': function (e) {
+ e.preventDefault();
+ $(e.target).parent().toggleClass('oe_import_report_showmore');
}
},
init: function (parent, dataset) {
@@ -262,31 +266,50 @@ openerp.base_import = function (instance) {
},
import_dryrun: function () {
return this.call_import({ dryrun: true })
- .then(this.proxy('render_import_errors'));
+ .then(this.proxy('render_import_result'));
},
do_import: function () {
var self = this;
- return this.call_import({ dryrun: false }).then(function (errors) {
- if (_.isEmpty(errors)) {
+ return this.call_import({ dryrun: false }).then(function (message) {
+ if (!_.any(message, function (message) {
+ return message.type === 'error' })) {
if (self.getParent().reload_content) {
self.getParent().reload_content();
}
self.close();
return;
}
- self.render_import_errors(errors);
+ self.render_import_result(message);
});
},
- render_import_errors: function (errors) {
- if (_.isEmpty(errors)) {
+ render_import_result: function (message) {
+ if (_.isEmpty(message)) {
this.$el.removeClass('oe_import_error');
return;
}
- // import failed (or maybe just warnings, if we ever get
- // warnings?)
+ // row indexes come back 0-indexed, spreadsheets
+ // display 1-indexed.
+ var offset = 1;
+ // offset more if header
+ if (this.import_options().header) { offset += 1; }
+
this.$el.addClass('oe_import_error');
this.$('.oe_import_error_report').html(
- QWeb.render('ImportView.error', {errors: errors}));
+ QWeb.render('ImportView.error', {
+ errors: _(message).groupBy('message'),
+ at: function (rows) {
+ var from = rows.from + offset;
+ var to = rows.to + offset;
+ if (from === to) {
+ return _.str.sprintf(_t("at row %d"), from);
+ }
+ return _.str.sprintf(_t("between rows %d and %d"),
+ from, to);
+ },
+ more: function (n) {
+ return _.str.sprintf(_t("(%d times more)"), n);
+ },
+ }));
},
});
};
diff --git a/addons/base_import/static/src/xml/import.xml b/addons/base_import/static/src/xml/import.xml
index 386348bea4b..5d36eae4d2d 100644
--- a/addons/base_import/static/src/xml/import.xml
+++ b/addons/base_import/static/src/xml/import.xml
@@ -86,12 +86,30 @@
+
+
+
+
+
+
this.attr('t-if', 'widget.options.import_enabled');
From 4d7576393a3e0efadf639dbe9958725f76ae6f10 Mon Sep 17 00:00:00 2001
From: Xavier Morel
Date: Thu, 27 Sep 2012 09:48:45 +0200
Subject: [PATCH 07/68] [ADD] unstyled and incomplete handling of @moreinfo
action triggering is still missing
bzr revid: xmo@openerp.com-20120927074845-pb3osgymmtddglc0
---
addons/base_import/static/src/js/import.js | 35 +++++++++++++++++++-
addons/base_import/static/src/xml/import.xml | 3 +-
2 files changed, 36 insertions(+), 2 deletions(-)
diff --git a/addons/base_import/static/src/js/import.js b/addons/base_import/static/src/js/import.js
index d5f059d0656..ac81f89c7a9 100644
--- a/addons/base_import/static/src/js/import.js
+++ b/addons/base_import/static/src/js/import.js
@@ -83,6 +83,12 @@ openerp.base_import = function (instance) {
'click .oe_import_report a.oe_import_report_count': function (e) {
e.preventDefault();
$(e.target).parent().toggleClass('oe_import_report_showmore');
+ },
+ 'click .oe_import_moreinfo_action a': function (e) {
+ e.preventDefault();
+ // #data will parse the attribute on its own, we don't like that
+ var action = JSON.parse($(e.target).attr('data-action'));
+ console.log(action);
}
},
init: function (parent, dataset) {
@@ -307,7 +313,34 @@ openerp.base_import = function (instance) {
from, to);
},
more: function (n) {
- return _.str.sprintf(_t("(%d times more)"), n);
+ return _.str.sprintf(_t("(%d more)"), n);
+ },
+ info: function (msg) {
+ if (typeof msg === 'string') {
+ return _.str.sprintf(
+ '%s
',
+ _.str.escapeHTML(msg));
+ }
+ if (msg instanceof Array) {
+ return _.str.sprintf(
+ '',
+ _.str.escapeHTML(_t("Here are the possible values:")),
+ _(msg).map(function (msg) {
+ return ''
+ + _.str.escapeHTML(msg)
+ + '';
+ }).join());
+ }
+ // Final should be object, action descriptor
+ return [
+ ''
+ ].join('')
},
}));
},
diff --git a/addons/base_import/static/src/xml/import.xml b/addons/base_import/static/src/xml/import.xml
index 5d36eae4d2d..2efd0b5a752 100644
--- a/addons/base_import/static/src/xml/import.xml
+++ b/addons/base_import/static/src/xml/import.xml
@@ -108,7 +108,8 @@
-
+
+
From 4787939773e175475c03d70c4e32fdf0eeea1097 Mon Sep 17 00:00:00 2001
From: Xavier Morel
Date: Thu, 27 Sep 2012 11:49:50 +0200
Subject: [PATCH 08/68] [FIX] correctly transform 'get all possible values'
action links to display list views as list views
bzr revid: xmo@openerp.com-20120927094950-pwlgv2kt2a0jz8ji
---
addons/base_import/static/src/js/import.js | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
diff --git a/addons/base_import/static/src/js/import.js b/addons/base_import/static/src/js/import.js
index ac81f89c7a9..8a73bcd5d71 100644
--- a/addons/base_import/static/src/js/import.js
+++ b/addons/base_import/static/src/js/import.js
@@ -86,9 +86,20 @@ openerp.base_import = function (instance) {
},
'click .oe_import_moreinfo_action a': function (e) {
e.preventDefault();
- // #data will parse the attribute on its own, we don't like that
+ // #data will parse the attribute on its own, we don't like
+ // that sort of things
var action = JSON.parse($(e.target).attr('data-action'));
- console.log(action);
+ // FIXME: when JS-side clean_action
+ action.views = _(action.views).map(function (view) {
+ var id = view[0], type = view[1];
+ return [
+ id,
+ type !== 'tree' ? type
+ : action.view_type === 'form' ? 'list'
+ : 'tree'
+ ];
+ });
+ this.do_action(_.extend(action, {target: 'new'}));
}
},
init: function (parent, dataset) {
@@ -329,7 +340,7 @@ openerp.base_import = function (instance) {
return ''
+ _.str.escapeHTML(msg)
+ '';
- }).join());
+ }).join(''));
}
// Final should be object, action descriptor
return [
From 45ee8b434d6ea9d1f1570478a091ce0eab2cc37d Mon Sep 17 00:00:00 2001
From: Xavier Morel
Date: Mon, 1 Oct 2012 09:17:28 +0200
Subject: [PATCH 09/68] [FIX] account: incorrect check for parent_id value
would try a read on parent_id=False, which blows up
bzr revid: xmo@openerp.com-20121001071728-npq7ieoe3rpz44i7
---
addons/account/account.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/addons/account/account.py b/addons/account/account.py
index e5e29f178a3..4eb99dc4bd4 100644
--- a/addons/account/account.py
+++ b/addons/account/account.py
@@ -2522,14 +2522,14 @@ class account_account_template(osv.osv):
]
def create(self, cr, uid, vals, context=None):
- if 'parent_id' in vals:
+ if vals.get('parent_id'):
parent = self.read(cr, uid, [vals['parent_id']], ['type'])
if parent and parent[0]['type'] != 'view':
raise osv.except_osv(_('Warning!'), _("You may only select a parent account of type 'View'."))
return super(account_account_template, self).create(cr, uid, vals, context=context)
def write(self, cr, uid, ids, vals, context=None):
- if 'parent_id' in vals:
+ if vals.get('parent_id'):
parent = self.read(cr, uid, [vals['parent_id']], ['type'])
if parent and parent[0]['type'] != 'view':
raise osv.except_osv(_('Warning!'), _("You may only select a parent account of type 'View'."))
From 49998b5f72f2fa8a33472cc849203278cb80bbf0 Mon Sep 17 00:00:00 2001
From: Xavier Morel
Date: Mon, 1 Oct 2012 09:59:31 +0200
Subject: [PATCH 10/68] [FIX] account: correctly handle 'false' close_method
bzr revid: xmo@openerp.com-20121001075931-zyrmydt1s7uz7ihk
---
addons/account/account.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/addons/account/account.py b/addons/account/account.py
index 4eb99dc4bd4..878f8759239 100644
--- a/addons/account/account.py
+++ b/addons/account/account.py
@@ -155,6 +155,7 @@ class account_account_type(osv.osv):
return res
def _save_report_type(self, cr, uid, account_type_id, field_name, field_value, arg, context=None):
+ field_value = field_value or 'none'
obj_data = self.pool.get('ir.model.data')
obj_financial_report = self.pool.get('account.financial.report')
#unlink if it exists somewhere in the financial reports related to BS or PL
From abf0579a9825a1a72a7525b26c80c87838fd6058 Mon Sep 17 00:00:00 2001
From: Xavier Morel
Date: Mon, 1 Oct 2012 12:52:35 +0200
Subject: [PATCH 11/68] [IMP] Invert order of buttons in import dialog, add 'or
cancel' link
bzr revid: xmo@openerp.com-20121001105235-0d954cxt9y80q89w
---
addons/base_import/static/src/js/import.js | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/addons/base_import/static/src/js/import.js b/addons/base_import/static/src/js/import.js
index 8a73bcd5d71..2a7e6f18d8a 100644
--- a/addons/base_import/static/src/js/import.js
+++ b/addons/base_import/static/src/js/import.js
@@ -106,10 +106,10 @@ openerp.base_import = function (instance) {
var self = this;
this._super(parent, {
buttons: [
- {text: _t("Import"), click: self.proxy('do_import'),
- 'class': 'oe_import_dialog_button'},
{text: _t("Validate"), click: self.proxy('import_dryrun'),
- 'class': 'oe_import_dialog_button'}
+ 'class': 'oe_import_dialog_button'},
+ {text: _t("Import"), click: self.proxy('do_import'),
+ 'class': 'oe_import_dialog_button oe_highlight'}
]
});
this.res_model = parent.model;
@@ -126,6 +126,16 @@ openerp.base_import = function (instance) {
self.$('input[name=import_id]').val(id);
});
},
+ open: function () {
+ this._super.apply(this, arguments);
+ this.$el.dialog('widget').find('.ui-dialog-buttonset')
+ .append(_t(" or "))
+ .append(
+ $('
From a7a8104623fa868e65265b54c826c0dd828c1663 Mon Sep 17 00:00:00 2001
From: Xavier Morel
Date: Mon, 1 Oct 2012 15:52:17 +0200
Subject: [PATCH 13/68] [IMP] base_import: typo in field name for row number
offset
bzr revid: xmo@openerp.com-20121001135217-0ao29ldft17d52ur
---
addons/base_import/static/src/js/import.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/addons/base_import/static/src/js/import.js b/addons/base_import/static/src/js/import.js
index 2a7e6f18d8a..80f72a14f5b 100644
--- a/addons/base_import/static/src/js/import.js
+++ b/addons/base_import/static/src/js/import.js
@@ -318,7 +318,7 @@ openerp.base_import = function (instance) {
// display 1-indexed.
var offset = 1;
// offset more if header
- if (this.import_options().header) { offset += 1; }
+ if (this.import_options().headers) { offset += 1; }
this.$el.addClass('oe_import_error');
this.$('.oe_import_error_report').html(
From 89be614ea3159be3879fbd4e0dd477a8d94e596c Mon Sep 17 00:00:00 2001
From: Xavier Morel
Date: Mon, 1 Oct 2012 16:06:22 +0200
Subject: [PATCH 14/68] [ADD] base_import: info message when everything looks
ok after a validation
bzr revid: xmo@openerp.com-20121001140622-v63opfo97mmxf3sr
---
addons/base_import/static/src/css/import.css | 3 +++
addons/base_import/static/src/js/import.js | 6 ++++--
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/addons/base_import/static/src/css/import.css b/addons/base_import/static/src/css/import.css
index da61473fdba..25678cbe98a 100644
--- a/addons/base_import/static/src/css/import.css
+++ b/addons/base_import/static/src/css/import.css
@@ -31,6 +31,9 @@
.oe_import .oe_import_error_report ul .oe_import_report_warning {
background-color: #FEFFD9;
}
+.oe_import .oe_import_error_report ul .oe_import_report_info {
+ background-color: #d3ffd3;
+}
.oe_import .oe_import_noheaders {
color: #888;
diff --git a/addons/base_import/static/src/js/import.js b/addons/base_import/static/src/js/import.js
index 80f72a14f5b..90995027021 100644
--- a/addons/base_import/static/src/js/import.js
+++ b/addons/base_import/static/src/js/import.js
@@ -311,8 +311,10 @@ openerp.base_import = function (instance) {
},
render_import_result: function (message) {
if (_.isEmpty(message)) {
- this.$el.removeClass('oe_import_error');
- return;
+ message.push({
+ type: 'info',
+ message: _t("Everything seems valid.")
+ });
}
// row indexes come back 0-indexed, spreadsheets
// display 1-indexed.
From 771fae90d7f1435eebe682a7dbfa49ac764de436 Mon Sep 17 00:00:00 2001
From: Xavier Morel
Date: Mon, 1 Oct 2012 16:22:27 +0200
Subject: [PATCH 15/68] [IMP] base_import: better warnings when the file
parsing has very likely failed
bzr revid: xmo@openerp.com-20121001142227-v1iypgjgfcq4pgo7
---
addons/base_import/static/src/js/import.js | 14 ++++++++++++--
addons/base_import/static/src/xml/import.xml | 3 ++-
2 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/addons/base_import/static/src/js/import.js b/addons/base_import/static/src/js/import.js
index 90995027021..0ea74e43755 100644
--- a/addons/base_import/static/src/js/import.js
+++ b/addons/base_import/static/src/js/import.js
@@ -171,14 +171,24 @@ openerp.base_import = function (instance) {
'oe_import_noheaders',
!this.$('input.oe_import_has_header').prop('checked'));
if (result.error) {
+ this.$('.oe_import_options').show();
this.$el.addClass('oe_import_preview_error oe_import_error');
this.$('.oe_import_error_report').html(
- QWeb.render('ImportView.preview.error', result));
+ QWeb.render('ImportView.preview.error', result))
+ .get(0).scrollIntoView();
return;
}
this.$el.addClass('oe_import_preview');
this.$('table').html(QWeb.render('ImportView.preview', result));
+ if (result.headers.length === 1) {
+ this.$('.oe_import_options').show();
+ this.render_import_result([{
+ type: 'warning',
+ message: _t("A single column was found in the file, this often means the file separator is incorrect")
+ }]);
+ }
+
var $fields = this.$('.oe_import_fields input');
this.render_fields_matches(result, $fields);
var data = this.generate_fields_completion(result);
@@ -365,7 +375,7 @@ openerp.base_import = function (instance) {
''
].join('')
},
- }));
+ })).get(0).scrollIntoView();
},
});
};
diff --git a/addons/base_import/static/src/xml/import.xml b/addons/base_import/static/src/xml/import.xml
index 77c3d7d6ce5..e11cce26b80 100644
--- a/addons/base_import/static/src/xml/import.xml
+++ b/addons/base_import/static/src/xml/import.xml
@@ -82,7 +82,8 @@
- Import preview failed due to:
+ Import preview failed due to: . The issue is
+ usually an incorrect file encoding.
Here is the start of the file we could not import:
From f6544c801fa070403ce122d47c90644b50d8db58 Mon Sep 17 00:00:00 2001
From: Xavier Morel
Date: Wed, 3 Oct 2012 14:11:37 +0200
Subject: [PATCH 16/68] [IMP] make import into a full-scene client action
* Correctly handle back (via history_back)
* Disable buttons when no file has been loaded yet
* Highlight import when a validation has yield no message
bzr revid: xmo@openerp.com-20121003121137-xo7lu5m5y0s7gyo1
---
addons/base_import/static/src/js/import.js | 74 +++++++++++---------
addons/base_import/static/src/xml/import.xml | 10 +++
2 files changed, 50 insertions(+), 34 deletions(-)
diff --git a/addons/base_import/static/src/js/import.js b/addons/base_import/static/src/js/import.js
index 0ea74e43755..dd8b3288de9 100644
--- a/addons/base_import/static/src/js/import.js
+++ b/addons/base_import/static/src/js/import.js
@@ -47,16 +47,23 @@ openerp.base_import = function (instance) {
this._super.apply(this, arguments);
if(add_button) {
this.$buttons.on('click', '.oe_list_button_import', function() {
- new instance.web.DataImport(self, self.dataset).open();
+ self.do_action({
+ type: 'ir.actions.client',
+ tag: 'import',
+ params: {
+ model: self.dataset.model
+ }
+ });
return false;
});
}
}
});
- instance.web.DataImport = instance.web.Dialog.extend({
+ instance.web.client_actions.add(
+ 'import', 'instance.web.DataImport');
+ instance.web.DataImport = instance.web.Widget.extend({
template: 'ImportView',
- dialog_title: _lt("Import Data"),
opts: [
{name: 'encoding', label: _lt("Encoding:"), value: 'utf-8'},
{name: 'separator', label: _lt("Separator:"), value: ','},
@@ -100,41 +107,34 @@ openerp.base_import = function (instance) {
];
});
this.do_action(_.extend(action, {target: 'new'}));
+ },
+ // buttons
+ 'click .oe_import_validate': 'import_dryrun',
+ 'click .oe_import_import': 'do_import',
+ 'click .oe_import_cancel': function (e) {
+ e.preventDefault();
+ this.exit();
}
},
- init: function (parent, dataset) {
- var self = this;
- this._super(parent, {
- buttons: [
- {text: _t("Validate"), click: self.proxy('import_dryrun'),
- 'class': 'oe_import_dialog_button'},
- {text: _t("Import"), click: self.proxy('do_import'),
- 'class': 'oe_import_dialog_button oe_highlight'}
- ]
- });
- this.res_model = parent.model;
+ init: function (parent, params) {
+ this._super.apply(this, arguments);
+ this.res_model = params.model;
// import object id
this.id = null;
this.Import = new instance.web.Model('base_import.import');
},
start: function () {
var self = this;
- return this.Import.call('create', [{
- 'res_model': this.res_model
- }]).then(function (id) {
- self.id = id;
- self.$('input[name=import_id]').val(id);
- });
- },
- open: function () {
- this._super.apply(this, arguments);
- this.$el.dialog('widget').find('.ui-dialog-buttonset')
- .append(_t(" or "))
- .append(
- $('