from flask import current_app from flask_migrate import upgrade from pathlib import Path from typing import List 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: List[Path] = [ base_dir / 'tmp', base_dir / 'users' ] for default_dir in default_dirs: if not default_dir.exists(): default_dir.mkdir() if not default_dir.is_dir(): raise NotADirectoryError(f'{default_dir} is not a directory') # 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