Skip to content

Commit 2d96a47

Browse files
committed
[MIG] auth_partner: Migration to 18.0
1 parent 86ca83a commit 2d96a47

14 files changed

Lines changed: 69 additions & 80 deletions

auth_partner/__manifest__.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
{
77
"name": "Partner Auth",
88
"summary": "Implements the base features for a authenticable partner",
9-
"version": "16.0.1.0.0",
9+
"version": "18.0.1.0.0",
1010
"license": "AGPL-3",
1111
"author": "Akretion,Odoo Community Association (OCA)",
1212
"website": "https://github.com/OCA/rest-framework",
@@ -19,7 +19,6 @@
1919
"data": [
2020
"security/res_group.xml",
2121
"security/ir.model.access.csv",
22-
"security/ir_rule.xml",
2322
"data/email_data.xml",
2423
"wizards/wizard_auth_partner_force_set_password_view.xml",
2524
"wizards/wizard_auth_partner_reset_password_view.xml",

auth_partner/data/email_data.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<field name="partner_to">{{object.partner_id.id}}</field>
88
<field name="model_id" ref="model_auth_partner" />
99
<field name="auto_delete" eval="True" />
10-
<field name="lang">${object.partner_id.lang}</field>
10+
<field name="lang">{{object.partner_id.lang}}</field>
1111
<field name="body_html" type="html">
1212
<div>
1313
Hi <t t-out="object.partner_id.name or ''" />

auth_partner/i18n/auth_partner.pot

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -397,7 +397,7 @@ msgstr ""
397397
#. odoo-python
398398
#: code:addons/auth_partner/wizards/wizard_auth_partner_force_set_password.py:0
399399
#, python-format
400-
msgid "No active_id in context"
400+
msgid "No id in context"
401401
msgstr ""
402402

403403
#. module: auth_partner

auth_partner/i18n/it.po

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -435,8 +435,8 @@ msgstr "N° reset inviati in attesa"
435435
#. odoo-python
436436
#: code:addons/auth_partner/wizards/wizard_auth_partner_force_set_password.py:0
437437
#, python-format
438-
msgid "No active_id in context"
439-
msgstr "Manca active_id nel context"
438+
msgid "No id in context"
439+
msgstr "Manca id nel context"
440440

441441
#. module: auth_partner
442442
#. odoo-python

auth_partner/models/auth_directory.py

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
import jwt
1010

11-
from odoo import _, fields, models
11+
from odoo import fields, models
1212
from odoo.exceptions import UserError
1313

1414
from odoo.addons.queue_job.delay import chain
@@ -86,18 +86,17 @@ def action_regenerate_secret_key(self):
8686
self.secret_key = self._generate_default_secret_key()
8787

8888
def _compute_count_partner(self):
89-
data = self.env["auth.partner"].read_group(
89+
data = self.env["auth.partner"]._read_group(
9090
[
9191
("directory_id", "in", self.ids),
9292
],
9393
["directory_id"],
94-
groupby=["directory_id"],
95-
lazy=False,
94+
aggregates=["__count"],
9695
)
97-
res = {item["directory_id"][0]: item["__count"] for item in data}
96+
mapped_data = {auth_partner.id: count for auth_partner, count in data}
9897

9998
for record in self:
100-
record.count_partner = res.get(record.id, 0)
99+
record.count_partner = mapped_data.get(record.id, 0)
101100

102101
def _get_template(self, type_or_template):
103102
if isinstance(type_or_template, str):
@@ -127,7 +126,8 @@ def _send_mail_background(
127126
return job.delay()
128127

129128
def _send_mail(self, type_or_template, auth_partner, **context):
130-
"""Send an email to the auth_partner using the template defined in the directory"""
129+
"""Send an email to the auth_partner using the template defined
130+
in the directory"""
131131
self.ensure_one()
132132
auth_partner.ensure_one()
133133
context = self._prepare_mail_context(context)
@@ -138,7 +138,9 @@ def _send_mail_impl(self, type_or_template, auth_partner, **context):
138138
template = self.sudo()._get_template(type_or_template)
139139
if not template:
140140
raise UserError(
141-
_("No email template defined for %(template)s in %(directory)s")
141+
self.env._(
142+
"No email template defined for %(template)s in %(directory)s"
143+
)
142144
% {"template": type_or_template, "directory": self.name}
143145
)
144146
template.sudo().with_context(**context).send_mail(
@@ -176,10 +178,10 @@ def _decode_token(
176178
token, algorithms=["HS256"], options={"verify_signature": False}
177179
)
178180
except jwt.PyJWTError as e:
179-
raise UserError(_("Invalid Token")) from e
181+
raise UserError(self.env._("Invalid Token")) from e
180182
probable_auth_partner = self.env["auth.partner"].browse(obj["ap"])
181183
if not probable_auth_partner:
182-
raise UserError(_("Invalid Token"))
184+
raise UserError(self.env._("Invalid Token"))
183185
key += key_salt(probable_auth_partner)
184186

185187
try:
@@ -191,7 +193,7 @@ def _decode_token(
191193
algorithms=["HS256"],
192194
)
193195
except jwt.PyJWTError as e:
194-
raise UserError(_("Invalid Token")) from e
196+
raise UserError(self.env._("Invalid Token")) from e
195197

196198
auth_partner = self.env["auth.partner"].browse(obj["ap"])
197199

@@ -200,7 +202,7 @@ def _decode_token(
200202
or not auth_partner
201203
or auth_partner.directory_id != self
202204
):
203-
raise UserError(_("Invalid token"))
205+
raise UserError(self.env._("Invalid token"))
204206

205207
return auth_partner
206208

auth_partner/models/auth_partner.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
import passlib
1010

11-
from odoo import _, api, fields, models
11+
from odoo import api, fields, models
1212
from odoo.exceptions import AccessDenied
1313

1414
# please read passlib great documentation
@@ -67,7 +67,8 @@ class AuthPartner(models.Model):
6767
)
6868

6969
mail_verified = fields.Boolean(
70-
help="This field is set to True when the user has clicked on the link sent by email"
70+
help="This field is set to True when the user has clicked on the link "
71+
"sent by email"
7172
)
7273

7374
_sql_constraints = [
@@ -96,7 +97,7 @@ def _check_no_empty(self, login, password):
9697
raise AccessDenied()
9798

9899
def _get_hashed_password(self, directory, login):
99-
self.flush()
100+
self.flush_model()
100101
self.env.cr.execute(
101102
"""
102103
SELECT id, COALESCE(encrypted_password, '')
@@ -170,11 +171,11 @@ def _login(self, directory, login, password, **kwargs):
170171
auth_partner = None
171172

172173
if not auth_partner or not auth_partner.partner_id.active:
173-
raise AccessDenied(_("Invalid Login or Password"))
174+
raise AccessDenied(self.env._("Invalid Login or Password"))
174175

175176
if directory.sudo().force_verified_email and not auth_partner.mail_verified:
176177
raise AccessDenied(
177-
_(
178+
self.env._(
178179
"Email address not validated. Validate your email address by "
179180
"clicking on the link in the email sent to you or request a new "
180181
"password. "
@@ -210,7 +211,9 @@ def _get_impersonate_action(self, token, **kwargs):
210211
def impersonate(self):
211212
self.ensure_one()
212213
if self.env.user not in self.impersonating_user_ids:
213-
raise AccessDenied(_("You are not allowed to impersonate this user"))
214+
raise AccessDenied(
215+
self.env._("You are not allowed to impersonate this user")
216+
)
214217

215218
token = self._generate_impersonating_token()
216219
return self._get_impersonate_action(token)

auth_partner/models/res_partner.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,17 @@ class ResPartner(models.Model):
1515
)
1616

1717
def _compute_auth_partner_count(self):
18-
data = self.env["auth.partner"].read_group(
18+
data = self.env["auth.partner"]._read_group(
1919
[
2020
("partner_id", "in", self.ids),
2121
],
2222
["partner_id"],
23-
groupby=["partner_id"],
24-
lazy=False,
23+
aggregates=["__count"],
2524
)
26-
res = {item["partner_id"][0]: item["__count"] for item in data}
25+
mapped_data = {auth_partner.id: count for auth_partner, count in data}
2726

2827
for record in self:
29-
record.auth_partner_count = res.get(record.id, 0)
28+
record.auth_partner_count = mapped_data.get(record.id, 0)
3029

3130
def _get_auth_partner_for_directory(self, directory):
3231
return self.sudo().auth_partner_ids.filtered(

auth_partner/security/ir_rule.xml

Lines changed: 0 additions & 26 deletions
This file was deleted.

auth_partner/tests/common.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,13 @@ class CommonTestAuthPartner(TransactionCase, MockEmail):
1414
@classmethod
1515
def setUpClass(cls):
1616
super().setUpClass()
17-
cls.env = cls.env(context=dict(cls.env.context, queue_job__no_delay=True))
17+
cls.env = cls.env(
18+
context=dict(
19+
cls.env.context,
20+
queue_job__no_delay=True,
21+
tracking_disable=True,
22+
)
23+
)
1824

1925
cls.partner = cls.env.ref("auth_partner.res_partner_auth_demo")
2026
cls.other_partner = cls.partner.copy(
@@ -42,14 +48,15 @@ def new_mails(self):
4248
class MailsProxy(mailmail.__class__):
4349
__slots__ = ["_prev", "__weakref__"]
4450

45-
def __init__(self):
51+
def __init__(self, env, ids, prefetch_ids):
52+
super().__init__(env, ids, prefetch_ids)
4653
object.__setattr__(self, "_prev", mailmail.search([]))
4754

4855
def __getattribute__(self, name: str) -> Any:
4956
mails = mailmail.search([]) - object.__getattribute__(self, "_prev")
5057
return object.__getattribute__(mails, name)
5158

52-
new_mails = MailsProxy()
59+
new_mails = MailsProxy(self.env, [], [])
5360
with self.mock_mail_gateway():
5461
yield new_mails
5562

auth_partner/views/auth_directory_view.xml

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
<record id="auth_directory_view_tree" model="ir.ui.view">
44
<field name="model">auth.directory</field>
55
<field name="arch" type="xml">
6-
<tree>
6+
<list>
77
<field name="name" />
8-
</tree>
8+
</list>
99
</field>
1010
</record>
1111

@@ -28,10 +28,14 @@
2828
name="%(auth_partner_action)d"
2929
icon="fa-user"
3030
type="action"
31-
context="{'default_directory_id': active_id, 'search_default_directory_id': active_id}"
31+
context="{'default_directory_id': id, 'search_default_directory_id': id}"
3232
>
33-
<field name="count_partner" />
34-
Account
33+
<div class="o_field_widget o_stat_info">
34+
<span class="o_stat_value">
35+
<field name="count_partner" />
36+
</span>
37+
<span class="o_stat_text">Accounts</span>
38+
</div>
3539
</button>
3640
</div>
3741
<div class="oe_title">
@@ -77,7 +81,7 @@
7781
<field name="name">Directory</field>
7882
<field name="type">ir.actions.act_window</field>
7983
<field name="res_model">auth.directory</field>
80-
<field name="view_mode">tree,form</field>
84+
<field name="view_mode">list,form</field>
8185
<field name="search_view_id" ref="auth_directory_view_search" />
8286
<field name="domain">[]</field>
8387
<field name="context">{}</field>

0 commit comments

Comments
 (0)