from flask import current_app from flask_migrate import upgrade import os from app.models import ( CorpusFollowerRole, Role, SpaCyNLPPipelineModel, TesseractOCRPipelineModel, User ) from . import bp @bp.cli.command('deploy') def deploy(): ''' Run deployment tasks. ''' # Make default directories print('Make default directories') base_dir = current_app.config['NOPAQUE_DATA_DIR'] default_dirs = [ os.path.join(base_dir, 'tmp'), os.path.join(base_dir, 'users') ] for dir in default_dirs: if os.path.exists(dir): if not os.path.isdir(dir): raise NotADirectoryError(f'{dir} is not a directory') else: os.mkdir(dir) # migrate database to latest revision print('Migrate database to latest revision') upgrade() # Insert/Update default database values print('Insert/Update default Roles') Role.insert_defaults() print('Insert/Update default Users') User.insert_defaults() print('Insert/Update default CorpusFollowerRoles') CorpusFollowerRole.insert_defaults() print('Insert/Update default SpaCyNLPPipelineModels') SpaCyNLPPipelineModel.insert_defaults() print('Insert/Update default TesseractOCRPipelineModels') TesseractOCRPipelineModel.insert_defaults() # TODO: Implement checks for if the nopaque network exists