mwgencode 1.4.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. gencode/__init__.py +140 -0
  2. gencode/dd_models.py +256 -0
  3. gencode/ext.py +19 -0
  4. gencode/gen_code.py +343 -0
  5. gencode/gencode/__init__.py +0 -0
  6. gencode/gencode/export_class2swgclass.py +206 -0
  7. gencode/gencode/gen_bo_models_code.py +719 -0
  8. gencode/gencode/gen_state_code.py +171 -0
  9. gencode/gencode/gen_swagger_code.py +94 -0
  10. gencode/gencode/gen_tests_code.py +113 -0
  11. gencode/gencode/sample/__init__.py +2 -0
  12. gencode/gencode/sample/babel.cfg +3 -0
  13. gencode/gencode/sample/config-sample.ini +9 -0
  14. gencode/gencode/sample/config.ini +14 -0
  15. gencode/gencode/sample/create_new_table_run.pys +19 -0
  16. gencode/gencode/sample/dockerignore.dock +57 -0
  17. gencode/gencode/sample/file_utils.pys +396 -0
  18. gencode/gencode/sample/gencode.xmi +33 -0
  19. gencode/gencode/sample/gitignore.git +14 -0
  20. gencode/gencode/sample/migrate_run.bat +5 -0
  21. gencode/gencode/sample/migrate_run.pys +9 -0
  22. gencode/gencode/sample/requirements.txt +17 -0
  23. gencode/gencode/sample/run.sh +27 -0
  24. gencode/gencode/sample/seeds/__init__.py +0 -0
  25. gencode/gencode/sample/seeds/models_rm.pys +187 -0
  26. gencode/gencode/sample/seeds/seed_dev_data.pys +21 -0
  27. gencode/gencode/sample/seeds/seed_init.pys +17 -0
  28. gencode/gencode/sample/seeds/seed_rm.pys +39 -0
  29. gencode/gencode/sample/seeds/seed_run.pys +13 -0
  30. gencode/gencode/sample/seeds/seed_utils.pys +23 -0
  31. gencode/gencode/sample/test__init__.pys +6 -0
  32. gencode/gencode/sample/test_run.pys +4 -0
  33. gencode/gencode/sample/utils.pys +92 -0
  34. gencode/gencode/template/Dockerfile.tmp +55 -0
  35. gencode/gencode/template/README.md +91 -0
  36. gencode/gencode/template/__init__.py +0 -0
  37. gencode/gencode/template/__init__.pys +99 -0
  38. gencode/gencode/template/config.pys +134 -0
  39. gencode/gencode/template/default.conf +21 -0
  40. gencode/gencode/template/docker-compose-dev.yaml +52 -0
  41. gencode/gencode/template/docker-compose.yaml +55 -0
  42. gencode/gencode/template/drone.tmp +45 -0
  43. gencode/gencode/template/flask_models.pys +107 -0
  44. gencode/gencode/template/flask_models_base.pys +159 -0
  45. gencode/gencode/template/gen_code_flask.yaml +21 -0
  46. gencode/gencode/template/gen_code_run.pys +28 -0
  47. gencode/gencode/template/k8s-tmp.yml +141 -0
  48. gencode/gencode/template/run.pys +52 -0
  49. gencode/gencode/template/sample.mdj +1193 -0
  50. gencode/gencode/template/setup.tmp +48 -0
  51. gencode/gencode/template/supervisord.conf +21 -0
  52. gencode/gencode/template/swagger_file.yaml +195 -0
  53. gencode/gencode/template/swg_class.tmp +41 -0
  54. gencode/gencode/template/swg_ctrl_code.pys +130 -0
  55. gencode/gencode/template/swg_package_mng.tmp +4423 -0
  56. gencode/gencode/template/test_test_base.tmp +34 -0
  57. gencode/gencode/template/tests/__init__.py +0 -0
  58. gencode/gencode/template/tests/__init__.pys +5 -0
  59. gencode/gencode/template/tests/init_test_data.pys +80 -0
  60. gencode/gencode/template/tests/run.pys +4 -0
  61. gencode/gencode/template/tests/test_base.pys +87 -0
  62. gencode/gencode/template/tests/test_classmng.pys +58 -0
  63. gencode/gencode/template/uwsgi.ini +20 -0
  64. gencode/gencode/template/uwsgi_run.pys +44 -0
  65. gencode/importmdj/__init__.py +0 -0
  66. gencode/importmdj/import_dd_classes.py +369 -0
  67. gencode/importmdj/import_swagger2_class.py +371 -0
  68. gencode/importmdj/import_uml_models.py +466 -0
  69. gencode/importxmi/__init__.py +1 -0
  70. gencode/importxmi/import_classes.py +342 -0
  71. gencode/importxmi/import_sequences.py +291 -0
  72. gencode/importxmi/import_states.py +150 -0
  73. gencode/importxmi/import_swagger.py +151 -0
  74. gencode/swg2_class_models.py +179 -0
  75. gencode/uml_class_models.py +295 -0
  76. gencode/upgrade.py +113 -0
  77. gencode/utils.py +225 -0
  78. manage.py +194 -0
  79. mwgencode-1.4.1.dist-info/METADATA +325 -0
  80. mwgencode-1.4.1.dist-info/RECORD +84 -0
  81. mwgencode-1.4.1.dist-info/WHEEL +5 -0
  82. mwgencode-1.4.1.dist-info/entry_points.txt +2 -0
  83. mwgencode-1.4.1.dist-info/licenses/LICENSE.txt +19 -0
  84. mwgencode-1.4.1.dist-info/top_level.txt +2 -0
