PAL: Fix table data model
[csit.git] / resources / tools / presentation / specification_parser.py
index d2939bb..61ef42e 100644 (file)
@@ -135,6 +135,15 @@ class Specification:
         """
         return self._specification[u"input"]
 
+    @input.setter
+    def input(self, new_value):
+        """Setter - specification - inputs.
+
+        :param new_value: New value to be set.
+        :type new_value: dict
+        """
+        self._specification[u"input"] = new_value
+
     @property
     def builds(self):
         """Getter - builds defined in specification.
@@ -144,6 +153,27 @@ class Specification:
         """
         return self.input[u"builds"]
 
+    @builds.setter
+    def builds(self, new_value):
+        """Setter - builds defined in specification.
+
+        :param new_value: New value to be set.
+        :type new_value: dict
+        """
+        self.input[u"builds"] = new_value
+
+    def add_build(self, job, build):
+        """Add a build to the specification.
+
+        :param job: The job which run the build.
+        :param build: The build to be added.
+        :type job: str
+        :type build: dict
+        """
+        if self._specification[u"input"][u"builds"].get(job, None) is None:
+            self._specification[u"input"][u"builds"][job] = list()
+        self._specification[u"input"][u"builds"][job].append(build)
+
     @property
     def output(self):
         """Getter - specification - output formats and versions to be generated.
@@ -664,6 +694,19 @@ class Specification:
                     if isinstance(data_set, str):
                         table[u"history"][i][u"data-replacement"] = \
                             self.configuration[u"data-sets"][data_set]
+
+            if table.get(u"columns", None):
+                for i in range(len(table[u"columns"])):
+                    data_set = table[u"columns"][i].get(u"data-set", None)
+                    if isinstance(data_set, str):
+                        table[u"columns"][i][u"data-set"] = \
+                            self.configuration[u"data-sets"][data_set]
+                    data_set = table[u"columns"][i].get(
+                        u"data-replacement", None)
+                    if isinstance(data_set, str):
+                        table[u"columns"][i][u"data-replacement"] = \
+                            self.configuration[u"data-sets"][data_set]
+
         except KeyError:
             raise PresentationError(
                 f"Wrong data set used in {table.get(u'title', u'')}."