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:
217
business_objects/dog/distraction_intensity_level.py
Normal file
217
business_objects/dog/distraction_intensity_level.py
Normal file
@@ -0,0 +1,217 @@
|
||||
"""
|
||||
Project: PARTS Website
|
||||
Author: Edward Middleton-Smith
|
||||
Precision And Research Technology Systems Limited
|
||||
|
||||
Technology: Business Objects
|
||||
Feature: Distraction Intensity Level Business Object
|
||||
"""
|
||||
|
||||
# internal
|
||||
from business_objects.base import Base
|
||||
from business_objects.db_base import SQLAlchemy_ABC, Get_Many_Parameters_Base
|
||||
import lib.argument_validation as av
|
||||
from extensions import db
|
||||
from helpers.helper_app import Helper_App
|
||||
# external
|
||||
from dataclasses import dataclass
|
||||
from typing import ClassVar
|
||||
|
||||
|
||||
class Distraction_Intensity_Level(SQLAlchemy_ABC, Base):
|
||||
ATTR_ID_DISTRACTION_INTENSITY_LEVEL: ClassVar[str] = 'id_intensity_level'
|
||||
FLAG_DISTRACTION_INTENSITY_LEVEL: ClassVar[str] = 'distraction-intensity-level'
|
||||
NAME_ATTR_OPTION_VALUE: ClassVar[str] = ATTR_ID_DISTRACTION_INTENSITY_LEVEL
|
||||
NAME_ATTR_OPTION_TEXT: ClassVar[str] = Base.FLAG_NAME
|
||||
|
||||
__tablename__ = 'DOG_Distraction_Intensity_Level'
|
||||
__table_args__ = { 'extend_existing': True }
|
||||
|
||||
id_intensity_level = db.Column(db.Integer, primary_key=True)
|
||||
code = db.Column(db.String(250))
|
||||
name = db.Column(db.String(250))
|
||||
active = db.Column(db.Boolean)
|
||||
|
||||
def __init__(self):
|
||||
self.id_intensity_level = 0
|
||||
self.is_new = False
|
||||
super().__init__()
|
||||
|
||||
@classmethod
|
||||
def from_db_distraction_intensity_level(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_distraction_intensity_level'
|
||||
category = cls()
|
||||
category.id_intensity_level = query_row[0]
|
||||
category.code = query_row[1]
|
||||
category.name = query_row[2]
|
||||
category.active = av.input_bool(query_row[3], 'active', _m)
|
||||
# command.created_on = query_row[7]
|
||||
return category
|
||||
|
||||
@classmethod
|
||||
def from_db_distraction_emotional(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_distraction_emotional'
|
||||
level = cls()
|
||||
level.id_intensity_level = query_row[4]
|
||||
level.name = query_row[5]
|
||||
level.active = True
|
||||
return level
|
||||
|
||||
@classmethod
|
||||
def from_db_distraction_scent(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_distraction_scent'
|
||||
level = cls()
|
||||
level.id_intensity_level = query_row[6]
|
||||
level.name = query_row[7]
|
||||
level.active = True
|
||||
return level
|
||||
|
||||
@classmethod
|
||||
def from_db_distraction_sight(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_distraction_sight'
|
||||
level = cls()
|
||||
level.id_intensity_level = query_row[8]
|
||||
level.name = query_row[9]
|
||||
level.active = True
|
||||
return level
|
||||
|
||||
@classmethod
|
||||
def from_db_distraction_sound(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_distraction_sound'
|
||||
level = cls()
|
||||
level.id_intensity_level = query_row[10]
|
||||
level.name = query_row[11]
|
||||
level.active = True
|
||||
return level
|
||||
|
||||
@classmethod
|
||||
def from_db_distraction_touch(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_distraction_touch'
|
||||
level = cls()
|
||||
level.id_intensity_level = query_row[12]
|
||||
level.name = query_row[13]
|
||||
level.active = True
|
||||
return level
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json):
|
||||
_m = 'Distraction_Intensity_Level.from_json'
|
||||
distraction_intensity_level = cls()
|
||||
if json is None: return Distraction_Intensity_Level
|
||||
# Helper_App.console_log(f'{_m}\njson: {json}')
|
||||
distraction_intensity_level.id_intensity_level = json.get(cls.ATTR_ID_DISTRACTION_INTENSITY_LEVEL, -1)
|
||||
distraction_intensity_level.name = json[cls.FLAG_NAME]
|
||||
distraction_intensity_level.code = json.get(cls.FLAG_CODE, distraction_intensity_level.name.upper().replace(" ", "_"))
|
||||
distraction_intensity_level.active = json[cls.FLAG_ACTIVE]
|
||||
# Helper_App.console_log(f'Distraction_Intensity_Level: {distraction_intensity_level}')
|
||||
return distraction_intensity_level
|
||||
|
||||
|
||||
def to_json(self):
|
||||
as_json = {
|
||||
**self.get_shared_json_attributes(self)
|
||||
, self.ATTR_ID_DISTRACTION_INTENSITY_LEVEL: self.id_intensity_level
|
||||
, self.FLAG_CODE: self.code
|
||||
, self.FLAG_NAME: self.name
|
||||
, self.FLAG_ACTIVE: self.active
|
||||
}
|
||||
# Helper_App.console_log(f'as_json: {as_json}')
|
||||
return as_json
|
||||
|
||||
def __repr__(self):
|
||||
return f'''
|
||||
{self.__class__.__name__}(
|
||||
{self.FLAG_DISTRACTION_INTENSITY_LEVEL}: {self.id_intensity_level}
|
||||
{self.FLAG_CODE}: {self.code}
|
||||
{self.FLAG_NAME}: {self.name}
|
||||
{self.FLAG_ACTIVE}: {self.active}
|
||||
)
|
||||
'''
|
||||
|
||||
|
||||
class Distraction_Intensity_Level_Temp(db.Model, Base):
|
||||
__tablename__ = 'DOG_Distraction_Intensity_Level_Temp'
|
||||
__table_args__ = { 'extend_existing': True }
|
||||
id_temp = db.Column(db.Integer, primary_key=True)
|
||||
id_intensity_level = db.Column(db.Integer)
|
||||
code = db.Column(db.String(250))
|
||||
name = db.Column(db.String(250))
|
||||
active = db.Column(db.Boolean)
|
||||
guid: str = db.Column(db.String(36))
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
|
||||
@classmethod
|
||||
def from_distraction_intensity_level(cls, distraction_intensity_level):
|
||||
_m = 'Distraction_Intensity_Level_Temp.from_Distraction_Intensity_Level'
|
||||
temp = cls()
|
||||
temp.id_intensity_level = distraction_intensity_level.id_intensity_level
|
||||
temp.code = distraction_intensity_level.code
|
||||
temp.name = distraction_intensity_level.name
|
||||
temp.active = distraction_intensity_level.active
|
||||
return temp
|
||||
|
||||
|
||||
class Parameters_Distraction_Intensity_Level(Get_Many_Parameters_Base):
|
||||
get_all_distraction_intensity_level: bool
|
||||
get_inactive_distraction_intensity_level: bool
|
||||
ids_distraction_intensity_level: str
|
||||
names_distraction_intensity_level: str
|
||||
require_all_id_search_filters_met: bool
|
||||
require_any_id_search_filters_met: bool
|
||||
require_all_non_id_search_filters_met: bool
|
||||
require_any_non_id_search_filters_met: bool
|
||||
|
||||
@classmethod
|
||||
def get_default(cls):
|
||||
return cls(
|
||||
get_all_distraction_intensity_level = True
|
||||
, get_inactive_distraction_intensity_level = False
|
||||
, ids_distraction_intensity_level = ''
|
||||
, names_distraction_intensity_level = ''
|
||||
, require_all_id_search_filters_met = True
|
||||
, require_any_id_search_filters_met = True
|
||||
, require_all_non_id_search_filters_met = False
|
||||
, require_any_non_id_search_filters_met = True
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json):
|
||||
return cls(
|
||||
get_all_distraction_intensity_level = json.get('a_get_all_distraction_intensity_level', False)
|
||||
, get_inactive_distraction_intensity_level = json.get('a_get_inactive_distraction_intensity_level', False)
|
||||
, ids_distraction_intensity_level = json.get('a_ids_distraction_intensity_level', '')
|
||||
, names_distraction_intensity_level = json.get('a_names_distraction_intensity_level', '')
|
||||
, require_all_id_search_filters_met = json.get('a_require_all_id_search_filters_met', True)
|
||||
, require_any_id_search_filters_met = json.get('a_require_any_id_search_filters_met', True)
|
||||
, require_all_non_id_search_filters_met = json.get('a_require_all_non_id_search_filters_met', False)
|
||||
, require_any_non_id_search_filters_met = json.get('a_require_any_non_id_search_filters_met', True)
|
||||
)
|
||||
|
||||
"""
|
||||
@classmethod
|
||||
def from_form_filters_distraction_intensity_level(cls, form):
|
||||
av.val_instance(form, 'form', 'Parameters_Distraction_Intensity_Level.from_form_filters_distraction_intensity_level', Filters_Distraction_Intensity_Level)
|
||||
has_filter_search_text = not (form.search.data == '' or form.search.data is None)
|
||||
active_only = av.input_bool(form.active_only.data, "active", "Parameters_Distraction_Intensity_Level.from_form_filters_distraction_intensity_level")
|
||||
filters = cls.get_default()
|
||||
filters.get_all_distraction_intensity_level = True
|
||||
filters.get_inactive_distraction_intensity_level = not active_only
|
||||
filters.ids_distraction_intensity_level = ''
|
||||
filters.names_distraction_intensity_level = form.search.data if has_filter_search_text else ''
|
||||
filters.notes_distraction_intensity_level = form.search.data if has_filter_search_text else ''
|
||||
return filters
|
||||
"""
|
||||
|
||||
def to_json(self):
|
||||
return {
|
||||
'a_get_all_distraction_intensity_level': self.get_all_distraction_intensity_level
|
||||
, 'a_get_inactive_distraction_intensity_level': self.get_inactive_distraction_intensity_level
|
||||
, 'a_ids_distraction_intensity_level': self.ids_distraction_intensity_level
|
||||
, 'a_names_distraction_intensity_level': self.names_distraction_intensity_level
|
||||
, 'a_require_all_id_search_filters_met': self.require_all_id_search_filters_met
|
||||
, 'a_require_any_id_search_filters_met': self.require_any_id_search_filters_met
|
||||
, 'a_require_all_non_id_search_filters_met': self.require_all_non_id_search_filters_met
|
||||
, 'a_require_any_non_id_search_filters_met': self.require_any_non_id_search_filters_met
|
||||
}
|
||||
Reference in New Issue
Block a user