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 datetime | ||||||
| import socket | import socket | ||||||
| import shutil | import shutil | ||||||
|  | import subprocess | ||||||
| import warnings | import warnings | ||||||
| import logging | import logging | ||||||
| from getpass import getpass | from getpass import getpass | ||||||
|  | @ -849,18 +850,31 @@ class InitializeDatabase(Subcommand): | ||||||
|     description = "Create initial tables in a database." |     description = "Create initial tables in a database." | ||||||
| 
 | 
 | ||||||
|     def add_parser_args(self, parser): |     def add_parser_args(self, parser): | ||||||
|         parser.add_argument('url', metavar='URL', |         parser.add_argument('--with-admin', action='store_true', | ||||||
|                             help="Database engine URL") |                             help="Create an 'admin' user account if none exists.") | ||||||
| 
 | 
 | ||||||
|     def run(self, args): |     def run(self, args): | ||||||
|         from sqlalchemy import create_engine |  | ||||||
|         from alembic.util import obfuscate_url_pw |         from alembic.util import obfuscate_url_pw | ||||||
|         from rattail.db import model |         from rattail.db import model, auth | ||||||
| 
 | 
 | ||||||
|         engine = create_engine(args.url) |         # Bring database current per Alembic migrations. | ||||||
|         model.Base.metadata.create_all(engine) |         config_path = os.path.abspath(self.config.files_read[-1]) | ||||||
|         print("Created initial tables for database:") |         subprocess.call(['{0}/bin/alembic'.format(sys.prefix), '--config', config_path, 'upgrade', 'heads']) | ||||||
|         print("  {0}".format(obfuscate_url_pw(engine.url))) | 
 | ||||||
|  |         # 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): | class LoadHostDataCommand(Subcommand): | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Lance Edgar
						Lance Edgar