126 lines
4.3 KiB
Python
126 lines
4.3 KiB
Python
|
from Utils.ObjUtil import SpecObject
|
||
|
from Utils.ValidateUtil import ValidateAttr
|
||
|
|
||
|
|
||
|
class FileObjImpl(object):
|
||
|
"""对象文件创建"""
|
||
|
|
||
|
@staticmethod
|
||
|
def new_file_obj(**kwargs):
|
||
|
"""
|
||
|
新建对象文件
|
||
|
1.根据参数动态创建class类
|
||
|
2.将代码写入.py文件保存
|
||
|
"""
|
||
|
data = kwargs['data']
|
||
|
|
||
|
name = data['class_name']
|
||
|
parameter = data['parameter']
|
||
|
filename = './static/{}.py'.format(name)
|
||
|
|
||
|
with open(filename, 'w', encoding="utf-8") as f:
|
||
|
f.write('from Utils.ObjUtil import SpecObject')
|
||
|
f.write('\n')
|
||
|
f.write('from Utils.ValidateUtil import ValidateAttr, Validate')
|
||
|
f.write('\n')
|
||
|
f.write('\n')
|
||
|
f.write('\n')
|
||
|
f.write('class {}(SpecObject):'.format(name))
|
||
|
f.write('\n')
|
||
|
|
||
|
# 写入子类
|
||
|
def hanlde_special(temp_data):
|
||
|
f.write('\n')
|
||
|
f.write('\tclass {}(SpecObject):'.format(temp_data['class_name']))
|
||
|
f.write('\n')
|
||
|
temp_dict = dict()
|
||
|
for list_param in temp_data['parameter']:
|
||
|
temp_dict[list_param['name']] = list_param['chinese']
|
||
|
if list_param['types'] != 'classmethod':
|
||
|
types = 'type={}'.format(list_param['types'])
|
||
|
list_instance = 'N'
|
||
|
else:
|
||
|
types = 'N'
|
||
|
list_instance = 'instance_list={}'.format(temp_data['class_name'])
|
||
|
if 'length' in list_param:
|
||
|
length = 'length={}'.format(list_param['length'])
|
||
|
else:
|
||
|
length = 'N'
|
||
|
if 'in_list' in list_param:
|
||
|
in_list = 'in_list={}'.format(list_param['in_list'])
|
||
|
else:
|
||
|
in_list = 'N'
|
||
|
class_name = list_param['name']
|
||
|
temp = f"\t\t{class_name} = ValidateAttr(field='{class_name}', {types}, {list_instance}, {in_list}, {length})"
|
||
|
f.write(temp)
|
||
|
f.write('\n')
|
||
|
temp_fields = '\t\tfields_map = {}'.format(str(temp_dict))
|
||
|
f.write(temp_fields)
|
||
|
f.write('\n')
|
||
|
|
||
|
for param in parameter:
|
||
|
if 'instance_list' in param:
|
||
|
instance_list = param['instance_list']
|
||
|
hanlde_special(instance_list)
|
||
|
|
||
|
if 'instance_dict' in param:
|
||
|
instance_dict = param['instance_dict']
|
||
|
hanlde_special(instance_dict)
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
param_data = {
|
||
|
"class_name": "TestFile",
|
||
|
"parameter": [
|
||
|
{
|
||
|
"chinese": "函数ID",
|
||
|
"name": "func_id",
|
||
|
"types": "str",
|
||
|
"length": 8
|
||
|
},
|
||
|
{
|
||
|
"chinese": "参数",
|
||
|
"name": "param",
|
||
|
"types": "classmethod",
|
||
|
"instance_list": {
|
||
|
"class_name": "Param",
|
||
|
"parameter": [
|
||
|
{
|
||
|
"chinese": "参数名",
|
||
|
"name": "name",
|
||
|
"types": "str"
|
||
|
},
|
||
|
{
|
||
|
"chinese": "备注",
|
||
|
"name": "mark",
|
||
|
"types": "str"
|
||
|
}
|
||
|
]
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
"chinese": "标签",
|
||
|
"name": "tags",
|
||
|
"types": "classmethod",
|
||
|
"instance_dict": {
|
||
|
"class_name": "Tags",
|
||
|
"parameter": [
|
||
|
{
|
||
|
"chinese": "参数名",
|
||
|
"name": "name",
|
||
|
"types": "str"
|
||
|
},
|
||
|
{
|
||
|
"chinese": "备注",
|
||
|
"name": "mark",
|
||
|
"types": "str"
|
||
|
}
|
||
|
]
|
||
|
}
|
||
|
}
|
||
|
]
|
||
|
}
|
||
|
|
||
|
file = FileObjImpl()
|
||
|
file.new_file_obj(data=param_data)
|