Skip to content

Commit cddeef9

Browse files
author
ilo
committed
[17.0][MIG] agreement_legal: Migration to 17.0
1 parent ff0c7b3 commit cddeef9

21 files changed

+273
-329
lines changed

agreement_legal/README.rst

+1
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ Contributors
103103
- Sandip Mangukiya <[email protected]>
104104
- Yves Goldberg <[email protected]>
105105
- Tharathip Chaweewongphan <[email protected]>
106+
- Italo LOPES <[email protected]>
106107

107108
Other credits
108109
-------------

agreement_legal/models/agreement.py

+15-41
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
# Copyright (C) 2018 - TODAY, Pavlov Media
22
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
33

4-
import ast
5-
import json as simplejson
64
from datetime import timedelta
75

86
from lxml import etree
@@ -144,9 +142,7 @@ def _get_default_parties(self):
144142
"""
145143
return deftext
146144

147-
parties = fields.Html(
148-
tracking=True, default=_get_default_parties, help="Parties of the agreement"
149-
)
145+
parties = fields.Html(default=_get_default_parties, help="Parties of the agreement")
150146
dynamic_parties = fields.Html(
151147
compute="_compute_dynamic_parties", help="Compute dynamic parties"
152148
)
@@ -233,9 +229,9 @@ def _get_default_parties(self):
233229
field_id = fields.Many2one(
234230
"ir.model.fields",
235231
string="Field",
236-
help="""Select target field from the related document model. If it is a
237-
relationship field you will be able to select a target field at the
238-
destination of the relationship.""",
232+
help="""You can select a target field from the related document model.
233+
If it is a relationship field you will be able to select a target field
234+
at the destination of the relationship.""",
239235
)
240236
sub_object_id = fields.Many2one(
241237
"ir.model",
@@ -465,44 +461,22 @@ def copy(self, default=None):
465461
def _exclude_readonly_field(self):
466462
return ["stage_id"]
467463

464+
def _get_agreement_readonly_domain(self):
465+
return "bool(readonly)"
466+
468467
@api.model
469-
def fields_view_get(
470-
self, view_id=None, view_type=False, toolbar=False, submenu=False
471-
):
472-
res = super().fields_view_get(
473-
view_id=view_id, view_type=view_type, toolbar=toolbar, submenu=submenu
474-
)
468+
def get_view(self, view_id=None, view_type=False, **options):
469+
res = super().get_view(view_id, view_type, **options)
475470
# Readonly fields
476471
if view_type == "form":
477472
doc = etree.XML(res["arch"])
478-
for node in doc.xpath("//field"):
473+
for node in doc.xpath("//field[@name][not(ancestor::field)]"):
479474
if node.attrib.get("name") in self._exclude_readonly_field():
480475
continue
481-
attrs = ast.literal_eval(node.attrib.get("attrs", "{}"))
482-
if attrs:
483-
if attrs.get("readonly"):
484-
attrs["readonly"] = ["|", ("readonly", "=", True)] + attrs[
485-
"readonly"
486-
]
487-
else:
488-
attrs["readonly"] = [("readonly", "=", True)]
489-
else:
490-
attrs["readonly"] = [("readonly", "=", True)]
491-
node.set("attrs", simplejson.dumps(attrs))
492-
modifiers = ast.literal_eval(
493-
node.attrib.get("modifiers", "{}")
494-
.replace("true", "True")
495-
.replace("false", "False")
496-
)
497-
readonly = modifiers.get("readonly")
498-
invisible = modifiers.get("invisible")
499-
required = modifiers.get("required")
500-
if isinstance(readonly, bool) and readonly:
501-
attrs["readonly"] = readonly
502-
if isinstance(invisible, bool) and invisible:
503-
attrs["invisible"] = invisible
504-
if isinstance(required, bool) and required:
505-
attrs["required"] = required
506-
node.set("modifiers", simplejson.dumps(attrs))
476+
new_r_modifier = self._get_agreement_readonly_domain()
477+
old_r_modifier = node.attrib.get("readonly")
478+
if old_r_modifier:
479+
new_r_modifier = f"({old_r_modifier}) or ({new_r_modifier})"
480+
node.attrib["readonly"] = new_r_modifier
507481
res["arch"] = etree.tostring(doc)
508482
return res

agreement_legal/readme/CONTRIBUTORS.md

+1
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@
55
- Sandip Mangukiya \<<[email protected]>\>
66
- Yves Goldberg \<<[email protected]>\>
77
- Tharathip Chaweewongphan \<<[email protected]>\>
8+
- Italo LOPES \<<[email protected]>\>

agreement_legal/static/description/index.html

+1
Original file line numberDiff line numberDiff line change
@@ -451,6 +451,7 @@ <h2><a class="toc-backref" href="#toc-entry-7">Contributors</a></h2>
451451
<li>Sandip Mangukiya &lt;<a class="reference external" href="mailto:smangukiya&#64;opensourceintegrators.com">smangukiya&#64;opensourceintegrators.com</a>&gt;</li>
452452
<li>Yves Goldberg &lt;<a class="reference external" href="mailto:yves&#64;ygol.com">yves&#64;ygol.com</a>&gt;</li>
453453
<li>Tharathip Chaweewongphan &lt;<a class="reference external" href="mailto:tharathipc&#64;ecosoft.co.th">tharathipc&#64;ecosoft.co.th</a>&gt;</li>
454+
<li>Italo LOPES &lt;<a class="reference external" href="mailto:italo.lopes&#64;camptocamp.com">italo.lopes&#64;camptocamp.com</a>&gt;</li>
454455
</ul>
455456
</div>
456457
<div class="section" id="other-credits">

agreement_legal/static/src/js/form_view.esm.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
/** @odoo-module **/
22

3-
import {registry} from "@web/core/registry";
43
import {FormController} from "@web/views/form/form_controller";
54
import {formView} from "@web/views/form/form_view";
5+
import {registry} from "@web/core/registry";
66
import {useService} from "@web/core/utils/hooks";
77

88
export class AgreementFormController extends FormController {

agreement_legal/static/src/js/kanban_view.esm.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
/** @odoo-module **/
22

3-
import {registry} from "@web/core/registry";
43
import {KanbanController} from "@web/views/kanban/kanban_controller";
54
import {kanbanView} from "@web/views/kanban/kanban_view";
5+
import {registry} from "@web/core/registry";
66
import {useService} from "@web/core/utils/hooks";
77

88
export class AgreementKanbanController extends KanbanController {
@@ -19,7 +19,7 @@ export class AgreementKanbanController extends KanbanController {
1919
export const AgreementKanbanView = {
2020
...kanbanView,
2121
Controller: AgreementKanbanController,
22-
buttonTemplate: "agreement.KanbanView.Buttons",
22+
buttonTemplate: "agreement_legal.KanbanViewButtons",
2323
};
2424

2525
registry.category("views").add("agreement_template_kanban", AgreementKanbanView);

agreement_legal/static/src/js/list_view.esm.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
/** @odoo-module **/
22

3-
import {registry} from "@web/core/registry";
43
import {ListController} from "@web/views/list/list_controller";
54
import {listView} from "@web/views/list/list_view";
5+
import {registry} from "@web/core/registry";
66
import {useService} from "@web/core/utils/hooks";
77

88
export class AgreementListController extends ListController {
@@ -19,7 +19,7 @@ export class AgreementListController extends ListController {
1919
export const AgreementListView = {
2020
...listView,
2121
Controller: AgreementListController,
22-
buttonTemplate: "agreement.ListView.Buttons",
22+
buttonTemplate: "agreement_legal.ListView",
2323
};
2424

2525
registry.category("views").add("agreement_template_tree", AgreementListView);

agreement_legal/static/src/xml/agreement.xml

-64
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
<templates>
3+
4+
<t t-inherit="web.FormView" t-inherit-mode="extension">
5+
<xpath
6+
expr="//*[@class='btn btn-secondary o_form_button_create']"
7+
position="after"
8+
>
9+
<t t-if="props.resModel === 'agreement'">
10+
<t t-call="agreement_legal.TemplateButton" />
11+
</t>
12+
</xpath>
13+
<xpath
14+
expr="//*[@class='btn btn-secondary o_form_button_create']"
15+
position="attributes"
16+
>
17+
<attribute name="t-if">canCreateTemplate</attribute>
18+
</xpath>
19+
</t>
20+
21+
</templates>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
<templates>
3+
4+
<t
5+
t-name="agreement_legal.KanbanViewButtons"
6+
t-inherit="web.KanbanView.Buttons"
7+
t-inherit-mode="primary"
8+
>
9+
<div role="toolbar" position="inside">
10+
<t t-call="agreement_legal.TemplateButton" />
11+
</div>
12+
</t>
13+
<t
14+
t-name="agreement_legal.KanbanView"
15+
t-inherit="web.KanbanView"
16+
t-inherit-mode="primary"
17+
>
18+
<xpath expr="//button[hasclass('o-kanban-button-new')]" position="attributes">
19+
<attribute name="t-if">!noCreate and canCreateTemplate</attribute>
20+
</xpath>
21+
</t>
22+
23+
24+
</templates>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
<templates>
3+
<t
4+
t-name="agreement_legal.ListView"
5+
t-inherit="web.ListView.Buttons"
6+
t-inherit-mode="primary"
7+
>
8+
<xpath expr="//div[hasclass('o_list_buttons')]" position="attributes">
9+
<attribute name="t-if">canCreateTemplate</attribute>
10+
</xpath>
11+
<xpath expr="//div[hasclass('o_list_buttons')]" position="after">
12+
<t t-call="agreement_legal.TemplateButton" />
13+
</xpath>
14+
</t>
15+
16+
17+
</templates>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
<templates>
3+
4+
<t t-name="agreement_legal.TemplateButton">
5+
<button
6+
type="button"
7+
t-if="!canCreateTemplate"
8+
t-on-click="onClickCreateFromTemplate"
9+
class="create_agreement_from_template btn btn-primary mx-1"
10+
>
11+
Create From Template
12+
</button>
13+
</t>
14+
15+
</templates>

agreement_legal/tests/test_agreement.py

+5-7
Original file line numberDiff line numberDiff line change
@@ -106,15 +106,13 @@ def test_read_group_stage_ids(self):
106106

107107
# Test fields_view_get
108108
def test_agreement_fields_view_get(self):
109-
res = self.env["agreement"].fields_view_get(
109+
res = self.env["agreement"].get_view(
110110
view_id=self.ref("agreement_legal.partner_agreement_form_view"),
111111
view_type="form",
112112
)
113113
doc = etree.XML(res["arch"])
114114
field = doc.xpath("//field[@name='partner_contact_id']")
115-
self.assertEqual(
116-
field[0].get("modifiers", ""), '{"readonly": [["readonly", "=", true]]}'
117-
)
115+
self.assertEqual(field[0].get("readonly", ""), "readonly")
118116

119117
def test_action_create_new_version(self):
120118
self.test_agreement.create_new_version()
@@ -125,10 +123,10 @@ def test_cron(self):
125123
self.agreement_type.write(
126124
{"review_user_id": self.env.user.id, "review_days": 0}
127125
)
128-
self.agreement_type.flush()
126+
self.agreement_type.flush_recordset()
129127
self.test_agreement.write({"agreement_type_id": self.agreement_type.id})
130-
self.test_agreement.flush()
131-
self.test_agreement.refresh()
128+
self.test_agreement.flush_recordset()
129+
self.test_agreement.invalidate_recordset()
132130
self.assertFalse(
133131
self.env["mail.activity"].search_count(
134132
[

0 commit comments

Comments
 (0)