standardize the use of service name handles, e.g. file-setup instead of file_setup

This commit is contained in:
Patrick Jentsch
2021-08-04 12:26:49 +02:00
parent ec7a88f36e
commit da350474fb
10 changed files with 316 additions and 87 deletions

View File

@ -2,10 +2,7 @@ from flask import Blueprint
SERVICES = {
'corpus_analysis': {
'name': 'Corpus analysis'
},
'file_setup': {
'file-setup': {
'name': 'File setup',
'versions': {
'latest': '1.0.0b',

View File

@ -77,7 +77,14 @@ class AddFileSetupJobForm(AddJobForm):
'| .tif')
def __init__(self, *args, **kwargs):
version = kwargs.pop('version', SERVICES['file_setup']['versions']['latest'])
version = kwargs.pop('version', SERVICES['file-setup']['versions']['latest'])
super().__init__(*args, **kwargs)
self.version.choices = [(x, x) for x in SERVICES['file_setup']['versions'] if x != 'latest'] # noqa
self.version.choices = [(x, x) for x in SERVICES['file-setup']['versions'] if x != 'latest'] # noqa
self.version.default = version
AddJobForms = {
'file-setup': AddFileSetupJobForm,
'ocr': AddOCRJobForm,
'nlp': AddNLPJobForm
}

View File

@ -4,41 +4,36 @@ from flask_login import current_user, login_required
from werkzeug.utils import secure_filename
from . import services
from . import SERVICES
from .forms import AddFileSetupJobForm, AddNLPJobForm, AddOCRJobForm
from .. import db, socketio
from .forms import AddJobForms
from ..models import Job, JobInput
import json
import logging
import os
@services.route('/corpus-analysis')
@login_required
def corpus_analysis():
return render_template('services/corpus_analysis.html.j2')
@services.route('/<service>', methods=['GET', 'POST'])
@login_required
def service(service):
if service not in SERVICES:
# Check if the requested service exist
if service not in SERVICES or service not in AddJobForms:
abort(404)
if service == 'corpus_analysis':
return render_template('services/{}.html.j2'.format(service),
title=SERVICES[service]['name'])
elif service == 'file_setup':
form = AddFileSetupJobForm(prefix='add-file-setup-job-form')
elif service == 'nlp':
version = request.args.get('version')
if version is None or version not in SERVICES[service]['versions']:
form = AddNLPJobForm(prefix='add-nlp-job-form')
else:
form = AddNLPJobForm(prefix='add-nlp-job-form', version=version)
form.version.data = version
elif service == 'ocr':
version = request.args.get('version')
if version is None or version not in SERVICES[service]['versions']:
form = AddOCRJobForm(prefix='add-ocr-job-form')
else:
form = AddOCRJobForm(prefix='add-ocr-job-form', version=version)
form.version.data = version
version = request.args.get('version',
SERVICES[service]['versions']['latest'])
if version not in SERVICES[service]['versions']:
abort(404)
form = AddJobForms[service](prefix='add-job-form', version=version)
form.version.data = version
title = SERVICES[service]['name']
versions = SERVICES[service]['versions']
if form.is_submitted():
if not form.validate():
logging.error(form.errors)
return make_response(form.errors, 400)
service_args = []
if service == 'nlp':
@ -80,6 +75,5 @@ def service(service):
socketio.emit(event, jsonpatch, room=room)
return make_response(
{'redirect_url': url_for('jobs.job', job_id=job.id)}, 201)
return render_template('services/{}.html.j2'.format(service),
form=form, title=SERVICES[service]['name'],
versions=SERVICES[service]['versions'])
return render_template('services/{}.html.j2'.format(service.replace('-', '_')),
form=form, title=title, versions=versions)