Add more form fields to corpus analysis

This commit is contained in:
Stephan Porada
2019-10-30 14:06:23 +01:00
parent 617cc06125
commit 0dc015b29c
4 changed files with 96 additions and 64 deletions

View File

@ -1,6 +1,6 @@
from flask_wtf import FlaskForm
from wtforms import (FileField, StringField, SubmitField,
ValidationError, IntegerField, SelectField)
ValidationError, IntegerField, SelectField, TextAreaField)
from wtforms.validators import DataRequired, Length
@ -26,7 +26,8 @@ class CreateCorpusForm(FlaskForm):
class QueryForm(FlaskForm):
query = StringField('CQP Query', validators=[DataRequired(), (Length(1, 1024))])
query = TextAreaField('CQP Query', validators=[DataRequired(),
(Length(1, 1024))])
hits_per_page = SelectField('Hits per page',
choices=[('', 'Nr. of hits per page'),
('10', '10'),
@ -34,8 +35,7 @@ class QueryForm(FlaskForm):
('30', '30'),
('40', '40'),
('50', '50')],
validators=[DataRequired()],
default='30')
validators=[DataRequired()])
context = SelectField('Context',
choices=[('', 'Words of context around hit'),
('5', '5'),
@ -43,10 +43,14 @@ class QueryForm(FlaskForm):
('15', '15'),
('20', '20'),
('25', '25')],
validators=[DataRequired()],
default='10')
validators=[DataRequired()])
submit = SubmitField('Start Query')
class QueryDownloadForm(FlaskForm):
pass
file_type = SelectField('File type',
choices=[('', 'Choose file type'),
('csv', 'csv'),
('json', 'json'),
('excel', 'excel')],
validators=[DataRequired()])

View File

@ -3,7 +3,7 @@ from flask import (abort, current_app, flash, redirect, request,
render_template, url_for, send_from_directory)
from flask_login import current_user, login_required
from . import main
from .forms import AddCorpusFileForm, CreateCorpusForm, QueryForm
from .forms import AddCorpusFileForm, CreateCorpusForm, QueryForm, QueryDownloadForm
from .. import db
from ..models import Corpus, CorpusFile, Job, JobInput, JobResult
from werkzeug.utils import secure_filename
@ -87,25 +87,35 @@ def corpus_download(corpus_id):
@main.route('/corpora/<int:corpus_id>/analysis', methods=['GET', 'POST'])
@login_required
def corpus_analysis(corpus_id):
logger = logging.getLogger(__name__)
corpus = Corpus.query.get_or_404(corpus_id)
query = request.args.get('query')
form = QueryForm()
logger.warning('Query first: {}'.format(query))
hits_per_page = request.args.get('hits_per_page', 30)
context = request.args.get('context', 10)
dl_form = QueryDownloadForm()
form = QueryForm(hits_per_page=hits_per_page, context=context, query=query)
if form.validate_on_submit():
logger = logging.getLogger(__name__)
logger.warning('Data has been sent!')
logger.warning('Data labels: {data}'.format(data=[data for data in form.data]))
logger.warning('Query: {q}'.format(q=form.query.data))
logger.warning('Query Second: {q}'.format(q=form.query.data))
logger.warning('Hits: {hits}'.format(hits=form.hits_per_page.data))
logger.warning('Context: {context}'.format(context=form.context.data))
flash('Query has been sent!')
query = form.query.data
logger.warning('Session query: {sq}'.format(sq=query))
return redirect(url_for('main.corpus_analysis', corpus_id=corpus_id,
query=query))
hits_per_page = form.hits_per_page.data
context = form.context.data
logger.warning('Query Thrid: {sq}'.format(sq=query))
return redirect(url_for('main.corpus_analysis',
corpus_id=corpus_id,
query=query,
hits_per_page=hits_per_page,
context=context))
return render_template('main/corpora/corpus_analysis.html.j2',
corpus=corpus,
form=form,
query=query,
dl_form=dl_form,
title='Corpus: ' + corpus.title)