Source code for app.forms

"""WTForms form definitions for the Mail List Shield application.

This module defines Flask-WTF form classes for user authentication,
profile management, and API key creation.
"""

from flask_wtf import FlaskForm
from flask_wtf.file import FileField, FileRequired
from wtforms import (
    StringField,
    TextAreaField,
    SubmitField,
    PasswordField,
    DateField,
    IntegerField,
    BooleanField,
    RadioField,
)
from wtforms.validators import Email, NumberRange, InputRequired, DataRequired, Length


[docs] class LoginForm(FlaskForm): """Form for user login. Attributes: email: Email address field with validation. password: Password field with validation. """
[docs] email = StringField("Email", validators=[DataRequired(), Email()])
[docs] password = PasswordField("Password", validators=[DataRequired()])
[docs] class RegisterForm(FlaskForm): """Form for new user registration. Attributes: email: Email address field with validation. password: Password field with validation. firstName: First name field (required). lastName: Last name field (optional). newsletter: Newsletter subscription checkbox. """
[docs] email = StringField("Email", validators=[DataRequired(), Email()])
[docs] password = PasswordField("Password", validators=[DataRequired()])
[docs] firstName = StringField("First Name", validators=[DataRequired()])
[docs] lastName = StringField("Last Name")
[docs] newsletter = BooleanField("Subscribe")
[docs] class EmailConfirmationForm(FlaskForm): """Form for email confirmation code entry. Contains 6 individual fields for each digit of the confirmation code. Attributes: code0-code5: Individual digit fields for the 6-digit confirmation code. """
[docs] code0 = StringField("code0", validators=[InputRequired()])
[docs] code1 = StringField("code1", validators=[InputRequired()])
[docs] code2 = StringField("code2", validators=[InputRequired()])
[docs] code3 = StringField("code3", validators=[InputRequired()])
[docs] code4 = StringField("code4", validators=[InputRequired()])
[docs] code5 = StringField("code5", validators=[InputRequired()])
[docs] class ResetPassword(FlaskForm): """Form for requesting a password reset. Attributes: email: Email address field for the account to reset. """
[docs] email = StringField("Email", validators=[DataRequired(), Email()])
[docs] class SetNewPassword(FlaskForm): """Form for setting a new password after reset. Attributes: password: New password field with validation. """
[docs] password = PasswordField("password", validators=[DataRequired()])
[docs] class ProfileDetailsForm(FlaskForm): """Form for updating user profile details. Attributes: firstName: First name field (required). lastName: Last name field (optional). newsletter: Newsletter subscription checkbox. """
[docs] firstName = StringField("First Name", validators=[DataRequired()])
[docs] lastName = StringField("Last Name")
[docs] newsletter = BooleanField("Subscribe")
[docs] class TwoFactorAuthenticationForm(FlaskForm): """Form for two-factor authentication code entry. Contains 6 individual fields for each digit of the TOTP code. Attributes: code0-code5: Individual digit fields for the 6-digit TOTP code. """
[docs] code0 = StringField("code0", validators=[InputRequired()])
[docs] code1 = StringField("code1", validators=[InputRequired()])
[docs] code2 = StringField("code2", validators=[InputRequired()])
[docs] code3 = StringField("code3", validators=[InputRequired()])
[docs] code4 = StringField("code4", validators=[InputRequired()])
[docs] code5 = StringField("code5", validators=[InputRequired()])
[docs] class CreateAPIKeyForm(FlaskForm): """Form for creating a new API key. Attributes: label: Optional label for identifying the API key. expires_at: Optional expiration date for the key. submit: Submit button. """
[docs] label = StringField("Label", validators=[Length(max=120)])
[docs] expires_at = DateField( "Expiration Date (optional)", format="%Y-%m-%d", validators=[] )
[docs] submit = SubmitField("Create API Key")