Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
9 changes: 1 addition & 8 deletions account_brand/models/account_move.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,7 @@ class AccountMove(models.Model):
_name = "account.move"
_inherit = ["account.move", "res.brand.mixin"]

brand_id = fields.Many2one(
states={
"open": [("readonly", True)],
"in_payment": [("readonly", True)],
"paid": [("readonly", True)],
"cancel": [("readonly", True)],
}
)
brand_id = fields.Many2one()

def _is_brand_required(self):
self.ensure_one()
Expand Down
16 changes: 16 additions & 0 deletions account_brand/tests/test_brand_mixin.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# Copyright 2019 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

import json

from lxml import etree

from odoo.exceptions import ValidationError
Expand Down Expand Up @@ -103,6 +105,20 @@ def test_get_view(self):
doc = etree.XML(view["arch"])
self.assertTrue(doc.xpath("//field[@name='brand_use_level']"))

def test_get_view_keeps_view_readonly(self):
view = self.env["account.move"].get_view(
view_id=self.env.ref("account.view_move_form").id,
view_type="form",
)
doc = etree.XML(view["arch"])
brand_node = doc.xpath("//field[@name='brand_id']")[0]
modifiers = json.loads(brand_node.get("modifiers"))
self.assertEqual(modifiers["readonly"], [["state", "!=", "draft"]])
self.assertEqual(
modifiers["required"],
[["brand_use_level", "=", BRAND_USE_LEVEL_REQUIRED_LEVEL]],
)

def test_reverse_move(self):
move = self.env["account.move"].create(
{
Expand Down
3 changes: 3 additions & 0 deletions brand/models/res_brand_mixin.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Copyright 2019 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
import json

from lxml import etree

from odoo import _, api, fields, models
Expand Down Expand Up @@ -57,6 +59,7 @@ def setup_modifiers(self, node, field=None):
attributes = ["invisible", "readonly", "required"]
if field is not None:
ir_ui_view.transfer_field_to_modifiers(field, modifiers, attributes)
modifiers.update(json.loads(node.get("modifiers") or "{}"))
ir_ui_view.transfer_node_to_modifiers(node, modifiers)
ir_ui_view.transfer_modifiers_to_node(modifiers, node)

Expand Down
9 changes: 1 addition & 8 deletions sale_brand/models/sale_order.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,7 @@ class SaleOrder(models.Model):
_name = "sale.order"
_inherit = ["sale.order", "res.brand.mixin"]

brand_id = fields.Many2one(
states={
"sent": [("readonly", True)],
"sale": [("readonly", True)],
"done": [("readonly", True)],
"cancel": [("readonly", True)],
}
)
brand_id = fields.Many2one()

def _prepare_invoice(self):
invoice_vals = {}
Expand Down
14 changes: 14 additions & 0 deletions sale_brand/tests/test_sale_order.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
# Copyright 2019 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

import json

from lxml import etree

from odoo.tests.common import TransactionCase


Expand Down Expand Up @@ -48,3 +52,13 @@ def test_brand_onchange_team(self):
sale.brand_id = brand.id
sale._onchange_team_id()
self.assertEqual(sale.brand_id, brand)

def test_get_view_keeps_view_readonly(self):
view = self.env["sale.order"].get_view(
view_id=self.env.ref("sale.view_order_form").id,
view_type="form",
)
doc = etree.XML(view["arch"])
brand_node = doc.xpath("//field[@name='brand_id']")[0]
modifiers = json.loads(brand_node.get("modifiers"))
self.assertEqual(modifiers["readonly"], [["state", "!=", "draft"]])
Loading