123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- # **************************************************************************
- # Copyright © 2016 jianglin
- # File Name: manager.py
- # Author: jianglin
- # Email: xiyang0807@gmail.com
- # Created: 2016-10-25 22:08:39 (CST)
- # Last Update:星期五 2017-7-28 10:43:51 (CST)
- # By:
- # Description:
- # **************************************************************************
- from flask_script import Manager
- from flask_migrate import Migrate, MigrateCommand
- from forums import create_app
- from forums.extension import db,cache
- from forums.api.user.models import User, UserInfo, UserSetting
- from getpass import getpass
- from werkzeug.security import generate_password_hash
- from datetime import datetime
- import os
- app = create_app('config')
- migrate = Migrate(app, db)
- manager = Manager(app)
- @manager.command
- def create_index():
- from forums.extension import search
- return search.create_index()
- @manager.command
- def update_index():
- from forums.extension import search
- return search.create_index(update=True)
- @manager.command
- def delete_index():
- from forums.extension import search
- return search.create_index(delete=True)
- @manager.command
- def clear_cache():
- with app.app_context():
- cache.clear()
- @manager.command
- def test_index():
- from forums.extension import search
- from forums.api.topic.models import Topic
- results = search.whoosh_search(Topic, '河海', ['title'], 1)
- print('results:')
- print(results)
- for i in results:
- print(i['title'])
- print(i.highlights("title")) # 高亮标题中的检索词
- @manager.command
- def runserver():
- return app.run()
- @manager.command
- def init_db():
- """
- Drops and re-creates the SQL schema
- """
- # db.drop_all()
- db.configure_mappers()
- db.create_all()
- db.session.commit()
- @manager.command
- def babel_init():
- pybabel = 'pybabel'
- os.system(pybabel +
- ' extract -F babel.cfg -k lazy_gettext -o messages.pot forums')
- os.system(pybabel + ' init -i messages.pot -d translations -l zh')
- os.unlink('messages.pot')
- @manager.command
- def babel_update():
- pybabel = 'pybabel'
- os.system(
- pybabel +
- ' extract -F babel.cfg -k lazy_gettext -o messages.pot forums templates'
- )
- os.system(pybabel + ' update -i messages.pot -d translations')
- os.unlink('messages.pot')
- @manager.command
- def babel_compile():
- pybabel = 'pybabel'
- os.system(pybabel + ' compile -d translations')
- @manager.option('-u', '--username', dest='username')
- def delete_user(username):
- user = User.query.filter_by(username=username).first()
- user.delete()
- @manager.option('-u', '--username', dest='username')
- def password_user(username):
- password = getpass('Password:')
- user = User.query.filter_by(username=username).first()
- user.set_password(password)
- user.save()
- @manager.option('-u', '--username', dest='username')
- @manager.option('-e', '--email', dest='email')
- @manager.option('-w', '--password', dest='password')
- def create_user(username, email, password):
- if username is None:
- username = input('Username(default admin):') or 'admin'
- if email is None:
- email = input('Email:')
- if password is None:
- password = getpass('Password:')
- user = User(username=username, email=email)
- user.set_password(password)
- user.is_superuser = True
- user.is_confirmed = True
- # user.roles = 'Super'
- # user.confirmed_time = datetime.utcnow()
- user.save()
- @manager.option('-h', '--host', dest='host', default='127.0.0.1')
- @manager.option('-p', '--port', dest='port', type=int, default=8000)
- @manager.option('-w', '--workers', dest='workers', type=int, default=2)
- def gunicorn(host, port, workers):
- """use gunicorn"""
- from gunicorn.app.base import Application
- class FlaskApplication(Application):
- def init(self, parser, opts, args):
- return {'bind': '{0}:{1}'.format(host, port), 'workers': workers}
- def load(self):
- return app
- application = FlaskApplication()
- return application.run()
- manager.add_command('db', MigrateCommand)
- if __name__ == '__main__':
- manager.run()
|