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

View File

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

View File

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

View File

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

View File

@ -26,6 +26,8 @@
<field name="name">Allow changeset change access for changeset users</field> <field name="name">Allow changeset change access for changeset users</field>
<field name="model_id" ref="model_record_changeset_change" /> <field name="model_id" ref="model_record_changeset_change" />
<field name="groups" eval="[(4, ref('group_changeset_user'))]" /> <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> </record>
</odoo> </odoo>

View File

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

View File

@ -8,8 +8,8 @@ from odoo import fields
from odoo.exceptions import UserError from odoo.exceptions import UserError
from odoo.tests.common import TransactionCase from odoo.tests.common import TransactionCase
from .common import ChangesetTestCommon
from ..models.base import disable_changeset from ..models.base import disable_changeset
from .common import ChangesetTestCommon
class TestChangesetFlow(ChangesetTestCommon, TransactionCase): class TestChangesetFlow(ChangesetTestCommon, TransactionCase):
@ -120,9 +120,9 @@ class TestChangesetFlow(ChangesetTestCommon, TransactionCase):
"""No changeset created when both sides have an empty value""" """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 # we have to ensure that even if we write '' to a False field, we won't
# write a changeset # write a changeset
self.partner.with_context( self.partner.with_context(__no_changeset=disable_changeset).write(
__no_changeset=disable_changeset {"street": False}
).write({"street": False}) )
self.partner._compute_changeset_ids() self.partner._compute_changeset_ids()
self.partner._compute_count_pending_changesets() self.partner._compute_count_pending_changesets()
self.assertEqual(self.partner.count_pending_changesets, 0) self.assertEqual(self.partner.count_pending_changesets, 0)
@ -410,14 +410,16 @@ class TestChangesetFlow(ChangesetTestCommon, TransactionCase):
def test_new_changeset_expression(self): def test_new_changeset_expression(self):
"""Test that rules can be conditional""" """Test that rules can be conditional"""
self.env["changeset.field.rule"].search([ self.env["changeset.field.rule"].search(
[
("field_id", "=", self.field_street.id), ("field_id", "=", self.field_street.id),
]).expression = "object.street != 'street X'" ]
).expression = "object.street != 'street X'"
self.partner.street = "street Y" self.partner.street = "street Y"
self.partner.refresh() self.partner.refresh()
self.assertEqual(self.partner.street, 'street Y') self.assertEqual(self.partner.street, "street Y")
self.assertFalse(self.partner.changeset_ids) self.assertFalse(self.partner.changeset_ids)
self.partner.street = "street Z" self.partner.street = "street Z"
self.partner.refresh() self.partner.refresh()
self.assertTrue(self.partner.changeset_ids) 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 odoo.tests.common import Form, TransactionCase
from .common import ChangesetTestCommon
from ..models.base import disable_changeset from ..models.base import disable_changeset
from .common import ChangesetTestCommon
class TestChangesetOrigin(ChangesetTestCommon, TransactionCase): class TestChangesetOrigin(ChangesetTestCommon, TransactionCase):
@ -45,18 +45,18 @@ class TestChangesetOrigin(ChangesetTestCommon, TransactionCase):
self.assertEqual(self.partner.name, "X") self.assertEqual(self.partner.name, "X")
self.assertEqual(change.origin_value_char, "X") self.assertEqual(change.origin_value_char, "X")
self.assertEqual(change.origin_value_display, "X") self.assertEqual(change.origin_value_display, "X")
with Form(self.partner.with_context( with Form(
__no_changeset=disable_changeset self.partner.with_context(__no_changeset=disable_changeset)
)) as partner_form: ) as partner_form:
partner_form.name = "A" partner_form.name = "A"
self.assertEqual(change.origin_value_char, "A") self.assertEqual(change.origin_value_char, "A")
self.assertEqual(change.origin_value_display, "A") self.assertEqual(change.origin_value_display, "A")
change.apply() change.apply()
self.assertEqual(change.origin_value_char, "A") self.assertEqual(change.origin_value_char, "A")
self.assertEqual(change.origin_value_display, "A") self.assertEqual(change.origin_value_display, "A")
with Form(self.partner.with_context( with Form(
__no_changeset=disable_changeset self.partner.with_context(__no_changeset=disable_changeset)
)) as partner_form: ) as partner_form:
partner_form.name = "B" partner_form.name = "B"
self.assertEqual(change.origin_value_char, "A") self.assertEqual(change.origin_value_char, "A")
self.assertEqual(change.origin_value_display, "A") self.assertEqual(change.origin_value_display, "A")
@ -75,18 +75,18 @@ class TestChangesetOrigin(ChangesetTestCommon, TransactionCase):
self.assertEqual(self.partner.name, "X") self.assertEqual(self.partner.name, "X")
self.assertEqual(change.origin_value_char, "X") self.assertEqual(change.origin_value_char, "X")
self.assertEqual(change.origin_value_display, "X") self.assertEqual(change.origin_value_display, "X")
with Form(self.partner.with_context( with Form(
__no_changeset=disable_changeset self.partner.with_context(__no_changeset=disable_changeset)
)) as partner_form: ) as partner_form:
partner_form.name = "A" partner_form.name = "A"
self.assertEqual(change.origin_value_char, "A") self.assertEqual(change.origin_value_char, "A")
self.assertEqual(change.origin_value_display, "A") self.assertEqual(change.origin_value_display, "A")
change.cancel() change.cancel()
self.assertEqual(change.origin_value_char, "A") self.assertEqual(change.origin_value_char, "A")
self.assertEqual(change.origin_value_display, "A") self.assertEqual(change.origin_value_display, "A")
with Form(self.partner.with_context( with Form(
__no_changeset=disable_changeset self.partner.with_context(__no_changeset=disable_changeset)
)) as partner_form: ) as partner_form:
partner_form.name = "B" partner_form.name = "B"
self.assertEqual(change.origin_value_char, "A") self.assertEqual(change.origin_value_char, "A")
self.assertEqual(change.origin_value_display, "A") self.assertEqual(change.origin_value_display, "A")
@ -101,16 +101,16 @@ class TestChangesetOrigin(ChangesetTestCommon, TransactionCase):
change = changeset.change_ids change = changeset.change_ids
self.assertEqual(self.partner.name, "X") self.assertEqual(self.partner.name, "X")
self.assertFalse(change.old_value_char) self.assertFalse(change.old_value_char)
with Form(self.partner.with_context( with Form(
__no_changeset=disable_changeset self.partner.with_context(__no_changeset=disable_changeset)
)) as partner_form: ) as partner_form:
partner_form.name = "A" partner_form.name = "A"
self.assertFalse(change.old_value_char) self.assertFalse(change.old_value_char)
change.apply() change.apply()
self.assertEqual(change.old_value_char, "A") self.assertEqual(change.old_value_char, "A")
with Form(self.partner.with_context( with Form(
__no_changeset=disable_changeset self.partner.with_context(__no_changeset=disable_changeset)
)) as partner_form: ) as partner_form:
partner_form.name = "B" partner_form.name = "B"
self.assertEqual(change.old_value_char, "A") self.assertEqual(change.old_value_char, "A")
self.assertEqual(self.partner.count_pending_changesets, 0) self.assertEqual(self.partner.count_pending_changesets, 0)
@ -124,16 +124,16 @@ class TestChangesetOrigin(ChangesetTestCommon, TransactionCase):
change = changeset.change_ids change = changeset.change_ids
self.assertEqual(self.partner.name, "X") self.assertEqual(self.partner.name, "X")
self.assertFalse(change.old_value_char) self.assertFalse(change.old_value_char)
with Form(self.partner.with_context( with Form(
__no_changeset=disable_changeset self.partner.with_context(__no_changeset=disable_changeset)
)) as partner_form: ) as partner_form:
partner_form.name = "A" partner_form.name = "A"
self.assertFalse(change.old_value_char) self.assertFalse(change.old_value_char)
change.cancel() change.cancel()
self.assertEqual(change.old_value_char, "A") self.assertEqual(change.old_value_char, "A")
with Form(self.partner.with_context( with Form(
__no_changeset=disable_changeset self.partner.with_context(__no_changeset=disable_changeset)
)) as partner_form: ) as partner_form:
partner_form.name = "B" partner_form.name = "B"
self.assertEqual(change.old_value_char, "A") self.assertEqual(change.old_value_char, "A")
self.assertEqual(self.partner.count_pending_changesets, 0) self.assertEqual(self.partner.count_pending_changesets, 0)

View File

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