Add test package for socketio form submission

This commit is contained in:
Patrick Jentsch
2020-01-22 16:14:00 +01:00
parent d6fdf69e81
commit 6bafa68804
6 changed files with 140 additions and 0 deletions

5
app/test/__init__.py Normal file
View File

@ -0,0 +1,5 @@
from flask import Blueprint
test = Blueprint('test', __name__)
from . import events, views

24
app/test/events.py Normal file
View File

@ -0,0 +1,24 @@
from app import logger, socketio
from flask_login import login_required
from werkzeug.datastructures import FileStorage
from werkzeug.utils import secure_filename
from .forms import TestForm
import io
@socketio.on('submit-test-form')
@login_required
def recv_test_form(data):
filename = secure_filename(data['file']['name'])
stream = io.BytesIO(data['file']['bytes'])
file = FileStorage(stream=stream, filename=filename)
data['file'] = file
test_form = TestForm(data=data)
if test_form.validate():
logger.warning('test_form is ok!')
socketio.emit('submit-test-form', {'status': 'success',
'msg': 'test_form is ok!'})
else:
logger.warning('test_form is not ok!')
socketio.emit('submit-test-form', {'status': 'error',
'msg': test_form.errors})

12
app/test/forms.py Normal file
View File

@ -0,0 +1,12 @@
from flask_wtf import FlaskForm
from flask_wtf.file import FileAllowed, FileField, FileRequired
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired, Length
class TestForm(FlaskForm):
description = StringField('Description',
validators=[DataRequired(), Length(1, 255)])
file = FileField('File', validators=[FileAllowed(['txt'], 'Plain text only!'), FileRequired()])
submit = SubmitField()
title = StringField('Title', validators=[DataRequired(), Length(1, 32)])

12
app/test/views.py Normal file
View File

@ -0,0 +1,12 @@
from flask import render_template
from flask_login import login_required
from . import test
from .forms import TestForm
@test.route('/')
@login_required
def index():
test_form = TestForm()
return render_template('test/index.html.j2', title='Test',
test_form=test_form)