# Copyright (C) 2020-2024 Soleta Networks # # This program is free software: you can redistribute it and/or modify it under # the terms of the GNU Affero General Public License as published by the # Free Software Foundation; either version 3 of the License, or # (at your option) any later version. from wtforms import ( Form, SubmitField, HiddenField, SelectField, BooleanField, IntegerField, StringField, RadioField, PasswordField, SelectMultipleField, FormField, widgets ) from wtforms.validators import InputRequired, Optional from flask_wtf import FlaskForm from flask_babel import lazy_gettext as _l from flask_babel import _ class LoginForm(FlaskForm): user = StringField( label=_l('User'), validators=[InputRequired()] ) pwd = PasswordField( label=_l('Password'), validators=[InputRequired()] ) submit_btn = SubmitField( label=_l('Login') ) class PermissionForm(FlaskForm): add = BooleanField(_l('Add'), default=True) update = BooleanField(_l('Update'), default=True) delete = BooleanField(_l('Delete'), default=True) class UserForm(FlaskForm): username = StringField( label=_l('Username'), validators=[InputRequired()] ) pwd = PasswordField( label=_l('Password'), validators=[InputRequired()], ) pwd_confirm = PasswordField( label=_l('Repeat password'), validators=[InputRequired()], ) admin = BooleanField( label=_l('Administrator'), ) scopes = SelectMultipleField( label=_l('Allowed scopes'), description=_l('No scope selection gives full access'), option_widget=widgets.CheckboxInput(), widget=widgets.ListWidget(prefix_label=False) ) client_permissions = FormField(PermissionForm, label=_l('Client Permissions')) center_permissions = FormField(PermissionForm, label=_l('Center Permissions')) room_permissions = FormField(PermissionForm, label=_l('Room Permissions')) folder_permissions = FormField(PermissionForm, label=_l('Folder Permissions')) image_permissions = FormField(PermissionForm, label=_l('Image Permissions')) repository_permissions = FormField(PermissionForm, label=_l('Repository Permissions')) submit_btn = SubmitField( label=_l('Submit') ) class EditUserForm(UserForm): def __init__(self, *args, **kwargs): super(EditUserForm, self).__init__(*args, **kwargs) self.pwd.validators = [Optional()] self.pwd_confirm.validators = [Optional()] class DeleteUserForm(FlaskForm): username = HiddenField( validators=[InputRequired()] ) submit_btn = SubmitField( label=_l('Submit') )