changeset 994ac10456b7 in modules/stock_forecast:default
details: 
https://hg.tryton.org/modules/stock_forecast?cmd=changeset;node=994ac10456b7
description:
        Remove global variables used for field definitions

        They give the false idea that they can be extended or reused which is 
not the
        case.

        issue8967
        review252851012
diffstat:

 forecast.py |  48 ++++++++++++++++++++++++++----------------------
 1 files changed, 26 insertions(+), 22 deletions(-)

diffs (99 lines):

diff -r aa519e77b463 -r 994ac10456b7 forecast.py
--- a/forecast.py       Sat Dec 28 18:16:28 2019 +0100
+++ b/forecast.py       Sat Jan 25 20:18:49 2020 +0100
@@ -20,23 +20,16 @@
 
 from .exceptions import ForecastValidationError
 
-__all__ = ['Forecast', 'ForecastLine', 'ForecastLineMove',
-    'ForecastCompleteAsk', 'ForecastCompleteChoose', 'ForecastComplete']
-
-STATES = {
-    'readonly': Not(Equal(Eval('state'), 'draft')),
-}
-DEPENDS = ['state']
-FORECAST_STATES = [
-    ('draft', 'Draft'),
-    ('done', 'Done'),
-    ('cancel', 'Cancel'),
-    ]
-
 
 class Forecast(Workflow, ModelSQL, ModelView):
     "Stock Forecast"
     __name__ = "stock.forecast"
+
+    _states = {
+        'readonly': Not(Equal(Eval('state'), 'draft')),
+    }
+    _depends = ['state']
+
     warehouse = fields.Many2One(
         'stock.location', 'Location', required=True,
         domain=[('type', '=', 'warehouse')], states={
@@ -46,30 +39,35 @@
         depends=['state'])
     destination = fields.Many2One(
         'stock.location', 'Destination', required=True,
-        domain=[('type', 'in', ['customer', 'production'])], states=STATES,
-        depends=DEPENDS)
+        domain=[('type', 'in', ['customer', 'production'])], states=_states,
+        depends=_depends)
     from_date = fields.Date(
         "From Date", required=True,
         domain=[('from_date', '<=', Eval('to_date'))],
-        states=STATES, depends=DEPENDS + ['to_date'])
+        states=_states, depends=_depends + ['to_date'])
     to_date = fields.Date(
         "To Date", required=True,
         domain=[('to_date', '>=', Eval('from_date'))],
-        states=STATES, depends=DEPENDS + ['from_date'])
+        states=_states, depends=_depends + ['from_date'])
     lines = fields.One2Many(
-        'stock.forecast.line', 'forecast', 'Lines', states=STATES,
-        depends=DEPENDS)
+        'stock.forecast.line', 'forecast', 'Lines', states=_states,
+        depends=_depends)
     company = fields.Many2One(
         'company.company', 'Company', required=True, states={
             'readonly': Or(Not(Equal(Eval('state'), 'draft')),
                 Bool(Eval('lines', [0]))),
             },
         depends=['state'])
-    state = fields.Selection(
-        FORECAST_STATES, 'State', readonly=True, select=True)
+    state = fields.Selection([
+            ('draft', "Draft"),
+            ('done', "Done"),
+            ('cancel', "Cancel"),
+            ], "State", readonly=True, select=True)
     active = fields.Function(fields.Boolean('Active'),
         'get_active', searcher='search_active')
 
+    del _states, _depends
+
     @classmethod
     def __setup__(cls):
         super(Forecast, cls).__setup__()
@@ -293,7 +291,7 @@
             },
         depends=['forecast_state'])
     forecast_state = fields.Function(
-        fields.Selection(FORECAST_STATES, 'Forecast State'),
+        fields.Selection('get_forecast_states', 'Forecast State'),
         'on_change_with_forecast_state')
     quantity_executed = fields.Function(fields.Float('Quantity Executed',
             digits=(16, Eval('unit_digits', 2)), depends=['unit_digits']),
@@ -349,6 +347,12 @@
     def get_unit_digits(self, name):
         return self.product.default_uom.digits
 
+    @classmethod
+    def get_forecast_states(cls):
+        pool = Pool()
+        Forecast = pool.get('stock.forecast')
+        return Forecast.fields_get(['state'])['state']['selection']
+
     @fields.depends('forecast', '_parent_forecast.state')
     def on_change_with_forecast_state(self, name=None):
         if self.forecast:

Reply via email to