mirror of
https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
synced 2024-11-15 01:05:42 +00:00
Change validation process (currently broken)
This commit is contained in:
parent
b1d819444e
commit
f264b27ae5
@ -1,4 +1,5 @@
|
||||
from flask_wtf import FlaskForm
|
||||
from werkzeug.utils import secure_filename
|
||||
from wtforms import (BooleanField, FileField, StringField, SubmitField,
|
||||
ValidationError, IntegerField, SelectField)
|
||||
from wtforms.validators import DataRequired, Length
|
||||
@ -21,10 +22,18 @@ class AddCorpusFileForm(FlaskForm):
|
||||
submit = SubmitField()
|
||||
title = StringField('Title', validators=[DataRequired(), Length(1, 255)])
|
||||
|
||||
def validate_file(form, field):
|
||||
def __init__(self, corpus, *args, **kwargs):
|
||||
super(AddCorpusFileForm, self).__init__(*args, **kwargs)
|
||||
self.corpus = corpus
|
||||
|
||||
def validate_file(self, field):
|
||||
if not field.data.filename.lower().endswith('.vrt'):
|
||||
raise ValidationError('File does not have an approved extension: '
|
||||
'.vrt')
|
||||
filename = secure_filename(field.data.filename)
|
||||
for corpus_file in self.corpus.files:
|
||||
if filename == corpus_file.filename:
|
||||
raise ValidationError('File already registered to this corpus.')
|
||||
|
||||
|
||||
class EditCorpusFileForm(FlaskForm):
|
||||
|
@ -1,3 +1,4 @@
|
||||
from app import logger
|
||||
from flask import (abort, current_app, flash, make_response, redirect, request,
|
||||
render_template, url_for, send_from_directory)
|
||||
from flask_login import current_user, login_required
|
||||
@ -92,15 +93,13 @@ def add_corpus_file(corpus_id):
|
||||
corpus = Corpus.query.get_or_404(corpus_id)
|
||||
if not (corpus.creator == current_user or current_user.is_administrator()):
|
||||
abort(403)
|
||||
add_corpus_file_form = AddCorpusFileForm()
|
||||
if add_corpus_file_form.validate_on_submit():
|
||||
add_corpus_file_form = AddCorpusFileForm(corpus, prefix='add-job-form')
|
||||
if add_corpus_file_form.is_submitted():
|
||||
if not add_corpus_file_form.validate():
|
||||
logger.warning(add_corpus_file_form.errors)
|
||||
return make_response(add_corpus_file_form.errors, 400)
|
||||
file = add_corpus_file_form.file.data
|
||||
filename = secure_filename(file.filename)
|
||||
for corpus_file in corpus.files:
|
||||
if filename == corpus_file.filename:
|
||||
flash('File already registered to this corpus.')
|
||||
return make_response({'redirect_url': url_for('corpora.corpus', corpus_id=corpus.id)}, 500)
|
||||
# return redirect(url_for('corpora.add_corpus_file', corpus_id=corpus_id))
|
||||
# Save the file
|
||||
dir = os.path.join(str(corpus.user_id), 'corpora', str(corpus.id))
|
||||
file.save(os.path.join(current_app.config['NOPAQUE_STORAGE'],
|
||||
|
@ -133,6 +133,7 @@ nopaque.Forms.init = function() {
|
||||
window.location.href = JSON.parse(this.responseText).redirect_url;
|
||||
}
|
||||
if (request.status === 400) {
|
||||
console.log(request);
|
||||
for (let [field, errors] of Object.entries(JSON.parse(this.responseText))) {
|
||||
fieldElement = form.querySelector(`input[name="add-job-form-${field}"]`).closest(".input-field");
|
||||
for (let error of errors) {
|
||||
|
Loading…
Reference in New Issue
Block a user