From 098f67e104d4d4f1787339e46c959652287e0279 Mon Sep 17 00:00:00 2001
From: Stefano Borini <sborini@enthought.com>
Date: Tue, 18 Jul 2017 12:08:25 +0100
Subject: [PATCH] Introduce Model base classes for enforcing interface and UI
 requirements

---
 .../csv_extractor/csv_extractor/csv_extractor_model.py    | 6 ++++--
 .../core_plugins/test_kpi/kpi_adder/kpi_adder_model.py    | 6 ++++--
 force_bdss/core_plugins/test_mco/dakota/dakota_model.py   | 6 ++++--
 force_bdss/data_sources/base_data_source_model.py         | 8 ++++++++
 force_bdss/kpi/base_kpi_calculator_model.py               | 8 ++++++++
 force_bdss/mco/base_mco_model.py                          | 8 ++++++++
 6 files changed, 36 insertions(+), 6 deletions(-)
 create mode 100644 force_bdss/data_sources/base_data_source_model.py
 create mode 100644 force_bdss/kpi/base_kpi_calculator_model.py
 create mode 100644 force_bdss/mco/base_mco_model.py

diff --git a/force_bdss/core_plugins/csv_extractor/csv_extractor/csv_extractor_model.py b/force_bdss/core_plugins/csv_extractor/csv_extractor/csv_extractor_model.py
index 220a64d..8732d1f 100644
--- a/force_bdss/core_plugins/csv_extractor/csv_extractor/csv_extractor_model.py
+++ b/force_bdss/core_plugins/csv_extractor/csv_extractor/csv_extractor_model.py
@@ -1,7 +1,9 @@
-from traits.api import HasStrictTraits, Int, String
+from traits.api import Int, String
 
+from force_bdss.data_sources.base_data_source_model import BaseDataSourceModel
 
-class CSVExtractorModel(HasStrictTraits):
+
+class CSVExtractorModel(BaseDataSourceModel):
     filename = String()
     row = Int()
     column = Int()
diff --git a/force_bdss/core_plugins/test_kpi/kpi_adder/kpi_adder_model.py b/force_bdss/core_plugins/test_kpi/kpi_adder/kpi_adder_model.py
index 159f873..f343fdf 100644
--- a/force_bdss/core_plugins/test_kpi/kpi_adder/kpi_adder_model.py
+++ b/force_bdss/core_plugins/test_kpi/kpi_adder/kpi_adder_model.py
@@ -1,7 +1,9 @@
-from traits.api import HasStrictTraits, String
+from traits.api import String
 
+from force_bdss.kpi.base_kpi_calculator_model import BaseKPICalculatorModel
 
-class KPIAdderModel(HasStrictTraits):
+
+class KPIAdderModel(BaseKPICalculatorModel):
     cuba_type_in = String()
     cuba_type_out = String()
 
diff --git a/force_bdss/core_plugins/test_mco/dakota/dakota_model.py b/force_bdss/core_plugins/test_mco/dakota/dakota_model.py
index fe7edcd..55b3794 100644
--- a/force_bdss/core_plugins/test_mco/dakota/dakota_model.py
+++ b/force_bdss/core_plugins/test_mco/dakota/dakota_model.py
@@ -1,7 +1,9 @@
-from traits.api import HasStrictTraits, List, String
+from traits.api import List, String
 
+from force_bdss.mco.base_mco_model import BaseMCOModel
 
-class DakotaModel(HasStrictTraits):
+
+class DakotaModel(BaseMCOModel):
     value_types = List(String)
 
     @classmethod
diff --git a/force_bdss/data_sources/base_data_source_model.py b/force_bdss/data_sources/base_data_source_model.py
new file mode 100644
index 0000000..b349020
--- /dev/null
+++ b/force_bdss/data_sources/base_data_source_model.py
@@ -0,0 +1,8 @@
+import abc
+import six
+
+
+class BaseDataSourceModel(six.with_metaclass(abc.ABCMeta)):
+    @abc.abstractclassmethod
+    def from_json(self, model_data):
+        pass
diff --git a/force_bdss/kpi/base_kpi_calculator_model.py b/force_bdss/kpi/base_kpi_calculator_model.py
new file mode 100644
index 0000000..eaa289b
--- /dev/null
+++ b/force_bdss/kpi/base_kpi_calculator_model.py
@@ -0,0 +1,8 @@
+import six
+import abc
+
+
+class BaseKPICalculatorModel(six.with_metaclass(abc.ABCMeta)):
+    @abc.abstractclassmethod
+    def from_json(self, model_data):
+        pass
diff --git a/force_bdss/mco/base_mco_model.py b/force_bdss/mco/base_mco_model.py
new file mode 100644
index 0000000..9c7b159
--- /dev/null
+++ b/force_bdss/mco/base_mco_model.py
@@ -0,0 +1,8 @@
+import abc
+import six
+
+
+class BaseMCOModel(six.with_metaclass(abc.ABCMeta)):
+    @abc.abstractclassmethod
+    def from_json(self, model_data):
+        pass
-- 
GitLab