Files
mikromon/mikromon/forms.py
Mateusz Gruszczyński e8f6c4c609 push
2026-03-05 15:53:33 +01:00

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()])