X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=utils%2Ftest%2Ftestapi%2Fopnfv_testapi%2Fresources%2Fmodels.py;h=f518c97a0cb904bd474b7f2ff6c13071c21c4e00;hb=387c212e28b6050a74affbb787c9525e6337ce08;hp=e79308b53097f468e69d4f28cb029eef3bc98ab2;hpb=10136757e83e27b4aef1979edd98eb5e278ce6bf;p=releng.git diff --git a/utils/test/testapi/opnfv_testapi/resources/models.py b/utils/test/testapi/opnfv_testapi/resources/models.py index e79308b53..f518c97a0 100644 --- a/utils/test/testapi/opnfv_testapi/resources/models.py +++ b/utils/test/testapi/opnfv_testapi/resources/models.py @@ -12,60 +12,87 @@ # feng.xiaowei@zte.com.cn add CreateResponse 5-19-2016 # feng.xiaowei@zte.com.cn mv TestCase to testcase_models.py 5-20-2016 # feng.xiaowei@zte.com.cn mv TestResut to result_models.py 5-23-2016 +# feng.xiaowei@zte.com.cn add ModelBase 12-20-2016 ############################################################################## +import copy + from opnfv_testapi.tornado_swagger import swagger -@swagger.model() -class CreateResponse(object): - def __init__(self, href=''): - self.href = href +class ModelBase(object): + + def _format(self, excludes): + new_obj = copy.deepcopy(self) + dicts = new_obj.__dict__ + for k in dicts.keys(): + if k in excludes: + del dicts[k] + elif dicts[k]: + if hasattr(dicts[k], 'format'): + dicts[k] = dicts[k].format() + elif isinstance(dicts[k], list): + hs = list() + [hs.append(h.format() if hasattr(h, 'format') else str(h)) + for h in dicts[k]] + dicts[k] = hs + elif not isinstance(dicts[k], (str, int, float, dict)): + dicts[k] = str(dicts[k]) + return dicts + + def format(self): + return self._format(['_id']) + + def format_http(self): + return self._format([]) @staticmethod - def from_dict(res_dict): - if res_dict is None: + def attr_parser(): + return {} + + @classmethod + def from_dict(cls, a_dict): + if a_dict is None: return None - res = CreateResponse() - res.href = res_dict.get('href') - return res + attr_parser = cls.attr_parser() + t = cls() + for k, v in a_dict.iteritems(): + value = v + if isinstance(v, dict) and k in attr_parser: + value = attr_parser[k].from_dict(v) + elif isinstance(v, list) and k in attr_parser: + value = [] + for item in v: + value.append(attr_parser[k].from_dict(item)) - def format(self): - return {'href': self.href} + t.__setattr__(k, value) + + return t @swagger.model() -class Versions(object): +class CreateResponse(ModelBase): + def __init__(self, href=''): + self.href = href + + +@swagger.model() +class Versions(ModelBase): """ @property versions: @ptype versions: C{list} of L{Version} """ + def __init__(self): self.versions = list() @staticmethod - def from_dict(res_dict): - if res_dict is None: - return None - - res = Versions() - for version in res_dict.get('versions'): - res.versions.append(Version.from_dict(version)) - return res + def attr_parser(): + return {'versions': Version} @swagger.model() -class Version(object): +class Version(ModelBase): def __init__(self, version=None, description=None): self.version = version self.description = description - - @staticmethod - def from_dict(a_dict): - if a_dict is None: - return None - - ver = Version() - ver.version = a_dict.get('version') - ver.description = str(a_dict.get('description')) - return ver