Improve validation
This commit is contained in:
parent
9f1f6d0970
commit
9049e457a4
@ -13,7 +13,7 @@ from flask_bootstrap import Bootstrap
|
|||||||
from flask_sqlalchemy import SQLAlchemy
|
from flask_sqlalchemy import SQLAlchemy
|
||||||
from flask_wtf import FlaskForm
|
from flask_wtf import FlaskForm
|
||||||
from wtforms import StringField, SubmitField, BooleanField, PasswordField
|
from wtforms import StringField, SubmitField, BooleanField, PasswordField
|
||||||
from wtforms.validators import DataRequired, Length, Optional
|
from wtforms.validators import DataRequired, Length, Optional, ValidationError
|
||||||
import flask_sqlalchemy
|
import flask_sqlalchemy
|
||||||
|
|
||||||
|
|
||||||
@ -98,8 +98,14 @@ class AddWordForm(FlaskForm):
|
|||||||
|
|
||||||
class PlayGameForm(FlaskForm):
|
class PlayGameForm(FlaskForm):
|
||||||
draw_word = SubmitField(label='Draw word')
|
draw_word = SubmitField(label='Draw word')
|
||||||
|
|
||||||
|
|
||||||
|
class ResetGameForm(FlaskForm):
|
||||||
reset_game = SubmitField(label='Reset game')
|
reset_game = SubmitField(label='Reset game')
|
||||||
reset_confirm = BooleanField(label='Confirm reset')
|
reset_confirm = BooleanField(
|
||||||
|
label='Confirm reset',
|
||||||
|
validators=[DataRequired()],
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@app.route('/', methods=['GET', 'POST'])
|
@app.route('/', methods=['GET', 'POST'])
|
||||||
@ -126,6 +132,7 @@ def game(game_uuid):
|
|||||||
game_login = GameLoginForm()
|
game_login = GameLoginForm()
|
||||||
word_form = AddWordForm()
|
word_form = AddWordForm()
|
||||||
play_form = PlayGameForm()
|
play_form = PlayGameForm()
|
||||||
|
reset_form = ResetGameForm()
|
||||||
try:
|
try:
|
||||||
game = Game.by_uuid(game_uuid)
|
game = Game.by_uuid(game_uuid)
|
||||||
except flask_sqlalchemy.orm.exc.NoResultFound:
|
except flask_sqlalchemy.orm.exc.NoResultFound:
|
||||||
@ -145,16 +152,18 @@ def game(game_uuid):
|
|||||||
# We just drew a new word!
|
# We just drew a new word!
|
||||||
if play_form.draw_word.data:
|
if play_form.draw_word.data:
|
||||||
words = game.get_remaining_words()
|
words = game.get_remaining_words()
|
||||||
if words:
|
if words and len(words) > 0:
|
||||||
word = choice(words)
|
word = choice(words)
|
||||||
word.is_picked = True
|
word.is_picked = True
|
||||||
else:
|
else:
|
||||||
word = "There are no words. Add some and try again!"
|
word = None
|
||||||
# Reset the game
|
# Reset the game
|
||||||
if play_form.reset_game.data and play_form.reset_confirm.data:
|
if reset_form.reset_game.data and reset_form.validate():
|
||||||
for unpick_word in game.words:
|
for unpick_word in game.words:
|
||||||
unpick_word.is_picked = False
|
unpick_word.is_picked = False
|
||||||
|
|
||||||
|
reset_form.reset_confirm.data = False
|
||||||
|
|
||||||
db.session.add(game)
|
db.session.add(game)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
@ -165,6 +174,7 @@ def game(game_uuid):
|
|||||||
game_login=game_login,
|
game_login=game_login,
|
||||||
word_form=word_form,
|
word_form=word_form,
|
||||||
play_form=play_form,
|
play_form=play_form,
|
||||||
|
reset_form=reset_form,
|
||||||
game=game,
|
game=game,
|
||||||
word=word,
|
word=word,
|
||||||
words=words,
|
words=words,
|
||||||
|
Binary file not shown.
@ -6,12 +6,16 @@
|
|||||||
{% if game.password is not none and not session['logged_in'][game.uuid] %}
|
{% if game.password is not none and not session['logged_in'][game.uuid] %}
|
||||||
{{ render_form(game_login) }}
|
{{ render_form(game_login) }}
|
||||||
{% else %}
|
{% else %}
|
||||||
<h3>To share this game, just share the url to this page</h3>
|
<p><em>To share this game, just share the url to this page</em></p>
|
||||||
{% if word is not none %}
|
{% if word is not none %}
|
||||||
<div><span>Your word is: {{ word.text }}</span></div>
|
<p>Your word is: {{ word.text }}</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div><span>Words remaining: {{ words|length }}</span></div>
|
<p>Words remaining: {{ words|length }}</p>
|
||||||
{{ render_form(play_form) }}
|
{{ render_form(play_form) }}
|
||||||
|
<p></p>
|
||||||
|
<h4>Put words back</h4>
|
||||||
|
<p>Make all drawn words pickable again</p>
|
||||||
|
{{ render_form(reset_form) }}
|
||||||
<h1>Add new word</h1>
|
<h1>Add new word</h1>
|
||||||
{{ render_form(word_form) }}
|
{{ render_form(word_form) }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
Loading…
Reference in New Issue
Block a user