Feat(SQL, UI): 1. Calc and Get Many Stored Procedures created for Weather, Lighting Level, Assessment, Distraction Type, Distraction Intensity Level, Distraction, Bribe, Assessment Command Modality Link, Response Quality Metric, Obedience Level, and Assessment Response. \n 2. Assessments and Assessment pages created with data loading and hooked up, but not saving.
This commit is contained in:
151
forms/dog/assessment.py
Normal file
151
forms/dog/assessment.py
Normal file
@@ -0,0 +1,151 @@
|
||||
"""
|
||||
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_option_default_value()
|
||||
)
|
||||
id_weather = SelectField(
|
||||
'Weather'
|
||||
, choices = [Form_Base.get_select_option_all()]
|
||||
, default = Form_Base.get_select_option_default_value()
|
||||
)
|
||||
id_lighting_level = SelectField(
|
||||
'Lighting Level'
|
||||
, choices = [Form_Base.get_select_option_all()]
|
||||
, default = Form_Base.get_select_option_default_value()
|
||||
)
|
||||
id_location = SelectField(
|
||||
'Location'
|
||||
, choices = [Form_Base.get_select_option_all()]
|
||||
, default = Form_Base.get_select_option_default_value()
|
||||
)
|
||||
id_user_handler = SelectField(
|
||||
'Handler'
|
||||
, choices = [Form_Base.get_select_option_all()]
|
||||
, default = Form_Base.get_select_option_default_value()
|
||||
)
|
||||
"""
|
||||
id_distraction_type = SelectField(
|
||||
'Distraction Type'
|
||||
, choices = [Form_Base.get_select_option_all()]
|
||||
, default = Form_Base.get_select_option_default_value()
|
||||
)
|
||||
id_intensity_level_emotional = SelectField(
|
||||
'Intensity Level Emotional'
|
||||
, choices = [Form_Base.get_select_option_all()]
|
||||
, default = Form_Base.get_select_option_default_value()
|
||||
)
|
||||
id_intensity_level_scent = SelectField(
|
||||
'Intensity Level Scent'
|
||||
, choices = [Form_Base.get_select_option_all()]
|
||||
, default = Form_Base.get_select_option_default_value()
|
||||
)
|
||||
id_intensity_level_sight = SelectField(
|
||||
'Intensity Level Sight'
|
||||
, choices = [Form_Base.get_select_option_all()]
|
||||
, default = Form_Base.get_select_option_default_value()
|
||||
)
|
||||
id_intensity_level_sound = SelectField(
|
||||
'Intensity Level Sound'
|
||||
, choices = [Form_Base.get_select_option_all()]
|
||||
, default = Form_Base.get_select_option_default_value()
|
||||
)
|
||||
id_intensity_level_touch = SelectField(
|
||||
'Intensity Level Touch'
|
||||
, choices = [Form_Base.get_select_option_all()]
|
||||
, default = Form_Base.get_select_option_default_value()
|
||||
)
|
||||
id_command_category = SelectField(
|
||||
'Command Category'
|
||||
, choices = [Form_Base.get_select_option_all()]
|
||||
, default = Form_Base.get_select_option_default_value()
|
||||
)
|
||||
id_command = SelectField(
|
||||
'Command'
|
||||
, choices = [Form_Base.get_select_option_all()]
|
||||
, default = Form_Base.get_select_option_default_value()
|
||||
)
|
||||
id_command_modality = SelectField(
|
||||
'Command Modality'
|
||||
, choices = [Form_Base.get_select_option_all()]
|
||||
, default = Form_Base.get_select_option_default_value()
|
||||
)
|
||||
id_bribe = SelectField(
|
||||
'Bribe'
|
||||
, choices = [Form_Base.get_select_option_all()]
|
||||
, default = Form_Base.get_select_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
|
||||
}
|
||||
Reference in New Issue
Block a user