manager.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  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:星期五 2017-7-28 10:43:51 (CST)
  10. # By:
  11. # Description:
  12. # **************************************************************************
  13. from flask_script import Manager
  14. from flask_migrate import Migrate, MigrateCommand
  15. from forums import create_app
  16. from forums.extension import db,cache
  17. from forums.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('config')
  23. migrate = Migrate(app, db)
  24. manager = Manager(app)
  25. @manager.command
  26. def create_index():
  27. from forums.extension import search
  28. return search.create_index()
  29. @manager.command
  30. def update_index():
  31. from forums.extension import search
  32. return search.create_index(update=True)
  33. @manager.command
  34. def delete_index():
  35. from forums.extension import search
  36. return search.create_index(delete=True)
  37. @manager.command
  38. def clear_cache():
  39. with app.app_context():
  40. cache.clear()
  41. @manager.command
  42. def test_index():
  43. from forums.extension import search
  44. from forums.api.topic.models import Topic
  45. results = search.whoosh_search(Topic, '河海', ['title'], 1)
  46. print('results:')
  47. print(results)
  48. for i in results:
  49. print(i['title'])
  50. print(i.highlights("title")) # 高亮标题中的检索词
  51. @manager.command
  52. def runserver():
  53. return app.run()
  54. @manager.command
  55. def init_db():
  56. """
  57. Drops and re-creates the SQL schema
  58. """
  59. # db.drop_all()
  60. db.configure_mappers()
  61. db.create_all()
  62. db.session.commit()
  63. @manager.command
  64. def babel_init():
  65. pybabel = 'pybabel'
  66. os.system(pybabel +
  67. ' extract -F babel.cfg -k lazy_gettext -o messages.pot forums')
  68. os.system(pybabel + ' init -i messages.pot -d translations -l zh')
  69. os.unlink('messages.pot')
  70. @manager.command
  71. def babel_update():
  72. pybabel = 'pybabel'
  73. os.system(
  74. pybabel +
  75. ' extract -F babel.cfg -k lazy_gettext -o messages.pot forums templates'
  76. )
  77. os.system(pybabel + ' update -i messages.pot -d translations')
  78. os.unlink('messages.pot')
  79. @manager.command
  80. def babel_compile():
  81. pybabel = 'pybabel'
  82. os.system(pybabel + ' compile -d translations')
  83. @manager.option('-u', '--username', dest='username')
  84. def delete_user(username):
  85. user = User.query.filter_by(username=username).first()
  86. user.delete()
  87. @manager.option('-u', '--username', dest='username')
  88. def password_user(username):
  89. password = getpass('Password:')
  90. user = User.query.filter_by(username=username).first()
  91. user.set_password(password)
  92. user.save()
  93. @manager.option('-u', '--username', dest='username')
  94. @manager.option('-e', '--email', dest='email')
  95. @manager.option('-w', '--password', dest='password')
  96. def create_user(username, email, password):
  97. if username is None:
  98. username = input('Username(default admin):') or 'admin'
  99. if email is None:
  100. email = input('Email:')
  101. if password is None:
  102. password = getpass('Password:')
  103. user = User(username=username, email=email)
  104. user.set_password(password)
  105. user.is_superuser = True
  106. user.is_confirmed = True
  107. # user.roles = 'Super'
  108. # user.confirmed_time = datetime.utcnow()
  109. user.save()
  110. @manager.option('-h', '--host', dest='host', default='127.0.0.1')
  111. @manager.option('-p', '--port', dest='port', type=int, default=8000)
  112. @manager.option('-w', '--workers', dest='workers', type=int, default=2)
  113. def gunicorn(host, port, workers):
  114. """use gunicorn"""
  115. from gunicorn.app.base import Application
  116. class FlaskApplication(Application):
  117. def init(self, parser, opts, args):
  118. return {'bind': '{0}:{1}'.format(host, port), 'workers': workers}
  119. def load(self):
  120. return app
  121. application = FlaskApplication()
  122. return application.run()
  123. manager.add_command('db', MigrateCommand)
  124. if __name__ == '__main__':
  125. manager.run()