Metadata-Version: 2.2
Name: mwgencode
Version: 1.4.6
Summary: 根据starUML文档产生flask专案的代码
Home-page: https://bitbucket.org/maxwin-inc/gencode/src/
Author: cxhjet
Author-email: cxhjet@qq.com
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
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
License-File: LICENSE.txt
Requires-Dist: mwutils>=0.1.41
Requires-Dist: mwauth>=0.4.49
Requires-Dist: mwsdk>=0.3.2
Requires-Dist: mwpermission>=0.1.26
Requires-Dist: mw-aiohttp-session>=0.1.13
Requires-Dist: mw-aiohttp-babel>=0.1.7
Requires-Dist: mw-aiohttp-security>=0.1.13
Requires-Dist: SQLAlchemy>=1.4.31
Requires-Dist: pyJWT
Requires-Dist: python-consul
Requires-Dist: flask_migrate
Requires-Dist: flask-babel
Requires-Dist: Flask-Cors
Requires-Dist: Flask-Redis
Requires-Dist: Flask-SQLAlchemy>=2.5.1
Requires-Dist: geojson
Requires-Dist: redis>=4.0.2
Requires-Dist: connexion[swagger-ui]>=2.11.1
Requires-Dist: Flask>=2.0.2
Requires-Dist: Werkzeug>=0.15.5
Requires-Dist: yarl>=1.4.2
Requires-Dist: xlrd
Requires-Dist: xlsxwriter
Requires-Dist: aioredis
Requires-Dist: aiohttp_swagger
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: home-page
Dynamic: requires-dist
Dynamic: summary

`rst file editor <http://rst.ninjs.org>`_



mwgencode



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

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





maxwin 开发框架使用的 lib



1. 工具 `mwutils <https://bitbucket.org/maxwin-inc/mwutils/src>`_

2. 认证检查 `mwauth <https://bitbucket.org/maxwin-inc/auth/src>`_

3. 确定权限 `mwpermission <https://bitbucket.org/maxwin-inc/mwpermission/src>`_

4. 通用服务SDK `mwsdk <https://bitbucket.org/maxwin-inc/mwsdk/src>`_

5. aiohttp多语言 `mw-aiohttp-babel <https://bitbucket.org/maxwin-inc/mw-aiohttp-babel/src>`_

6. aiohttp认证检查和确权 `mw-aiohttp-security <https://bitbucket.org/maxwin-inc/mw-aiohttp-security/src>`_

7. aiohttpsession `mw-aiohttp-session <https://bitbucket.org/maxwin-inc/mw-aiohttp-session/src>`_

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

9. 确权服务 需要kong和consul





.. _gencode:



生成工程代码的方法





1. 创建工程目录，如：order_system

2. cd order_system

3. 进入cmd,在cmd 输入 ::



    gencode init -c



提示如下 ::



        gen code success!



则表示创建专案成功



4. 在pycharm中打开 order_system

5. 用 `staruml2 <http://staruml.io/download>`_ 打开(暂时不支持starUML v3) ./docs/oder_system.mdj，修改model（ `建模帮助手册 <https://docs.qq.com/doc/DQkZSaUtvWXpMU1lh>`_）

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



3. 初始化 ::



    flask db init



4. 产生迁移语句 ::



    flask db migrate



5. 执行升级资料库 ::



    flask db upgrade



* 可直接执行migrate_run.bat or migrate_run.sh 升级资料库



单元测试



 继承tests下的test_base.py的 BasicTestCase

 定义test 开头的单元方法，编写测试代码即可



> 代码样例



.. code-block:: python



    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



