manager.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # **************************************************************************
  4. # Copyright © 2016 jianglin
  5. # File Name: manager.py
  6. # Author: jianglin
  7. # Email: xiyang0807@gmail.com
  8. # Created: 2016-10-25 22:08:39 (CST)
  9. # Last Update:星期四 2016-12-29 21:42:7 (CST)
  10. # By:
  11. # Description:
  12. # **************************************************************************
  13. from flask_script import Manager
  14. from flask_migrate import Migrate, MigrateCommand
  15. from maple import create_app
  16. from maple.extension import db
  17. from api.user.models import User, UserInfo, UserSetting
  18. from getpass import getpass
  19. from werkzeug.security import generate_password_hash
  20. from datetime import datetime
  21. import os
  22. app = create_app()
  23. migrate = Migrate(app, db)
  24. manager = Manager(app)
  25. @manager.command
  26. def runserver():
  27. return app.run()
  28. @manager.command
  29. def init_db():
  30. """
  31. Drops and re-creates the SQL schema
  32. """
  33. # db.drop_all()
  34. db.configure_mappers()
  35. db.create_all()
  36. db.session.commit()
  37. @manager.command
  38. def babel_init():
  39. pybabel = 'pybabel'
  40. os.system(pybabel +
  41. ' extract -F babel.cfg -k lazy_gettext -o messages.pot maple')
  42. os.system(pybabel + ' init -i messages.pot -d translations -l zh')
  43. os.unlink('messages.pot')
  44. @manager.command
  45. def babel_update():
  46. pybabel = 'pybabel'
  47. os.system(
  48. pybabel +
  49. ' extract -F babel.cfg -k lazy_gettext -o messages.pot maple templates')
  50. os.system(pybabel + ' update -i messages.pot -d translations')
  51. os.unlink('messages.pot')
  52. @manager.command
  53. def babel_compile():
  54. pybabel = 'pybabel'
  55. os.system(pybabel + ' compile -d translations')
  56. @manager.option('-u', '--username', dest='username')
  57. @manager.option('-e', '--email', dest='email')
  58. @manager.option('-w', '--password', dest='password')
  59. def create_user(username, email, password):
  60. if username is None:
  61. username = input('Username(default admin):') or 'admin'
  62. if email is None:
  63. email = input('Email:')
  64. if password is None:
  65. password = getpass('Password:')
  66. user = User()
  67. user.username = username
  68. user.password = password
  69. user.email = email
  70. user.is_superuser = True
  71. user.is_confirmed = True
  72. # user.roles = 'Super'
  73. # user.confirmed_time = datetime.utcnow()
  74. db.session.add(user)
  75. db.session.commit()
  76. info = UserInfo()
  77. info.user = user
  78. setting = UserSetting()
  79. setting.user = user
  80. db.session.commit()
  81. @manager.option('-h', '--host', dest='host', default='127.0.0.1')
  82. @manager.option('-p', '--port', dest='port', type=int, default=8000)
  83. @manager.option('-w', '--workers', dest='workers', type=int, default=2)
  84. def gunicorn(host, port, workers):
  85. """use gunicorn"""
  86. from gunicorn.app.base import Application
  87. class FlaskApplication(Application):
  88. def init(self, parser, opts, args):
  89. return {'bind': '{0}:{1}'.format(host, port), 'workers': workers}
  90. def load(self):
  91. return app
  92. application = FlaskApplication()
  93. return application.run()
  94. manager.add_command('db', MigrateCommand)
  95. if __name__ == '__main__':
  96. manager.run()