bugfix: fail to generate APIs document
[releng.git] / utils / test / testapi / opnfv_testapi / resources / scenario_models.py
index f89a124..c6da76b 100644 (file)
@@ -1,13 +1,28 @@
-import models
+from opnfv_testapi.resources import models
 from opnfv_testapi.tornado_swagger import swagger
 
 
+def list_default(value):
+    return value if value else list()
+
+
+def dict_default(value):
+    return value if value else dict()
+
+
 @swagger.model()
 class ScenarioTI(models.ModelBase):
     def __init__(self, date=None, status='silver'):
         self.date = date
         self.status = status
 
+    def __eq__(self, other):
+        return (self.date == other.date and
+                self.status == other.status)
+
+    def __ne__(self, other):
+        return not self.__eq__(other)
+
 
 @swagger.model()
 class ScenarioScore(models.ModelBase):
@@ -15,6 +30,13 @@ class ScenarioScore(models.ModelBase):
         self.date = date
         self.score = score
 
+    def __eq__(self, other):
+        return (self.date == other.date and
+                self.score == other.score)
+
+    def __ne__(self, other):
+        return not self.__eq__(other)
+
 
 @swagger.model()
 class ScenarioProject(models.ModelBase):
@@ -32,15 +54,33 @@ class ScenarioProject(models.ModelBase):
                  scores=None,
                  trust_indicators=None):
         self.project = project
-        self.customs = customs
-        self.scores = scores
-        self.trust_indicators = trust_indicators
+        self.customs = list_default(customs)
+        self.scores = list_default(scores)
+        self.trust_indicators = list_default(trust_indicators)
 
     @staticmethod
     def attr_parser():
         return {'scores': ScenarioScore,
                 'trust_indicators': ScenarioTI}
 
+    def __eq__(self, other):
+        return (self.project == other.project and
+                self._customs_eq(other) and
+                self._scores_eq(other) and
+                self._ti_eq(other))
+
+    def __ne__(self, other):
+        return not self.__eq__(other)
+
+    def _customs_eq(self, other):
+        return set(self.customs) == set(other.customs)
+
+    def _scores_eq(self, other):
+        return self.scores == other.scores
+
+    def _ti_eq(self, other):
+        return self.trust_indicators == other.trust_indicators
+
 
 @swagger.model()
 class ScenarioVersion(models.ModelBase):
@@ -48,14 +88,32 @@ class ScenarioVersion(models.ModelBase):
         @property projects:
         @ptype projects: C{list} of L{ScenarioProject}
     """
-    def __init__(self, version=None, projects=None):
+    def __init__(self, owner=None, version=None, projects=None):
+        self.owner = owner
         self.version = version
-        self.projects = projects
+        self.projects = list_default(projects)
 
     @staticmethod
     def attr_parser():
         return {'projects': ScenarioProject}
 
+    def __eq__(self, other):
+        return (self.version == other.version and
+                self.owner == other.owner and
+                self._projects_eq(other))
+
+    def __ne__(self, other):
+        return not self.__eq__(other)
+
+    def _projects_eq(self, other):
+        for s_project in self.projects:
+            for o_project in other.projects:
+                if s_project.project == o_project.project:
+                    if s_project != o_project:
+                        return False
+
+        return True
+
 
 @swagger.model()
 class ScenarioInstaller(models.ModelBase):
@@ -65,12 +123,27 @@ class ScenarioInstaller(models.ModelBase):
     """
     def __init__(self, installer=None, versions=None):
         self.installer = installer
-        self.versions = versions if versions else list()
+        self.versions = list_default(versions)
 
     @staticmethod
     def attr_parser():
         return {'versions': ScenarioVersion}
 
+    def __eq__(self, other):
+        return (self.installer == other.installer and self._versions_eq(other))
+
+    def __ne__(self, other):
+        return not self.__eq__(other)
+
+    def _versions_eq(self, other):
+        for s_version in self.versions:
+            for o_version in other.versions:
+                if s_version.version == o_version.version:
+                    if s_version != o_version:
+                        return False
+
+        return True
+
 
 @swagger.model()
 class ScenarioCreateRequest(models.ModelBase):
@@ -80,13 +153,19 @@ class ScenarioCreateRequest(models.ModelBase):
     """
     def __init__(self, name='', installers=None):
         self.name = name
-        self.installers = installers if installers else list()
+        self.installers = list_default(installers)
 
     @staticmethod
     def attr_parser():
         return {'installers': ScenarioInstaller}
 
 
+@swagger.model()
+class ScenarioChangeOwnerRequest(models.ModelBase):
+    def __init__(self, owner=None):
+        self.owner = owner
+
+
 @swagger.model()
 class Scenario(models.ModelBase):
     """
@@ -97,12 +176,27 @@ class Scenario(models.ModelBase):
         self.name = name
         self._id = _id
         self.creation_date = create_date
-        self.installers = installers if installers else list()
+        self.installers = list_default(installers)
 
     @staticmethod
     def attr_parser():
         return {'installers': ScenarioInstaller}
 
+    def __ne__(self, other):
+        return not self.__eq__(other)
+
+    def __eq__(self, other):
+        return (self.name == other.name and self._installers_eq(other))
+
+    def _installers_eq(self, other):
+        for s_install in self.installers:
+            for o_install in other.installers:
+                if s_install.installer == o_install.installer:
+                    if s_install != o_install:
+                        return False
+
+        return True
+
 
 @swagger.model()
 class Scenarios(models.ModelBase):