Skip to content

Commit 55e527c

Browse files
[MIG] document_page_approval: Migration to 19.0
1 parent 99ff85a commit 55e527c

6 files changed

Lines changed: 63 additions & 27 deletions

File tree

document_page_approval/__manifest__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
{
55
"name": "Document Page Approval",
6-
"version": "18.0.1.1.1",
6+
"version": "19.0.1.1.1",
77
"author": "Savoir-faire Linux, Odoo Community Association (OCA)",
88
"website": "https://github.com/OCA/knowledge",
99
"license": "AGPL-3",

document_page_approval/models/document_page.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ def can_user_approve_this_page(self, user):
109109
if not self.approver_group_ids:
110110
return True
111111
# to approve, user must belong to any of the approver groups
112-
return len(user.groups_id & self.approver_group_ids) > 0
112+
return len(user.group_ids & self.approver_group_ids) > 0
113113

114114
def _compute_has_changes_pending_approval(self):
115115
history = self.env["document.page.history"]

document_page_approval/models/document_page_history.py

Lines changed: 51 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
from odoo import fields, models
66
from odoo.exceptions import UserError
77
from odoo.tools.misc import clean_context
8-
from odoo.tools.translate import _
98

109

1110
class DocumentPageHistory(models.Model):
@@ -37,18 +36,22 @@ class DocumentPageHistory(models.Model):
3736

3837
am_i_owner = fields.Boolean(compute="_compute_am_i_owner")
3938

40-
am_i_approver = fields.Boolean(related="page_id.am_i_approver", related_sudo=False)
39+
am_i_approver = fields.Boolean(
40+
related="page_id.am_i_approver", related_sudo=False
41+
)
4142

4243
page_url = fields.Text(compute="_compute_page_url", string="URL")
4344

4445
def action_draft(self):
4546
"""Set a change request as draft"""
4647
for rec in self:
4748
if not rec.state == "cancelled":
48-
raise UserError(_("You need to cancel it before reopening."))
49+
raise UserError(
50+
self.env._("You need to cancel it before reopening.")
51+
)
4952
if not (rec.am_i_owner or rec.am_i_approver):
5053
raise UserError(
51-
_(
54+
self.env._(
5255
"You are not authorized to do this.\r\n"
5356
"Only owners or approvers can reopen Change Requests."
5457
)
@@ -65,10 +68,12 @@ def action_to_approve(self):
6568
)
6669
for rec in self:
6770
if rec.state != "draft":
68-
raise UserError(_("Can't approve pages in '%s' state.") % rec.state)
71+
raise UserError(
72+
self.env._("Can't approve pages in '%s' state.", rec.state)
73+
)
6974
if not (rec.am_i_owner or rec.am_i_approver):
7075
raise UserError(
71-
_(
76+
self.env._(
7277
"You are not authorized to do this.\r\n"
7378
"Only owners or approvers can request approval."
7479
)
@@ -78,9 +83,14 @@ def action_to_approve(self):
7883
rec.write({"state": "to approve"})
7984
guids = [g.id for g in rec.page_id.approver_group_ids]
8085
users = self.env["res.users"].search(
81-
[("groups_id", "in", guids), ("groups_id", "in", approver_gid.id)]
86+
[
87+
("group_ids", "in", guids),
88+
("group_ids", "in", approver_gid.id),
89+
]
90+
)
91+
rec.message_subscribe(
92+
partner_ids=users.mapped("partner_id").ids
8293
)
83-
rec.message_subscribe(partner_ids=users.mapped("partner_id").ids)
8494
# pylint: disable=W8121
8595
rec.with_context(
8696
clean_context(self.env.context)
@@ -93,24 +103,29 @@ def action_approve(self):
93103
"""Set a change request as approved."""
94104
for rec in self:
95105
if rec.state not in ["draft", "to approve"]:
96-
raise UserError(_("Can't approve page in '%s' state.") % rec.state)
106+
raise UserError(
107+
self.env._(
108+
"Can't approve page in '%s' state.", rec.state
109+
)
110+
)
97111
if not rec.am_i_approver:
98112
raise UserError(
99-
_(
113+
self.env._(
100114
"You are not authorized to do this.\r\n"
101-
"Only approvers with these groups can approve this: {}"
102-
).format(
115+
"Only approvers with these groups can approve"
116+
" this: %s",
103117
", ".join(
104-
[g.display_name for g in rec.page_id.approver_group_ids]
105-
)
118+
g.display_name
119+
for g in rec.page_id.approver_group_ids
120+
),
106121
)
107122
)
108123

109124
# Update state
110125
rec.write(
111126
{
112127
"state": "approved",
113-
"approved_date": fields.datetime.now(),
128+
"approved_date": fields.Datetime.now(),
114129
"approved_uid": self.env.uid,
115130
}
116131
)
@@ -119,13 +134,18 @@ def action_approve(self):
119134
# Notify state change
120135
rec.message_post(
121136
subtype_xmlid="mail.mt_comment",
122-
body=_("Change request has been approved by %s.")
123-
% (self.env.user.name),
137+
body=self.env._(
138+
"Change request has been approved by %s.",
139+
self.env.user.name,
140+
),
124141
)
125142
# Notify followers a new version is available
126143
rec.page_id.message_post(
127144
subtype_xmlid="mail.mt_comment",
128-
body=_("New version of the document %s approved.") % (rec.page_id.name),
145+
body=self.env._(
146+
"New version of the document %s approved.",
147+
rec.page_id.name,
148+
),
129149
)
130150

131151
def action_cancel(self):
@@ -134,8 +154,12 @@ def action_cancel(self):
134154
for rec in self:
135155
rec.message_post(
136156
subtype_xmlid="mail.mt_comment",
137-
body=_("Change request <b>%(name)s</b> has been cancelled by %(user)s.")
138-
% ({"name": rec.display_name, "user": self.env.user.name}),
157+
body=self.env._(
158+
"Change request <b>%(name)s</b> has been"
159+
" cancelled by %(user)s.",
160+
name=rec.display_name,
161+
user=self.env.user.name,
162+
),
139163
)
140164

141165
def action_cancel_and_draft(self):
@@ -166,10 +190,15 @@ def _compute_diff(self):
166190
"""Shows a diff between this version and the previous version"""
167191
history = self.env["document.page.history"]
168192
for rec in self:
169-
domain = [("page_id", "=", rec.page_id.id), ("state", "=", "approved")]
193+
domain = [
194+
("page_id", "=", rec.page_id.id),
195+
("state", "=", "approved"),
196+
]
170197
if rec.approved_date:
171198
domain.append(("approved_date", "<", rec.approved_date))
172-
prev = history.search(domain, limit=1, order="approved_date DESC")
199+
prev = history.search(
200+
domain, limit=1, order="approved_date DESC"
201+
)
173202
if prev:
174203
rec.diff = self._get_diff(prev.id, rec.id)
175204
else:

document_page_approval/security/document_page_security.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<odoo>
33
<record id="group_document_approver_user" model="res.groups">
44
<field name="name">Approver</field>
5-
<field name="category_id" ref="document_knowledge.module_category_knowledge" />
5+
<field name="privilege_id" ref="document_knowledge.res_groups_privilege_knowledge" />
66
<field
77
name="implied_ids"
88
eval="[(4, ref('document_page.group_document_editor'))]"

document_page_approval/tests/test_document_page_approval.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def setUpClass(cls):
2828
cls.approver_gid = cls.env.ref(
2929
"document_page_approval.group_document_approver_user"
3030
)
31-
cls.user2.write({"groups_id": [Command.link(cls.approver_gid.id)]})
31+
cls.user2.write({"group_ids": [Command.link(cls.approver_gid.id)]})
3232

3333
# Create category and page that require approval
3434
cls.category2 = cls.page_obj.create(
@@ -167,7 +167,7 @@ def test_can_user_approve_this_page(self):
167167
)
168168

169169
# Remove approval group from user2
170-
self.user2.write({"groups_id": [(3, self.approver_gid.id)]})
170+
self.user2.write({"group_ids": [(3, self.approver_gid.id)]})
171171
self.assertFalse(
172172
self.page2.with_user(self.user2).can_user_approve_this_page(self.user2)
173173
)
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
[project]
2+
name = "odoo-addon-document_page_approval"
3+
dynamic = ["version"]
4+
5+
[build-system]
6+
requires = ["whool"]
7+
build-backend = "whool.buildapi"

0 commit comments

Comments
 (0)