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