update 重写文件生成器
This commit is contained in:
parent
c85e0f2fa0
commit
9aada26aaa
|
@ -23,7 +23,45 @@ class FileObjImpl(object):
|
||||||
|
|
||||||
def hanlde_field(**args):
|
def hanlde_field(**args):
|
||||||
"""处理每个字段"""
|
"""处理每个字段"""
|
||||||
pass
|
sub_data = args['sub_data']
|
||||||
|
# 属性
|
||||||
|
field_name = sub_data['attribute']
|
||||||
|
# 类型
|
||||||
|
types = sub_data['type']
|
||||||
|
# 校验类型
|
||||||
|
verify = sub_data['verify']
|
||||||
|
if verify == 'type':
|
||||||
|
if len(types) != 1:
|
||||||
|
types = 'type={}'.format(types)
|
||||||
|
else:
|
||||||
|
types = 'type={}'.format(types[0])
|
||||||
|
elif verify == 'instance_list':
|
||||||
|
types = 'instance_list={}'.format(types[0])
|
||||||
|
else:
|
||||||
|
types = 'func=Validate.{}'.format(types[0])
|
||||||
|
# 默认
|
||||||
|
if 'default' in sub_data:
|
||||||
|
default = 'default={}'.format(sub_data['default'])
|
||||||
|
else:
|
||||||
|
default = ''
|
||||||
|
# 补充校验
|
||||||
|
if 'complement' in sub_data:
|
||||||
|
# 字符长度
|
||||||
|
if 'length' in sub_data['complement']:
|
||||||
|
length = 'length={}, '.format(sub_data['complement']['length'])
|
||||||
|
else:
|
||||||
|
length = ''
|
||||||
|
# 数据范围
|
||||||
|
if 'in_list' in sub_data['complement']:
|
||||||
|
in_list = 'in_list={}, '.format(sub_data['complement']['in_list'])
|
||||||
|
else:
|
||||||
|
in_list = ''
|
||||||
|
else:
|
||||||
|
length = ''
|
||||||
|
in_list = ''
|
||||||
|
temp = f"\t{field_name} = ValidateAttr(field='{field_name}', {length}{default}{in_list}{types})"
|
||||||
|
f.write(temp)
|
||||||
|
f.write('\n')
|
||||||
|
|
||||||
with open(path, 'w', encoding='utf-8') as f:
|
with open(path, 'w', encoding='utf-8') as f:
|
||||||
f.write('from Utils.ObjUtil import SpecObject')
|
f.write('from Utils.ObjUtil import SpecObject')
|
||||||
|
@ -42,11 +80,191 @@ class FileObjImpl(object):
|
||||||
for sub in item['parameter']:
|
for sub in item['parameter']:
|
||||||
mapping_data[sub['attribute']] = sub['chinese']
|
mapping_data[sub['attribute']] = sub['chinese']
|
||||||
hanlde_field(sub_data=sub)
|
hanlde_field(sub_data=sub)
|
||||||
temp_fields = '\t\tfields_map = {}'.format(str(mapping_data))
|
temp_fields = '\tfields_map = {}'.format(str(mapping_data))
|
||||||
f.write('\n')
|
f.write('\n')
|
||||||
f.write(temp_fields)
|
f.write(temp_fields)
|
||||||
f.write('\n')
|
f.write('\n')
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def write_impl_file(**kwargs):
|
||||||
|
"""写入impl文件"""
|
||||||
|
path = kwargs['impl_path']
|
||||||
|
package_data = kwargs['package_data']
|
||||||
|
package_name = package_data['package_name']
|
||||||
|
obj_name = package_data['obj_name']
|
||||||
|
impl_name = package_data['impl_name']
|
||||||
|
impl_range = package_data['impl_range']
|
||||||
|
|
||||||
|
obj_list = list()
|
||||||
|
for obj in package_data['class_data']:
|
||||||
|
obj_list.append(obj['class_name'])
|
||||||
|
obj = ', '.join(obj_list)
|
||||||
|
|
||||||
|
with open(path, 'w', encoding='utf-8') as f:
|
||||||
|
f.write('from DBHelper.MongoHelperInstance import DB_TEST')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('from Modules.{package_name}.{obj_name} import {obj}'.format(package_name=package_name, obj_name=obj_name, obj=obj))
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('class {}(object):'.format(impl_name))
|
||||||
|
f.write('\n')
|
||||||
|
|
||||||
|
if '增加' in impl_range:
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\t@staticmethod')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\tdef new_data(**kwargs):')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\t\tpass')
|
||||||
|
f.write('\n')
|
||||||
|
|
||||||
|
if '删除' in impl_range:
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\t@staticmethod')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\tdef delete_data(**kwargs):')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\t\tpass')
|
||||||
|
f.write('\n')
|
||||||
|
|
||||||
|
if '修改' in impl_range:
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\t@staticmethod')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\tdef update_data(**kwargs):')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\t\tpass')
|
||||||
|
f.write('\n')
|
||||||
|
|
||||||
|
if '查询' in impl_range:
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\t@staticmethod')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\tdef search_data(**kwargs):')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\t\tpass')
|
||||||
|
f.write('\n')
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def write_route_file(**kwargs):
|
||||||
|
"""写入route文件"""
|
||||||
|
path = kwargs['route_path']
|
||||||
|
package_data = kwargs['package_data']
|
||||||
|
package_name = package_data['package_name']
|
||||||
|
impl_name = package_data['impl_name']
|
||||||
|
route_prefix = package_data['route_prefix']
|
||||||
|
impl_range = package_data['impl_range']
|
||||||
|
|
||||||
|
with open(path, 'w', encoding='utf-8') as f:
|
||||||
|
f.write('from flask import Blueprint, request')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('from Utils.ErrorUtil import APIReturnError')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('from Utils.RouteUtil import RouteParamsCheck')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('from Modules.{package_name}.{impl_name} import {impl_name}'.format(package_name=package_name, impl_name=impl_name))
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('{route_prefix}_route = Blueprint("{route_prefix}", __name__)'.format(route_prefix=route_prefix))
|
||||||
|
f.write('\n')
|
||||||
|
|
||||||
|
if '增加' in impl_range:
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('@{route_prefix}_route.route("/new_data", methods=["POST"])'.format(route_prefix=route_prefix))
|
||||||
|
f.write('\n')
|
||||||
|
f.write('def new_data_route():')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\ttry:')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\t\tRouteParamsCheck(req=request.json, params=[]).required()')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\t\tdata = request.json')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\t\timpl = {}()'.format(impl_name))
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\t\tresult = impl.new_data(data=data)')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\t\treturn {"info": "新增数据", "result": result}, 200')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\texcept APIReturnError as e:')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\t\treturn {"info": e.__str__()}, e.status_code')
|
||||||
|
f.write('\n')
|
||||||
|
|
||||||
|
if '删除' in impl_range:
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('@{route_prefix}_route.route("/delete_data", methods=["GET"])'.format(route_prefix=route_prefix))
|
||||||
|
f.write('\n')
|
||||||
|
f.write('def delete_data_route():')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\ttry:')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\t\tRouteParamsCheck(req=request.args, params=[]).required()')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\t\tdata = request.args')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\t\timpl = {}()'.format(impl_name))
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\t\tresult = impl.delete_data(data=data)')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\t\treturn {"info": "删除数据", "result": result}, 200')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\texcept APIReturnError as e:')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\t\treturn {"info": e.__str__()}, e.status_code')
|
||||||
|
f.write('\n')
|
||||||
|
|
||||||
|
if '修改' in impl_range:
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('@{route_prefix}_route.route("/update_data", methods=["POST"])'.format(route_prefix=route_prefix))
|
||||||
|
f.write('\n')
|
||||||
|
f.write('def update_data_route():')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\ttry:')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\t\tRouteParamsCheck(req=request.json, params=[]).required()')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\t\tdata = request.json')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\t\timpl = {}()'.format(impl_name))
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\t\tresult = impl.update_data(data=data)')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\t\treturn {"info": "修改数据", "result": result}, 200')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\texcept APIReturnError as e:')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\t\treturn {"info": e.__str__()}, e.status_code')
|
||||||
|
f.write('\n')
|
||||||
|
|
||||||
|
if '查询' in impl_range:
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('@{route_prefix}_route.route("/search_data", methods=["POST"])'.format(route_prefix=route_prefix))
|
||||||
|
f.write('\n')
|
||||||
|
f.write('def search_data_route():')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\ttry:')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\t\tRouteParamsCheck(req=request.json, params=[]).required()')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\t\tdata = request.json')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\t\timpl = {}()'.format(impl_name))
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\t\tresult = impl.search_data(data=data)')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\t\treturn {"info": "查询数据", "result": result}, 200')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\texcept APIReturnError as e:')
|
||||||
|
f.write('\n')
|
||||||
|
f.write('\t\treturn {"info": e.__str__()}, e.status_code')
|
||||||
|
f.write('\n')
|
||||||
|
|
||||||
def create_package(self, **kwargs):
|
def create_package(self, **kwargs):
|
||||||
"""根据包名创建包"""
|
"""根据包名创建包"""
|
||||||
package_data = kwargs['package_data']
|
package_data = kwargs['package_data']
|
||||||
|
@ -55,8 +273,6 @@ class FileObjImpl(object):
|
||||||
obj_name = package_data['obj_name']
|
obj_name = package_data['obj_name']
|
||||||
impl_name = package_data['impl_name']
|
impl_name = package_data['impl_name']
|
||||||
class_data = package_data['class_data']
|
class_data = package_data['class_data']
|
||||||
impl_range = package_data['impl_range']
|
|
||||||
route_prefix = package_data['route_prefix']
|
|
||||||
path = self.get_project_abs_path(name=package_name)
|
path = self.get_project_abs_path(name=package_name)
|
||||||
if os.path.exists(path):
|
if os.path.exists(path):
|
||||||
return False
|
return False
|
||||||
|
@ -68,15 +284,15 @@ class FileObjImpl(object):
|
||||||
f = open(init_path, 'w')
|
f = open(init_path, 'w')
|
||||||
f.close()
|
f.close()
|
||||||
self.write_obj_file(obj_path=obj_path, class_data=class_data)
|
self.write_obj_file(obj_path=obj_path, class_data=class_data)
|
||||||
self.write_obj_file(route_path=route_path, route_prefix=route_prefix)
|
self.write_impl_file(impl_path=impl_path, package_data=package_data)
|
||||||
self.write_obj_file(impl_path=impl_path, impl_range=impl_range)
|
self.write_route_file(route_path=route_path, package_data=package_data)
|
||||||
|
|
||||||
def new_file_package(self, **kwargs):
|
def new_file_package(self, **kwargs):
|
||||||
"""新建package"""
|
"""新建package"""
|
||||||
package_data = kwargs['data']
|
package_data = kwargs['data']
|
||||||
package_name = package_data['package_name']
|
package_name = package_data['package_name']
|
||||||
# 创建包
|
# 创建包
|
||||||
self.create_package(data=package_data)
|
self.create_package(package_data=package_data)
|
||||||
package_path = self.get_project_abs_path(name=package_name)
|
package_path = self.get_project_abs_path(name=package_name)
|
||||||
return package_path
|
return package_path
|
||||||
|
|
||||||
|
|
|
@ -251,124 +251,3 @@ class FilterImpl(object):
|
||||||
continue
|
continue
|
||||||
return_list.append(key)
|
return_list.append(key)
|
||||||
return return_list
|
return return_list
|
||||||
|
|
||||||
def new_file_obj(self, **kwargs):
|
|
||||||
"""
|
|
||||||
新建对象文件
|
|
||||||
1.根据参数动态创建class类
|
|
||||||
2.将代码写入.py文件保存
|
|
||||||
"""
|
|
||||||
data = kwargs['data']
|
|
||||||
|
|
||||||
name = data['class_name']
|
|
||||||
file_name = '{}.py'.format(name)
|
|
||||||
parameter = data['parameter']
|
|
||||||
filename = self.get_project_abs_path(name=file_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 handle_fields(**args):
|
|
||||||
fields = args['param']
|
|
||||||
fields_name = args['class_name']
|
|
||||||
level = args['levels']
|
|
||||||
kind = args['kind']
|
|
||||||
|
|
||||||
# 判断类型(list)
|
|
||||||
if fields['types'] == 'classmethod' and kind == 'list':
|
|
||||||
list_instance = 'instance_list={}'.format(fields_name)
|
|
||||||
else:
|
|
||||||
list_instance = ''
|
|
||||||
|
|
||||||
# 判断类型(dict)
|
|
||||||
if len(list_instance) == 0:
|
|
||||||
if fields['types'] == 'classmethod' and kind == 'dict':
|
|
||||||
types = 'type={}'.format(fields_name)
|
|
||||||
else:
|
|
||||||
if fields['types'] == 'date':
|
|
||||||
types = 'func=Validate.date_format'
|
|
||||||
elif fields['types'] == 'time':
|
|
||||||
types = 'func=Validate.time_format'
|
|
||||||
else:
|
|
||||||
types = 'type={}'.format(fields['types'])
|
|
||||||
else:
|
|
||||||
types = ''
|
|
||||||
|
|
||||||
# 判断长度
|
|
||||||
if 'length' in fields:
|
|
||||||
length = 'length={}, '.format(fields['length'])
|
|
||||||
else:
|
|
||||||
length = ''
|
|
||||||
|
|
||||||
# 包含列表
|
|
||||||
if 'in_list' in fields:
|
|
||||||
in_list = 'in_list={}, '.format(fields['in_list'])
|
|
||||||
else:
|
|
||||||
in_list = ''
|
|
||||||
|
|
||||||
# 类名
|
|
||||||
class_names = fields['name']
|
|
||||||
if level == 'frist':
|
|
||||||
temp = f"\t{class_names} = ValidateAttr(field='{class_names}', {length}{list_instance}{in_list}{types})"
|
|
||||||
else:
|
|
||||||
temp = f"\t\t{class_names} = ValidateAttr(field='{class_names}', {length}{list_instance}{in_list}{types})"
|
|
||||||
f.write(temp)
|
|
||||||
f.write('\n')
|
|
||||||
|
|
||||||
# 写入子类
|
|
||||||
def hanlde_special(temp_data, temp_type):
|
|
||||||
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']:
|
|
||||||
# fields_map映射数据
|
|
||||||
temp_dict[list_param['name']] = list_param['chinese']
|
|
||||||
# 写入每个fields
|
|
||||||
handle_fields(param=list_param, class_name=temp_data['class_name'], levels='second', kind=temp_type)
|
|
||||||
temp_fields = '\t\tfields_map = {}'.format(str(temp_dict))
|
|
||||||
f.write('\n')
|
|
||||||
f.write(temp_fields)
|
|
||||||
f.write('\n')
|
|
||||||
|
|
||||||
# 第一次遍历,创建参数中的子类对象
|
|
||||||
for param in parameter:
|
|
||||||
# 为instance_list新建对象
|
|
||||||
if 'instance_list' in param:
|
|
||||||
instance_list = param['instance_list']
|
|
||||||
hanlde_special(instance_list, 'list')
|
|
||||||
# 为instance_dict新建对象
|
|
||||||
if 'instance_dict' in param:
|
|
||||||
instance_dict = param['instance_dict']
|
|
||||||
hanlde_special(instance_dict, 'dict')
|
|
||||||
|
|
||||||
f.write('\n')
|
|
||||||
|
|
||||||
first_dict = dict()
|
|
||||||
for param in parameter:
|
|
||||||
first_dict[param['name']] = param['chinese']
|
|
||||||
class_name = None
|
|
||||||
temp_type = None
|
|
||||||
if 'instance_list' in param:
|
|
||||||
instance_list = param['instance_list']
|
|
||||||
class_name = instance_list['class_name']
|
|
||||||
temp_type = 'list'
|
|
||||||
|
|
||||||
if 'instance_dict' in param:
|
|
||||||
instance_dict = param['instance_dict']
|
|
||||||
class_name = instance_dict['class_name']
|
|
||||||
temp_type = 'dict'
|
|
||||||
|
|
||||||
handle_fields(param=param, class_name=class_name, levels='frist', kind=temp_type)
|
|
||||||
f.write('\n')
|
|
||||||
frist_fields = '\tfields_map = {}'.format(str(first_dict))
|
|
||||||
f.write(frist_fields)
|
|
||||||
f.write('\n')
|
|
||||||
return '新建成功'
|
|
Loading…
Reference in New Issue