根据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
备注: |
|
---|
数据迁移
支持对开发环境下的sqlite资料的数据迁移,不建议在生产环境中执行,避免人工失误,导致损坏资料
install or upgrade
pip install --upgrade Flask-Migrate
指定Flask app
linux 下
export FLASK_APP=migrate_run.py
windows 下
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.3.0(2021-12-20)
- 升级 sqlalchmy,redis等的版本
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
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.