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: