changeset 39e12a249fb0 in modules/product:default
details: https://hg.tryton.org/modules/product?cmd=changeset;node=39e12a249fb0
description:
Set all fields readonly for inactive records
issue3747
review295061011
diffstat:
product.py | 55 +++++++++++++++++++++++--------------------------------
uom.py | 25 ++++++++-----------------
2 files changed, 31 insertions(+), 49 deletions(-)
diffs (158 lines):
diff -r a2a17a55554e -r 39e12a249fb0 product.py
--- a/product.py Thu Mar 05 00:27:49 2020 +0100
+++ b/product.py Tue Mar 17 20:08:12 2020 +0100
@@ -28,10 +28,6 @@
__all__ = ['price_digits', 'TemplateFunction']
logger = logging.getLogger(__name__)
-STATES = {
- 'readonly': ~Eval('active', True),
- }
-DEPENDS = ['active']
TYPES = [
('goods', 'Goods'),
('assets', 'Assets'),
@@ -49,41 +45,36 @@
DeactivableMixin, ModelSQL, ModelView, CompanyMultiValueMixin):
"Product Template"
__name__ = "product.template"
- name = fields.Char('Name', size=None, required=True, translate=True,
- select=True, states=STATES, depends=DEPENDS)
- type = fields.Selection(TYPES, 'Type', required=True, states=STATES,
- depends=DEPENDS)
+ name = fields.Char(
+ "Name", size=None, required=True, translate=True, select=True)
+ type = fields.Selection(TYPES, "Type", required=True)
consumable = fields.Boolean('Consumable',
states={
- 'readonly': ~Eval('active', True),
'invisible': Eval('type', 'goods') != 'goods',
},
- depends=['active', 'type'])
+ depends=['type'])
list_price = fields.MultiValue(fields.Numeric(
- "List Price", required=True, digits=price_digits,
- states=STATES, depends=DEPENDS))
+ "List Price", required=True, digits=price_digits))
list_prices = fields.One2Many(
'product.list_price', 'template', "List Prices")
cost_price = fields.Function(fields.Numeric(
"Cost Price", digits=price_digits), 'get_cost_price')
cost_price_method = fields.MultiValue(fields.Selection(
- COST_PRICE_METHODS, "Cost Price Method", required=True,
- states=STATES, depends=DEPENDS))
+ COST_PRICE_METHODS, "Cost Price Method", required=True))
cost_price_methods = fields.One2Many(
'product.cost_price_method', 'template', "Cost Price Methods")
- default_uom = fields.Many2One('product.uom', 'Default UOM', required=True,
- states=STATES, depends=DEPENDS)
+ default_uom = fields.Many2One('product.uom', "Default UOM", required=True)
default_uom_category = fields.Function(
fields.Many2One('product.uom.category', 'Default UOM Category'),
'on_change_with_default_uom_category',
searcher='search_default_uom_category')
- categories = fields.Many2Many('product.template-product.category',
- 'template', 'category', 'Categories', states=STATES, depends=DEPENDS)
+ categories = fields.Many2Many(
+ 'product.template-product.category', 'template', 'category',
+ "Categories")
categories_all = fields.Many2Many(
'product.template-product.category.all',
'template', 'category', "Categories", readonly=True)
- products = fields.One2Many('product.product', 'template', 'Variants',
- states=STATES, depends=DEPENDS)
+ products = fields.One2Many('product.product', 'template', "Variants")
@classmethod
def __register__(cls, module_name):
@@ -206,26 +197,26 @@
"Product Variant"
__name__ = "product.product"
_order_name = 'rec_name'
- template = fields.Many2One('product.template', 'Product Template',
- required=True, ondelete='CASCADE', select=True, states=STATES,
- depends=DEPENDS, search_context={'default_products': False})
+ template = fields.Many2One(
+ 'product.template', "Product Template",
+ required=True, ondelete='CASCADE', select=True,
+ search_context={'default_products': False})
code_readonly = fields.Function(fields.Boolean('Code Readonly'),
'get_code_readonly')
- code = fields.Char("Code", size=None, select=True,
+ code = fields.Char(
+ "Code", size=None, select=True,
states={
- 'readonly': STATES['readonly'] | Eval('code_readonly', False),
+ 'readonly': Eval('code_readonly', False),
},
- depends=DEPENDS + ['code_readonly'])
- identifiers = fields.One2Many('product.identifier', 'product',
- "Identifiers", states=STATES, depends=DEPENDS,
+ depends=['code_readonly'])
+ identifiers = fields.One2Many(
+ 'product.identifier', 'product', "Identifiers",
help="Add other identifiers to the variant.")
cost_price = fields.MultiValue(fields.Numeric(
- "Cost Price", required=True, digits=price_digits,
- states=STATES, depends=DEPENDS))
+ "Cost Price", required=True, digits=price_digits))
cost_prices = fields.One2Many(
'product.cost_price', 'product', "Cost Prices")
- description = fields.Text("Description", translate=True, states=STATES,
- depends=DEPENDS)
+ description = fields.Text("Description", translate=True)
list_price_uom = fields.Function(fields.Numeric('List Price',
digits=price_digits), 'get_price_uom')
cost_price_uom = fields.Function(fields.Numeric('Cost Price',
diff -r a2a17a55554e -r 39e12a249fb0 uom.py
--- a/uom.py Thu Mar 05 00:27:49 2020 +0100
+++ b/uom.py Tue Mar 17 20:08:12 2020 +0100
@@ -15,11 +15,6 @@
__all__ = ['uom_conversion_digits']
-STATES = {
- 'readonly': ~Eval('active', True),
- }
-DEPENDS = ['active']
-
uom_conversion_digits = (
config.getint('product', 'uom_conversion_decimal', default=12),) * 2
@@ -39,28 +34,24 @@
class Uom(DeactivableMixin, ModelSQL, ModelView):
'Unit of measure'
__name__ = 'product.uom'
- name = fields.Char('Name', size=None, required=True, states=STATES,
- translate=True, depends=DEPENDS)
- symbol = fields.Char('Symbol', size=10, required=True, states=STATES,
- translate=True, depends=DEPENDS)
- category = fields.Many2One('product.uom.category', 'Category',
- required=True, ondelete='RESTRICT', states=STATES, depends=DEPENDS)
+ name = fields.Char("Name", size=None, required=True, translate=True)
+ symbol = fields.Char("Symbol", size=10, required=True, translate=True)
+ category = fields.Many2One(
+ 'product.uom.category', "Category", required=True, ondelete='RESTRICT')
rate = fields.Float(
"Rate", digits=uom_conversion_digits, required=True,
- states=STATES, depends=DEPENDS,
help=('The coefficient for the formula:\n'
'1 (base unit) = coef (this unit)'))
factor = fields.Float(
"Factor", digits=uom_conversion_digits, required=True,
- states=STATES, depends=DEPENDS,
help=('The coefficient for the formula:\n'
'coef (base unit) = 1 (this unit)'))
- rounding = fields.Float('Rounding Precision',
- digits=(12, Eval('digits', 12)),
- required=True, states=STATES, depends=DEPENDS + ['digits'],
+ rounding = fields.Float(
+ "Rounding Precision", digits=(12, Eval('digits', 12)), required=True,
domain=[
('rounding', '>', 0),
- ])
+ ],
+ depends=['digits'])
digits = fields.Integer('Display Digits', required=True)
@classmethod