manage.py ADDED
@@ -0,0 +1,194 @@
1
+ from typing import TextIO
2
+ import logging
3
+ from gencode.gen_code import GenCode,GenProject_Sample,GenProject_Flask,GenProject_Aiohttp,GenSwagger
4
+ from gencode.importmdj.import_swagger2_class import ImportSwagger
5
+ import argparse
6
+ import os
7
+ import sys
8
+ from gencode.gencode.export_class2swgclass import ExportClass2SWGClass
9
+ import yaml
10
+ import gencode.upgrade as upgrade
11
+ class Gen_Code():
12
+ def __init__(self,args):
13
+ # project 类型,flask,aiohttp
14
+ # self.type = type
15
+ # self.umlfile = os.path.abspath(umlfile)
16
+ # self.rootpath = os.path.abspath(rootpath)
17
+ self.args = args
18
+ self.prj_conf = None
19
+
20
+ def _get_config(self) -> dict:
21
+ def load_config():
22
+ cnfgfile = os.path.join(os.path.abspath(self.args.root_path), 'gen_code.yaml')
23
+ if not os.path.exists(cnfgfile):
24
+ raise Exception('gen_code.yaml文件不存在,请先执行 gencode init 初始化项目!')
25
+ yml = open(cnfgfile)
26
+ try:
27
+ self.prj_conf = yaml.full_load(yml)
28
+ except Exception as e:
29
+ raise Exception('载入 gen_code.yaml 出错,error:%s' % e)
30
+ return self.prj_conf
31
+ if self.prj_conf is None:
32
+ self.prj_conf = load_config()
33
+ return self.prj_conf
34
+
35
+ def _get_apptype(self):
36
+ try:
37
+ return self._get_config().get('project', {}).get('type', 'flask')
38
+ except Exception as e:
39
+ raise Exception('gen_code.yaml 文件内容出错,%s' % e)
40
+
41
+ def _get_rootpath(self):
42
+ try:
43
+ # cmd有指定rootpath 时,以指定的rootpath
44
+ return self.args.root_path if self.args.root_path!='.' else self._get_config().get('project',{}).get('rootpath','.')
45
+ except Exception as e:
46
+ raise Exception('gen_code.yaml 文件内容出错,%s'%e)
47
+
48
+ def _get_umlfile(self):
49
+ try:
50
+ return os.path.join(self._get_rootpath(),
51
+ self._get_config()['project']['doc_dir'],
52
+ self._get_config()['project']['models']['main']['file'])
53
+ except Exception as e:
54
+ raise Exception('gen_code.yaml 文件内容出错,%s'%e)
55
+
56
+ def init_project(self):
57
+ '''
58
+ 产生一个包含 sample.mdj文件和gen_code_run.py单元的专案
59
+ :return:
60
+ '''
61
+ gp = GenProject_Sample(r'%s' % self.args.umlfile,
62
+ r'%s' % self.args.project_name)
63
+ gp.gen_code(self.args.python_code)
64
+
65
+
66
+ def gen_export(self):
67
+ umlfile = self._get_umlfile()
68
+ swg = GenSwagger(umlfile)
69
+ swg.export_one_swgclass(self.args.umlclass,umlfile)
70
+
71
+ def gen_add(self):
72
+ umlfile = self._get_umlfile()
73
+ swg = GenSwagger(umlfile)
74
+ swg.add_operation(self.args.swagger_package, self.args.umlclass_operation, self.args.http_method_type)
75
+
76
+ def gen_build(self):
77
+ prj_type = self._get_apptype()
78
+ umlfile = self._get_umlfile()
79
+ prj_rootpath = self._get_rootpath()
80
+ if prj_type =='flask':
81
+ gp = GenProject_Flask(r'%s' % umlfile,
82
+ r'%s' % prj_rootpath)
83
+ elif prj_type =='aiohttp':
84
+ gp = GenProject_Aiohttp(r'%s' % umlfile,
85
+ r'%s' % prj_rootpath)
86
+ else:
87
+ raise Exception('不支持该project type(%s)'%prj_type)
88
+ gp.gen_code()
89
+ g = GenCode(umlfile, prj_rootpath)
90
+ # 产生model
91
+ g.model()
92
+
93
+ def gen_upgrade(self):
94
+ # logging.info(self.args)
95
+ dir = self.args.dir
96
+ umlfile = self._get_umlfile()
97
+ swg = ImportSwagger().impUMLModels(umlfile)
98
+ if self.args.type=='k8s':
99
+ k8s = upgrade.Upgrade_k8s(dir,swg)
100
+ k8s.merge_code()
101
+
102
+ def main():
103
+ parser = argparse.ArgumentParser(description='''产生flask web框架的代码''')
104
+ parser.add_argument('-r', '--root-path',
105
+ help='专案的根目录(default: 当前目录名)',
106
+ default='.')
107
+ subparsers = parser.add_subparsers(title='Command')
108
+
109
+ # 初始项目,建立sample umlmodel,config等文件
110
+ gp_parser = subparsers.add_parser('init', help='创建项目的初始文件,包括uml,cconfig等文件', add_help=True)
111
+ gp_parser.set_defaults(command='init_project')
112
+ gp_parser.add_argument('-f', '--umlfile',
113
+ type = str,
114
+ help='指定mdj文件 (default: sample.mdj),不指定时以项目名为文件名',
115
+ default='default.mdj')
116
+ gp_parser.add_argument('-p', '--project-name',
117
+ help='专案名称(default: 当前目录名)',
118
+ default='.')
119
+ gp_parser.add_argument('-t', '--project-type',
120
+ help='专案类型 :flask,aiohttp,default为 flask',
121
+ type=str, choices=['flask', 'aiohttp'],
122
+ default='flask')
123
+ gp_parser.add_argument('-c', '--python-code',
124
+ help='产生gen_code_run.py 单元',
125
+ action='store_true')
126
+
127
+ gp_parser = subparsers.add_parser('build', help='产生项目相关的文件,UMLmodel或gen_code.yaml有变更时,需要重新执行,以生成代码'
128
+ '-m model名称', add_help=True)
129
+ gp_parser.set_defaults(command='gen_build')
130
+ # gp_parser.add_argument('-m','--model', help='model名称',type=str,default = 'main')
131
+
132
+ gp_parser = subparsers.add_parser('add', help='添加一个方法到swagger相关类', add_help=True)
133
+ gp_parser.set_defaults(command='gen_add')
134
+ # gp_parser.add_argument('-m','--model', help='model名称,暂',type=str)
135
+ gp_parser.add_argument('-p','--swagger_package', help='swagger package class名称,如:employeemng',type=str)
136
+ gp_parser.add_argument('-o','--umlclass_operation', help='uml class的operation名称,如: get_employee',type=str)
137
+ gp_parser.add_argument('-t','--http_method_type', help='操作类别,如:get,post,put,delete',type=str,default='get')
138
+
139
+ gp_parser = subparsers.add_parser('exp', help='把logic view中的umlclass 生成 swagger class,包含 get,post,put,delete 的operation', add_help=True)
140
+ gp_parser.set_defaults(command='gen_export')
141
+ gp_parser.add_argument('-c','--umlclass', help='logic view中的uml class 名称, 如:employee',type=str)
142
+
143
+ gp_parser = subparsers.add_parser('upgrade', help='升级项目相关的文件,如:k8s'
144
+ '-t 升级类型名称', add_help=True)
145
+ gp_parser.set_defaults(command='gen_upgrade')
146
+ gp_parser.add_argument('-t','--type',
147
+ help='升级类型的名称,如:k8s',
148
+ type=str,
149
+ default = 'k8s')
150
+ gp_parser.add_argument('-d', '--dir',
151
+ help='专案目录(default: 当前目录名)',
152
+ default='.')
153
+
154
+ if len(sys.argv)==1:
155
+ parser.print_help()
156
+ print('一) 初始化专案的命令')
157
+ print(' gencode init -h # 查看命令帮助,所有参数都可以独立使用,也可以组合使用')
158
+ print(' gencode init # 产生一个以当前目录名为专案名称的flask项目, 如果想修改专案参数, 请直接修改gen_code.yaml文件')
159
+ print(' gencode init -p drts-order -t flask # 产生一个专案名称为drts-order 的flask项目')
160
+ print(' gencode init -c # 产生gen_code_run.py单元')
161
+ print('二) 产生专案所有的命令,有变更model或配置时时,需要重新执行,以生成代码:')
162
+ print(' gencode build # 按gen_code.yaml文件,产生项目的所有文件')
163
+ print('三) 根据类名生成swagger class,需要在staruml中 执行 reload ')
164
+ print(' gencode exp -h # 查看命令帮助,所有参数都可以独立使用,也可以组合使用')
165
+ print(' gencode exp -c employee # 把logic view中的employee 生成 swagger class,包含 get,post,put,delete 的operation')
166
+ print('四) 给swagger class 增加一个操作(operation),需要在staruml中 执行 reload ')
167
+ print(' gencode add -h # 查看命令帮助,所有参数都可以独立使用,也可以组合使用')
168
+ print(' gencode add -p employeemng -o get_employee -t get # 给swagger class employeemng 增加一个get_employee的操作,操作类型为get')
169
+ print('五) 升级代码,如: 支持 k8s')
170
+ print(' gencode upgrade -h # 查看命令帮助,所有参数都可以独立使用,也可以组合使用')
171
+ print(' gencode upgrade -t k8s # 升级旧专案支持 k8s')
172
+ print('备注: 当不是在当前项目的根目录执行时,需要指定rootpath参数,如:')
173
+ print(' gencode -r ./mwwork/projects/drts-order build ')
174
+ print(' gencode -r ./mwwork/projects/drts-order exp -c employee ')
175
+ print(' gencode -r ./mwwork/projects/drts-order add -p employeemng -o get_employee -t get' )
176
+ sys.exit()
177
+ args = parser.parse_args(sys.argv[1:])
178
+ print(args)
179
+ gen_code = Gen_Code(args)
180
+ getattr(gen_code, args.command)()
181
+ print('gen code success!')
182
+
183
+ if __name__ == '__main__':
184
+ # 设置环境变量
185
+ os.environ['PYTHONPATH'] = os.path.dirname(os.path.abspath(__file__))
186
+ if len(sys.argv) == 1:
187
+ # 调试时使用的默认参数
188
+ # sys.argv.extend(['init', '-p', 'testproject', '-t', 'flask','-c'])
189
+ # sys.argv.extend(['-r','./testproject','build'])
190
+ # sys.argv.extend(['-r','./testproject','exp','-c','order'])
191
+ sys.argv.extend(['-r','./testproject','add','-p','ordermng','-o','delete_orders','-t','delete'])
192
+ # sys.argv.extend(['upgrade','-d','./testproject'])
193
+ main()
194
+
@@ -0,0 +1,325 @@
1
+ Metadata-Version: 2.4
2
+ Name: mwgencode
3
+ Version: 1.4.1
4
+ Summary: 根据starUML文档产生flask专案的代码
5
+ Home-page: https://bitbucket.org/maxwin-inc/gencode/src/
6
+ Author: cxhjet
7
+ Author-email: cxhjet@qq.com
8
+ Classifier: Intended Audience :: Developers
9
+ Classifier: License :: OSI Approved :: BSD License
10
+ Classifier: Operating System :: OS Independent
11
+ Classifier: Programming Language :: Python :: 3.5
12
+ Classifier: Programming Language :: Python :: 3.6
13
+ Classifier: Programming Language :: Python :: 3.7
14
+ Classifier: Programming Language :: Python :: 3.8
15
+ Classifier: Programming Language :: Python :: 3.9
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ License-File: LICENSE.txt
19
+ Requires-Dist: mwutils>=0.1.37
20
+ Requires-Dist: mwauth>=0.4.47
21
+ Requires-Dist: mwsdk>=0.2.12
22
+ Requires-Dist: mwpermission>=0.1.26
23
+ Requires-Dist: mw-aiohttp-session>=0.1.4
24
+ Requires-Dist: mw-aiohttp-babel>=0.1.7
25
+ Requires-Dist: mw-aiohttp-security>=0.1.3
26
+ Requires-Dist: SQLAlchemy>=1.4.31
27
+ Requires-Dist: pyJWT
28
+ Requires-Dist: python-consul
29
+ Requires-Dist: flask_migrate
30
+ Requires-Dist: flask-babel
31
+ Requires-Dist: Flask-Cors
32
+ Requires-Dist: Flask-Redis
33
+ Requires-Dist: Flask-SQLAlchemy>=2.5.1
34
+ Requires-Dist: geojson
35
+ Requires-Dist: redis>=4.0.2
36
+ Requires-Dist: connexion[swagger-ui]>=2.11.1
37
+ Requires-Dist: Flask>=2.0.2
38
+ Requires-Dist: Werkzeug>=0.15.5
39
+ Requires-Dist: yarl>=1.4.2
40
+ Requires-Dist: xlrd
41
+ Requires-Dist: xlsxwriter
42
+ Requires-Dist: aioredis
43
+ Requires-Dist: aiohttp_swagger
44
+ Dynamic: author
45
+ Dynamic: author-email
46
+ Dynamic: classifier
47
+ Dynamic: description
48
+ Dynamic: home-page
49
+ Dynamic: license-file
50
+ Dynamic: requires-dist
51
+ Dynamic: summary
52
+
53
+ `rst file editor <http://rst.ninjs.org>`_
54
+
55
+ mwgencode
56
+
57
+ maxwin 团队产生工程代码的工具,uml 建模工具为starUML,工程代码包括: swagger,controller,
58
+ modules,tests code,seeds code,dockerfile,babel.cfg,uwsgi file等
59
+
60
+
61
+ maxwin 开发框架使用的 lib
62
+
63
+ 1. 工具 `mwutils <https://bitbucket.org/maxwin-inc/mwutils/src>`_
64
+ 2. 认证检查 `mwauth <https://bitbucket.org/maxwin-inc/auth/src>`_
65
+ 3. 确定权限 `mwpermission <https://bitbucket.org/maxwin-inc/mwpermission/src>`_
66
+ 4. 通用服务SDK `mwsdk <https://bitbucket.org/maxwin-inc/mwsdk/src>`_
67
+ 5. aiohttp多语言 `mw-aiohttp-babel <https://bitbucket.org/maxwin-inc/mw-aiohttp-babel/src>`_
68
+ 6. aiohttp认证检查和确权 `mw-aiohttp-security <https://bitbucket.org/maxwin-inc/mw-aiohttp-security/src>`_
69
+ 7. aiohttpsession `mw-aiohttp-session <https://bitbucket.org/maxwin-inc/mw-aiohttp-session/src>`_
70
+ 8. 认证服务 需要kong和consul,支持jwt 和session 认证
71
+ 9. 确权服务 需要kong和consul
72
+
73
+
74
+ .. _gencode:
75
+
76
+ 生成工程代码的方法
77
+
78
+
79
+ 1. 创建工程目录,如:order_system
80
+ 2. cd order_system
81
+ 3. 进入cmd,在cmd 输入 ::
82
+
83
+ gencode init -c
84
+
85
+ 提示如下 ::
86
+
87
+ gen code success!
88
+
89
+ 则表示创建专案成功
90
+
91
+ 4. 在pycharm中打开 order_system
92
+ 5. 用 `staruml2 <http://staruml.io/download>`_ 打开(暂时不支持starUML v3) ./docs/oder_system.mdj,修改model( `建模帮助手册 <https://docs.qq.com/doc/DQkZSaUtvWXpMU1lh>`_)
93
+ 6. 在python中执行 gen_code_run.py,则可产生完整的flask专案文件
94
+
95
+
96
+ 工程文件架构说明
97
+
98
+ > 目录app,为项目
99
+
100
+ - api 目录编写 swagger control 代码
101
+ - __init__.py 创建 flask app
102
+ - models.py 物件模型代码,企业物件的规则在此添加
103
+ - models_base.py 企业物件代码,由工具自动产生,无需手工维护
104
+ - unitls 增加一些工具代码
105
+
106
+ > docs 保存uml module 文件,mdj 文件为starUML v2的文件
107
+
108
+ > migrations 数据迁移文件,工具自动产生,不需要手工维护
109
+
110
+ > swagger 为swagger file 目录,工具自动产生,不需要手工维护
111
+
112
+ > tests 单元测试代码,每次增加api时,均会产生测试模板文件
113
+
114
+ > seeds 为初始化数据的代码,可视需求增减
115
+
116
+ > root 目录下的文件说明:
117
+
118
+ - config.py flask 的config 文件,包括 TestingConfig(单元测试用的config),DevelopmentConfig(开发模式下用的config),ProductionConfig(生产模式下用的config)
119
+
120
+ - docker 相关文件,docker-compose-dev.yaml(docker compose 样本,生产环境下改名成 docker-compose.yaml即可),docker-compose.yaml(本地测试文件,不会上传git),Dockerfile
121
+
122
+ - gen_code_run.py 由工具初始化专案时产生,用于产生完整的专案代码 或 每次更新module后,重新生成专案代码
123
+
124
+ - run.py 开发环境下的run 单元, 包含 consul 和 kong 的注册
125
+
126
+ - uwsgi_run.py 生产环境下的run 单元,包含 consul 和 kong 的注册,在docker 中执行
127
+
128
+ - seed_run.py 产生系统默认数据,比如权限资料
129
+
130
+ - migrate_run.sh变更模型后,执行该文件 升级资料库,仅限开发环境
131
+
132
+ - run-dev.sh 为run.sh的模板文件
133
+
134
+ - run.sh 直接开启docker
135
+
136
+ :备注:
137
+
138
+ 1. 其中 要产生 tests 和seeds 目录,需要把test和seed 两个参数设为True,如:gen_code(include_test=True,include_seeds=True)
139
+ 2. 具体见 **readme.md**
140
+
141
+
142
+ 数据迁移
143
+
144
+
145
+ 支持对开发环境下的sqlite资料的数据迁移,不建议在生产环境中执行,避免人工失误,导致损坏资料
146
+
147
+ 1. install or upgrade ::
148
+
149
+ pip install --upgrade Flask-Migrate
150
+
151
+ 2. 指定Flask app
152
+
153
+ - linux 下 ::
154
+
155
+ export FLASK_APP=migrate_run.py
156
+
157
+ - windows 下 ::
158
+
159
+ set FLASK_APP=migrate_run.py
160
+
161
+ 3. 初始化 ::
162
+
163
+ flask db init
164
+
165
+ 4. 产生迁移语句 ::
166
+
167
+ flask db migrate
168
+
169
+ 5. 执行升级资料库 ::
170
+
171
+ flask db upgrade
172
+
173
+ * 可直接执行migrate_run.bat or migrate_run.sh 升级资料库
174
+
175
+ 单元测试
176
+
177
+ 继承tests下的test_base.py的 BasicTestCase
178
+ 定义test 开头的单元方法,编写测试代码即可
179
+
180
+ > 代码样例
181
+
182
+ .. code-block:: python
183
+
184
+ from .test_base import BasicTestCase
185
+ from app.models import *
186
+ from app import db
187
+ class Testexp(BasicTestCase):
188
+ # 测试model
189
+ def test_data1(self):
190
+ cet = Cacl_exp_type()
191
+ cet.code = 'cet001'
192
+ cet.description = 'cet_des001'
193
+ db.session.add(cet)
194
+ db.session.commit()
195
+ cet = Cacl_exp_type.query.first()
196
+ self.assertEqual(cet.code,'cet001')
197
+
198
+ # 测试方法
199
+ def test_health(self):
200
+ response = self.client.get(self.url_for('health'))
201
+ self.assertTrue(response.status_code, 200)
202
+
203
+
204
+ > 执行单元测试 ::
205
+
206
+ cd tests
207
+ python run.py
208
+
209
+ 升级旧专案的方法
210
+
211
+
212
+ > 如果不是由本工具产生的专案,可 参照生成代码的方法( gencode_)
213
+
214
+ > 如果是该工具产生旧代码,可先备份代码,删除工具之前产生的代码(保留gen_code_run.py和app 目录下的除__init__.py的代码)并重现运行gen_code_run.py产生框架
215
+
216
+
217
+
218
+ Changes
219
+
220
+ 1.3.10(2024-02-26)
221
+ - drone.yml 支持tag
222
+
223
+ 1.3.7(2023-02-21)
224
+ - 升级代码,支持k8s
225
+
226
+ 1.3.6(2023-02-15)
227
+ - 产生k8s.yml模板文档
228
+
229
+ 1.3.0(2021-12-20)
230
+ - 升级 sqlalchmy,redis等的版本
231
+
232
+ 1.2.26(2021-04-22)
233
+ - 支持redis 哨兵模式
234
+
235
+ 1.2.6(2020-09-07)
236
+ - 增加 .drone.yml 模板
237
+ 1.2.6(2020-08-04)
238
+ - 修改project 文件代码
239
+
240
+ 1.2.4(2020-05-20)
241
+ - 修改project 文件代码
242
+
243
+ 1.2.3(2020-05-20)
244
+ - 修改dockerfile template
245
+
246
+ 1.2.0(2020-02-17)
247
+ - 增加GenSwagger 类,创建swagger
248
+
249
+ 1.1.0(2020-02-14)
250
+ - 支持startUML3 ,swagger2.0
251
+
252
+ 1.0.0(2020-01-01)
253
+ - 只支持startUML2.8.1,swagger2.0
254
+
255
+ 0.6.44(2019-12-18)
256
+ - 类别没有ID时,统一用integer 做id
257
+
258
+ 0.6.40(2019-12-18)
259
+ - json中的日期时间增加本地时区
260
+
261
+ 0.6.37(2019-12-18)
262
+ - 增加 new_id 代码
263
+
264
+ 0.6.35(2019-12-04)
265
+ - 增加 file_utils单元
266
+
267
+ 0.6.34(2019-12-04)
268
+ - 修正 put api 错误时触发500的错误
269
+
270
+ 0.6.32(2019-11-27)
271
+ - 有自定义多对多的关联类需要在models中产生后端类
272
+
273
+ 0.6.31(2019-11-25)
274
+ - 数据模型支持 lazy
275
+
276
+ 0.6.30(2019-11-12)
277
+ - 修改url 参数支持大小写
278
+
279
+ 0.6.29(2019-10-22)
280
+ - 修改 text/html对应错误
281
+
282
+ Changes
283
+ 0.6.28(2019-09-26)
284
+ - 修改 setup.tmp
285
+
286
+ 0.6.26(2019-09-20)
287
+ - 支持swagger 中定义 text/html
288
+
289
+ 0.6.24(2019-08-23)
290
+ - 支持cython
291
+
292
+
293
+ 0.6.23(2019-06-25)
294
+ - 升级mwsdk和mwutils的版本
295
+
296
+
297
+ 0.6.22(2018-11-27)
298
+ - 解决table包含触发器时,key为自动新增栏位不能新增的问题
299
+
300
+ 0.6.13(2018-11-27)
301
+ - 支持产生写kafka 代码
302
+
303
+ 0.6.12(2018-11-27)
304
+
305
+ - 修正 描述中 包含" 导致swagger错误的问题
306
+
307
+ 0.6.10(2018-11-07)
308
+ - 升级mwutils,mw-aiohttp-security 开发包
309
+
310
+ 0.6.6(2018-11-06)
311
+
312
+ - 升级mw-aiohttp-session,mw-aiohttp-security 开发包
313
+
314
+ 0.6.4(2018-10-31)
315
+ - 升级mwsdk 开发包
316
+
317
+ 0.6.2(2018-10-31)
318
+ - 解决非unicode中文环境下不能安装的问题
319
+
320
+ 0.6.1(2018-10-30)
321
+ - 修正安装包错误
322
+
323
+ 0.6.0(2018-10-30)
324
+ - 增加readme
325
+
@@ -0,0 +1,84 @@
1
+ manage.py,sha256=dW3wtmYg7DOIT1xRL0WG2Dk0IvCTMyGLTvb6OkYTu20,10077
2
+ gencode/__init__.py,sha256=Elhgah6OJ1KUybEBstiYhfwyWx5Q3DtJsqrzQkbzhKs,5604
3
+ gencode/dd_models.py,sha256=ciYqB3wHnL3KVZIs-dZALwML9OKYrNckClqfIWh7JNg,9965
4
+ gencode/ext.py,sha256=9YK7nuGvUy7qg_mNVQj2r3LDxX26F5VsJC7ZlzBj7qo,657
5
+ gencode/gen_code.py,sha256=SMdyXKWPjUqG_fMkUAkIHlsLWmg7AgmNBHt9W09ZF6U,18680
6
+ gencode/swg2_class_models.py,sha256=ZEgFCjv2SMe2eKrK-HLDcPM3Zb_DaXwvNlSe639-Xps,7723
7
+ gencode/uml_class_models.py,sha256=M160prXejKtU3Jf5rHyj-cO_q0JHtxr1P28xm1ySa80,14384
8
+ gencode/upgrade.py,sha256=It5iM16SRQCsbhzMob2vgAVqiKdzGp-yjwPGhsXJNCs,4495
9
+ gencode/utils.py,sha256=hA-RiHpnzEQxUANVGAxPEYzcVBZJHhusyPXEKhPtXTI,6959
10
+ gencode/gencode/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
+ gencode/gencode/export_class2swgclass.py,sha256=H5jfidFlmj1mrO_Bz_GULTFwP8c7XsJodCIV3g9HPb0,10557
12
+ gencode/gencode/gen_bo_models_code.py,sha256=fSZghV4CtFS8Dj-x06I1un9LUHA8l1-apXR2jtmCIqI,34838
13
+ gencode/gencode/gen_state_code.py,sha256=0L5i3ReyIz-skP7gOWQe2DEz-4Pq4pGpfyt0tet3Pt4,8269
14
+ gencode/gencode/gen_swagger_code.py,sha256=FfikjR87TLi70f-84dzxNW8KV7l19dhVRGKTGdZaTw0,3739
15
+ gencode/gencode/gen_tests_code.py,sha256=nc-cuVNj1uTwuID7jIbKwSUQpgdt-BVIMjMiN8l59ko,4326
16
+ gencode/gencode/sample/__init__.py,sha256=Gmag5jQ93tppNTp8WJngFvhinFf1iqrC32Flc-dv5zM,4
17
+ gencode/gencode/sample/babel.cfg,sha256=mWSNrO3JgEoo5Ff7MWvRjiiJ2Oy4Wu9FPC_MlHEeSDk,98
18
+ gencode/gencode/sample/config-sample.ini,sha256=dbRBakPI9mBiI2zYNeE-a6ea2e8qTD574UGQrPlkCss,172
19
+ gencode/gencode/sample/config.ini,sha256=1sccrU2uKr8jKxTBgnnDo45UqU5weNYDcRIsBPJq6aI,267
20
+ gencode/gencode/sample/create_new_table_run.pys,sha256=qOBsDYRpsmggKek2RLmGBdSYs5Vh90yTvo_VacE145c,565
21
+ gencode/gencode/sample/dockerignore.dock,sha256=Z3tq_ePi5OvvbrSpigs6pMCkTt2vYqxjzkx9tVZuUd8,652
22
+ gencode/gencode/sample/file_utils.pys,sha256=o53XxVZVSGpj1kTrd0-SDt4BRL3S4mqEqx6NQ2zpUac,16379
23
+ gencode/gencode/sample/gencode.xmi,sha256=QUJQbiDIaC_I5NTVLUvWh3o-0zsVUhnLm4ViB3S98GA,2674
24
+ gencode/gencode/sample/gitignore.git,sha256=aFdQVhysBY38jO_qDdNb4vls2b2WJF6OCBTL4M1DzFY,163
25
+ gencode/gencode/sample/migrate_run.bat,sha256=wS9YywFSJRrsZSARFKibjJYWHxHFTO3qDzIf6dv2aM0,100
26
+ gencode/gencode/sample/migrate_run.pys,sha256=VZZSwNq4QZAjYgjLXfRJ1zJV2WTwlu9R1MFh5plHVN8,228
27
+ gencode/gencode/sample/requirements.txt,sha256=D_ZoKTtXDC5HxJ4WkD9sbCKjk-SxHJHPIUolbUztulo,368
28
+ gencode/gencode/sample/run.sh,sha256=bUqUEM6EwzU5j9TGpNvhMVjdGaxtwALwSG3Znqj0f4A,1157
29
+ gencode/gencode/sample/test__init__.pys,sha256=_whZWrLWL0yQGE-6zg0udqA-UvPqCiizSV-tPbU61LY,167
30
+ gencode/gencode/sample/test_run.pys,sha256=x6o38KdhZtn7BREOg6fgGIF4fkvge1yUpMTKSGnF0AI,60
31
+ gencode/gencode/sample/utils.pys,sha256=s1WHGzh6yzFyjUKqsjbhkePZF5SxJYomVck606vS9GY,2744
32
+ gencode/gencode/sample/seeds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
+ gencode/gencode/sample/seeds/models_rm.pys,sha256=0m4nGJeOjZ33ibNG0XdoRMZhQ5iCtqcvEc6x_Sc96Lo,7390
34
+ gencode/gencode/sample/seeds/seed_dev_data.pys,sha256=GX8Np_J3b6Wk65Fq9_ZC3jKsRBQgoDCc-EOO6dgt5AM,819
35
+ gencode/gencode/sample/seeds/seed_init.pys,sha256=tQBuK5sAf1fS46T_hDhnJn_F699WsWh9wvFqISxJj3o,530
36
+ gencode/gencode/sample/seeds/seed_rm.pys,sha256=MjUy1ccpru3qgQe6xiKXL9Q4hbWbS_fAdM9xkqGX1nI,1542
37
+ gencode/gencode/sample/seeds/seed_run.pys,sha256=Ikhi8vXE1uGF6ziizcvtEoQEllAJaPj4Pk24DsTA-bg,370
38
+ gencode/gencode/sample/seeds/seed_utils.pys,sha256=wNViGI1m5kkqP6AkPixLl39IqBx0UQWC5pXKHjqgtO8,659
39
+ gencode/gencode/template/Dockerfile.tmp,sha256=6yxRhnLoc7ACYNlW2ANzgydoBD7GGkPLQ95lvHe81j0,2414
40
+ gencode/gencode/template/README.md,sha256=dSvlxJFdrCcm4RKNyEX93wSkWYlzAgu6qLbJ8SYd23s,2008
41
+ gencode/gencode/template/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
+ gencode/gencode/template/__init__.pys,sha256=QcpnLO4c5z4TKiva7kXqrcHGCjCknOWwyzO8N5UATfw,3172
43
+ gencode/gencode/template/config.pys,sha256=PpQOXn0OcqXvfSTlmoizqCoI5IZWKH4ZRurhdNKgOsY,5824
44
+ gencode/gencode/template/default.conf,sha256=J6Qryk70fgjF7to_o-mpBMLZuCxVNKYyQU8zVnPZ5JY,484
45
+ gencode/gencode/template/docker-compose-dev.yaml,sha256=Y7w3w4qhI_JJf7-HwSuKfl8W3QjJcTgOBBHwwtLtQcs,1878
46
+ gencode/gencode/template/docker-compose.yaml,sha256=DJevjGjRmhLT8aBlaxCrlxBS9-NpRgnHr88zuIuYR1o,2057
47
+ gencode/gencode/template/drone.tmp,sha256=yQisflIclwqHGi_-ZbkckxbLELCTSQFbo4ylrxWKFH0,989
48
+ gencode/gencode/template/flask_models.pys,sha256=lpb-jHurmzwaEkOiCABa3P92-cbvcNA7hICZOUdzb34,3913
49
+ gencode/gencode/template/flask_models_base.pys,sha256=2zfD9-_rcZ93vu_ofoQRK0HW5ZE2mJ8GCLcuQkBj6L4,5743
50
+ gencode/gencode/template/gen_code_flask.yaml,sha256=WYML4C-d4MVUNOpq-hDLqntrNaIb551s3_uZyUulhrg,304
51
+ gencode/gencode/template/gen_code_run.pys,sha256=L5zQSEBDyLX-E98pI05NJAAnJxB30kaYVUQx5DLMoWQ,983
52
+ gencode/gencode/template/k8s-tmp.yml,sha256=qmJyiqn2M6o0UYMg0OzWezgkJt7cCL0jpnpmrBA84ZQ,3923
53
+ gencode/gencode/template/run.pys,sha256=tBM0MGwp_4mfMa-PntCfsFyBe-8faZEQng9QP8YmM_g,2350
54
+ gencode/gencode/template/sample.mdj,sha256=9sxQKfMim8xwMyqPd_UKMFfd8GRak8bcU0FJwwDhLAw,31823
55
+ gencode/gencode/template/setup.tmp,sha256=duyPE785tn2Z0nR6fnvvlPO4MbOEyEtpFRuo8HOiKZ8,2569
56
+ gencode/gencode/template/supervisord.conf,sha256=enGMXaIZDvjF6xTUAyxVlROMkr6M--dlcuT9vmNEJTg,486
57
+ gencode/gencode/template/swagger_file.yaml,sha256=DulR5w03adaATzEkM4BHcNYObwWdwaV4RfmbOfdQuB4,5767
58
+ gencode/gencode/template/swg_class.tmp,sha256=q-N7JFXxamSKLhxToPRVvidvyg-l6xuHRO-6NlCx3MI,1146
59
+ gencode/gencode/template/swg_ctrl_code.pys,sha256=MWx1TE1X3r95AmT_Pae2Y_un7wOA468mcq0Wo3NLx0g,5904
60
+ gencode/gencode/template/swg_package_mng.tmp,sha256=fBko4Eei1d4KV6-4rTJYd-FPgW59Jb0KgNzMhUrnexE,140927
61
+ gencode/gencode/template/test_test_base.tmp,sha256=TV-ojRhWgNFYzOsCI7dh0gScggbmgWCYFBitJGkHPPU,1109
62
+ gencode/gencode/template/uwsgi.ini,sha256=VxBE5f5JFmRBb7uZDnGRGTAnmyIqG8fbBesIseknPrQ,470
63
+ gencode/gencode/template/uwsgi_run.pys,sha256=qIHPCfo5Q0LGL2VZ_I0S229Z2wT2-DQP_qI4xiuZvbU,2028
64
+ gencode/gencode/template/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
+ gencode/gencode/template/tests/__init__.pys,sha256=eYBZ7kX_96D4_lV6gp-KlTadtb_PnbhWVcepVTtM8rQ,151
66
+ gencode/gencode/template/tests/init_test_data.pys,sha256=VKOQ4Yj3L4yUIMi5AQGPoqITM4ZKJ6f6Zl_0dP1yN1w,3648
67
+ gencode/gencode/template/tests/run.pys,sha256=jXlBHVPjEIJde-3f1z9zjpQkTB2ILT2KIcJi10Ndriw,58
68
+ gencode/gencode/template/tests/test_base.pys,sha256=IL26uRvcZXd21FskDgirVf8TWBRHToYzKLkeIH7c3PE,4043
69
+ gencode/gencode/template/tests/test_classmng.pys,sha256=L_uYeXasHqVNwaZNetb-c2pWqFksyAm8E7TMA_1eReU,2983
70
+ gencode/importmdj/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
71
+ gencode/importmdj/import_dd_classes.py,sha256=UBHTl2vR44TtpdTyWzekY0NzyK8vwqRyIaMs7ugeYRc,15530
72
+ gencode/importmdj/import_swagger2_class.py,sha256=yidhAiHIO1WcpbCvZRohcCBaTJCtWrOxVAlevUq6IpU,16451
73
+ gencode/importmdj/import_uml_models.py,sha256=AnDicmsFiofc7HJFHmrH5xHQlb3VTI05fvIwbmmWqR0,21223
74
+ gencode/importxmi/__init__.py,sha256=3jzMkjSCy9Jjy7gjXRSEbMECT6clgpsTS7QyVEcGaVw,40
75
+ gencode/importxmi/import_classes.py,sha256=C-WOdQTLNu7_kQ9pDaXnm0aSAE3AaMlARMUzI2nxlo4,14658
76
+ gencode/importxmi/import_sequences.py,sha256=_BDeujuOAZXMUiwaOxpCFBbEzLlbnQlttSjf8OZ3Kno,8941
77
+ gencode/importxmi/import_states.py,sha256=iUViXCnBxOigTz7VnIWOx9IyIxqcAFG0Se_tueiSRJk,5322
78
+ gencode/importxmi/import_swagger.py,sha256=6OBQKU40Huwz8y9xv2A1JCrFByN2AKS1Ajwvywy_Gy8,6867
79
+ mwgencode-1.4.1.dist-info/licenses/LICENSE.txt,sha256=VXbwArPC9XE7N7cvSBClNMHFbo7CU1p361QXV5bkGpk,1100
80
+ mwgencode-1.4.1.dist-info/METADATA,sha256=wwx6ledC7HwnqDwYNuf0p_4byKTfgo2beKvBxAAbMHE,9193
81
+ mwgencode-1.4.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
82
+ mwgencode-1.4.1.dist-info/entry_points.txt,sha256=l0XwC4_AGSdaYE-bsgEeZMY5ANQk9iV8fxqs22hUGjc,40
83
+ mwgencode-1.4.1.dist-info/top_level.txt,sha256=hgfmCJUvSkDREgCL0mS17m4yGmQCfI5sS5FAmxwXiMY,15
84
+ mwgencode-1.4.1.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.9.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ gencode = manage:main
@@ -0,0 +1,19 @@
1
+ Copyright (c) 2016 The Python Packaging Authority (PyPA)
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
4
+ this software and associated documentation files (the "Software"), to deal in
5
+ the Software without restriction, including without limitation the rights to
6
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
7
+ of the Software, and to permit persons to whom the Software is furnished to do
8
+ so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all
11
+ copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
+ SOFTWARE.
@@ -0,0 +1,2 @@
1
+ gencode
2
+ manage