Files
estus-shots-py/estusshots/forms.py
2019-10-17 20:35:18 +02:00

89 lines
3.3 KiB
Python

from flask_wtf import FlaskForm
from wtforms import (
DateField,
TimeField,
StringField,
SubmitField,
BooleanField,
DecimalField,
SelectField,
SelectMultipleField,
HiddenField,
FieldList,
FormField,
)
from wtforms.validators import DataRequired, Optional
from estusshots import choices
class SeasonForm(FlaskForm):
season_id = HiddenField("Season ID", render_kw={"readonly": True})
code = StringField("Season Code", validators=[DataRequired()])
game_name = StringField("Game Name", validators=[DataRequired()])
description = StringField("Season Description")
start = DateField("Season Start", format="%Y-%m-%d", validators=[DataRequired()])
end = DateField("Season End", format="%Y-%m-%d", validators=[Optional()])
submit_button = SubmitField("Submit")
class EpisodeForm(FlaskForm):
season_id = HiddenField("Season ID", render_kw={"readonly": True})
episode_id = HiddenField("Episode ID", render_kw={"readonly": True})
code = StringField("Episode Code", validators=[DataRequired()])
title = StringField("Title", validators=[DataRequired()])
date = DateField("Episode Date", format="%Y-%m-%d", validators=[DataRequired()])
start = TimeField("Start Time", format="%H:%M", validators=[DataRequired()])
end = TimeField("End Time", format="%H:%M", validators=[DataRequired()])
players = SelectMultipleField(
"Players", coerce=int, choices=choices.PlayerChoiceIterable()
)
submit_button = SubmitField("Submit")
class PlayerForm(FlaskForm):
player_id = HiddenField("Player ID", render_kw={"readonly": True})
real_name = StringField("Real Name")
alias = StringField("Player Alias", validators=[DataRequired()])
hex_id = StringField("Hex ID")
anonymize = BooleanField("Anonymize (Show only player alias)")
submit_button = SubmitField("Submit")
class DrinkForm(FlaskForm):
drink_id = HiddenField("Drink ID", render_kw={"readonly": True})
name = StringField("Name", validators=[DataRequired()])
vol = DecimalField("Alcohol %", validators=[DataRequired()])
submit_button = SubmitField("Submit")
class EnemyForm(FlaskForm):
enemy_id = HiddenField("Enemy ID", render_kw={"readonly": True})
season_id = SelectField(
"Season", choices=choices.SeasonChoiceIterable(), coerce=int
)
name = StringField("Name", validators=[DataRequired()])
is_boss = BooleanField("Is Boss")
submit_button = SubmitField("Submit")
submit_continue_button = SubmitField("Submit and Continue")
class PenaltyFrom(FlaskForm):
penalty_id = HiddenField("Penalty ID")
player_id = HiddenField("Player ID")
player = HiddenField("Player")
drink = SelectField("Drink", choices=choices.DrinkChoiceIterable(), coerce=int)
class EventForm(FlaskForm):
event_id = HiddenField("Event ID")
episode_id = HiddenField("Episode ID")
event_type = SelectField(
"Type", choices=choices.EventChoiceIterable(), coerce=int)
time = TimeField("Time", format="%H:%M", validators=[DataRequired()])
player = SelectField("Player", choices=choices.PlayerChoiceIterable(), coerce=int)
enemy = SelectField("Enemy", coerce=int)
comment = StringField("Comment")
penalties = FieldList(FormField(PenaltyFrom))
submit_button = SubmitField("Submit")