diff options
| author | Christophe Simonis <chs@odoo.com> | 2019-09-11 09:39:33 +0000 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2019-09-11 09:39:33 +0000 |
| commit | 51354fadb0a1bf5fa797c2539e703cf97d768691 (patch) | |
| tree | 223535044b0df6473cd343079167c53c0f3673d0 /odoo | |
| parent | da6f24bb4cea8b14eacc3040a06c5e451511240f (diff) | |
| parent | 50e571acf7c9696954d604de9b4501716fa26646 (diff) | |
[MERGE] forward port branch saas-12.3 up to 50e571acf7c
closes odoo/odoo#36491
Signed-off-by: Christophe Simonis <chs@odoo.com>
Diffstat (limited to 'odoo')
| -rw-r--r-- | odoo/addons/base/data/ir_module_module.xml | 2 | ||||
| -rw-r--r-- | odoo/addons/base/models/ir_actions_report.py | 2 | ||||
| -rw-r--r-- | odoo/addons/base/models/ir_model.py | 2 | ||||
| -rw-r--r-- | odoo/addons/base/models/res_bank.py | 7 | ||||
| -rw-r--r-- | odoo/addons/base/models/res_partner.py | 8 | ||||
| -rw-r--r-- | odoo/addons/base/tests/test_base.py | 8 | ||||
| -rw-r--r-- | odoo/addons/base/views/ir_qweb_widget_templates.xml | 6 | ||||
| -rw-r--r-- | odoo/tools/mail.py | 2 |
8 files changed, 22 insertions, 15 deletions
diff --git a/odoo/addons/base/data/ir_module_module.xml b/odoo/addons/base/data/ir_module_module.xml index 7579260be25..907c4b40432 100644 --- a/odoo/addons/base/data/ir_module_module.xml +++ b/odoo/addons/base/data/ir_module_module.xml @@ -136,7 +136,7 @@ <field name="author">Odoo S.A.</field> <field name="to_buy" eval="True"/> <field name="icon">/base/static/img/icons/project_forecast.png</field> - <field name="website">https://www.odoo.com/page/project?utm_source=db&utm_medium=module</field> + <field name="website">https://www.odoo.com/page/project-management?utm_source=db&utm_medium=module</field> </record> <record model="ir.module.module" id="base.module_sale_subscription"> diff --git a/odoo/addons/base/models/ir_actions_report.py b/odoo/addons/base/models/ir_actions_report.py index 24a4521e8bc..c763b32fec0 100644 --- a/odoo/addons/base/models/ir_actions_report.py +++ b/odoo/addons/base/models/ir_actions_report.py @@ -179,7 +179,7 @@ class IrActionsReport(models.Model): :param attachment_name: The optional name of the attachment. :return: A recordset of length <=1 or None ''' - attachment_name = safe_eval(self.attachment, {'object': record, 'time': time}) + attachment_name = safe_eval(self.attachment, {'object': record, 'time': time}) if self.attachment else '' if not attachment_name: return None return self.env['ir.attachment'].search([ diff --git a/odoo/addons/base/models/ir_model.py b/odoo/addons/base/models/ir_model.py index 7607912e55b..4db144589e1 100644 --- a/odoo/addons/base/models/ir_model.py +++ b/odoo/addons/base/models/ir_model.py @@ -1280,7 +1280,7 @@ class IrModelAccess(models.Model): msg_params['groups_list'] = groups else: msg_tail = _("No group currently allows this operation.") - msg_tail += ' - ({} {}, {} {})'.format(_('Operation:'), mode, _('User:'), self._uid) + msg_tail += u' - ({} {}, {} {})'.format(_('Operation:'), mode, _('User:'), self._uid) _logger.info('Access Denied by ACLs for operation: %s, uid: %s, model: %s', mode, self._uid, model) msg = '%s %s' % (msg_heads[mode], msg_tail) raise AccessError(msg % msg_params) diff --git a/odoo/addons/base/models/res_bank.py b/odoo/addons/base/models/res_bank.py index 2c6801459eb..3f44a4774c3 100644 --- a/odoo/addons/base/models/res_bank.py +++ b/odoo/addons/base/models/res_bank.py @@ -138,11 +138,6 @@ class ResPartnerBank(models.Model): @api.multi def _validate_qr_code_arguments(self): for bank in self: - if bank.currency_id.name == False: - currency = bank.company_id.currency_id - else: - currency = bank.currency_id bank.qr_code_valid = (bank.bank_bic and bank.company_id.name - and bank.acc_number - and (currency.name == 'EUR')) + and bank.acc_number) diff --git a/odoo/addons/base/models/res_partner.py b/odoo/addons/base/models/res_partner.py index 5226e0747ce..8a291967ce4 100644 --- a/odoo/addons/base/models/res_partner.py +++ b/odoo/addons/base/models/res_partner.py @@ -273,7 +273,7 @@ class Partner(models.Model): domain = [('vat', '=', partner.vat)] if partner_id: domain += [('id', '!=', partner_id), '!', ('id', 'child_of', partner_id)] - partner.same_vat_partner_id = partner.vat and not partner.parent_id and self.env['res.partner'].search(domain, limit=1) + partner.same_vat_partner_id = bool(partner.vat) and not partner.parent_id and self.env['res.partner'].search(domain, limit=1) @api.depends(lambda self: self._display_address_depends()) def _compute_contact_address(self): @@ -828,10 +828,14 @@ class Partner(models.Model): e.g. ``"Raoul Grosbedon <r.g@grosbedon.fr>"``""" assert email, 'an email is required for find_or_create to work' emails = tools.email_split(email) + name_emails = tools.email_split_and_format(email) if emails: email = emails[0] + name_email = name_emails[0] + else: + name_email = email partners = self.search([('email', '=ilike', email)], limit=1) - return partners.id or self.name_create(email)[0] + return partners.id or self.name_create(name_email)[0] def _get_gravatar_image(self, email): email_hash = hashlib.md5(email.lower().encode('utf-8')).hexdigest() diff --git a/odoo/addons/base/tests/test_base.py b/odoo/addons/base/tests/test_base.py index 231f1daadd2..5051fec4dad 100644 --- a/odoo/addons/base/tests/test_base.py +++ b/odoo/addons/base/tests/test_base.py @@ -69,17 +69,25 @@ class TestBase(TransactionCase): def test_10_res_partner_find_or_create(self): res_partner = self.env['res.partner'] + email = SAMPLES[0][0] partner_id, dummy = res_partner.name_create(email) found_id = res_partner.find_or_create(email) self.assertEqual(partner_id, found_id, 'find_or_create failed') + self.assertEqual(SAMPLES[0][1], res_partner.browse([found_id]).name, 'Partner name is incorrect') + partner_id2, dummy2 = res_partner.name_create('sarah.john@connor.com') found_id2 = res_partner.find_or_create('john@connor.com') self.assertNotEqual(partner_id2, found_id2, 'john@connor.com match sarah.john@connor.com') + self.assertEqual('john@connor.com', res_partner.browse([found_id2]).name, 'Partner name is incorrect') + new_id = res_partner.find_or_create(SAMPLES[1][0]) self.assertTrue(new_id > partner_id, 'find_or_create failed - should have created new one') + self.assertEqual(SAMPLES[1][2], res_partner.browse([new_id]).name, 'Partner name is incorrect') + new_id2 = res_partner.find_or_create(SAMPLES[2][0]) self.assertTrue(new_id2 > new_id, 'find_or_create failed - should have created new one again') + self.assertEqual(SAMPLES[2][1], res_partner.browse([new_id2]).name, 'Partner name is incorrect') def test_15_res_partner_name_search(self): res_partner = self.env['res.partner'] diff --git a/odoo/addons/base/views/ir_qweb_widget_templates.xml b/odoo/addons/base/views/ir_qweb_widget_templates.xml index 6da8ec0efd6..47bf04a62ff 100644 --- a/odoo/addons/base/views/ir_qweb_widget_templates.xml +++ b/odoo/addons/base/views/ir_qweb_widget_templates.xml @@ -32,9 +32,9 @@ <span itemprop="addressCountry" t-esc="country_id"/> </div> </div> - <div t-if="phone and 'phone' in fields"><i t-if="not options.get('no_marker') or options.get('phone_icons')" class='fa fa-phone fa-fw' role="img" aria-label="Phone" title="Phone"/> <span itemprop="telephone" t-esc="phone"/></div> - <div t-if="mobile and 'mobile' in fields"><i t-if="not options.get('no_marker') or options.get('phone_icons')" class='fa fa-mobile fa-fw' role="img" aria-label="Mobile" title="Mobile"/> <span itemprop="telephone" t-esc="mobile"/></div> - <div t-if="fax and 'fax' in fields"><i t-if="not options.get('no_marker') or options.get('phone_icons')" class='fa fa-fax fa-fw' role="img" aria-label="Fax" title="Fax"/> <span itemprop="faxNumber" t-esc="fax"/></div> + <div t-if="phone and 'phone' in fields"><i t-if="not options.get('no_marker') or options.get('phone_icons')" class='fa fa-phone fa-fw' role="img" aria-label="Phone" title="Phone"/> <span class="o_force_ltr" itemprop="telephone" t-esc="phone"/></div> + <div t-if="mobile and 'mobile' in fields"><i t-if="not options.get('no_marker') or options.get('phone_icons')" class='fa fa-mobile fa-fw' role="img" aria-label="Mobile" title="Mobile"/> <span class="o_force_ltr" itemprop="telephone" t-esc="mobile"/></div> + <div t-if="fax and 'fax' in fields"><i t-if="not options.get('no_marker') or options.get('phone_icons')" class='fa fa-fax fa-fw' role="img" aria-label="Fax" title="Fax"/> <span class="o_force_ltr" itemprop="faxNumber" t-esc="fax"/></div> <div t-if="website and 'website' in fields"> <i t-if="not options.get('no_marker')" class='fa fa-globe' role="img" aria-label="Website" title="Website"/> <a t-att-href="website and '%s%s' % ('http://' if '://' not in website else '',website)"><span itemprop="website" t-esc="website"/></a> diff --git a/odoo/tools/mail.py b/odoo/tools/mail.py index c7784a11f03..5ea09d1211b 100644 --- a/odoo/tools/mail.py +++ b/odoo/tools/mail.py @@ -58,7 +58,7 @@ safe_attrs = clean.defs.safe_attrs | frozenset( ['style', 'data-o-mail-quote', # quote detection 'data-oe-model', 'data-oe-id', 'data-oe-field', 'data-oe-type', 'data-oe-expression', 'data-oe-translation-id', 'data-oe-nodeid', - 'data-publish', 'data-id', 'data-res_id', 'data-member_id', 'data-view-id' + 'data-publish', 'data-id', 'data-res_id', 'data-interval', 'data-member_id', 'data-scroll-background-ratio', 'data-view-id', ]) |
