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