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
					
				
					 1 changed files with 23 additions and 9 deletions
				
			
		|  | @ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Lance Edgar
						Lance Edgar