123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- """
- flaskbb.manage
- ~~~~~~~~~~~~~~~~~~~~
- This script provides some easy to use commands for
- creating the database with or without some sample content.
- You can also run the development server with it.
- Just type `python manage.py` to see the full list of commands.
- :copyright: (c) 2014 by the FlaskBB Team.
- :license: BSD, see LICENSE for more details.
- """
- from flask import current_app
- from flask.ext.script import Manager, Shell, Server, prompt, prompt_pass
- from flask.ext.migrate import MigrateCommand
- from flaskbb import create_app
- from flaskbb.extensions import db
- from flaskbb.utils.populate import (create_test_data, create_welcome_forum,
- create_admin_user, create_default_groups)
- # Use the development configuration if available
- try:
- from flaskbb.configs.development import DevelopmentConfig as Config
- except ImportError:
- from flaskbb.configs.default import DefaultConfig as Config
- app = create_app(Config)
- manager = Manager(app)
- # Run local server
- manager.add_command("runserver", Server("localhost", port=8080))
- # Migration commands
- manager.add_command('db', MigrateCommand)
- # Add interactive project shell
- def make_shell_context():
- return dict(app=current_app, db=db)
- manager.add_command("shell", Shell(make_context=make_shell_context))
- @manager.command
- def initdb():
- """Creates the database."""
- db.create_all()
- @manager.command
- def dropdb():
- """Deletes the database"""
- db.drop_all()
- @manager.command
- def createall():
- """Creates the database with some testing content."""
- # Just for testing purposes
- db.drop_all()
- db.create_all()
- create_test_data()
- @manager.option('-u', '--username', dest='username')
- @manager.option('-p', '--password', dest='password')
- @manager.option('-e', '--email', dest='email')
- def create_admin(username, password, email):
- """Creates the admin user"""
- username = prompt("Username")
- email = prompt("A valid email address")
- password = prompt_pass("Password")
- create_admin_user(username, email, password)
- @manager.option('-u', '--username', dest='username')
- @manager.option('-p', '--password', dest='password')
- @manager.option('-e', '--email', dest='email')
- @manager.option('-d', '--dropdb', dest='dropdb', default=False)
- def initflaskbb(username, password, email, dropdb=False):
- """Initializes FlaskBB with all necessary data"""
- if dropdb:
- app.logger.info("Dropping previous database...")
- db.drop_all()
- app.logger.info("Creating tables...")
- db.create_all()
- app.logger.info("Creating default groups...")
- create_default_groups()
- app.logger.info("Creating admin user...")
- create_admin(username, password, email)
- app.logger.info("Creating welcome forum...")
- create_welcome_forum()
- app.logger.info("Congratulations! FlaskBB has been successfully installed")
- if __name__ == "__main__":
- manager.run()
|