Add database initialization in manage.py.

This commit is contained in:
Alexis Lahouze 2016-01-02 10:13:26 +01:00
parent 134eaf6f0b
commit 80a1e85db2

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()