Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[16.0] [MIG] partner_identification #1397

Merged
merged 54 commits into from
Dec 8, 2022
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
959c83b
[IMP] Rename partner_identifiers -> partner_identification
lmignon Mar 16, 2016
bce35eb
partner_identification: several fix/imp
lmignon Mar 16, 2016
e8931a0
[FIX] partner_identification: prevent integrity error on delete ID
lmignon May 30, 2016
f169ea7
[ADD] partner_identification: sales_team dep
jjscarafia Nov 2, 2016
79e45eb
[FIX] partner_identification: pylint
jjscarafia Nov 3, 2016
76931f9
[IMP] partner_identification: Add context override (#373)
lasley Jan 24, 2017
ad0b1ac
[10.0][IMP] partner_identification: Add field computation and inverse…
lasley May 30, 2017
980bb7b
[FIX] partner_identification: Infinite loop in search (#436)
lasley Jun 8, 2017
2b914b5
OCA Transbot updated translations from Transifex
oca-transbot Mar 20, 2016
6ad8d96
[11.0][MIG] partner_identification
simahawk Nov 29, 2017
11c00d2
partner_identification: fix/imp tests on res.partner
simahawk Nov 29, 2017
f6ce3e0
[UPD] Update partner_identification.pot
oca-travis Jun 22, 2018
f10d3a1
[MIG] partner_identification: Migration to 12.0
tarteo Oct 24, 2018
365ba82
[UPD] README.rst
OCA-git-bot Dec 14, 2018
8c5b9f8
[UPD] Update partner_identification.pot
oca-travis Dec 14, 2018
f9de93c
Translated using Weblate (Italian)
primes2h Dec 23, 2018
885ac01
Update translation files
oca-transbot Dec 29, 2018
b03ab42
[UPD] Update partner_identification.pot
oca-travis Jan 25, 2019
999f0a0
Update translation files
oca-transbot Jan 27, 2019
b36c2e4
Translated using Weblate (Spanish)
mvrodriguez Mar 1, 2019
74b783c
[ADD] icon.png
OCA-git-bot Apr 2, 2019
eaa7a5e
[UPD] README.rst
OCA-git-bot Jul 29, 2019
8cee8ae
[REF] partner_identification: Black python code
Nov 26, 2019
2a88a90
[MIG] partner_identification: Migration to 13.0
Nov 26, 2019
b912e98
[UPD] Update partner_identification.pot
oca-travis Feb 19, 2020
c719a96
[UPD] README.rst
OCA-git-bot Feb 19, 2020
8557e24
[FIX] make _compute_identification() to assign a value no matter what
ntsirintanis Feb 4, 2020
9df4b10
Update translation files
oca-transbot Feb 19, 2020
f46689b
pre-commit update
OCA-git-bot Mar 14, 2020
1ad18fc
Translated using Weblate (Chinese (Simplified))
dong-z Mar 21, 2020
a4edf2e
[UPD] README.rst
OCA-git-bot Mar 29, 2020
fdb8b28
[FIX][13.0] partner_identification id number check
TDu Oct 7, 2020
f0076df
partner_identification 13.0.1.0.1
OCA-git-bot Oct 12, 2020
19253d6
[FIX][13.0] partner_identification: Add menu for Partner ID Numbers
ajaniszewska-dev Oct 14, 2020
a09e658
[UPD] Update partner_identification.pot
oca-travis Oct 22, 2020
821afd4
partner_identification 13.0.1.1.0
OCA-git-bot Oct 22, 2020
4ae3466
Update translation files
oca-transbot Oct 22, 2020
41a0379
[13.0][IMP] Add missing field to ID Numbers tree view
ajaniszewska-dev Oct 27, 2020
a5ffd5b
partner_identification 13.0.1.2.0
OCA-git-bot Oct 28, 2020
48881ac
Translated using Weblate (Spanish (Argentina))
ibuioli Dec 8, 2020
9d5d37a
Translated using Weblate (Dutch)
bosd Dec 13, 2020
9cfd14f
[IMP] partner_identification: black, isort, prettier
phuctranfxvn Feb 12, 2021
ac88726
[MIG] partner_identification: Migration to 14.0
phuctranfxvn Feb 12, 2021
7567533
[IMP] partner_identification: Add python validation, improve view and…
phuctranfxvn Feb 13, 2021
495097b
[FIX] partner_identification: Do not validate number if validation co…
phuctranfxvn Feb 23, 2021
3ed4268
[14.0][IMP] Added the field 'color' to partner_id_category.
Chanakya-OSI Aug 6, 2021
033e3be
Translated using Weblate (Portuguese (Portugal))
educasilva Oct 26, 2021
370380d
partner_identification 14.0.1.3.0
OCA-git-bot Nov 1, 2021
61b080a
Translated using Weblate (Portuguese (Portugal))
pedrocs-exo Nov 25, 2021
296428a
Translated using Weblate (Portuguese)
pedrocs-exo Dec 20, 2021
bfaf9e5
Translated using Weblate (Italian)
rbellanova Feb 16, 2022
b8ce97c
Translated using Weblate (Italian)
rbellanova Mar 14, 2022
871035c
[IMP] $MODULE: black, isort, prettier
marielejeune Nov 9, 2022
48069ed
[MIG] partner_identification: Migration to 16.0
marielejeune Nov 9, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions partner_identification/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@ Partner Identification Numbers
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpartner--contact-lightgray.png?logo=github
:target: https://github.com/OCA/partner-contact/tree/14.0/partner_identification
:target: https://github.com/OCA/partner-contact/tree/16.0/partner_identification
:alt: OCA/partner-contact
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/partner-contact-14-0/partner-contact-14-0-partner_identification
:target: https://translation.odoo-community.org/projects/partner-contact-16-0/partner-contact-16-0-partner_identification
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
:target: https://runbot.odoo-community.org/runbot/134/14.0
:target: https://runbot.odoo-community.org/runbot/134/16.0
:alt: Try me on Runbot

|badge1| |badge2| |badge3| |badge4| |badge5|
Expand Down Expand Up @@ -97,7 +97,7 @@ Bug Tracker
Bugs are tracked on `GitHub Issues <https://github.com/OCA/partner-contact/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
`feedback <https://github.com/OCA/partner-contact/issues/new?body=module:%20partner_identification%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
`feedback <https://github.com/OCA/partner-contact/issues/new?body=module:%20partner_identification%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Expand Down Expand Up @@ -126,6 +126,7 @@ Contributors
* Simone Orsi <[email protected]>
* Dennis Sluijk <[email protected]>
* Phuc Tran Thanh <[email protected]>
* Marie Lejeune <[email protected]>

Other credits
~~~~~~~~~~~~~
Expand All @@ -147,6 +148,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

This module is part of the `OCA/partner-contact <https://github.com/OCA/partner-contact/tree/14.0/partner_identification>`_ project on GitHub.
This module is part of the `OCA/partner-contact <https://github.com/OCA/partner-contact/tree/16.0/partner_identification>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
2 changes: 1 addition & 1 deletion partner_identification/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
{
"name": "Partner Identification Numbers",
"category": "Customer Relationship Management",
"version": "14.0.1.3.0",
"version": "16.0.1.0.0",
"license": "AGPL-3",
"depends": ["contacts"],
"data": [
Expand Down
12 changes: 8 additions & 4 deletions partner_identification/models/res_partner.py
Original file line number Diff line number Diff line change
Expand Up @@ -125,11 +125,15 @@ def _inverse_identification(self, field_name, category_code):
else:
raise ValidationError(
_(
"This %s has multiple IDs of this type (%s), so a write "
"via the %s field is not possible. In order to fix this, "
"please use the IDs tab."
"This {record_name} has multiple IDs of this "
"type ({category_code}), so a write via the "
"{field_name} field is not possible. "
"In order to fix this, please use the IDs tab."
).format(
record_name=record._name,
category_code=category_code,
field_name=field_name,
)
% (record._name, category_code, field_name)
)

@api.model
Expand Down
17 changes: 8 additions & 9 deletions partner_identification/models/res_partner_id_category.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,6 @@ def _get_default_color(self):

color = fields.Integer(string="Color Index", default=_get_default_color)
code = fields.Char(
string="Code",
size=16,
required=True,
help="Abbreviation or acronym of this ID type. For example, "
"'driver_license'",
Expand All @@ -37,7 +35,7 @@ def _get_default_color(self):
translate=True,
help="Name of this ID type. For example, 'Driver License'",
)
active = fields.Boolean(string="Active", default=True)
active = fields.Boolean(default=True)
validation_code = fields.Text(
"Python validation code", help="Python code called to validate an id number."
)
Expand All @@ -60,12 +58,13 @@ def validate_id_number(self, id_number):
except Exception as e:
raise UserError(
_(
"Error when evaluating the id_category validation code:"
":\n %s \n(%s)"
)
% (self.name, e)
)
"Error when evaluating the id_category "
"validation code: \n {name} \n({error})"
).format(name=self.name, error=e)
) from e
if eval_context.get("failed", False):
raise ValidationError(
_("%s is not a valid %s identifier") % (id_number.name, self.name)
_("{id_name} is not a valid {cat_name} identifier").format(
id_name=id_number.name, cat_name=self.name
)
)
marielejeune marked this conversation as resolved.
Show resolved Hide resolved
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have no strong opinion on this matter but OCA/server-tools#1941 (comment) suggest format is dangerous.

https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst
in Idioms § says "Prefer % over .format(), prefer %(varname) instead of positional"

Should we improve guidelines ? or use %(varname) with dict ?
cc @rousseldenis

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can open an issue to face pros and cons of each solution (format or %).

That said, it would be very uncommon to have a translator with that kind of will. But maybe, letting an open door...

@sbidoul @yajo

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've looked at that article about the safety of format again, and in this case, there is no risk since all variables passed to format are of type str. So to me this code is fine.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So, do we agree, as I thought also about str type, that format() can be used for translations ?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My understanding is that it is at risk (against hostile translators) if python objects are passed to format(). So this requires careful review that only simple types are passed to it.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, this is a security risk and must be reverted.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please elaborate, as I don't see the risk when strings are passed as format variables.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The decision was taken here: OCA/pylint-odoo#302. It contains some links to in-depth explanations.

In this particular case, even if it could be demonstrated that it's not a security problem, it definitely opens the door for more foot-shooting than the other format. And I guess it will confuse translators unnecessarily (all of them are used to %s-style placeholders instead).

Some abuse examples:

>>> "{innocent_string}".format(innocent_string="hellö") # valid
'hellö'
>>> "{not_so_innocent_string!a}".format(not_so_innocent_string="hellö")
"'hell\\xf6'"
>>> "{not_so_innocent_string!i}".format(not_so_innocent_string="hellö")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: Unknown conversion specifier i
>>> "{not_so_innocent_string!d}".format(not_so_innocent_string="hellö")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: Unknown conversion specifier d
>>> "{not_so_innocent_string.__class__}".format(not_so_innocent_string="hellö")
"<class 'str'>"
>>> "{not_so_innocent_string.__class__.__dict__}".format(not_so_innocent_string="hellö")
'{\'__new__\': <built-in method __new__ of type object at 0x7fab9d0ed760>, \'__repr__\': <slot wrapper \'__repr__\' of \'str\' objects>, \'__hash__\': <slot wrapper \'__hash__\' of \'str\' objects>, \'__str__\': <slot wrapper \'__str__\' of \'str\' objects>, \'__getattribute__\': <slot wrapper \'__getattribute__\' of \'str\' objects>, \'__lt__\': <slot wrapper \'__lt__\' of \'str\' objects>, \'__le__\': <slot wrapper \'__le__\' of \'str\' objects>, \'__eq__\': <slot wrapper \'__eq__\' of \'str\' objects>, \'__ne__\': <slot wrapper \'__ne__\' of \'str\' objects>, \'__gt__\': <slot wrapper \'__gt__\' of \'str\' objects>, \'__ge__\': <slot wrapper \'__ge__\' of \'str\' objects>, \'__iter__\': <slot wrapper \'__iter__\' of \'str\' objects>, \'__mod__\': <slot wrapper \'__mod__\' of \'str\' objects>, \'__rmod__\': <slot wrapper \'__rmod__\' of \'str\' objects>, \'__len__\': <slot wrapper \'__len__\' of \'str\' objects>, \'__getitem__\': <slot wrapper \'__getitem__\' of \'str\' objects>, \'__add__\': <slot wrapper \'__add__\' of \'str\' objects>, \'__mul__\': <slot wrapper \'__mul__\' of \'str\' objects>, \'__rmul__\': <slot wrapper \'__rmul__\' of \'str\' objects>, \'__contains__\': <slot wrapper \'__contains__\' of \'str\' objects>, \'encode\': <method \'encode\' of \'str\' objects>, \'replace\': <method \'replace\' of \'str\' objects>, \'split\': <method \'split\' of \'str\' objects>, \'rsplit\': <method \'rsplit\' of \'str\' objects>, \'join\': <method \'join\' of \'str\' objects>, \'capitalize\': <method \'capitalize\' of \'str\' objects>, \'casefold\': <method \'casefold\' of \'str\' objects>, \'title\': <method \'title\' of \'str\' objects>, \'center\': <method \'center\' of \'str\' objects>, \'count\': <method \'count\' of \'str\' objects>, \'expandtabs\': <method \'expandtabs\' of \'str\' objects>, \'find\': <method \'find\' of \'str\' objects>, \'partition\': <method \'partition\' of \'str\' objects>, \'index\': <method \'index\' of \'str\' objects>, \'ljust\': <method \'ljust\' of \'str\' objects>, \'lower\': <method \'lower\' of \'str\' objects>, \'lstrip\': <method \'lstrip\' of \'str\' objects>, \'rfind\': <method \'rfind\' of \'str\' objects>, \'rindex\': <method \'rindex\' of \'str\' objects>, \'rjust\': <method \'rjust\' of \'str\' objects>, \'rstrip\': <method \'rstrip\' of \'str\' objects>, \'rpartition\': <method \'rpartition\' of \'str\' objects>, \'splitlines\': <method \'splitlines\' of \'str\' objects>, \'strip\': <method \'strip\' of \'str\' objects>, \'swapcase\': <method \'swapcase\' of \'str\' objects>, \'translate\': <method \'translate\' of \'str\' objects>, \'upper\': <method \'upper\' of \'str\' objects>, \'startswith\': <method \'startswith\' of \'str\' objects>, \'endswith\': <method \'endswith\' of \'str\' objects>, \'removeprefix\': <method \'removeprefix\' of \'str\' objects>, \'removesuffix\': <method \'removesuffix\' of \'str\' objects>, \'isascii\': <method \'isascii\' of \'str\' objects>, \'islower\': <method \'islower\' of \'str\' objects>, \'isupper\': <method \'isupper\' of \'str\' objects>, \'istitle\': <method \'istitle\' of \'str\' objects>, \'isspace\': <method \'isspace\' of \'str\' objects>, \'isdecimal\': <method \'isdecimal\' of \'str\' objects>, \'isdigit\': <method \'isdigit\' of \'str\' objects>, \'isnumeric\': <method \'isnumeric\' of \'str\' objects>, \'isalpha\': <method \'isalpha\' of \'str\' objects>, \'isalnum\': <method \'isalnum\' of \'str\' objects>, \'isidentifier\': <method \'isidentifier\' of \'str\' objects>, \'isprintable\': <method \'isprintable\' of \'str\' objects>, \'zfill\': <method \'zfill\' of \'str\' objects>, \'format\': <method \'format\' of \'str\' objects>, \'format_map\': <method \'format_map\' of \'str\' objects>, \'__format__\': <method \'__format__\' of \'str\' objects>, \'maketrans\': <staticmethod(<built-in method maketrans of type object at 0x7fab9d0ed760>)>, \'__sizeof__\': <method \'__sizeof__\' of \'str\' objects>, \'__getnewargs__\': <method \'__getnewargs__\' of \'str\' objects>, \'__doc__\': "str(object=\'\') -> str\\nstr(bytes_or_buffer[, encoding[, errors]]) -> str\\n\\nCreate a new string object from the given object. If encoding or\\nerrors is specified, then the object must expose a data buffer\\nthat will be decoded using the given encoding and error handler.\\nOtherwise, returns the result of object.__str__() (if defined)\\nor repr(object).\\nencoding defaults to sys.getdefaultencoding().\\nerrors defaults to \'strict\'."}'

OTOH, since the current standard is the contrary, it should be you who elaborates why we need this exception, don't you think? 😅

2 changes: 1 addition & 1 deletion partner_identification/models/res_partner_id_number.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ def validate_id_number(self):
("close", "Expired"),
]
)
active = fields.Boolean(string="Active", default=True)
active = fields.Boolean(default=True)

@api.model
def default_get(self, fields):
Expand Down
1 change: 1 addition & 0 deletions partner_identification/readme/CONTRIBUTORS.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@
* Simone Orsi <[email protected]>
* Dennis Sluijk <[email protected]>
* Phuc Tran Thanh <[email protected]>
* Marie Lejeune <[email protected]>
9 changes: 5 additions & 4 deletions partner_identification/static/description/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils 0.15.1: http://docutils.sourceforge.net/" />
<meta name="generator" content="Docutils: http://docutils.sourceforge.net/" />
<title>Partner Identification Numbers</title>
<style type="text/css">

Expand Down Expand Up @@ -367,7 +367,7 @@ <h1 class="title">Partner Identification Numbers</h1>
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Production/Stable" src="https://img.shields.io/badge/maturity-Production%2FStable-green.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/partner-contact/tree/14.0/partner_identification"><img alt="OCA/partner-contact" src="https://img.shields.io/badge/github-OCA%2Fpartner--contact-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/partner-contact-14-0/partner-contact-14-0-partner_identification"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/134/14.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
<p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Production/Stable" src="https://img.shields.io/badge/maturity-Production%2FStable-green.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/partner-contact/tree/16.0/partner_identification"><img alt="OCA/partner-contact" src="https://img.shields.io/badge/github-OCA%2Fpartner--contact-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/partner-contact-16-0/partner-contact-16-0-partner_identification"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/134/16.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
<p>This module allows to manage all sort of identification numbers
and certificates which are assigned to a partner (company or individual)
and vary from country to country.</p>
Expand Down Expand Up @@ -451,7 +451,7 @@ <h1><a class="toc-backref" href="#id4">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/partner-contact/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/partner-contact/issues/new?body=module:%20partner_identification%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<a class="reference external" href="https://github.com/OCA/partner-contact/issues/new?body=module:%20partner_identification%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
Expand Down Expand Up @@ -479,6 +479,7 @@ <h2><a class="toc-backref" href="#id7">Contributors</a></h2>
<li>Simone Orsi &lt;<a class="reference external" href="mailto:simone.orsi&#64;camptocamp.com">simone.orsi&#64;camptocamp.com</a>&gt;</li>
<li>Dennis Sluijk &lt;<a class="reference external" href="mailto:d.sluijk&#64;onestein.nl">d.sluijk&#64;onestein.nl</a>&gt;</li>
<li>Phuc Tran Thanh &lt;<a class="reference external" href="mailto:phuc&#64;trobz.com">phuc&#64;trobz.com</a>&gt;</li>
<li>Marie Lejeune &lt;<a class="reference external" href="mailto:marie.lejeune&#64;acsone.eu">marie.lejeune&#64;acsone.eu</a>&gt;</li>
</ul>
</div>
<div class="section" id="other-credits">
Expand All @@ -495,7 +496,7 @@ <h2><a class="toc-backref" href="#id9">Maintainers</a></h2>
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.</p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/partner-contact/tree/14.0/partner_identification">OCA/partner-contact</a> project on GitHub.</p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/partner-contact/tree/16.0/partner_identification">OCA/partner-contact</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
Expand Down
2 changes: 1 addition & 1 deletion partner_identification/tests/test_res_partner.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from .fake_models import ResPartner, setup_test_model, teardown_test_model


class TestResPartner(common.SavepointCase):
class TestResPartner(common.TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ failed = not id_number.name.startswith(self.code) and True or False
<field name="model">res.partner.id_category</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Partner Identification Categories">
<tree>
<field name="name" />
<field name="code" />
</tree>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
<field name="model">res.partner.id_number</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Partner ID Numbers">
<tree>
<field name="partner_id" />
<field name="category_id" />
<field name="name" />
Expand Down