ED_LRR/ed_lrr_gui/web/forms.py

106 lines
3 KiB
Python

# -*- coding: utf-8 -*-
from flask_wtf import FlaskForm
from wtforms import (
StringField,
PasswordField,
FieldList,
FloatField,
BooleanField,
SelectField,
SubmitField,
validators,
Field,
)
from wtforms.widgets.html5 import NumberInput
from wtforms.widgets import TextInput
from wtforms.validators import ValidationError
class StringListField(Field):
widget = TextInput()
def _value(self):
if self.data:
return u",".join(self.data)
else:
return u""
def process_formdata(self, valuelist):
if valuelist:
self.data = [x.strip() for x in valuelist[0].split(",")]
else:
self.data = []
class RouteForm(FlaskForm):
systems = StringListField("Systems", [validators.DataRequired()])
jump_range = FloatField(
"Jump Range (Ly)",
[validators.DataRequired(), validators.NumberRange(0, None)],
widget=NumberInput(min=0, step=0.1),
)
mode = SelectField(
"Routing Mode",
choices=[
("bfs", "Breadth-First Search"),
("greedy", "Greedy Search"),
("a-star", "A*-Search"),
],
)
permute = SelectField(
"Permutation Mode",
choices=[
("off", "Off"),
("keep_first", "Keep starting system"),
("keep_last", "Keep destination system"),
("keep_both", "Keep both endpoints"),
],
)
primary = BooleanField("Only route through primary stars")
factor = FloatField(
"Greedyness for A*-Search (%)",
[validators.NumberRange(0, 100)],
default=50,
widget=NumberInput(min=0, max=100, step=1),
)
priority = FloatField(
"Priority (0=max, 100=min)",
[validators.NumberRange(0, 100)],
default=0,
widget=NumberInput(min=0, max=100, step=1),
)
submit = SubmitField("GO!")
class LoginForm(FlaskForm):
username = StringField("Username", [validators.Required()])
password = PasswordField("Password", [validators.Required()])
remember = BooleanField("Remember me")
submit = SubmitField("Login")
class RegisterForm(FlaskForm):
username = StringField("Username", [validators.Required()])
password = PasswordField(
"Password",
[
validators.Required(),
validators.EqualTo("confirm", message="Passwords must match"),
],
)
confirm = PasswordField("Verify password", [validators.Required()])
submit = SubmitField("Login")
class ChangePasswordForm(FlaskForm):
old_password = PasswordField("Current Password", [validators.Required()])
password = PasswordField(
"Password",
[
validators.Required(),
validators.EqualTo("confirm", message="Passwords must match"),
],
)
confirm = PasswordField("Verify password", [validators.Required()])
submit = SubmitField("Change")