2022-04-01 02:24:02 +08:00
|
|
|
|
2022-04-13 17:04:00 +08:00
|
|
|
class SpecObject(object):
|
|
|
|
"""自定义类"""
|
2022-04-01 02:24:02 +08:00
|
|
|
|
2022-04-13 17:04:00 +08:00
|
|
|
fields_map = {}
|
|
|
|
|
|
|
|
def dict_to_show(self, **kwargs):
|
|
|
|
"""显示对象"""
|
|
|
|
_dict_ = dict()
|
|
|
|
|
|
|
|
for key in self.__dict__.keys():
|
|
|
|
if type(self.__dict__[key]).__name__ in ['str', 'int', 'float', 'dict', 'bool', 'tuple']:
|
|
|
|
_dict_[self.fields_map[key]] = self.__dict__[key]
|
|
|
|
elif type(self.__dict__[key]).__name__ == 'list':
|
|
|
|
if len(self.__dict__[key]) == 0:
|
|
|
|
_dict_[self.fields_map[key]] = self.__dict__[key]
|
|
|
|
elif type(self.__dict__[key][0]).__name__ in ['str', 'int', 'float', 'dict', 'bool', 'tuple']:
|
|
|
|
_dict_[self.fields_map[key]] = self.__dict__[key]
|
|
|
|
else:
|
|
|
|
_dict_[self.fields_map[key]] = [item.dict_to_save() for item in self.__dict__[key]]
|
|
|
|
elif self.__dict__[key] is None:
|
|
|
|
_dict_[self.fields_map[key]] = self.__dict__[key]
|
|
|
|
else:
|
|
|
|
_dict_[self.fields_map[key]] = self.__dict__[key].dict_to_show()
|
|
|
|
|
|
|
|
if 'columns' in kwargs:
|
|
|
|
_dict_ = {key: _dict_[key] for key in kwargs['columns']}
|
|
|
|
|
|
|
|
return _dict_
|
|
|
|
|
|
|
|
def dict_to_save(self, **kwargs):
|
|
|
|
"""存储对象"""
|
|
|
|
_dict_ = dict()
|
|
|
|
|
|
|
|
for key in self.__dict__.keys():
|
|
|
|
if type(self.__dict__[key]).__name__ in ['str', 'int', 'float', 'dict', 'bool', 'tuple']:
|
|
|
|
_dict_[self.fields_map[key]] = self.__dict__[key]
|
|
|
|
elif type(self.__dict__[key]).__name__ == 'list':
|
|
|
|
if len(self.__dict__[key]) == 0:
|
|
|
|
_dict_[self.fields_map[key]] = self.__dict__[key]
|
|
|
|
elif type(self.__dict__[key][0]).__name__ in ['str', 'int', 'float', 'dict', 'bool', 'tuple']:
|
|
|
|
_dict_[self.fields_map[key]] = self.__dict__[key]
|
|
|
|
else:
|
|
|
|
_dict_[self.fields_map[key]] = [item.dict_to_save() for item in self.__dict__[key]]
|
|
|
|
elif self.__dict__[key] is None:
|
|
|
|
_dict_[self.fields_map[key]] = self.__dict__[key]
|
|
|
|
else:
|
|
|
|
_dict_[self.fields_map[key]] = self.__dict__[key].dict_to_save()
|
|
|
|
|
|
|
|
if 'columns' in kwargs:
|
|
|
|
_dict_ = {key: _dict_[key] for key in kwargs['columns']}
|
|
|
|
|
|
|
|
return _dict_
|
|
|
|
|
2022-04-18 17:04:44 +08:00
|
|
|
@staticmethod
|
|
|
|
def dict_to_set(**kwargs):
|
|
|
|
"""实例设值"""
|
|
|
|
instance = kwargs['instance']()
|
|
|
|
fields_map = dict([v, k] for k, v in instance.fields_map.items())
|
|
|
|
for field in list(kwargs['data'].keys()):
|
|
|
|
instance.__setattr__(fields_map[field], kwargs['data'][field])
|
|
|
|
return instance
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
def instance_list_to_set(**kwargs):
|
|
|
|
"""实例数组设值"""
|
|
|
|
list_ = list()
|
|
|
|
for item in list(kwargs['data']):
|
|
|
|
instance = kwargs['instance_list_type']()
|
|
|
|
fields_map = dict([v, k] for k, v in instance.fields_map.items())
|
|
|
|
for field in list(item.keys()):
|
|
|
|
instance.__setattr__(fields_map[field], item[field])
|
|
|
|
list_.append(instance)
|
|
|
|
|
|
|
|
return list_
|