from flask_wtf import FlaskForm from wtforms import (StringField, PasswordField, BooleanField, SubmitField, EmailField, IntegerField, DateField, SelectMultipleField, FieldList, FormField) from wtforms.validators import DataRequired, Length, Email, NumberRange from ..models.user import User, Role class TenantForm(FlaskForm): name = StringField('Name', validators=[DataRequired(), Length(max=80)]) website = StringField('Website', validators=[DataRequired(), Length(max=255)]) license_start_date = DateField('License Start Date', id='form-control datepicker') license_end_date = DateField('License End Date', id='datepicker') allowed_monthly_interactions = IntegerField('Allowed Monthly Interactions', validators=[NumberRange(min=0)]) submit = SubmitField('Submit') class BaseUserForm(FlaskForm): user_name = StringField('Name', validators=[DataRequired(), Length(max=80)]) email = EmailField('Email', validators=[DataRequired(), Email()]) first_name = StringField('First Name', validators=[DataRequired(), Length(max=80)]) last_name = StringField('Last Name', validators=[DataRequired(), Length(max=80)]) is_active = BooleanField('Is Active', id='flexSwitchCheckDefault') valid_to = DateField('Valid to', id='datepicker') tenant_id = IntegerField('Tenant ID', validators=[NumberRange(min=0)]) roles = SelectMultipleField('Roles', coerce=int) def __init__(self, *args, **kwargs): super(BaseUserForm, self).__init__(*args, **kwargs) self.roles.choices = [(role.id, role.name) for role in Role.query.all()] class CreateUserForm(BaseUserForm): password = PasswordField('Password', validators=[DataRequired(), Length(min=8)]) confirm_password = PasswordField('Confirm Password', validators=[DataRequired(), Length(min=8)]) submit = SubmitField('Create User') class EditUserForm(BaseUserForm): submit = SubmitField('Save User') class RoleForm(FlaskForm): # This subform will represent a single checkbox for each role role_id = StringField('Role ID') checked = BooleanField('Assigned') class UserRoleForm(FlaskForm): email = EmailField('Email', validators=[DataRequired(), Email()]) roles = FieldList(FormField(RoleForm), min_entries=1) submit = SubmitField('Update Roles')