""" Project: PARTS Website Author: Edward Middleton-Smith Precision And Research Technology Systems Limited Technology: Backend Feature: Assessment Form Description: Defines Flask-WTF form for handling user input on Assessments page. """ # IMPORTS # internal from business_objects.base import Base """ from business_objects.dog.distraction_intensity_level import Distraction_Intensity_Level from business_objects.dog.distraction_type import Distraction_Type from business_objects.dog.command import Lighting_Level from business_objects.dog.command_category import Lighting_Level from business_objects.dog.lighting_level import Lighting_Level from business_objects.dog.lighting_level import Lighting_Level """ from business_objects.dog.lighting_level import Lighting_Level from business_objects.dog.location import Location from business_objects.dog.weather import Weather 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 from typing import ClassVar class Filters_Assessment(Form_Base): ATTR_ID_ASSESSMENT: ClassVar[str] = 'id_assessment' FLAG_USER_HANDLER: ClassVar[str] = 'id_user_handler' search = StringField( 'Search' ) id_assessment = SelectField( 'Assessment' , choices = [Form_Base.get_select_option_all()] , default = Form_Base.get_select_valid_option_default_value() ) id_weather = SelectField( 'Weather' , choices = [Form_Base.get_select_option_all()] , default = Form_Base.get_select_valid_option_default_value() ) id_lighting_level = SelectField( 'Lighting Level' , choices = [Form_Base.get_select_option_all()] , default = Form_Base.get_select_valid_option_default_value() ) id_location = SelectField( 'Location' , choices = [Form_Base.get_select_option_all()] , default = Form_Base.get_select_valid_option_default_value() ) id_user_handler = SelectField( 'Handler' , choices = [Form_Base.get_select_option_all()] , default = Form_Base.get_select_valid_option_default_value() ) """ id_distraction_type = SelectField( 'Distraction Type' , choices = [Form_Base.get_select_option_all()] , default = Form_Base.get_select_valid_option_default_value() ) id_intensity_level_emotional = SelectField( 'Intensity Level Emotional' , choices = [Form_Base.get_select_option_all()] , default = Form_Base.get_select_valid_option_default_value() ) id_intensity_level_scent = SelectField( 'Intensity Level Scent' , choices = [Form_Base.get_select_option_all()] , default = Form_Base.get_select_valid_option_default_value() ) id_intensity_level_sight = SelectField( 'Intensity Level Sight' , choices = [Form_Base.get_select_option_all()] , default = Form_Base.get_select_valid_option_default_value() ) id_intensity_level_sound = SelectField( 'Intensity Level Sound' , choices = [Form_Base.get_select_option_all()] , default = Form_Base.get_select_valid_option_default_value() ) id_intensity_level_touch = SelectField( 'Intensity Level Touch' , choices = [Form_Base.get_select_option_all()] , default = Form_Base.get_select_valid_option_default_value() ) id_command_category = SelectField( 'Command Category' , choices = [Form_Base.get_select_option_all()] , default = Form_Base.get_select_valid_option_default_value() ) id_command = SelectField( 'Command' , choices = [Form_Base.get_select_option_all()] , default = Form_Base.get_select_valid_option_default_value() ) id_command_modality = SelectField( 'Command Modality' , choices = [Form_Base.get_select_option_all()] , default = Form_Base.get_select_valid_option_default_value() ) id_bribe = SelectField( 'Bribe' , 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_assessment.data = json[cls.ATTR_ID_ASSESSMENT] filters.id_weather.data = json[Weather.ATTR_ID_WEATHER] filters.id_lighting_level.data = json[Lighting_Level.ATTR_ID_LIGHTING_LEVEL] filters.id_location.data = json[Location.ATTR_ID_LOCATION] filters.id_user_handler.data = json[cls.FLAG_USER_HANDLER] # filters.id_distraction_type = json[Distraction_Type.ATTR_ID_DISTRACTION_TYPE] 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 , Base.FLAG_ACTIVE_ONLY: self.active_only.data }