Overhaul initdb
command a bit.
Not sure it's done yet, need to commit for further testing.
This commit is contained in:
parent
1302e9e207
commit
e7e5908615
|
@ -34,6 +34,7 @@ import argparse
|
|||
import datetime
|
||||
import socket
|
||||
import shutil
|
||||
import subprocess
|
||||
import warnings
|
||||
import logging
|
||||
from getpass import getpass
|
||||
|
@ -849,18 +850,31 @@ class InitializeDatabase(Subcommand):
|
|||
description = "Create initial tables in a database."
|
||||
|
||||
def add_parser_args(self, parser):
|
||||
parser.add_argument('url', metavar='URL',
|
||||
help="Database engine URL")
|
||||
parser.add_argument('--with-admin', action='store_true',
|
||||
help="Create an 'admin' user account if none exists.")
|
||||
|
||||
def run(self, args):
|
||||
from sqlalchemy import create_engine
|
||||
from alembic.util import obfuscate_url_pw
|
||||
from rattail.db import model
|
||||
|
||||
engine = create_engine(args.url)
|
||||
model.Base.metadata.create_all(engine)
|
||||
print("Created initial tables for database:")
|
||||
print(" {0}".format(obfuscate_url_pw(engine.url)))
|
||||
from rattail.db import model, auth
|
||||
|
||||
# Bring database current per Alembic migrations.
|
||||
config_path = os.path.abspath(self.config.files_read[-1])
|
||||
subprocess.call(['{0}/bin/alembic'.format(sys.prefix), '--config', config_path, 'upgrade', 'heads'])
|
||||
|
||||
# Maybe create 'admin' user with 'admin' password.
|
||||
if args.with_admin:
|
||||
session = self.db_session_factory()
|
||||
if not session.query(model.User).filter_by(username='admin').count():
|
||||
admin = model.User(username='admin')
|
||||
auth.set_user_password(admin, 'admin')
|
||||
admin.roles.append(auth.administrator_role(session))
|
||||
session.add(admin)
|
||||
self.stdout.write("[rattail] created 'admin' user with password 'admin'\n")
|
||||
session.commit()
|
||||
session.close()
|
||||
|
||||
self.stdout.write("[rattail] initialized schema for database: {0}\n".format(
|
||||
obfuscate_url(self.config.rattail_engine.url)))
|
||||
|
||||
|
||||
class LoadHostDataCommand(Subcommand):
|
||||
|
|
Loading…
Reference in a new issue