details: https://code.tryton.org/tryton/commit/b01882991ab9
branch: default
user: Cédric Krier <[email protected]>
date: Mon Sep 21 15:24:43 2026 +0200
description:
Use editable instead of of readonly for account template override
diffstat:
modules/account/account.py | 16
++--
modules/account/tax.py | 32
++++-----
modules/account_asset/account.py | 6 +-
modules/account_deposit/account.py | 6 +-
modules/account_eu/account.py | 12
++-
modules/account_export_winbooks/account.py | 8 +-
modules/account_fr_chorus/tests/scenario_account_fr_chorus_invoice.rst | 2 +-
modules/edocument_unece/account.py | 12
++-
modules/sale_advance_payment/account.py | 6 +-
modules/sale_gift_card/account.py | 6 +-
10 files changed, 54 insertions(+), 52 deletions(-)
diffs (370 lines):
diff -r f8597177e8ea -r b01882991ab9 modules/account/account.py
--- a/modules/account/account.py Mon Sep 21 10:39:12 2026 +0200
+++ b/modules/account/account.py Mon Sep 21 15:24:43 2026 +0200
@@ -125,8 +125,8 @@
field = getattr(Mixin, fname)
if not isinstance(field, fields.Field):
continue
- field.states['readonly'] = (
- Bool(Eval('template', -1)) & ~Eval('template_override', False))
+ field.states['ediable'] = (
+ ~Eval('template', None) | Eval('template_override', False))
return Mixin
@@ -216,8 +216,9 @@
parent = fields.Many2One(
'account.account.type', 'Parent', ondelete='RESTRICT',
states={
- 'readonly': (Bool(Eval('template', -1))
- & ~Eval('template_override', False)),
+ 'editable': (
+ ~Eval('template', None)
+ | Eval('template_override', False)),
},
domain=[
('company', '=', Eval('company', -1)),
@@ -629,7 +630,7 @@
or isinstance(field, fields.Function)):
continue
field.states['editable'] = (
- Eval('template', None) & ~Eval('template_override', False))
+ ~Eval('template', None) | Eval('template_override', False))
return Mixin
@@ -827,7 +828,7 @@
ModelSQL, ModelView):
__name__ = 'account.account'
_states = {
- 'editable': Eval('template', None) & ~Eval('template_override', False),
+ 'editable': ~Eval('template', None) | Eval('template_override', False),
}
company = fields.Many2One('company.company', 'Company', required=True,
ondelete="RESTRICT")
@@ -954,7 +955,8 @@
for date in [cls.start_date, cls.end_date]:
date.states = {
'editable': (
- Eval('template', -1) & ~Eval('template_override', False)),
+ ~Eval('template', None)
+ | Eval('template_override', False)),
}
cls._order.insert(0, ('code', 'ASC'))
cls._order.insert(1, ('name', 'ASC'))
diff -r f8597177e8ea -r b01882991ab9 modules/account/tax.py
--- a/modules/account/tax.py Mon Sep 21 10:39:12 2026 +0200
+++ b/modules/account/tax.py Mon Sep 21 15:24:43 2026 +0200
@@ -125,8 +125,7 @@
ContextCompanyMixin, ActivePeriodMixin, tree(), ModelSQL, ModelView):
__name__ = 'account.tax.code'
_states = {
- 'readonly': (Bool(Eval('template', -1))
- & ~Eval('template_override', False)),
+ 'editable': ~Eval('template', None) | Eval('template_override', False),
}
name = fields.Char('Name', required=True, states=_states)
code = fields.Char('Code', states=_states)
@@ -166,8 +165,9 @@
Index(t, (Coalesce(t.code, ''), Index.Similarity())))
for date in [cls.start_date, cls.end_date]:
date.states = {
- 'readonly': (Bool(Eval('template', -1))
- & ~Eval('template_override', False)),
+ 'editable': (
+ ~Eval('template', None)
+ | Eval('template_override', False)),
}
cls._order.insert(0, ('code', 'ASC'))
@@ -358,8 +358,7 @@
class TaxCodeLine(ModelSQL, ModelView):
__name__ = 'account.tax.code.line'
_states = {
- 'readonly': (Bool(Eval('template', -1))
- & ~Eval('template_override', False)),
+ 'editable': ~Eval('template', None) | Eval('template_override', False),
}
code = fields.Many2One('account.tax.code', "Code", required=True)
@@ -745,8 +744,7 @@
none: tax = none"""
__name__ = 'account.tax'
_states = {
- 'readonly': (Bool(Eval('template', -1))
- & ~Eval('template_override', False)),
+ 'editable': ~Eval('template', None) | Eval('template_override', False),
}
name = fields.Char('Name', required=True, states=_states)
description = fields.Char('Description', required=True, translate=True,
@@ -754,7 +752,7 @@
group = fields.Many2One('account.tax.group', 'Group',
states={
'invisible': Bool(Eval('parent')),
- 'readonly': _states['readonly'],
+ 'editable': _states['editable'],
})
start_date = fields.Date("Start Date", states=_states)
end_date = fields.Date("End Date", states=_states)
@@ -763,14 +761,14 @@
states={
'required': Eval('type') == 'fixed',
'invisible': Eval('type') != 'fixed',
- 'readonly': _states['readonly'],
+ 'editable': _states['editable'],
}, help='In company\'s currency.')
rate = fields.Numeric(
"Rate", digits=(None, 10),
states={
'required': Eval('type') == 'percentage',
'invisible': Eval('type') != 'percentage',
- 'readonly': _states['readonly'],
+ 'editable': _states['editable'],
})
type = fields.Selection([
('percentage', 'Percentage'),
@@ -780,7 +778,7 @@
update_unit_price = fields.Boolean('Update Unit Price',
states={
'invisible': Bool(Eval('parent')),
- 'readonly': _states['readonly'],
+ 'editable': _states['editable'],
},
help=('If checked then the unit price for further tax computation will'
' be modified by this tax.'))
@@ -802,7 +800,7 @@
('closed', '!=', True),
],
states={
- 'readonly': _states['readonly'],
+ 'editable': _states['editable'],
'required': Eval('type') != 'none',
})
credit_note_account = fields.Many2One('account.account',
@@ -813,7 +811,7 @@
('closed', '!=', True),
],
states={
- 'readonly': _states['readonly'],
+ 'editable': _states['editable'],
'required': Eval('type') != 'none',
})
legal_notice = fields.Text("Legal Notice", translate=True,
@@ -1500,8 +1498,7 @@
class TaxRule(ModelSQL, ModelView):
__name__ = 'account.tax.rule'
_states = {
- 'readonly': (Bool(Eval('template', -1))
- & ~Eval('template_override', False)),
+ 'editable': ~Eval('template', None) | Eval('template_override', False),
}
name = fields.Char('Name', required=True, states=_states)
kind = fields.Selection(KINDS, 'Kind', required=True, states=_states)
@@ -1695,8 +1692,7 @@
class TaxRuleLine(sequence_ordered(), ModelSQL, ModelView, MatchMixin):
__name__ = 'account.tax.rule.line'
_states = {
- 'readonly': (Bool(Eval('template', -1))
- & ~Eval('template_override', False)),
+ 'editable': ~Eval('template', None) | Eval('template_override', False),
}
rule = fields.Many2One(
'account.tax.rule', "Rule",
diff -r f8597177e8ea -r b01882991ab9 modules/account_asset/account.py
--- a/modules/account_asset/account.py Mon Sep 21 10:39:12 2026 +0200
+++ b/modules/account_asset/account.py Mon Sep 21 15:24:43 2026 +0200
@@ -5,7 +5,7 @@
from trytond.model.exceptions import AccessError
from trytond.modules.company.model import CompanyValueMixin
from trytond.pool import Pool, PoolMeta
-from trytond.pyson import Bool, Eval, Id, If
+from trytond.pyson import Eval, Id, If
asset_bymonthday = fields.Selection([
('1', "First"),
@@ -146,8 +146,8 @@
field = getattr(Mixin, fname)
if not isinstance(field, fields.Field):
continue
- field.states['readonly'] = (
- Bool(Eval('template', -1)) & ~Eval('template_override', False))
+ field.states['editable'] = (
+ ~Eval('template', None) | Eval('template_override', False))
return Mixin
diff -r f8597177e8ea -r b01882991ab9 modules/account_deposit/account.py
--- a/modules/account_deposit/account.py Mon Sep 21 10:39:12 2026 +0200
+++ b/modules/account_deposit/account.py Mon Sep 21 15:24:43 2026 +0200
@@ -2,7 +2,7 @@
# this repository contains the full copyright notices and license terms.
from trytond.model import fields
from trytond.pool import PoolMeta
-from trytond.pyson import Bool, Eval, If
+from trytond.pyson import Eval, If
def AccountTypeMixin(template=False):
@@ -24,8 +24,8 @@
field = getattr(Mixin, fname)
if not isinstance(field, fields.Field):
continue
- field.states['readonly'] = (
- Bool(Eval('template', -1)) & ~Eval('template_override', False))
+ field.states['editable'] = (
+ ~Eval('template', None) | Eval('template_override', False))
return Mixin
diff -r f8597177e8ea -r b01882991ab9 modules/account_eu/account.py
--- a/modules/account_eu/account.py Mon Sep 21 10:39:12 2026 +0200
+++ b/modules/account_eu/account.py Mon Sep 21 15:24:43 2026 +0200
@@ -7,7 +7,7 @@
from trytond.modules.account.exceptions import FiscalYearNotFoundError
from trytond.modules.currency.fields import Monetary
from trytond.pool import Pool, PoolMeta
-from trytond.pyson import Bool, Eval
+from trytond.pyson import Eval
from trytond.transaction import Transaction
VATEX_CODES = [
@@ -200,14 +200,16 @@
ec_sales_list_code = fields.Char("EC Sales List Code",
states={
- 'readonly': (Bool(Eval('template', -1))
- & ~Eval('template_override', False)),
+ 'editable': (
+ ~Eval('template', None)
+ | Eval('template_override', False)),
})
vatex_code = fields.Selection(
[(None, "")] + VATEX_CODES, "Tax Exemption Code", sort=False,
states={
- 'readonly': (Bool(Eval('template', -1))
- & ~Eval('template_override', False)),
+ 'editable': (
+ ~Eval('template', None)
+ | Eval('template_override', False)),
},
help="The reason why the amount is exempted from VAT.")
diff -r f8597177e8ea -r b01882991ab9 modules/account_export_winbooks/account.py
--- a/modules/account_export_winbooks/account.py Mon Sep 21 10:39:12
2026 +0200
+++ b/modules/account_export_winbooks/account.py Mon Sep 21 15:24:43
2026 +0200
@@ -13,7 +13,7 @@
from trytond.model import Exclude, fields
from trytond.pool import Pool, PoolMeta
-from trytond.pyson import Bool, Eval
+from trytond.pyson import Eval
_ACT_FIELDNAMES = [
'DOCTYPE', 'DBKCODE', 'DBKTYPE', 'DOCNUMBER', 'DOCORDER', 'OPCODE',
@@ -168,9 +168,9 @@
winbooks_code = fields.Char(
"WinBooks Code", size=10,
states={
- 'readonly': (
- Bool(Eval('template', -1)
- & ~Eval('template_override', False))),
+ 'editable': (
+ ~Eval('template', None)
+ | Eval('template_override', False)),
})
diff -r f8597177e8ea -r b01882991ab9
modules/account_fr_chorus/tests/scenario_account_fr_chorus_invoice.rst
--- a/modules/account_fr_chorus/tests/scenario_account_fr_chorus_invoice.rst
Mon Sep 21 10:39:12 2026 +0200
+++ b/modules/account_fr_chorus/tests/scenario_account_fr_chorus_invoice.rst
Mon Sep 21 15:24:43 2026 +0200
@@ -108,7 +108,7 @@
>>> Invoice.write([invoice], {
... 'number': str(uuid.uuid4())[:20],
... 'invoice_date': today,
- ... }, config._context)
+ ... }, {**config._context, '_check_access': False})
>>> invoice.click('post')
>>> invoice.state
'posted'
diff -r f8597177e8ea -r b01882991ab9 modules/edocument_unece/account.py
--- a/modules/edocument_unece/account.py Mon Sep 21 10:39:12 2026 +0200
+++ b/modules/edocument_unece/account.py Mon Sep 21 15:24:43 2026 +0200
@@ -2,7 +2,7 @@
# this repository contains the full copyright notices and license terms.
from trytond.model import fields
from trytond.pool import Pool, PoolMeta
-from trytond.pyson import Bool, Eval
+from trytond.pyson import Eval
class Tax(metaclass=PoolMeta):
@@ -66,8 +66,9 @@
('VAT', "Value added tax"),
], "UNECE Code",
states={
- 'readonly': (Bool(Eval('template', -1))
- & ~Eval('template_override', False)),
+ 'editable': (
+ ~Eval('template', None)
+ | Eval('template_override', False)),
},
help="Standard code of "
"the United Nations Economic Commission for Europe.")
@@ -99,8 +100,9 @@
('Z', "Zero rated goods"),
], "UNECE Category Code",
states={
- 'readonly': (Bool(Eval('template', -1))
- & ~Eval('template_override', False)),
+ 'editable': (
+ ~Eval('template', None)
+ | Eval('template_override', False)),
},
help="Standard code of "
"the United Nations Economic Commission for Europe.")
diff -r f8597177e8ea -r b01882991ab9 modules/sale_advance_payment/account.py
--- a/modules/sale_advance_payment/account.py Mon Sep 21 10:39:12 2026 +0200
+++ b/modules/sale_advance_payment/account.py Mon Sep 21 15:24:43 2026 +0200
@@ -3,7 +3,7 @@
from trytond.model import fields
from trytond.pool import Pool, PoolMeta
-from trytond.pyson import Bool, Eval, If
+from trytond.pyson import Eval, If
def AccountTypeMixin(template=False):
@@ -25,8 +25,8 @@
field = getattr(Mixin, fname)
if not isinstance(field, fields.Field):
continue
- field.states['readonly'] = (
- Bool(Eval('template', -1)) & ~Eval('template_override', False))
+ field.states['editable'] = (
+ ~Eval('template', None) | Eval('template_override', False))
return Mixin
diff -r f8597177e8ea -r b01882991ab9 modules/sale_gift_card/account.py
--- a/modules/sale_gift_card/account.py Mon Sep 21 10:39:12 2026 +0200
+++ b/modules/sale_gift_card/account.py Mon Sep 21 15:24:43 2026 +0200
@@ -3,7 +3,7 @@
from trytond.model import ModelSQL, fields
from trytond.modules.company.model import CompanyValueMixin
from trytond.pool import Pool, PoolMeta
-from trytond.pyson import Bool, Eval, If
+from trytond.pyson import Eval, If
class Configuration(metaclass=PoolMeta):
@@ -69,8 +69,8 @@
field = getattr(Mixin, fname)
if not isinstance(field, fields.Field):
continue
- field.states['readonly'] = (
- Bool(Eval('template', -1)) & ~Eval('template_override', False))
+ field.states['editable'] = (
+ ~Eval('template', None) | Eval('template_override', False))
return Mixin