From d08014dbbe0a7923fdc9091b96fdd81da319ebc7 Mon Sep 17 00:00:00 2001 From: Patrick Jentsch <p.jentsch@uni-bielefeld.de> Date: Mon, 2 Mar 2020 14:05:31 +0100 Subject: [PATCH] First implementation of a feedback formular --- app/main/forms.py | 12 ++++++++++ app/main/views.py | 14 ++++++++++++ app/templates/auth/register.html.j2 | 2 +- app/templates/main/feedback.html.j2 | 35 +++++++++++++++++++++++++++++ 4 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 app/main/forms.py create mode 100644 app/templates/main/feedback.html.j2 diff --git a/app/main/forms.py b/app/main/forms.py new file mode 100644 index 00000000..d209a6ba --- /dev/null +++ b/app/main/forms.py @@ -0,0 +1,12 @@ +from flask_wtf import FlaskForm +from wtforms import DecimalField, StringField, SubmitField, TextAreaField +from wtforms.validators import DataRequired, Email, Length, NumberRange + + +class FeedbackForm(FlaskForm): + email = StringField('Email', validators=[DataRequired(), Email()]) + feedback = TextAreaField('Feedback', validators=[Length(0, 255)]) + like_range = DecimalField('How would you rate nopaque?', + validators=[DataRequired(), + NumberRange(min=1, max=10)]) + submit = SubmitField('Send feedback') diff --git a/app/main/views.py b/app/main/views.py index 65f02548..8f855399 100644 --- a/app/main/views.py +++ b/app/main/views.py @@ -1,8 +1,10 @@ +from app import logger from app.auth.forms import LoginForm from app.models import User from flask import flash, redirect, render_template, url_for from flask_login import login_required, login_user from . import main +from .forms import FeedbackForm @main.route('/', methods=['GET', 'POST']) @@ -26,6 +28,18 @@ def dashboard(): return render_template('main/dashboard.html.j2', title='Dashboard') +@main.route('/feedback', methods=['GET', 'POST']) +@login_required +def feedback(): + feedback_form = FeedbackForm(prefix='feedback-form') + if feedback_form.validate_on_submit(): + logger.warning(feedback_form.email) + logger.warning(feedback_form.feedback) + logger.warning(feedback_form.like_range) + return render_template('main/feedback.html.j2', + feedback_form=feedback_form, title='Feedback') + + @main.route('/poster', methods=['GET', 'POST']) def poster(): login_form = LoginForm(prefix='login-form') diff --git a/app/templates/auth/register.html.j2 b/app/templates/auth/register.html.j2 index 35ff2436..bb39bdce 100644 --- a/app/templates/auth/register.html.j2 +++ b/app/templates/auth/register.html.j2 @@ -50,7 +50,7 @@ <span class="helper-text red-text">{{ error }}</span> {% endfor %} </div> - <div class="input-field "> + <div class="input-field"> <i class="material-icons prefix">email</i> {{ registration_form.email(class='validate', type='email') }} {{ registration_form.email.label }} diff --git a/app/templates/main/feedback.html.j2 b/app/templates/main/feedback.html.j2 new file mode 100644 index 00000000..99facaa9 --- /dev/null +++ b/app/templates/main/feedback.html.j2 @@ -0,0 +1,35 @@ +{% extends "nopaque.html.j2" %} + +{% block page_content %} + +<div class="col s12"> + <div class="card"> + <form method="POST"> + {{ feedback_form.hidden_tag() }} + <div class="card-content"> + <p class="range-field"> + {{ feedback_form.like_range.label }} + {{ feedback_form.like_range(class='validate', type='range', min=1, max=10) }} + </p> + <div class="input-field"> + <i class="material-icons prefix">email</i> + {{ feedback_form.email(class='validate', type='email') }} + {{ feedback_form.email.label }} + {% for error in feedback_form.email.errors %} + <span class="helper-text red-text">{{ error }}</span> + {% endfor %} + </div> + <div class="input-field"> + <i class="material-icons prefix">mode_edit</i> + {{ feedback_form.feedback(class='materialize-textarea', data_length='255') }} + {{ feedback_form.feedback.label }} + </div> + </div> + <div class="card-action right-align"> + {{ macros.submit_button(feedback_form.submit) }} + </div> + </form> + </div> +</div> + +{% endblock %} -- GitLab