Source code for manage

#!/usr/bin/env python
import os
COV = None
if os.environ.get('FLASK_COVERAGE'):
    import coverage
    COV = coverage.coverage(branch=True, include='app/*')
    COV.start()

from flask.ext.script import Manager, Shell
from flask.ext.migrate import Migrate, MigrateCommand

from app import create_app, db
from app.models import User, Region, River, Section, Gage, Sensor, Sample
from app.user_manager import user_manager

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


[docs]def make_shell_context(): return dict(app=app, db=db, User=User, Region=Region, River=River, Section=Section, Gage=Gage, Sensor=Sensor, Sample=Sample)
manager.add_command("shell", Shell(make_context=make_shell_context)) manager.add_command('db', MigrateCommand) manager.add_command('user', user_manager) # @manager.command # def deploy(): # """Run deployment tasks.""" # from flask.ext.migrate import upgrade # # # migrate database to latest revision # upgrade() # http://flask.pocoo.org/snippets/117/ manager helper to list routes # http://stackoverflow.com/questions/13317536/get-a-list-of-all-routes-defined-in-the-app @manager.command
[docs]def list_routes(): """ Lists routes for app """ import urllib output = [] for rule in app.url_map.iter_rules(): methods = ','.join(rule.methods) line = urllib.unquote("{:50s} {:20s} {}".format(rule.endpoint, methods, rule)) output.append(line) for line in sorted(output): print(line)
@manager.command
[docs]def test(coverage=False): """ Run the unit tests. """ 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
[docs]def backup(): """ Backup database to Dropbox """ import datetime from app import backup as backup_db filename = 'gage_web-{time}.tar'.format( time=datetime.datetime.utcnow().strftime('%Y%m%d-%H%M')) os.system("pg_dump -Ft {db} > {filename}".format( db=db.engine.url.database, filename=filename)) print('Uploading {filename} to Dropbox'.format(filename=filename)) print(backup_db.backup(filename)) os.system("rm " + filename)
if __name__ == '__main__': manager.run()