MCPcopy Create free account
hub / github.com/aaPanel/BaoTa / model

Method model

class/panelDatabaseController.py:21–101  ·  view source on GitHub ↗

@name 调用指定项目模型 @author hwliang<2021-12-31> @param args { mod_name: string<模型名称> def_name: string<方法名称> data: JSON }

(self,args)

Source from the content-addressed store, hash-verified

19 pass
20
21 def model(self,args):
22 ''&#x27;
23 @name 调用指定项目模型
24 @author hwliang<2021-12-31>
25 @param args<dict_obj> {
26 mod_name: string<模型名称>
27 def_name: string<方法名称>
28 data: JSON
29 }
30 ''&#x27;
31 try: # 表单验证
32 if args['mod_name'] in ['base']: return public.return_status_code(1000,'错误的调用!')
33 public.exists_args('def_name,mod_name',args)
34 if args['def_name'].find('__') != -1: return public.return_status_code(1000,'调用的方法名称中不能包含“__”字符')
35 if not re.match(r"^\w+$",args['mod_name']): return public.return_status_code(1000,'调用的模块名称中不能包含\w以外的字符')
36 if not re.match(r"^\w+$",args['def_name']): return public.return_status_code(1000,'调用的方法名称中不能包含\w以外的字符')
37 except:
38 return public.get_error_object()
39 # 参数处理
40 module_name = args['mod_name'].strip()
41 mod_name = "{}Model".format(args['mod_name'].strip())
42 def_name = args['def_name'].strip()
43
44 # # 指定模型是否存在
45 # mod_file = "{}/databaseModel/{}.py".format(public.get_class_path(),mod_name)
46 # if not os.path.exists(mod_file):
47 # return public.return_status_code(1003,mod_name)
48 # # 实例化
49 # def_object = public.get_script_object(mod_file)
50 # if not def_object: return public.return_status_code(1000,'没有找到{}模型'.format(mod_name))
51 # run_object = getattr(def_object.main(),def_name,None)
52
53 # if not run_object: return public.return_status_code(1000,'没有在{}模型中找到{}方法'.format(mod_name,def_name))
54 if not hasattr(args,'data'): args.data = {}
55 if args.data:
56 if isinstance(args.data,str):
57 try: # 解析为dict_obj
58 pdata = public.to_dict_obj(json.loads(args.data))
59 except:
60 return public.get_error_object()
61 elif isinstance(args.data,dict):
62 pdata = public.to_dict_obj(args.data)
63 else:
64 pdata = args.data
65 else:
66 pdata = public.dict_obj()
67
68 if isinstance(pdata,dict): pdata = public.to_dict_obj(pdata)
69 pdata.model_index = 'database'
70
71 # 前置HOOK
72 hook_index = '{}_{}_LAST'.format(mod_name.upper(),def_name.upper())
73 hook_result = public.exec_hook(hook_index,pdata)
74 if isinstance(hook_result,public.dict_obj):
75 pdata = hook_result # 桥接
76 elif isinstance(hook_result,dict):
77 return hook_result # 响应具体错误信息
78 elif isinstance(hook_result,bool):

Callers 1

get_database_sizeMethod · 0.95

Calls 5

findMethod · 0.45
matchMethod · 0.45
formatMethod · 0.45
loadsMethod · 0.45
return_dataMethod · 0.45

Tested by

no test coverage detected