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

Reply via email to