diff --git a/force_bdss/core/base_model.py b/force_bdss/core/base_model.py new file mode 100644 index 0000000000000000000000000000000000000000..5f4a778c3bc48c5e284622d7795e3ed7fb283e1d --- /dev/null +++ b/force_bdss/core/base_model.py @@ -0,0 +1,14 @@ +from traits.api import ABCHasStrictTraits, Instance + +from force_bdss.core.base_factory import BaseFactory + + +class BaseModel(ABCHasStrictTraits): + """Base class for all the models of all the factories.""" + + #: A reference to the creating factory, so that we can + #: retrieve it as the originating factory. + factory = Instance(BaseFactory, visible=False, transient=True) + + def __init__(self, factory, *args, **kwargs): + super(BaseModel, self).__init__(factory=factory, *args, **kwargs) diff --git a/force_bdss/data_sources/base_data_source_model.py b/force_bdss/data_sources/base_data_source_model.py index a5df537c9faf7a7c8768dfc7d9e4c5b7a788ad97..7f49502bbd311a5a396199d54171984d2747a3c5 100644 --- a/force_bdss/data_sources/base_data_source_model.py +++ b/force_bdss/data_sources/base_data_source_model.py @@ -1,13 +1,14 @@ from traits.api import ( - ABCHasStrictTraits, Instance, List, Event, on_trait_change + Instance, List, Event, on_trait_change ) +from force_bdss.core.base_model import BaseModel from force_bdss.core.input_slot_info import InputSlotInfo from force_bdss.core.output_slot_info import OutputSlotInfo from force_bdss.data_sources.i_data_source_factory import IDataSourceFactory -class BaseDataSourceModel(ABCHasStrictTraits): +class BaseDataSourceModel(BaseModel): """Base class for the factory specific DataSource models. This model will also provide, through traits/traitsui magic the View that will appear in the workflow manager UI. @@ -38,10 +39,6 @@ class BaseDataSourceModel(ABCHasStrictTraits): #: this and adapt the visual entries. changes_slots = Event() - def __init__(self, factory, *args, **kwargs): - self.factory = factory - super(BaseDataSourceModel, self).__init__(*args, **kwargs) - def __getstate__(self): state = super(BaseDataSourceModel, self).__getstate__() state["input_slot_info"] = [ diff --git a/force_bdss/mco/base_mco_model.py b/force_bdss/mco/base_mco_model.py index b39f88ef7f7d9e503759c6428dfc2df6b97e0346..b85a2704680a66a1e97024e1ddedc5b066260519 100644 --- a/force_bdss/mco/base_mco_model.py +++ b/force_bdss/mco/base_mco_model.py @@ -1,11 +1,12 @@ -from traits.api import ABCHasStrictTraits, Instance, List +from traits.api import Instance, List +from force_bdss.core.base_model import BaseModel from force_bdss.core.kpi_specification import KPISpecification from .parameters.base_mco_parameter import BaseMCOParameter from .i_mco_factory import IMCOFactory -class BaseMCOModel(ABCHasStrictTraits): +class BaseMCOModel(BaseModel): """Base class for the specific MCO models. This model will also provide, through traits/traitsui magic the View that will appear in the workflow manager UI. @@ -14,16 +15,10 @@ class BaseMCOModel(ABCHasStrictTraits): """ #: A reference to the creating factory, so that we can #: retrieve it as the originating factory. - factory = Instance(IMCOFactory, - visible=False, - transient=True) + factory = Instance(IMCOFactory, visible=False, transient=True) #: A list of the parameters for the MCO parameters = List(BaseMCOParameter, visible=False) #: A list of KPI specification objects and their objective. kpis = List(KPISpecification, visible=False) - - def __init__(self, factory, *args, **kwargs): - self.factory = factory - super(BaseMCOModel, self).__init__(*args, **kwargs) diff --git a/force_bdss/mco/parameters/base_mco_parameter.py b/force_bdss/mco/parameters/base_mco_parameter.py index c073629a5278421c792dd2cdf94b58b932311f6d..084c7a946aa92caf4daed999368ad6caba23e8fc 100644 --- a/force_bdss/mco/parameters/base_mco_parameter.py +++ b/force_bdss/mco/parameters/base_mco_parameter.py @@ -1,11 +1,12 @@ -from traits.api import HasStrictTraits, String, Instance +from traits.api import String, Instance +from force_bdss.core.base_model import BaseModel from force_bdss.mco.parameters.base_mco_parameter_factory import \ BaseMCOParameterFactory from force_bdss.local_traits import Identifier -class BaseMCOParameter(HasStrictTraits): +class BaseMCOParameter(BaseModel): """The base class of all MCO Parameter models. Must be reimplemented by specific classes handling the specific parameter that MCOs understand. @@ -19,7 +20,3 @@ class BaseMCOParameter(HasStrictTraits): #: A CUBA key describing the type of the parameter type = String(visible=False) - - def __init__(self, factory, *args, **kwargs): - self.factory = factory - super(BaseMCOParameter, self).__init__(*args, **kwargs) diff --git a/force_bdss/notification_listeners/base_notification_listener_model.py b/force_bdss/notification_listeners/base_notification_listener_model.py index ef7e58b044cc31e1be9bacd3772c8b2658cf901a..ac5d687571f17f79cdee1721c4353f0d4f9b9e9a 100644 --- a/force_bdss/notification_listeners/base_notification_listener_model.py +++ b/force_bdss/notification_listeners/base_notification_listener_model.py @@ -1,10 +1,11 @@ -from traits.api import ABCHasStrictTraits, Instance +from traits.api import Instance +from force_bdss.core.base_model import BaseModel from force_bdss.notification_listeners.i_notification_listener_factory import \ INotificationListenerFactory -class BaseNotificationListenerModel(ABCHasStrictTraits): +class BaseNotificationListenerModel(BaseModel): """Base class for the specific Notification Listener models. This model will also provide, through traits/traitsui magic the View that will appear in the workflow manager UI. @@ -16,7 +17,3 @@ class BaseNotificationListenerModel(ABCHasStrictTraits): factory = Instance(INotificationListenerFactory, visible=False, transient=True) - - def __init__(self, factory, *args, **kwargs): - self.factory = factory - super(BaseNotificationListenerModel, self).__init__(*args, **kwargs)