diff --git a/addons/point_of_sale/models/res_partner.py b/addons/point_of_sale/models/res_partner.py index 238fdbdeb8e..d9b2405cc39 100644 --- a/addons/point_of_sale/models/res_partner.py +++ b/addons/point_of_sale/models/res_partner.py @@ -30,5 +30,6 @@ class ResPartner(models.Model): if partner_id: # Modifying existing partner self.browse(partner_id).write(partner) else: + partner['lang'] = self.env.user.lang partner_id = self.create(partner).id return partner_id diff --git a/addons/stock/models/stock_move.py b/addons/stock/models/stock_move.py index b7ec53666ae..7b00a47f9b0 100644 --- a/addons/stock/models/stock_move.py +++ b/addons/stock/models/stock_move.py @@ -552,7 +552,7 @@ class StockMove(models.Model): (move.picking_id.picking_type_id.use_existing_lots or move.picking_id.picking_type_id.use_create_lots) and \ move.product_id.tracking != 'none' and \ not (move.restrict_lot_id or (pack_operation and (pack_operation.product_id and pack_operation.pack_lot_ids)) or (pack_operation and not pack_operation.product_id)): - raise UserError(_('You need to provide a Lot/Serial Number for product %s') % move.product_id.name) + raise UserError(_('You need to provide a Lot/Serial Number for product %s') % ("%s (%s)" % (move.product_id.name, move.picking_id.name))) @api.multi def action_assign(self, no_prepare=False): diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 5c3fc9f9e50..a34ff7f7bdf 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -1012,8 +1012,8 @@ class Binary(http.Controller): elif status != 200 and download: return request.not_found() - height = int(height) - width = int(width) + height = int(height or 0) + width = int(width or 0) if content and (width or height): # resize maximum 500*500 if width > 500: diff --git a/addons/website_slides/models/slides.py b/addons/website_slides/models/slides.py index bd2a544a599..10717866b07 100644 --- a/addons/website_slides/models/slides.py +++ b/addons/website_slides/models/slides.py @@ -371,7 +371,10 @@ class Slide(models.Model): if slide.id: # avoid to perform a slug on a not yet saved record in case of an onchange. # link_tracker is not in dependencies, so use it to shorten url only if installed. if self.env.registry.get('link.tracker'): - url = self.env['link.tracker'].sudo().create({'url': '%s/slides/slide/%s' % (base_url, slug(slide))}).short_url + url = self.env['link.tracker'].sudo().create({ + 'url': '%s/slides/slide/%s' % (base_url, slug(slide)), + 'title': slide.name, + }).short_url else: url = '%s/slides/slide/%s' % (base_url, slug(slide)) slide.website_url = url diff --git a/odoo/cli/server.py b/odoo/cli/server.py index afb172b7f3c..180efcfb70f 100644 --- a/odoo/cli/server.py +++ b/odoo/cli/server.py @@ -21,6 +21,8 @@ import threading import traceback import time +from psycopg2 import ProgrammingError, errorcodes + import odoo from . import Command @@ -136,6 +138,15 @@ def main(args): for db_name in preload: try: odoo.service.db._create_empty_database(db_name) + except ProgrammingError as err: + if err.pgcode == errorcodes.INSUFFICIENT_PRIVILEGE: + # We use an INFO loglevel on purpose in order to avoid + # reporting unnecessary warnings on build environment + # using restricted database access. + _logger.info("Could not determine if database %s exists, " + "skipping auto-creation: %s", db_name, err) + else: + raise err except odoo.service.db.DatabaseExists: pass