Skip to main content

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

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.2.16.tar.gz (86.9 kB view details)

Uploaded Source

File details

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

File metadata

  • Download URL: mwgencode-1.2.16.tar.gz
  • Upload date:
  • Size: 86.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for mwgencode-1.2.16.tar.gz
Algorithm Hash digest
SHA256 5110d247a9d2b8a043dc02af57ec2aaeca52f34ffaccd1766bd3608fe479d34e
MD5 7ac87c5a4c9d3ed651a95c92cfb29d67
BLAKE2b-256 c4a8842b0811a438dc7e4728781a28a9da0c037840c858f372b3b91cba7017cd

See more details on using hashes here.

Release history Release notifications | RSS feed

Supported by

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