from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SelectField, BooleanField, SubmitField
from wtforms.validators import DataRequired, Optional, Email, Length

from ..models import ROLES


class UserForm(FlaskForm):
    username = StringField("Username", validators=[DataRequired(), Length(max=80)])
    email = StringField("Email", validators=[Optional(), Email(), Length(max=120)])
    password = PasswordField(
        "Password",
        validators=[Optional(), Length(min=8)],
        description="Leave blank to keep the current password when editing.",
    )
    role = SelectField("Role", choices=[(r, r.capitalize()) for r in ROLES], validators=[DataRequired()])
    is_active_user = BooleanField("Active", default=True)
    submit = SubmitField("Save")
