64 lines
3.2 KiB
Python
64 lines
3.2 KiB
Python
from flask_wtf import FlaskForm
|
|
from wtforms import StringField, PasswordField, BooleanField, IntegerField, TextAreaField, SelectField
|
|
from wtforms.validators import DataRequired, Email, Length, NumberRange, Optional
|
|
from wtforms.validators import Optional, Length
|
|
|
|
|
|
class LoginForm(FlaskForm):
|
|
email = StringField("Email", validators=[DataRequired(), Email()])
|
|
password = PasswordField("Password", validators=[DataRequired(), Length(min=8, max=128)])
|
|
|
|
class RegisterForm(FlaskForm):
|
|
email = StringField("Email", validators=[DataRequired(), Email()])
|
|
password = PasswordField("Password", validators=[DataRequired(), Length(min=8, max=128)])
|
|
|
|
class DeviceForm(FlaskForm):
|
|
name = StringField("Name", validators=[DataRequired(), Length(max=120)])
|
|
host = StringField("Host", validators=[DataRequired(), Length(max=255)])
|
|
rest_port = IntegerField("REST Port", validators=[DataRequired(), NumberRange(min=1, max=65535)])
|
|
rest_base_path = StringField("REST Base Path", validators=[DataRequired(), Length(max=64)])
|
|
username = StringField("Username", validators=[DataRequired(), Length(max=128)])
|
|
password = PasswordField("Password", validators=[DataRequired(), Length(max=128)])
|
|
allow_insecure_tls = BooleanField("Allow insecure TLS (self-signed)")
|
|
ssh_enabled = BooleanField("Enable SSH connector")
|
|
ssh_port = IntegerField("SSH Port", validators=[Optional(), NumberRange(min=1, max=65535)])
|
|
|
|
class EditDeviceForm(DeviceForm):
|
|
password = PasswordField("Password", validators=[Optional(), Length(max=128)])
|
|
|
|
class DashboardForm(FlaskForm):
|
|
name = StringField("Name", validators=[DataRequired(), Length(max=120)])
|
|
description = StringField("Description", validators=[Optional(), Length(max=500)])
|
|
|
|
class WidgetWizardForm(FlaskForm):
|
|
preset_key = SelectField("Preset", validators=[DataRequired()], choices=[])
|
|
title = StringField("Title", validators=[DataRequired(), Length(max=120)])
|
|
refresh_seconds = IntegerField("Refresh (seconds)", validators=[DataRequired(), NumberRange(min=1, max=3600)])
|
|
|
|
# Optional selector for presets that support it (interfaces/queues etc.).
|
|
item_name = SelectField("Item", validators=[Optional()], choices=[])
|
|
|
|
# Layout controls
|
|
col_span = SelectField(
|
|
"Width",
|
|
validators=[DataRequired()],
|
|
choices=[("12", "Full"), ("6", "Half"), ("4", "1/3"), ("3", "1/4")],
|
|
default="6",
|
|
)
|
|
height_px = IntegerField("Height (px)", validators=[DataRequired(), NumberRange(min=160, max=1000)], default=260)
|
|
# JSON advanced override
|
|
query_json = TextAreaField("Query JSON (advanced)", validators=[Optional()])
|
|
|
|
class ForgotPasswordForm(FlaskForm):
|
|
email = StringField("Email", validators=[DataRequired(), Email()])
|
|
|
|
class ResetPasswordForm(FlaskForm):
|
|
password = PasswordField("New password", validators=[DataRequired(), Length(min=8, max=128)])
|
|
|
|
class ShareForm(FlaskForm):
|
|
email = StringField("User email", validators=[DataRequired(), Email()])
|
|
permission = SelectField("Permission", validators=[DataRequired()], choices=[("view","View"),("edit","Edit"),("manage","Manage")])
|
|
|
|
class SmtpTestForm(FlaskForm):
|
|
to_email = StringField("To", validators=[DataRequired(), Email()])
|