795621ab1f142aa093f4301777a3caf8bf3e625b
[releng.git] / utils / test / result_collection_api / resources / result_models.py
1
2 class ResultCreateRequest(object):
3     def __init__(self,
4                  pod_name=None,
5                  project_name=None,
6                  case_name=None,
7                  installer=None,
8                  version=None,
9                  description=None,
10                  details=None,
11                  build_tag=None,
12                  scenario=None,
13                  criteria=None,
14                  trust_indicator=None):
15         self.pod_name = pod_name
16         self.project_name = project_name
17         self.case_name = case_name
18         self.installer = installer
19         self.version = version
20         self.description = description
21         self.details = details
22         self.build_tag = build_tag
23         self.scenario = scenario
24         self.criteria = criteria
25         self.trust_indicator = trust_indicator
26
27     def format(self):
28         return {
29             "pod_name": self.pod_name,
30             "project_name": self.project_name,
31             "case_name": self.case_name,
32             "installer": self.installer,
33             "version": self.version,
34             "description": self.description,
35             "details": self.details,
36             "build_tag": self.build_tag,
37             "scenario": self.scenario,
38             "criteria": self.criteria,
39             "trust_indicator": self.trust_indicator
40         }
41
42
43 class TestResult:
44     """ Describes a test result"""
45
46     def __init__(self):
47         self._id = None
48         self.case_name = None
49         self.project_name = None
50         self.pod_name = None
51         self.installer = None
52         self.version = None
53         self.description = None
54         self.creation_date = None
55         self.details = None
56         self.build_tag = None
57         self.scenario = None
58         self.criteria = None
59         self.trust_indicator = None
60
61     @staticmethod
62     def from_dict(a_dict):
63
64         if a_dict is None:
65             return None
66
67         t = TestResult()
68         t._id = a_dict.get('_id')
69         t.case_name = a_dict.get('case_name')
70         t.pod_name = a_dict.get('pod_name')
71         t.project_name = a_dict.get('project_name')
72         t.description = a_dict.get('description')
73         t.creation_date = str(a_dict.get('creation_date'))
74         t.details = a_dict.get('details')
75         t.version = a_dict.get('version')
76         t.installer = a_dict.get('installer')
77         t.build_tag = a_dict.get('build_tag')
78         t.scenario = a_dict.get('scenario')
79         t.criteria = a_dict.get('criteria')
80         # 0 < trust indicator < 1
81         # if bad value =>  set this indicator to 0
82         t.trust_indicator = a_dict.get('trust_indicator')
83         if t.trust_indicator is not None:
84             if isinstance(t.trust_indicator, (int, long, float)):
85                 if t.trust_indicator < 0:
86                     t.trust_indicator = 0
87                 elif t.trust_indicator > 1:
88                     t.trust_indicator = 1
89             else:
90                 t.trust_indicator = 0
91         else:
92             t.trust_indicator = 0
93         return t
94
95     def format(self):
96         return {
97             "case_name": self.case_name,
98             "project_name": self.project_name,
99             "pod_name": self.pod_name,
100             "description": self.description,
101             "creation_date": str(self.creation_date),
102             "version": self.version,
103             "installer": self.installer,
104             "details": self.details,
105             "build_tag": self.build_tag,
106             "scenario": self.scenario,
107             "criteria": self.criteria,
108             "trust_indicator": self.trust_indicator
109         }
110
111     def format_http(self):
112         return {
113             "_id": str(self._id),
114             "case_name": self.case_name,
115             "project_name": self.project_name,
116             "pod_name": self.pod_name,
117             "description": self.description,
118             "creation_date": str(self.creation_date),
119             "version": self.version,
120             "installer": self.installer,
121             "details": self.details,
122             "build_tag": self.build_tag,
123             "scenario": self.scenario,
124             "criteria": self.criteria,
125             "trust_indicator": self.trust_indicator
126         }
127
128
129 class TestResults(object):
130     def __init__(self, results=list()):
131         self.results = results
132
133     @staticmethod
134     def from_dict(a_dict):
135         if a_dict is None:
136             return None
137
138         res = TestResults()
139         for result in a_dict.get('results'):
140             res.results.append(TestResult.from_dict(result))
141         return res