diff --git a/addons/stock/models/procurement.py b/addons/stock/models/procurement.py index ba047badef8..fd08b362949 100644 --- a/addons/stock/models/procurement.py +++ b/addons/stock/models/procurement.py @@ -77,7 +77,7 @@ class ProcurementRule(models.Model): data = self._get_stock_move_values(product_id, product_qty, product_uom, location_id, name, origin, values, group_id) # Since action_confirm launch following procurement_group we should activate it. - move = self.env['stock.move'].sudo().create(data) + move = self.env['stock.move'].sudo().with_context(force_company=data.get('company_id', False)).create(data) move._action_confirm() return True diff --git a/addons/website/models/website.py b/addons/website/models/website.py index 1a18cae3ca6..0dbb1842235 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -885,9 +885,10 @@ class Menu(models.Model): for menu in data['data']: menu_id = self.browse(menu['id']) # if the url match a website.page, set the m2o relation - page = self.env['website.page'].search([('url', '=', menu['url'])], limit=1) + page = self.env['website.page'].search(['|', ('url', '=', menu['url']), ('url', '=', '/' + menu['url'])], limit=1) if page: menu['page_id'] = page.id + menu['url'] = page.url elif menu_id.page_id: menu_id.page_id.write({'url': menu['url']}) menu_id.write(menu) diff --git a/addons/website/views/website_templates.xml b/addons/website/views/website_templates.xml index 34e8c8abbfd..2fcfd335f9b 100644 --- a/addons/website/views/website_templates.xml +++ b/addons/website/views/website_templates.xml @@ -74,7 +74,7 @@ -
  • diff --git a/odoo/addons/base/models/ir_actions.py b/odoo/addons/base/models/ir_actions.py index f9ec9413e2f..5559429709d 100644 --- a/odoo/addons/base/models/ir_actions.py +++ b/odoo/addons/base/models/ir_actions.py @@ -34,6 +34,7 @@ class IrActions(models.Model): binding_model_id = fields.Many2one('ir.model', ondelete='cascade', help="Setting a value makes this action available in the sidebar for the given model.") binding_type = fields.Selection([('action', 'Action'), + ('action_form_only', "Form-only"), ('report', 'Report')], required=True, default='action') diff --git a/odoo/models.py b/odoo/models.py index 3d074b3679a..6b93f68972e 100644 --- a/odoo/models.py +++ b/odoo/models.py @@ -1392,6 +1392,9 @@ class BaseModel(MetaModel('DummyModel', (object,), {'_register': False})): resaction = [action for action in bindings['action'] if view_type == 'tree' or not action.get('multi')] + resrelate = [] + if view_type == 'form': + resrelate = bindings['action_form_only'] for res in itertools.chain(resreport, resaction): res['string'] = res['name'] @@ -1399,6 +1402,7 @@ class BaseModel(MetaModel('DummyModel', (object,), {'_register': False})): result['toolbar'] = { 'print': resreport, 'action': resaction, + 'relate': resrelate, } return result diff --git a/odoo/tools/convert.py b/odoo/tools/convert.py index 9a46a88f175..16dd569239f 100644 --- a/odoo/tools/convert.py +++ b/odoo/tools/convert.py @@ -426,11 +426,14 @@ form: module.record_id""" % (xml_id,) if rec.get('target'): res['target'] = rec.get('target','') + if rec.get('multi'): + res['multi'] = safe_eval(rec.get('multi', 'False')) if src_model: res['binding_model_id'] = self.env['ir.model']._get(src_model).id res['binding_type'] = 'report' if rec.get('key2') == 'client_print_multi' else 'action' - if rec.get('multi'): - res['multi'] = safe_eval(rec.get('multi', 'False')) + if rec.get('key2') in (None, 'client_action_relate'): + if not res.get('multi'): + res['binding_type'] = 'action_form_only' id = self.env['ir.model.data']._update('ir.actions.act_window', self.module, res, xml_id, noupdate=self.isnoupdate(data_node), mode=self.mode) self.idref[xml_id] = int(id)