#!/usr/bin/env python
#-*- coding:utf-8 -*-

import os
from app import create_app, db
from app.admin.models import Asset
from app.auth.models import LoginUser
from flask_script import Manager, Shell
from flask_migrate import Migrate, MigrateCommand

# 使用指定配置初始化创建flask app,配置文件包括生产配置、开发配置、单元测试配置
app = create_app(os.getenv('SrcPM_CONFIG') or 'default')
# 关闭flask app debug 模式
app.debug = False

# 创建flask里app
app = create_app()

# 创建数据库迁移工具对象的步足有3步
# 1. 创建flask脚本管理工具对象
manager = Manager(app)

# 2. 创建数据库迁移工具对象
Migrate(app, db, compare_type=True)

# 3. 向manager对象中添加数据库的操作命令
# 第一个参数是给这条命令取的名字叫什么,关于数据库的我们通常叫db
# 第二个参数就是具体的命令
manager.add_command("db", MigrateCommand)

# 创建管理员  --manager的作用: 是在终端使用命令, option的作用:装饰的之后,可以传递参数
@manager.option("-u", "--username", dest="username")
@manager.option("-p", "--password", dest="password")
@manager.option("-e", "--email", dest="email")
def create_cms_user(username, password, email):
    """创建管理员用户"""
    user = CMSUser(username=username, password=password, email=email)
    # 添加
    db.session.add(user)
    try:
        # 提交到数据库
        db.session.commit()
    except Exception as e:
        print(e)
        db.session.rollback()


# 返回应用和数据库连接环境,以提供对数据库的管理操作和升级
def make_shell_context():
    return dict(app=app, db=db, Asset=Asset, LoginUser=LoginUser)
manager.add_command('shell', Shell(make_context=make_shell_context))
manager.add_command('db', MigrateCommand)

# 单元测试命令 python manage.py test
@manager.command #添加自定命令create_role  终端运行
def test():
	"""Run the unit test."""
	import unittest
	tests = unittest.TestLoader().discover('tests')
	unittest.TextTestRunner(verbosity=2).run(tests)


if __name__ == '__main__':
    #运行应用程序  
    manager.run()

 

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