From 21bd473de7bb23923e5d75d97224ddb42845fde3 Mon Sep 17 00:00:00 2001 From: Jeremy Kersten Date: Tue, 16 Aug 2016 18:29:25 +0200 Subject: [PATCH] [FIX] qweb: fix ir.qweb.field.contact Before this commit when you edit a contact with the editor, you didn't see the selected record before the save. Now, you can edit a contact with the html editor. We move the hacked field self (on res.partner) from website_partner to base. 2 bugs: field and record was reversed in call need to pass a browseRecord and not a dict, because we uses .env on it This hack allow to use widget='contact' on the browse record itself and not on a specific field from the browse record Eg:
--- addons/web_editor/models/ir_qweb.py | 11 ++++++----- addons/website_partner/models/res_partner.py | 6 ------ openerp/addons/base/res/res_partner.py | 6 ++++++ 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/addons/web_editor/models/ir_qweb.py b/addons/web_editor/models/ir_qweb.py index a9bb7f7fd21..233de1e254b 100644 --- a/addons/web_editor/models/ir_qweb.py +++ b/addons/web_editor/models/ir_qweb.py @@ -10,7 +10,6 @@ Also, adds methods to convert values back to Odoo models. import ast import cStringIO -import datetime import itertools import json import logging @@ -158,10 +157,12 @@ class Contact(models.AbstractModel): # helper to call the rendering of contact field @api.model def get_record_to_html(self, ids, options=None): - node = self.record_to_html('record', { - 'record': self.env['res.partner'].browse(ids[0])}, - options=options) - return node and node.__html__() + node = self.record_to_html( + self.env['res.partner'].browse(ids[0]), + 'self', + options=options, + ) + return node class Date(models.AbstractModel): diff --git a/addons/website_partner/models/res_partner.py b/addons/website_partner/models/res_partner.py index 0c2b23dc971..2587472a026 100644 --- a/addons/website_partner/models/res_partner.py +++ b/addons/website_partner/models/res_partner.py @@ -10,12 +10,6 @@ class WebsiteResPartner(models.Model): website_description = fields.Html('Website Partner Full Description', strip_style=True) website_short_description = fields.Text('Website Partner Short Description') - # hack to allow using plain browse record in qweb views - self = fields.Many2one(comodel_name=_name, compute='_compute_get_ids') - - @api.one - def _compute_get_ids(self): - self.self = self.id @api.multi def _compute_website_url(self): diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index eff25e87da2..dc255ac195a 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -220,6 +220,8 @@ class Partner(models.Model, FormatAddress): help="Small-sized image of this contact. It is automatically "\ "resized as a 64x64px image, with aspect ratio preserved. "\ "Use this field anywhere a small image is required.") + # hack to allow using plain browse record in qweb views, and used in ir.qweb.field.contact + self = fields.Many2one(comodel_name=_name, compute='_compute_get_ids') _sql_constraints = [ ('check_name', "CHECK( (type='contact' AND name IS NOT NULL) or (type!='contact') )", 'Contacts require a name.'), @@ -242,6 +244,10 @@ class Partner(models.Model, FormatAddress): for partner in self: partner.contact_address = partner._display_address() + @api.one + def _compute_get_ids(self): + self.self = self.id + @api.depends('is_company', 'parent_id.commercial_partner_id') def _compute_commercial_partner(self): for partner in self: