diff --git a/addons/base_action_rule/base_action_rule.py b/addons/base_action_rule/base_action_rule.py index 6c5e8d4d6cb..5189bcbc7df 100644 --- a/addons/base_action_rule/base_action_rule.py +++ b/addons/base_action_rule/base_action_rule.py @@ -156,13 +156,13 @@ class base_action_rule(osv.osv): """ Return a wrapper around `old_create` calling both `old_create` and `_process`, in that order. """ - def create(cr, uid, vals, context=None): + def create(cr, uid, vals, context=None, **kwargs): # avoid loops or cascading actions if context and context.get('action'): return old_create(cr, uid, vals, context=context) context = dict(context or {}, action=True) - new_id = old_create(cr, uid, vals, context=context) + new_id = old_create(cr, uid, vals, context=context, **kwargs) # retrieve the action rules to run on creation action_dom = [('model', '=', model), ('kind', 'in', ['on_create', 'on_create_or_write'])] @@ -180,10 +180,10 @@ class base_action_rule(osv.osv): """ Return a wrapper around `old_write` calling both `old_write` and `_process`, in that order. """ - def write(cr, uid, ids, vals, context=None): + def write(cr, uid, ids, vals, context=None, **kwargs): # avoid loops or cascading actions if context and context.get('action'): - return old_write(cr, uid, ids, vals, context=context) + return old_write(cr, uid, ids, vals, context=context, **kwargs) context = dict(context or {}, action=True) ids = [ids] if isinstance(ids, (int, long, str)) else ids @@ -199,7 +199,7 @@ class base_action_rule(osv.osv): pre_ids[action] = self._filter(cr, uid, action, action.filter_pre_id, ids, context=context) # execute write - old_write(cr, uid, ids, vals, context=context) + old_write(cr, uid, ids, vals, context=context, **kwargs) # check postconditions, and execute actions on the records that satisfy them for action in actions: diff --git a/addons/hr_timesheet_sheet/static/src/js/timesheet.js b/addons/hr_timesheet_sheet/static/src/js/timesheet.js index c7afd62c8ab..ef1e2f17145 100644 --- a/addons/hr_timesheet_sheet/static/src/js/timesheet.js +++ b/addons/hr_timesheet_sheet/static/src/js/timesheet.js @@ -7,6 +7,9 @@ openerp.hr_timesheet_sheet = function(instance) { events: { "click .oe_timesheet_weekly_account a": "go_to", }, + ignore_fields: function() { + return ['line_id']; + }, init: function() { this._super.apply(this, arguments); var self = this; @@ -323,11 +326,8 @@ openerp.hr_timesheet_sheet = function(instance) { generate_o2m_value: function() { var self = this; var ops = []; - + var ignored_fields = self.ignore_fields(); _.each(self.accounts, function(account) { - var auth_keys = _.extend(_.clone(account.account_defaults), { - name: true, amount:true, unit_amount: true, date: true, account_id:true, - }); _.each(account.days, function(day) { _.each(day.lines, function(line) { if (line.unit_amount !== 0) { @@ -338,12 +338,8 @@ openerp.hr_timesheet_sheet = function(instance) { tmp[k] = v[0]; } }); - // we have to remove some keys, because analytic lines are shitty - _.each(_.keys(tmp), function(key) { - if (auth_keys[key] === undefined) { - tmp[key] = undefined; - } - }); + // we remove line_id as the reference to the _inherits field will no longer exists + tmp = _.omit(tmp, ignored_fields); ops.push(tmp); } }); diff --git a/addons/l10n_be_coda/l10n_be_coda.py b/addons/l10n_be_coda/l10n_be_coda.py index 0dfa9bf9db4..46f3b2f7e34 100644 --- a/addons/l10n_be_coda/l10n_be_coda.py +++ b/addons/l10n_be_coda/l10n_be_coda.py @@ -56,7 +56,7 @@ class account_bank_statement_line(osv.osv): """ Same as create function above, but for write function """ - if 'partner_id' in vals: + if vals.get('partner_id'): for line in self.pool.get('account.bank.statement.line').browse(cr, uid, ids, context=context): if line.coda_account_number: acc_number_ids = self.pool.get('res.partner.bank').search(cr, uid, [('acc_number', '=', line.coda_account_number)]) diff --git a/addons/l10n_fr_hr_payroll/report/fiche_paye.py b/addons/l10n_fr_hr_payroll/report/fiche_paye.py index daa7c6fd6ac..0b6506ca284 100755 --- a/addons/l10n_fr_hr_payroll/report/fiche_paye.py +++ b/addons/l10n_fr_hr_payroll/report/fiche_paye.py @@ -29,6 +29,7 @@ class fiche_paye_parser(report_sxw.rml_parse): def __init__(self, cr, uid, name, context): super(fiche_paye_parser, self).__init__(cr, uid, name, context) self.localcontext.update({ + 'lang': "fr_FR", 'get_payslip_lines': self.get_payslip_lines, 'get_total_by_rule_category': self.get_total_by_rule_category, 'get_employer_line': self.get_employer_line, diff --git a/addons/thunderbird/plugin/openerp_plugin.xpi.THIS b/addons/thunderbird/plugin/openerp_plugin.xpi.THIS deleted file mode 100644 index eaa1c2bd4c7..00000000000 Binary files a/addons/thunderbird/plugin/openerp_plugin.xpi.THIS and /dev/null differ diff --git a/addons/thunderbird/plugin/openerp_plugin/chrome/openerp_plugin.jar.THIS b/addons/thunderbird/plugin/openerp_plugin/chrome/openerp_plugin.jar.THIS deleted file mode 100644 index 98ebf9906f6..00000000000 Binary files a/addons/thunderbird/plugin/openerp_plugin/chrome/openerp_plugin.jar.THIS and /dev/null differ diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js index 714f7a640d8..dfefa3c0d08 100644 --- a/addons/web/static/src/js/view_list.js +++ b/addons/web/static/src/js/view_list.js @@ -1605,6 +1605,7 @@ instance.web.ListView.Groups = instance.web.Class.extend( /** @lends instance.we .filter(function (column) { return column.tag === 'field';}) .pluck('name').value(), function (groups) { + self.view.$pager.hide(); $el[0].appendChild( self.render_groups(groups)); if (post_render) { post_render(); } diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index 196e8a18f38..51ee2b3ce1b 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -615,7 +615,6 @@ instance.web.ViewManager = instance.web.Widget.extend({ var view_promise; var form = this.views['form']; if (!view || (form && form.controller && !form.controller.can_be_discarded())) { - self.trigger('switch_mode', view_type, no_store, view_options); return $.Deferred().reject(); } if (!no_store) { diff --git a/addons/website/models/ir_http.py b/addons/website/models/ir_http.py index 75a665f6440..3550d2c6373 100644 --- a/addons/website/models/ir_http.py +++ b/addons/website/models/ir_http.py @@ -161,6 +161,11 @@ class ir_http(orm.AbstractModel): if isinstance(exception.qweb.get('cause'), openerp.exceptions.AccessError): code = 403 + if isinstance(exception, werkzeug.exceptions.HTTPException) and code is None: + # Hand-crafted HTTPException likely coming from abort(), + # usually for a redirect response -> return it directly + return exception + if code == 500: logger.error("500 Internal Server Error:\n\n%s", values['traceback']) if 'qweb_exception' in values: diff --git a/addons/website/views/website_templates.xml b/addons/website/views/website_templates.xml index 2417ac154f4..67255e0cc29 100644 --- a/addons/website/views/website_templates.xml +++ b/addons/website/views/website_templates.xml @@ -107,8 +107,8 @@ -
  • -
  • +