[IMP] base_changeset: black, isort, prettier

pull/2380/head
Stefan Rijnhart 2021-12-23 11:36:41 +01:00 committed by Miquel Raïch
parent 47fbaeda11
commit d77f2a803e
9 changed files with 84 additions and 73 deletions

View File

@ -88,10 +88,11 @@ class Base(models.AbstractModel):
{
field_name: value
for field_name, value in vals.items()
if field_name in self._fields and
self._fields[field_name].required
if field_name in self._fields
and self._fields[field_name].required
and isinstance(
self._fields[field_name], fields.Many2one,
self._fields[field_name],
fields.Many2one,
)
},
this,
@ -99,13 +100,12 @@ class Base(models.AbstractModel):
vals,
)
local_vals = {
key: value
for key, value in local_vals.items()
if vals[key] != value
key: value for key, value in local_vals.items() if vals[key] != value
}
if local_vals:
this.with_context(
__no_changeset=disable_changeset, tracking_disable=True,
__no_changeset=disable_changeset,
tracking_disable=True,
).write(local_vals)
return result

View File

@ -44,11 +44,14 @@ class ChangesetFieldRule(models.Model):
"Available variables: object, user",
)
validator_group_ids = fields.Many2many(
'res.groups', 'changeset_field_rule_validator_group_rel',
string='Validator Groups', default=lambda self: self.env.ref(
'base_changeset.group_changeset_user',
"res.groups",
"changeset_field_rule_validator_group_rel",
string="Validator Groups",
default=lambda self: self.env.ref(
"base_changeset.group_changeset_user",
raise_if_not_found=False,
) or self.env['res.groups'],
)
or self.env["res.groups"],
)
def init(self):
@ -89,7 +92,7 @@ class ChangesetFieldRule(models.Model):
def _selection_action(self):
return [("auto", "Auto"), ("validate", "Validate"), ("never", "Never")]
@api.constrains('expression')
@api.constrains("expression")
def _check_expression(self):
for this in self:
this._evaluate_expression(self.env[this.model_id.model].new({}))
@ -156,7 +159,7 @@ class ChangesetFieldRule(models.Model):
return rules
def _evaluate_expression(self, record):
""" Evaluate expression if set """
"""Evaluate expression if set"""
self.ensure_one()
return not self.expression or tools.safe_eval.safe_eval(
self.expression, {"object": record, "user": self.env.user}

View File

@ -144,9 +144,10 @@ class RecordChangeset(models.Model):
# overwrite with null value for new records
write_values[field] = (
# but create some default for required text fields
record._fields[field].required and
record._fields[field].type in ('char', 'text') and
'/' or record._fields[field].null(record)
record._fields[field].required
and record._fields[field].type in ("char", "text")
and "/"
or record._fields[field].null(record)
)
changes.append(change)
if changes:

View File

@ -225,8 +225,7 @@ class RecordChangesetChange(models.Model):
changes_ok = self.browse()
key = attrgetter("changeset_id")
for changeset, changes in groupby(
self.with_context(__no_changeset=disable_changeset).sorted(key=key),
key=key
self.with_context(__no_changeset=disable_changeset).sorted(key=key), key=key
):
values = {}
for change in changes:
@ -247,9 +246,9 @@ class RecordChangesetChange(models.Model):
self._check_previous_changesets(changeset)
changeset.record_id.with_context(
__no_changeset=disable_changeset
).write(values)
changeset.record_id.with_context(__no_changeset=disable_changeset).write(
values
)
changes_ok._finalize_change_approval()

View File

@ -26,6 +26,8 @@
<field name="name">Allow changeset change access for changeset users</field>
<field name="model_id" ref="model_record_changeset_change" />
<field name="groups" eval="[(4, ref('group_changeset_user'))]" />
<field name="domain_force">[('rule_id.validator_group_ids', 'in', user.groups_id.ids)]</field>
<field
name="domain_force"
>[('rule_id.validator_group_ids', 'in', user.groups_id.ids)]</field>
</record>
</odoo>

View File

@ -5,8 +5,8 @@
from odoo import fields
from odoo.tests.common import TransactionCase
from .common import ChangesetTestCommon
from ..models.base import disable_changeset
from .common import ChangesetTestCommon
class TestChangesetFieldType(ChangesetTestCommon, TransactionCase):

View File

@ -8,8 +8,8 @@ from odoo import fields
from odoo.exceptions import UserError
from odoo.tests.common import TransactionCase
from .common import ChangesetTestCommon
from ..models.base import disable_changeset
from .common import ChangesetTestCommon
class TestChangesetFlow(ChangesetTestCommon, TransactionCase):
@ -76,7 +76,7 @@ class TestChangesetFlow(ChangesetTestCommon, TransactionCase):
self.assertEqual(self.partner.street2, "street2 X")
def test_create_new_changeset(self):
""" Create a new partner with a changeset """
"""Create a new partner with a changeset"""
new = (
self.env["res.partner"]
.with_context(
@ -120,9 +120,9 @@ class TestChangesetFlow(ChangesetTestCommon, TransactionCase):
"""No changeset created when both sides have an empty value"""
# we have to ensure that even if we write '' to a False field, we won't
# write a changeset
self.partner.with_context(
__no_changeset=disable_changeset
).write({"street": False})
self.partner.with_context(__no_changeset=disable_changeset).write(
{"street": False}
)
self.partner._compute_changeset_ids()
self.partner._compute_count_pending_changesets()
self.assertEqual(self.partner.count_pending_changesets, 0)
@ -409,15 +409,17 @@ class TestChangesetFlow(ChangesetTestCommon, TransactionCase):
self.assertIn(bank.acc_number, bank.changeset_ids.name_get()[0][1])
def test_new_changeset_expression(self):
""" Test that rules can be conditional """
self.env["changeset.field.rule"].search([
("field_id", "=", self.field_street.id),
]).expression = "object.street != 'street X'"
"""Test that rules can be conditional"""
self.env["changeset.field.rule"].search(
[
("field_id", "=", self.field_street.id),
]
).expression = "object.street != 'street X'"
self.partner.street = "street Y"
self.partner.refresh()
self.assertEqual(self.partner.street, 'street Y')
self.assertEqual(self.partner.street, "street Y")
self.assertFalse(self.partner.changeset_ids)
self.partner.street = "street Z"
self.partner.refresh()
self.assertTrue(self.partner.changeset_ids)
self.assertEqual(self.partner.street, 'street Y')
self.assertEqual(self.partner.street, "street Y")

View File

@ -4,8 +4,8 @@
from odoo.tests.common import Form, TransactionCase
from .common import ChangesetTestCommon
from ..models.base import disable_changeset
from .common import ChangesetTestCommon
class TestChangesetOrigin(ChangesetTestCommon, TransactionCase):
@ -45,18 +45,18 @@ class TestChangesetOrigin(ChangesetTestCommon, TransactionCase):
self.assertEqual(self.partner.name, "X")
self.assertEqual(change.origin_value_char, "X")
self.assertEqual(change.origin_value_display, "X")
with Form(self.partner.with_context(
__no_changeset=disable_changeset
)) as partner_form:
with Form(
self.partner.with_context(__no_changeset=disable_changeset)
) as partner_form:
partner_form.name = "A"
self.assertEqual(change.origin_value_char, "A")
self.assertEqual(change.origin_value_display, "A")
change.apply()
self.assertEqual(change.origin_value_char, "A")
self.assertEqual(change.origin_value_display, "A")
with Form(self.partner.with_context(
__no_changeset=disable_changeset
)) as partner_form:
with Form(
self.partner.with_context(__no_changeset=disable_changeset)
) as partner_form:
partner_form.name = "B"
self.assertEqual(change.origin_value_char, "A")
self.assertEqual(change.origin_value_display, "A")
@ -75,18 +75,18 @@ class TestChangesetOrigin(ChangesetTestCommon, TransactionCase):
self.assertEqual(self.partner.name, "X")
self.assertEqual(change.origin_value_char, "X")
self.assertEqual(change.origin_value_display, "X")
with Form(self.partner.with_context(
__no_changeset=disable_changeset
)) as partner_form:
with Form(
self.partner.with_context(__no_changeset=disable_changeset)
) as partner_form:
partner_form.name = "A"
self.assertEqual(change.origin_value_char, "A")
self.assertEqual(change.origin_value_display, "A")
change.cancel()
self.assertEqual(change.origin_value_char, "A")
self.assertEqual(change.origin_value_display, "A")
with Form(self.partner.with_context(
__no_changeset=disable_changeset
)) as partner_form:
with Form(
self.partner.with_context(__no_changeset=disable_changeset)
) as partner_form:
partner_form.name = "B"
self.assertEqual(change.origin_value_char, "A")
self.assertEqual(change.origin_value_display, "A")
@ -101,16 +101,16 @@ class TestChangesetOrigin(ChangesetTestCommon, TransactionCase):
change = changeset.change_ids
self.assertEqual(self.partner.name, "X")
self.assertFalse(change.old_value_char)
with Form(self.partner.with_context(
__no_changeset=disable_changeset
)) as partner_form:
with Form(
self.partner.with_context(__no_changeset=disable_changeset)
) as partner_form:
partner_form.name = "A"
self.assertFalse(change.old_value_char)
change.apply()
self.assertEqual(change.old_value_char, "A")
with Form(self.partner.with_context(
__no_changeset=disable_changeset
)) as partner_form:
with Form(
self.partner.with_context(__no_changeset=disable_changeset)
) as partner_form:
partner_form.name = "B"
self.assertEqual(change.old_value_char, "A")
self.assertEqual(self.partner.count_pending_changesets, 0)
@ -124,16 +124,16 @@ class TestChangesetOrigin(ChangesetTestCommon, TransactionCase):
change = changeset.change_ids
self.assertEqual(self.partner.name, "X")
self.assertFalse(change.old_value_char)
with Form(self.partner.with_context(
__no_changeset=disable_changeset
)) as partner_form:
with Form(
self.partner.with_context(__no_changeset=disable_changeset)
) as partner_form:
partner_form.name = "A"
self.assertFalse(change.old_value_char)
change.cancel()
self.assertEqual(change.old_value_char, "A")
with Form(self.partner.with_context(
__no_changeset=disable_changeset
)) as partner_form:
with Form(
self.partner.with_context(__no_changeset=disable_changeset)
) as partner_form:
partner_form.name = "B"
self.assertEqual(change.old_value_char, "A")
self.assertEqual(self.partner.count_pending_changesets, 0)

View File

@ -7,27 +7,31 @@ from .common import ChangesetTestCommon
class TestChangesetFlow(ChangesetTestCommon, TransactionCase):
""" Check that changesets don't leak information """
"""Check that changesets don't leak information"""
def setUp(self):
super().setUp()
self.env['changeset.field.rule'].search([]).unlink()
self.rule = self.env['changeset.field.rule'].create({
'model_id': self.env.ref('base.model_ir_config_parameter').id,
'field_id': self.env.ref('base.field_ir_config_parameter__key').id,
'action': 'auto',
})
self.env["changeset.field.rule"].search([]).unlink()
self.rule = self.env["changeset.field.rule"].create(
{
"model_id": self.env.ref("base.model_ir_config_parameter").id,
"field_id": self.env.ref("base.field_ir_config_parameter__key").id,
"action": "auto",
}
)
def test_change_unprivileged_user(self):
"""
Check that unprivileged users can't see changesets they didn't create
"""
user = self.env.ref('base.user_demo')
self.env['ir.config_parameter'].with_context(
user = self.env.ref("base.user_demo")
self.env["ir.config_parameter"].with_context(
test_record_changeset=True,
).set_param('hello', 'world')
changeset = self.env['record.changeset.change'].search([
('rule_id', '=', self.rule.id),
])
).set_param("hello", "world")
changeset = self.env["record.changeset.change"].search(
[
("rule_id", "=", self.rule.id),
]
)
self.assertTrue(changeset)
self.assertFalse(changeset.sudo(user).search([('id', '=', changeset.id)]))
self.assertFalse(changeset.sudo(user).search([("id", "=", changeset.id)]))