adf6842c3a346d28d4016b8a9d1165d477a68045
[releng.git] / utils / test / result_collection_api / resources / models.py
1 ##############################################################################\r
2 # Copyright (c) 2015 Orange\r
3 # guyrodrigue.koffi@orange.com / koffirodrigue@gmail.com\r
4 # All rights reserved. This program and the accompanying materials\r
5 # are made available under the terms of the Apache License, Version 2.0\r
6 # which accompanies this distribution, and is available at\r
7 # http://www.apache.org/licenses/LICENSE-2.0\r
8 # feng.xiaowei@zte.com.cn  mv Pod to pod_models.py                 6-18-2016\r
9 # feng.xiaowei@zte.com.cn  add MetaCreateResponse/MetaGetResponse  6-18-2016\r
10 ##############################################################################\r
11 \r
12 \r
13 class MetaCreateResponse(object):\r
14     def __init__(self, success=True, uri=''):\r
15         self.success = success\r
16         self.uri = uri\r
17 \r
18     @staticmethod\r
19     def from_dict(meta_dict):\r
20         if meta_dict is None:\r
21             return None\r
22 \r
23         meta = MetaCreateResponse()\r
24         meta.success = meta_dict.get('success')\r
25         meta.uri = meta_dict.get('uri')\r
26         return meta\r
27 \r
28 \r
29 class MetaGetResponse(object):\r
30     def __init__(self, success=True, total=0):\r
31         self.success = success\r
32         self.total = total\r
33 \r
34     @staticmethod\r
35     def from_dict(meta_dict):\r
36         if meta_dict is None:\r
37             return None\r
38 \r
39         meta = MetaGetResponse()\r
40         meta.success = meta_dict.get('success')\r
41         meta.total = meta_dict.get('total')\r
42         return meta\r
43 \r
44 \r
45 class TestProject:\r
46     """ Describes a test project"""\r
47 \r
48     def __init__(self):\r
49         self._id = None\r
50         self.name = None\r
51         self.description = None\r
52         self.creation_date = None\r
53 \r
54     @staticmethod\r
55     def testproject_from_dict(testproject_dict):\r
56 \r
57         if testproject_dict is None:\r
58             return None\r
59 \r
60         t = TestProject()\r
61         t._id = testproject_dict.get('_id')\r
62         t.creation_date = testproject_dict.get('creation_date')\r
63         t.name = testproject_dict.get('name')\r
64         t.description = testproject_dict.get('description')\r
65 \r
66         return t\r
67 \r
68     def format(self):\r
69         return {\r
70             "name": self.name,\r
71             "description": self.description,\r
72             "creation_date": str(self.creation_date)\r
73         }\r
74 \r
75     def format_http(self, test_cases=0):\r
76         return {\r
77             "_id": str(self._id),\r
78             "name": self.name,\r
79             "description": self.description,\r
80             "creation_date": str(self.creation_date),\r
81         }\r
82 \r
83 \r
84 class TestCase:\r
85     """ Describes a test case"""\r
86 \r
87     def __init__(self):\r
88         self._id = None\r
89         self.name = None\r
90         self.project_name = None\r
91         self.description = None\r
92         self.url = None\r
93         self.creation_date = None\r
94 \r
95     @staticmethod\r
96     def test_case_from_dict(testcase_dict):\r
97 \r
98         if testcase_dict is None:\r
99             return None\r
100 \r
101         t = TestCase()\r
102         t._id = testcase_dict.get('_id')\r
103         t.project_name = testcase_dict.get('project_name')\r
104         t.creation_date = testcase_dict.get('creation_date')\r
105         t.name = testcase_dict.get('name')\r
106         t.description = testcase_dict.get('description')\r
107         t.url = testcase_dict.get('url')\r
108 \r
109         return t\r
110 \r
111     def format(self):\r
112         return {\r
113             "name": self.name,\r
114             "description": self.description,\r
115             "project_name": self.project_name,\r
116             "creation_date": str(self.creation_date),\r
117             "url": self.url\r
118         }\r
119 \r
120     def format_http(self, test_project=None):\r
121         res = {\r
122             "_id": str(self._id),\r
123             "name": self.name,\r
124             "description": self.description,\r
125             "creation_date": str(self.creation_date),\r
126             "url": self.url,\r
127         }\r
128         if test_project is not None:\r
129             res["test_project"] = test_project\r
130 \r
131         return res\r
132 \r
133 \r
134 class TestResult:\r
135     """ Describes a test result"""\r
136 \r
137     def __init__(self):\r
138         self._id = None\r
139         self.case_name = None\r
140         self.project_name = None\r
141         self.pod_name = None\r
142         self.installer = None\r
143         self.version = None\r
144         self.description = None\r
145         self.creation_date = None\r
146         self.details = None\r
147         self.build_tag = None\r
148         self.scenario = None\r
149         self.criteria = None\r
150         self.trust_indicator = None\r
151 \r
152     @staticmethod\r
153     def test_result_from_dict(test_result_dict):\r
154 \r
155         if test_result_dict is None:\r
156             return None\r
157 \r
158         t = TestResult()\r
159         t._id = test_result_dict.get('_id')\r
160         t.case_name = test_result_dict.get('case_name')\r
161         t.pod_name = test_result_dict.get('pod_name')\r
162         t.project_name = test_result_dict.get('project_name')\r
163         t.description = test_result_dict.get('description')\r
164         t.creation_date = str(test_result_dict.get('creation_date'))\r
165         t.details = test_result_dict.get('details')\r
166         t.version = test_result_dict.get('version')\r
167         t.installer = test_result_dict.get('installer')\r
168         t.build_tag = test_result_dict.get('build_tag')\r
169         t.scenario = test_result_dict.get('scenario')\r
170         t.criteria = test_result_dict.get('criteria')\r
171         # 0 < trust indicator < 1\r
172         # if bad value =>  set this indicator to 0\r
173         if test_result_dict.get('trust_indicator') is not None:\r
174             if isinstance(test_result_dict.get('trust_indicator'),\r
175                           (int, long, float)):\r
176                 if test_result_dict.get('trust_indicator') < 0:\r
177                     t.trust_indicator = 0\r
178                 elif test_result_dict.get('trust_indicator') > 1:\r
179                     t.trust_indicator = 1\r
180                 else:\r
181                     t.trust_indicator = test_result_dict.get('trust_indicator')\r
182             else:\r
183                 t.trust_indicator = 0\r
184         else:\r
185             t.trust_indicator = 0\r
186         return t\r
187 \r
188     def format(self):\r
189         return {\r
190             "case_name": self.case_name,\r
191             "project_name": self.project_name,\r
192             "pod_name": self.pod_name,\r
193             "description": self.description,\r
194             "creation_date": str(self.creation_date),\r
195             "version": self.version,\r
196             "installer": self.installer,\r
197             "details": self.details,\r
198             "build_tag": self.build_tag,\r
199             "scenario": self.scenario,\r
200             "criteria": self.criteria,\r
201             "trust_indicator": self.trust_indicator\r
202         }\r
203 \r
204     def format_http(self):\r
205         return {\r
206             "_id": str(self._id),\r
207             "case_name": self.case_name,\r
208             "project_name": self.project_name,\r
209             "pod_name": self.pod_name,\r
210             "description": self.description,\r
211             "creation_date": str(self.creation_date),\r
212             "version": self.version,\r
213             "installer": self.installer,\r
214             "details": self.details,\r
215             "build_tag": self.build_tag,\r
216             "scenario": self.scenario,\r
217             "criteria": self.criteria,\r
218             "trust_indicator": self.trust_indicator\r
219         }\r