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 # feng.xiaowei@zte.com.cn mv Pod to pod_models.py 5-18-2016
9 # feng.xiaowei@zte.com.cn add MetaCreateResponse/MetaGetResponse 5-18-2016
10 # feng.xiaowei@zte.com.cn mv TestProject to project_models.py 5-19-2016
11 # feng.xiaowei@zte.com.cn delete meta class 5-19-2016
12 # feng.xiaowei@zte.com.cn add CreateResponse 5-19-2016
13 # feng.xiaowei@zte.com.cn mv TestCase to testcase_models.py 5-20-2016
14 # feng.xiaowei@zte.com.cn mv TestResut to result_models.py 5-23-2016
15 # feng.xiaowei@zte.com.cn add ModelBase 12-20-2016
16 ##############################################################################
21 from opnfv_testapi.tornado_swagger import swagger
24 class ModelBase(object):
27 return self._format(['_id'])
29 def format_http(self):
30 return self._format([])
33 def from_dict(cls, a_dict):
37 attr_parser = cls.attr_parser()
39 for k, v in a_dict.iteritems():
41 if isinstance(v, dict) and k in attr_parser:
42 value = attr_parser[k].from_dict(v)
43 elif isinstance(v, list) and k in attr_parser:
46 value.append(attr_parser[k].from_dict(item))
48 t.__setattr__(k, value)
56 def _format(self, excludes):
57 new_obj = copy.deepcopy(self)
58 dicts = new_obj.__dict__
59 for k in dicts.keys():
63 dicts[k] = self._obj_format(dicts[k])
66 def _obj_format(self, obj):
67 if self._has_format(obj):
69 elif isinstance(obj, unicode):
71 obj = self._obj_format(ast.literal_eval(obj))
77 elif isinstance(obj, list):
80 hs.append(self._obj_format(h))
82 elif not isinstance(obj, (str, int, float, dict)):
88 return not isinstance(obj, (str, unicode)) and hasattr(obj, 'format')
92 class CreateResponse(ModelBase):
93 def __init__(self, href=''):
98 class Versions(ModelBase):
101 @ptype versions: C{list} of L{Version}
105 self.versions = list()
109 return {'versions': Version}
113 class Version(ModelBase):
114 def __init__(self, version=None, description=None):
115 self.version = version
116 self.description = description