根据starUML文档产生flask专案的代码
Project description
mwgencode
maxwin 团队产生工程代码的工具,uml 建模工具为starUML,工程代码包括: swagger,controller,
modules,tests code,seeds code,dockerfile,babel.cfg,uwsgi file等
maxwin 开发框架使用的 lib
工具 mwutils
认证检查 mwauth
确定权限 mwpermission
通用服务SDK mwsdk
aiohttp多语言 mw-aiohttp-babel
aiohttp认证检查和确权 mw-aiohttp-security
aiohttpsession mw-aiohttp-session
认证服务 需要kong和consul,支持jwt 和session 认证
确权服务 需要kong和consul
生成工程代码的方法
创建工程目录,如:order_system
cd order_system
进入cmd,在cmd 输入
gencode init -c提示如下
gen code success!则表示创建专案成功
在pycharm中打开 order_system
用 staruml2 打开(暂时不支持starUML v3) ./docs/oder_system.mdj,修改model( 建模帮助手册)
在python中执行 gen_code_run.py,则可产生完整的flask专案文件
工程文件架构说明
> 目录app,为项目
api 目录编写 swagger control 代码
__init__.py 创建 flask app
models.py 物件模型代码,企业物件的规则在此添加
models_base.py 企业物件代码,由工具自动产生,无需手工维护
unitls 增加一些工具代码
> docs 保存uml module 文件,mdj 文件为starUML v2的文件
> migrations 数据迁移文件,工具自动产生,不需要手工维护
> swagger 为swagger file 目录,工具自动产生,不需要手工维护
> tests 单元测试代码,每次增加api时,均会产生测试模板文件
> seeds 为初始化数据的代码,可视需求增减
> root 目录下的文件说明:
config.py flask 的config 文件,包括 TestingConfig(单元测试用的config),DevelopmentConfig(开发模式下用的config),ProductionConfig(生产模式下用的config)
docker 相关文件,docker-compose-dev.yaml(docker compose 样本,生产环境下改名成 docker-compose.yaml即可),docker-compose.yaml(本地测试文件,不会上传git),Dockerfile
gen_code_run.py 由工具初始化专案时产生,用于产生完整的专案代码 或 每次更新module后,重新生成专案代码
run.py 开发环境下的run 单元, 包含 consul 和 kong 的注册
uwsgi_run.py 生产环境下的run 单元,包含 consul 和 kong 的注册,在docker 中执行
seed_run.py 产生系统默认数据,比如权限资料
migrate_run.sh变更模型后,执行该文件 升级资料库,仅限开发环境
run-dev.sh 为run.sh的模板文件
run.sh 直接开启docker
- 备注:
其中 要产生 tests 和seeds 目录,需要把test和seed 两个参数设为True,如:gen_code(include_test=True,include_seeds=True)
具体见 readme.md
数据迁移
支持对开发环境下的sqlite资料的数据迁移,不建议在生产环境中执行,避免人工失误,导致损坏资料
install or upgrade
pip install --upgrade Flask-Migrate指定Flask app
linux 下
export FLASK_APP=migrate_run.pywindows 下
set FLASK_APP=migrate_run.py
初始化
flask db init产生迁移语句
flask db migrate执行升级资料库
flask db upgrade
可直接执行migrate_run.bat or migrate_run.sh 升级资料库
单元测试
继承tests下的test_base.py的 BasicTestCase
定义test 开头的单元方法,编写测试代码即可
> 代码样例
from .test_base import BasicTestCase from app.models import * from app import db class Testexp(BasicTestCase): # 测试model def test_data1(self): cet = Cacl_exp_type() cet.code = 'cet001' cet.description = 'cet_des001' db.session.add(cet) db.session.commit() cet = Cacl_exp_type.query.first() self.assertEqual(cet.code,'cet001') # 测试方法 def test_health(self): response = self.client.get(self.url_for('health')) self.assertTrue(response.status_code, 200)
> 执行单元测试
cd tests python run.py升级旧专案的方法
> 如果不是由本工具产生的专案,可 参照生成代码的方法( gencode)
> 如果是该工具产生旧代码,可先备份代码,删除工具之前产生的代码(保留gen_code_run.py和app 目录下的除__init__.py的代码)并重现运行gen_code_run.py产生框架
Changes
1.2.26(2021-04-22)
支持redis 哨兵模式
1.2.6(2020-09-07)
增加 .drone.yml 模板
1.2.6(2020-08-04)
修改project 文件代码
1.2.4(2020-05-20)
修改project 文件代码
1.2.3(2020-05-20)
修改dockerfile template
1.2.0(2020-02-17)
增加GenSwagger 类,创建swagger
1.1.0(2020-02-14)
支持startUML3 ,swagger2.0
1.0.0(2020-01-01)
只支持startUML2.8.1,swagger2.0
0.6.44(2019-12-18)
类别没有ID时,统一用integer 做id
0.6.40(2019-12-18)
json中的日期时间增加本地时区
0.6.37(2019-12-18)
增加 new_id 代码
0.6.35(2019-12-04)
增加 file_utils单元
0.6.34(2019-12-04)
修正 put api 错误时触发500的错误
0.6.32(2019-11-27)
有自定义多对多的关联类需要在models中产生后端类
0.6.31(2019-11-25)
数据模型支持 lazy
0.6.30(2019-11-12)
修改url 参数支持大小写
0.6.29(2019-10-22)
修改 text/html对应错误
Changes
0.6.28(2019-09-26)
修改 setup.tmp
0.6.26(2019-09-20)
支持swagger 中定义 text/html
0.6.24(2019-08-23)
支持cython
0.6.23(2019-06-25)
升级mwsdk和mwutils的版本
0.6.22(2018-11-27)
解决table包含触发器时,key为自动新增栏位不能新增的问题
0.6.13(2018-11-27)
支持产生写kafka 代码
0.6.12(2018-11-27)
修正 描述中 包含” 导致swagger错误的问题
0.6.10(2018-11-07)
升级mwutils,mw-aiohttp-security 开发包
0.6.6(2018-11-06)
升级mw-aiohttp-session,mw-aiohttp-security 开发包
0.6.4(2018-10-31)
升级mwsdk 开发包
0.6.2(2018-10-31)
解决非unicode中文环境下不能安装的问题
0.6.1(2018-10-30)
修正安装包错误
0.6.0(2018-10-30)
增加readme
Platform: UNKNOWN Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: BSD License Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.