""" Project: PARTS Website Author: Edward Middleton-Smith Precision And Research Technology Systems Limited Technology: Backend Feature: User Form Description: Defines Flask-WTF form for handling user input on User page. """ # IMPORTS # internal from business_objects.base import Base from business_objects.dog.company import Company # from business_objects.dog.command_category import Command_Category # Circular # from business_objects.dog.command import Command # Circular from helpers.helper_app import Helper_App # from models.model_view_store import Model_View_Store # circular # from models.model_view_base import Model_View_Base from forms.base import Form_Base import lib.argument_validation as av # external from flask import Flask, render_template, request, flash, redirect, url_for, current_app from flask_wtf import FlaskForm from wtforms import SelectField, BooleanField, StringField, SubmitField from wtforms.validators import DataRequired, Email, ValidationError import markupsafe from flask_wtf.recaptcha import RecaptchaField from abc import ABCMeta, abstractmethod import json class Filters_User(Form_Base): search = StringField( 'Search' ) id_company = SelectField( 'Company' , choices = [Form_Base.get_select_option_all()] , default = Form_Base.get_select_valid_option_default_value() ) active_only = BooleanField( 'Active' , default = True ) @classmethod def from_json(cls, json): _m = f'{cls.__qualname__}.from_json' Helper_App.console_log(f'{_m}\njson: {json}') filters = cls() filters.search.data = json[Base.FLAG_SEARCH] filters.id_company.data = json[Company.ATTR_ID_COMPANY] filters.active_only.data = av.input_bool(json[Base.FLAG_ACTIVE_ONLY], Base.FLAG_ACTIVE_ONLY, f'{cls.__name__}.from_json') return filters def to_json(self): return { Base.FLAG_SEARCH: self.search.data , Company.ATTR_ID_COMPANY: self.id_company.data , Base.FLAG_ACTIVE_ONLY: self.active_only.data } @classmethod def from_id_company(cls, id_company): _m = f'{cls.__qualname__}.from_id_company' filters = cls() if id_company is not None: filters.id_company.data = id_company return filters """ class Form_Filters_User(FlaskForm): active = BooleanField('Active only?', default = True) id_user = SelectField('User ID', validators=[Optional()], choices=[]) """