Added role definition handling to user

This commit is contained in:
Josako
2024-04-28 15:54:12 +02:00
parent e8f97b7317
commit f782519c40
4 changed files with 65 additions and 13 deletions

View File

@@ -1,6 +1,8 @@
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, BooleanField, SubmitField, EmailField, IntegerField, DateField
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):
@@ -12,16 +14,38 @@ class TenantForm(FlaskForm):
submit = SubmitField('Submit')
class UserForm(FlaskForm):
class BaseUserForm(FlaskForm):
user_name = StringField('Name', validators=[DataRequired(), Length(max=80)])
email = EmailField('Email', validators=[DataRequired(), Email()])
password = PasswordField('Password', validators=[DataRequired(), Length(min=8)])
confirm_password = PasswordField('Confirm Password', validators=[DataRequired(), Length(min=8)])
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)])
submit = SubmitField('Submit')
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')