Skip to main content

根据starUML文档产生flask专案的代码

Project description

rst file editor

mwgencode

maxwin 团队产生工程代码的工具,uml 建模工具为starUML,工程代码包括: swagger,controller,

modules,tests code,seeds code,dockerfile,babel.cfg,uwsgi file等

maxwin 开发框架使用的 lib

  1. 工具 mwutils

  2. 认证检查 mwauth

  3. 确定权限 mwpermission

  4. 通用服务SDK mwsdk

  5. aiohttp多语言 mw-aiohttp-babel

  6. aiohttp认证检查和确权 mw-aiohttp-security

  7. aiohttpsession mw-aiohttp-session

  8. 认证服务 需要kong和consul,支持jwt 和session 认证

  9. 确权服务 需要kong和consul

生成工程代码的方法

  1. 创建工程目录,如:order_system

  2. cd order_system

  3. 进入cmd,在cmd 输入

    gencode init -c

提示如下

gen code success!

则表示创建专案成功

  1. 在pycharm中打开 order_system

  2. staruml2 打开(暂时不支持starUML v3) ./docs/oder_system.mdj,修改model( 建模帮助手册

  3. 在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

备注:
  1. 其中 要产生 tests 和seeds 目录,需要把test和seed 两个参数设为True,如:gen_code(include_test=True,include_seeds=True)

  2. 具体见 readme.md

数据迁移

支持对开发环境下的sqlite资料的数据迁移,不建议在生产环境中执行,避免人工失误,导致损坏资料

  1. install or upgrade

    pip install --upgrade Flask-Migrate
  2. 指定Flask app

  • linux 下

    export FLASK_APP=migrate_run.py
  • windows 下

    set FLASK_APP=migrate_run.py
  1. 初始化

    flask db init
  2. 产生迁移语句

    flask db migrate
  3. 执行升级资料库

    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.10(2024-02-26)

  • drone.yml 支持tag

1.3.7(2023-02-21)

  • 升级代码,支持k8s

1.3.6(2023-02-15)

  • 产生k8s.yml模板文档

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.

Source Distribution

mwgencode-1.3.11.tar.gz (96.5 kB view details)

Uploaded Source

File details

Details for the file mwgencode-1.3.11.tar.gz.

File metadata

  • Download URL: mwgencode-1.3.11.tar.gz
  • Upload date:
  • Size: 96.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.10.0 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/1.0.0 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/7.0.2 keyring/24.3.1 rfc3986/1.5.0 colorama/0.4.4 CPython/3.9.10

File hashes

Hashes for mwgencode-1.3.11.tar.gz
Algorithm Hash digest
SHA256 ab6518a370f89a5f754bf683a60af8286c99471d6b3ef53ca86e8da9e77762ea
MD5 29f9683d87d737a32d82d025986adbe0
BLAKE2b-256 3b5bfc8c57b3eeea6dfab3e38c21b5d838fae2d863a63301f9653c70a70e682b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page