mirror of
https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
synced 2025-07-07 05:03:18 +00:00
Move cli interface code in package
This commit is contained in:
10
app/cli/__init__.py
Normal file
10
app/cli/__init__.py
Normal file
@ -0,0 +1,10 @@
|
||||
from .converter import init_app as converter_init_app
|
||||
from .corpus import init_app as corpus_init_app
|
||||
from .main import init_app as main_init_app
|
||||
|
||||
|
||||
|
||||
def init_app(app):
|
||||
converter_init_app(app)
|
||||
corpus_init_app(app)
|
||||
main_init_app(app)
|
21
app/cli/converter.py
Normal file
21
app/cli/converter.py
Normal file
@ -0,0 +1,21 @@
|
||||
import click
|
||||
|
||||
|
||||
def init_app(app):
|
||||
@app.cli.group('converter')
|
||||
def converter():
|
||||
''' Converter commands. '''
|
||||
pass
|
||||
|
||||
@converter.group('sandpaper')
|
||||
def sandpaper_converter():
|
||||
''' Sandpaper converter commands. '''
|
||||
pass
|
||||
|
||||
@sandpaper_converter.command('run')
|
||||
@click.argument('json_db')
|
||||
@click.argument('data_dir')
|
||||
def run_sandpaper_converter(json_db, data_dir):
|
||||
''' Run the sandpaper converter. '''
|
||||
from app.converters.sandpaper import convert
|
||||
convert(json_db, data_dir)
|
23
app/cli/corpus.py
Normal file
23
app/cli/corpus.py
Normal file
@ -0,0 +1,23 @@
|
||||
from app.models import Corpus, CorpusStatus
|
||||
|
||||
|
||||
def init_app(app):
|
||||
@app.cli.group('corpus')
|
||||
def corpus():
|
||||
''' Corpus commands. '''
|
||||
pass
|
||||
|
||||
@corpus.command('dismantle')
|
||||
def dismantle():
|
||||
''' Dismantle built corpora. '''
|
||||
status = [
|
||||
CorpusStatus.QUEUED,
|
||||
CorpusStatus.BUILDING,
|
||||
CorpusStatus.BUILT,
|
||||
CorpusStatus.STARTING_ANALYSIS_SESSION,
|
||||
CorpusStatus.RUNNING_ANALYSIS_SESSION,
|
||||
CorpusStatus.CANCELING_ANALYSIS_SESSION
|
||||
]
|
||||
for corpus in [x for x in Corpus.query.all() if x.status in status]:
|
||||
corpus.status = CorpusStatus.SUBMITTED
|
||||
corpus.num_analysis_sessions = 0
|
45
app/cli/main.py
Normal file
45
app/cli/main.py
Normal file
@ -0,0 +1,45 @@
|
||||
from flask import current_app
|
||||
from flask_migrate import upgrade
|
||||
import os
|
||||
from app.models import (
|
||||
CorpusFollowerRole,
|
||||
Role,
|
||||
SpaCyNLPPipelineModel,
|
||||
TesseractOCRPipelineModel,
|
||||
User
|
||||
)
|
||||
|
||||
|
||||
def init_app(app):
|
||||
@app.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()
|
Reference in New Issue
Block a user