Add database initialization in manage.py.

This commit is contained in:
Alexis Lahouze 2016-01-02 10:13:26 +01:00
parent 898ba000bb
commit 6a38d62d47

View File

@ -1,14 +1,47 @@
#!/usr/bin/env python #!/usr/bin/env python
from flask.ext.script import Manager from flask.ext.script import Manager
from flask.ext.migrate import Migrate, MigrateCommand from flask.ext.migrate import Migrate, MigrateCommand, stamp
from accountant import app, db from accountant import app, db
from accountant.api.models.users import User
manager = Manager(app) manager = Manager(app)
migrate = Migrate(app, db) migrate = Migrate(app, db)
manager.add_command('db', MigrateCommand) manager.add_command('db', MigrateCommand)
@manager.command
def initdb():
""" Create the database ans stamp it. """
tables = db.engine.table_names()
if len(tables) > 1 and 'alembic_version' not in tables:
exit("Database already initialized.")
db.metadata.create_all(bind=db.engine)
stamp()
print("Database created.")
user_manager = Manager(usage="Manage users.")
manager.add_command('user', user_manager)
@user_manager.command
def add(email, password):
""" Add a new user. """
user = User()
user.email = email
user.password = User.hash_password(password)
db.session.add(user)
print("User '%s' successfully added." % email)
if __name__ == "__main__": if __name__ == "__main__":
manager.run() manager.run()