manage 源代码

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

import os
COV = None
if os.environ.get('FLASK_COVERAGE'):
    import coverage
    COV = coverage.coverage(branch=True, include='app/*')
    COV.start()

from app import create_app, db
from app.models import User, Role, Movie, Record, Permission
from flask_script import Manager, Shell
from flask_migrate import Migrate, MigrateCommand

app = create_app(os.getenv('FLASK_CONFIG') or 'default')
manager = Manager(app)
migrate = Migrate(app, db)

[文档]def make_shell_context(): """ .. note:: 为 shell 命令注册一个回调函数 每次启动 shell 会话时都自动导入程序、数据库实例以及模型。 """ return dict(app=app, db=db, User=User,Permission=Permission, Role=Role, Movie=Movie, Record=Record)
manager.add_command("shell", Shell(make_context=make_shell_context)) manager.add_command('db', MigrateCommand) @manager.command
[文档]def test(coverage=False): """ 单元测试启动入口 """ if coverage and not os.environ.get('FLASK_COVERAGE'): import sys os.environ['FLASK_COVERAGE'] = '1' os.execvp(sys.executable, [sys.executable]+sys.argv) import unittest tests = unittest.TestLoader().discover('tests') unittest.TextTestRunner(verbosity=2).run(tests) if COV: COV.stop() COV.save() print('Coverage Summary:') COV.report() basedir = os.path.abspath(os.path.dirname(__file__)) covdir = os.path.join(basedir, 'tmp/coverage') COV.html_report(directory=covdir) print('HTML version: file://%s/index.html' % covdir) COV.erase()
@manager.command
[文档]def deploy(): """ 发布项目 """ from flask.ext.migrate import upgrade from app.models import Role, User # migrate database to latest revision upgrade() # create user roles Role.insert_roles()
if __name__ == '__main__': manager.run()