mirror of
				https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
				synced 2025-11-04 12:22:47 +00:00 
			
		
		
		
	Rename ocr job form and add nlp job form
This commit is contained in:
		@@ -3,7 +3,7 @@ from wtforms import MultipleFileField, SelectField, StringField, SubmitField, Va
 | 
			
		||||
from wtforms.validators import DataRequired, Length
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class CreateOCRJobForm(FlaskForm):
 | 
			
		||||
class NewOCRJobForm(FlaskForm):
 | 
			
		||||
    description = StringField(
 | 
			
		||||
        'Description',
 | 
			
		||||
        validators=[DataRequired(), Length(1, 64)]
 | 
			
		||||
@@ -37,3 +37,36 @@ class CreateOCRJobForm(FlaskForm):
 | 
			
		||||
                    'File does not have an approved extension: '
 | 
			
		||||
                    '.pdf | .tif | .tiff'
 | 
			
		||||
                )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class NewNLPJobForm(FlaskForm):
 | 
			
		||||
    description = StringField(
 | 
			
		||||
        'Description',
 | 
			
		||||
        validators=[DataRequired(), Length(1, 64)]
 | 
			
		||||
    )
 | 
			
		||||
    files = MultipleFileField('Files', validators=[DataRequired()])
 | 
			
		||||
    language = SelectField(
 | 
			
		||||
        'Language',
 | 
			
		||||
        choices=[('', 'Choose your option'),
 | 
			
		||||
                 ('en', 'English'),
 | 
			
		||||
                 ('fr', 'French'),
 | 
			
		||||
                 ('de', 'German'),
 | 
			
		||||
                 ('it', 'Italian'),
 | 
			
		||||
                 ('pt', 'Portuguese'),
 | 
			
		||||
                 ('es', 'Spanish')
 | 
			
		||||
                 ],
 | 
			
		||||
        validators=[DataRequired()]
 | 
			
		||||
    )
 | 
			
		||||
    submit = SubmitField('Create OCR job')
 | 
			
		||||
    title = StringField(
 | 
			
		||||
        'Title',
 | 
			
		||||
        validators=[DataRequired(), Length(1, 32)]
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    def validate_files(form, field):
 | 
			
		||||
        for file in field.data:
 | 
			
		||||
            if not file.filename.lower().endswith('.txt'):
 | 
			
		||||
                raise ValidationError(
 | 
			
		||||
                    'File does not have an approved extension: '
 | 
			
		||||
                    '.txt'
 | 
			
		||||
                )
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@ from datetime import datetime
 | 
			
		||||
from flask import current_app, flash, redirect, render_template, url_for
 | 
			
		||||
from . import services
 | 
			
		||||
from flask_login import current_user, login_required
 | 
			
		||||
from .forms import CreateOCRJobForm
 | 
			
		||||
from .forms import NewOCRJobForm
 | 
			
		||||
from ..import swarm
 | 
			
		||||
from threading import Thread
 | 
			
		||||
import hashlib
 | 
			
		||||
@@ -12,8 +12,8 @@ import os
 | 
			
		||||
@services.route('/ocr', methods=['GET', 'POST'])
 | 
			
		||||
@login_required
 | 
			
		||||
def ocr():
 | 
			
		||||
    create_ocr_job_form = CreateOCRJobForm()
 | 
			
		||||
    if create_ocr_job_form.validate_on_submit():
 | 
			
		||||
    new_ocr_job_form = NewOCRJobForm()
 | 
			
		||||
    if new_ocr_job_form.validate_on_submit():
 | 
			
		||||
        app = current_app._get_current_object()
 | 
			
		||||
        id = hashlib.md5(
 | 
			
		||||
            (current_user.username + '_' + datetime.now().isoformat()).encode()
 | 
			
		||||
@@ -27,7 +27,7 @@ def ocr():
 | 
			
		||||
               'requested_cpus': 2,
 | 
			
		||||
               'requested_memory': 2048,
 | 
			
		||||
               'service': 'ocr',
 | 
			
		||||
               'service_args': {'lang': create_ocr_job_form.language.data,
 | 
			
		||||
               'service_args': {'lang': new_ocr_job_form.language.data,
 | 
			
		||||
                                'version': 'latest'
 | 
			
		||||
                                },
 | 
			
		||||
               'status': 'queued'
 | 
			
		||||
@@ -39,7 +39,7 @@ def ocr():
 | 
			
		||||
        except OSError:
 | 
			
		||||
            flash('OSError!')
 | 
			
		||||
        else:
 | 
			
		||||
            for file in create_ocr_job_form.files.data:
 | 
			
		||||
            for file in new_ocr_job_form.files.data:
 | 
			
		||||
                file.save(os.path.join(dir, file.filename))
 | 
			
		||||
            '''
 | 
			
		||||
            ' TODO: Let the scheduler run this job in the background.
 | 
			
		||||
@@ -55,5 +55,5 @@ def ocr():
 | 
			
		||||
    return render_template(
 | 
			
		||||
        'services/ocr.html.j2',
 | 
			
		||||
        title='Optical Character Recognition',
 | 
			
		||||
        create_ocr_job_form=create_ocr_job_form
 | 
			
		||||
        new_ocr_job_form=new_ocr_job_form
 | 
			
		||||
    )
 | 
			
		||||
 
 | 
			
		||||
@@ -80,14 +80,14 @@
 | 
			
		||||
  <div class="card">
 | 
			
		||||
    <div class="card-content">
 | 
			
		||||
      <form method="POST" enctype="multipart/form-data">
 | 
			
		||||
        {{ create_ocr_job_form.hidden_tag() }}
 | 
			
		||||
        {{ new_ocr_job_form.hidden_tag() }}
 | 
			
		||||
        <div class="row">
 | 
			
		||||
          <div class="col s12 m4">
 | 
			
		||||
            <div class="input-field">
 | 
			
		||||
              <i class="material-icons prefix">title</i>
 | 
			
		||||
              {{ create_ocr_job_form.title() }}
 | 
			
		||||
              {{ create_ocr_job_form.title.label }}
 | 
			
		||||
              {% for error in create_ocr_job_form.title.errors %}
 | 
			
		||||
              {{ new_ocr_job_form.title() }}
 | 
			
		||||
              {{ new_ocr_job_form.title.label }}
 | 
			
		||||
              {% for error in new_ocr_job_form.title.errors %}
 | 
			
		||||
                <span class="helper-text red-text">{{ error }}</span>
 | 
			
		||||
              {% endfor %}
 | 
			
		||||
            </div>
 | 
			
		||||
@@ -95,9 +95,9 @@
 | 
			
		||||
          <div class="col s12 m8">
 | 
			
		||||
            <div class="input-field">
 | 
			
		||||
              <i class="material-icons prefix">description</i>
 | 
			
		||||
              {{ create_ocr_job_form.description() }}
 | 
			
		||||
              {{ create_ocr_job_form.description.label }}
 | 
			
		||||
              {% for error in create_ocr_job_form.description.errors %}
 | 
			
		||||
              {{ new_ocr_job_form.description() }}
 | 
			
		||||
              {{ new_ocr_job_form.description.label }}
 | 
			
		||||
              {% for error in new_ocr_job_form.description.errors %}
 | 
			
		||||
                <span class="helper-text red-text">{{ error }}</span>
 | 
			
		||||
              {% endfor %}
 | 
			
		||||
            </div>
 | 
			
		||||
@@ -105,13 +105,13 @@
 | 
			
		||||
          <div class="col s12 m8">
 | 
			
		||||
            <div class="file-field input-field">
 | 
			
		||||
              <div class="btn">
 | 
			
		||||
                <span>{{ create_ocr_job_form.files.label.text }}</span>
 | 
			
		||||
                {{ create_ocr_job_form.files(accept='application/pdf, image/tiff') }}
 | 
			
		||||
                <span>{{ new_ocr_job_form.files.label.text }}</span>
 | 
			
		||||
                {{ new_ocr_job_form.files(accept='application/pdf, image/tiff') }}
 | 
			
		||||
              </div>
 | 
			
		||||
              <div class="file-path-wrapper">
 | 
			
		||||
                <input class="file-path validate" type="text">
 | 
			
		||||
              </div>
 | 
			
		||||
              {% for error in create_ocr_job_form.files.errors %}
 | 
			
		||||
              {% for error in new_ocr_job_form.files.errors %}
 | 
			
		||||
                <span class="helper-text red-text">{{ error }}</span>
 | 
			
		||||
              {% endfor %}
 | 
			
		||||
            </div>
 | 
			
		||||
@@ -119,15 +119,15 @@
 | 
			
		||||
          <div class="col s12 m4">
 | 
			
		||||
            <div class="input-field">
 | 
			
		||||
              <i class="material-icons prefix">language</i>
 | 
			
		||||
              {{ create_ocr_job_form.language() }}
 | 
			
		||||
              {{ create_ocr_job_form.language.label }}
 | 
			
		||||
              {% for error in create_ocr_job_form.language.errors %}
 | 
			
		||||
              {{ new_ocr_job_form.language() }}
 | 
			
		||||
              {{ new_ocr_job_form.language.label }}
 | 
			
		||||
              {% for error in new_ocr_job_form.language.errors %}
 | 
			
		||||
                <span class="helper-text red-text">{{ error }}</span>
 | 
			
		||||
              {% endfor %}
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
        {{ create_ocr_job_form.submit(class='btn') }}
 | 
			
		||||
        {{ new_ocr_job_form.submit(class='btn') }}
 | 
			
		||||
      </form>
 | 
			
		||||
    </div>
 | 
			
		||||
  </div>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user