diff --git a/addons/account/models/chart_template.py b/addons/account/models/chart_template.py index 9597bdc3a11..3baacb2a9cb 100644 --- a/addons/account/models/chart_template.py +++ b/addons/account/models/chart_template.py @@ -757,7 +757,7 @@ class WizardMultiChartsAccounts(models.TransientModel): if company_id: company = self.env['res.company'].browse(company_id) currency_id = company.on_change_country(company.country_id.id)['value']['currency_id'] - res.update({'currency_id': currency_id.id}) + res.update({'currency_id': currency_id}) chart_templates = account_chart_template.search([('visible', '=', True)]) if chart_templates: diff --git a/addons/calendar/models/calendar.py b/addons/calendar/models/calendar.py index 643d3adc3df..0d34eec4505 100644 --- a/addons/calendar/models/calendar.py +++ b/addons/calendar/models/calendar.py @@ -1415,7 +1415,7 @@ class Meeting(models.Model): partners_to_notify = meeting.partner_ids.ids event_attendees_changes = attendees_create and real_ids and attendees_create[real_ids[0]] if event_attendees_changes: - partners_to_notify.append(event_attendees_changes['removed_partners'].ids) + partners_to_notify.extend(event_attendees_changes['removed_partners'].ids) self.env['calendar.alarm_manager'].notify_next_alarm(partners_to_notify) if (values.get('start_date') or values.get('start_datetime') or diff --git a/addons/delivery/models/stock_move.py b/addons/delivery/models/stock_move.py index cae1b7cd751..28df2de10f5 100644 --- a/addons/delivery/models/stock_move.py +++ b/addons/delivery/models/stock_move.py @@ -23,5 +23,8 @@ class StockMove(models.Model): def _get_new_picking_values(self): vals = super(StockMove, self)._get_new_picking_values() - vals['carrier_id'] = self.group_id.sale_order_id.carrier_id.id + order = self.group_id.sale_order_id + vals['carrier_id'] = order.carrier_id.id + if order.carrier_id.delivery_type in ['fixed', 'base_on_rule']: + vals['carrier_price'] = order.carrier_id.get_price_available(order) return vals diff --git a/addons/web_editor/static/src/js/summernote.js b/addons/web_editor/static/src/js/summernote.js index 8166d77201e..2678ba955af 100644 --- a/addons/web_editor/static/src/js/summernote.js +++ b/addons/web_editor/static/src/js/summernote.js @@ -953,15 +953,21 @@ range.WrappedRange.prototype.deleteContents = function (towrite) { return this; } - var prevBP = dom.removeBetween(this.sc, this.so, this.ec, this.eo, towrite); + var r; + var image = this.isOnImg(); + if (image) { + // If the range matches/is in an image, then the image is to be removed + // and the cursor moved to its previous position + var parentNode = image.parentNode; + var index = _.indexOf(parentNode.childNodes, image); + parentNode.removeChild(image); + r = new range.WrappedRange(parentNode, index, parentNode, index); + } else { + r = dom.removeBetween(this.sc, this.so, this.ec, this.eo, towrite); + } - $(dom.node(prevBP.sc)).trigger("click"); // trigger click to disable and reanable editor and image handler - return new range.WrappedRange( - prevBP.sc, - prevBP.so, - prevBP.ec, - prevBP.eo - ); + $(dom.node(r.sc)).trigger("click"); // trigger click to disable and reanable editor and image handler + return new range.WrappedRange(r.sc, r.so, r.ec, r.eo); }; range.WrappedRange.prototype.clean = function (mergeFilter, all) { var node = dom.node(this.sc === this.ec ? this.sc : this.commonAncestor()); @@ -1310,7 +1316,7 @@ function summernote_keydown_clean (field) { function remove_table_content(r) { var ancestor = r.commonAncestor(); - var nodes = dom.listBetween(r.sc, r.ec); + var nodes = dom.listBetween(r.sc, r.ec, r.so, r.eo); if (dom.isText(r.sc)) { r.sc.textContent = r.sc.textContent.slice(0, r.so); } diff --git a/addons/website/static/src/js/website.translator.js b/addons/website/static/src/js/website.translator.js index e5abe467076..022f6572d3d 100644 --- a/addons/website/static/src/js/website.translator.js +++ b/addons/website/static/src/js/website.translator.js @@ -73,9 +73,9 @@ var Translate = translate.Class.include({ dialog.appendTo($(document.body)); dialog.on('activate', this, function () { if (dialog.$('input[name=do_not_show]').prop('checked')) { - local_storage.removeItem(nodialog); - } else { local_storage.setItem(nodialog, true); + } else { + local_storage.removeItem(nodialog); } dialog.$el.modal('hide'); }); diff --git a/doc/setup/cdn.rst b/doc/setup/cdn.rst index 290a9aff400..83d0a43333d 100644 --- a/doc/setup/cdn.rst +++ b/doc/setup/cdn.rst @@ -37,7 +37,8 @@ Step 2: Configure the odoo instance with your zone In the Odoo back end, go to the :guilabel:`Website Settings`: menu, then activate the CDN support and copy/paste your zone URL in the -:guilabel:`CDN Base URL` field. +:guilabel:`CDN Base URL` field. This field is only visible and configurable if +you have developer mode activated. .. image:: cdn/odoo_cdn_base_url.png :class: img-responsive diff --git a/odoo/addons/base/res/res_company.py b/odoo/addons/base/res/res_company.py index 9f240f314fa..29467b078d9 100644 --- a/odoo/addons/base/res/res_company.py +++ b/odoo/addons/base/res/res_company.py @@ -246,8 +246,8 @@ class Company(models.Model): self.ensure_one() currency_id = self._get_user_currency() if country_id: - currency_id = self.env['res.country'].browse(country_id).currency_id.id - return {'value': {'currency_id': currency_id}} + currency_id = self.env['res.country'].browse(country_id).currency_id + return {'value': {'currency_id': currency_id.id}} @api.onchange('country_id') def _onchange_country_id_wrapper(self):