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:
@@ -62,6 +62,7 @@ class Base():
|
||||
FLAG_PHONE_NUMBER: ClassVar[str] = 'phone_number'
|
||||
FLAG_POSTCODE: ClassVar[str] = 'postcode'
|
||||
FLAG_PRIORITY: ClassVar[str] = 'priority'
|
||||
FLAG_QUANTITY: ClassVar[str] = 'quantity'
|
||||
FLAG_REGION: ClassVar[str] = 'region'
|
||||
FLAG_ROWS: ClassVar[str] = 'rows'
|
||||
FLAG_SEARCH: ClassVar[str] = 'search'
|
||||
|
||||
357
business_objects/dog/assessment.py
Normal file
357
business_objects/dog/assessment.py
Normal file
@@ -0,0 +1,357 @@
|
||||
"""
|
||||
Project: PARTS Website
|
||||
Author: Edward Middleton-Smith
|
||||
Precision And Research Technology Systems Limited
|
||||
|
||||
Technology: Business Objects
|
||||
Feature: Assessment Business Object
|
||||
"""
|
||||
|
||||
# internal
|
||||
from business_objects.base import Base
|
||||
from business_objects.dog.command import Command
|
||||
# from business_objects.dog.command_category import Command_Category
|
||||
from business_objects.db_base import SQLAlchemy_ABC, Get_Many_Parameters_Base
|
||||
from business_objects.dog.dog import Dog
|
||||
from business_objects.dog.lighting_level import Lighting_Level
|
||||
from business_objects.dog.location import Location
|
||||
from business_objects.dog.obedience_level import Obedience_Level
|
||||
from business_objects.dog.weather import Weather
|
||||
from business_objects.dog.user import User
|
||||
from extensions import db
|
||||
from forms.dog.assessment import Filters_Assessment
|
||||
from helpers.helper_app import Helper_App
|
||||
import lib.argument_validation as av
|
||||
# external
|
||||
from dataclasses import dataclass
|
||||
from typing import ClassVar, Optional
|
||||
|
||||
|
||||
class Assessment(SQLAlchemy_ABC, Base):
|
||||
ATTR_ID_ASSESSMENT: ClassVar[str] = Filters_Assessment.ATTR_ID_ASSESSMENT
|
||||
FLAG_ASSESSMENT: ClassVar[str] = 'assessment'
|
||||
FLAG_ASSESSMENT_COMMAND_MODALITY_LINK: ClassVar[str] = 'assessment_command_modality_link'
|
||||
FLAG_DISTRACTION: ClassVar[str] = 'distraction'
|
||||
FLAG_TEMPERATURE_CELCIUS: ClassVar[str] = 'temperature_celcius'
|
||||
FLAG_USER_HANDLER: ClassVar[str] = Filters_Assessment.FLAG_USER_HANDLER
|
||||
NAME_ATTR_OPTION_VALUE: ClassVar[str] = ATTR_ID_ASSESSMENT
|
||||
NAME_ATTR_OPTION_TEXT: ClassVar[str] = ATTR_ID_ASSESSMENT
|
||||
|
||||
__tablename__ = 'DOG_Assessment'
|
||||
__table_args__ = { 'extend_existing': True }
|
||||
|
||||
id_assessment = db.Column(db.Integer, primary_key=True)
|
||||
id_weather = db.Column(db.Integer)
|
||||
id_lighting_level = db.Column(db.Integer)
|
||||
id_location = db.Column(db.Integer)
|
||||
id_user_handler = db.Column(db.Integer)
|
||||
notes = db.Column(db.Text)
|
||||
temperature_celcius = db.Column(db.Numeric(5, 2))
|
||||
# difficulty_level = db.Column(db.Float)
|
||||
active = db.Column(db.Boolean)
|
||||
created_on = db.Column(db.DateTime)
|
||||
|
||||
def __init__(self):
|
||||
self.id_assessment = 0
|
||||
self.is_new = False
|
||||
self.weather = None
|
||||
self.lighting_level = None
|
||||
self.location = None
|
||||
self.user_handler = None
|
||||
self.distractions = None
|
||||
self.assessment_command_modality_links = None
|
||||
super().__init__()
|
||||
|
||||
@classmethod
|
||||
def from_db_assessment(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_assessment'
|
||||
assessment = cls()
|
||||
assessment.id_assessment = query_row[0]
|
||||
assessment.id_weather = query_row[1]
|
||||
assessment.id_lighting_level = query_row[3]
|
||||
assessment.id_location = query_row[5]
|
||||
assessment.id_user_handler = query_row[7]
|
||||
assessment.notes = query_row[10]
|
||||
assessment.temperature_celcius = query_row[11]
|
||||
assessment.active = av.input_bool(query_row[12], 'active', _m)
|
||||
|
||||
assessment.weather = Weather.from_db_assessment(query_row)
|
||||
assessment.lighting_level = Lighting_Level.from_db_assessment(query_row)
|
||||
assessment.location = Location.from_db_assessment(query_row)
|
||||
assessment.user_handler = User.from_db_assessment(query_row)
|
||||
return assessment
|
||||
|
||||
@classmethod
|
||||
def from_db_distraction(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_distraction'
|
||||
assessment = cls()
|
||||
assessment.id_assessment = query_row[1]
|
||||
return assessment
|
||||
@classmethod
|
||||
def from_db_assessment_command_modality_link(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_assessment_command_modality_link'
|
||||
assessment = cls()
|
||||
assessment.id_assessment = query_row[1]
|
||||
return assessment
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json):
|
||||
_m = f'{cls.__qualname__}.from_json'
|
||||
assessment = cls()
|
||||
if json is None: return assessment
|
||||
# Helper_App.console_log(f'{_m}\njson: {json}')
|
||||
assessment.id_assessment = json.get(Assessment.ATTR_ID_ASSESSMENT, -1)
|
||||
assessment.id_weather = json[Weather.ATTR_ID_WEATHER]
|
||||
assessment.id_lighting_level = json[Lighting_Level.ATTR_ID_LIGHTING_LEVEL]
|
||||
assessment.id_location = json[Location.ATTR_ID_LOCATION]
|
||||
assessment.user_handler = json[cls.FLAG_USER_HANDLER]
|
||||
assessment.notes = json[cls.FLAG_NOTES]
|
||||
assessment.temperature_celcius = json[cls.FLAG_TEMPERATURE_CELCIUS]
|
||||
assessment.active = json[cls.FLAG_ACTIVE]
|
||||
assessment.created_on = json.get(cls.FLAG_CREATED_ON, None)
|
||||
# assessment.id_command_category = json[Command_Category.FLAG_COMMAND_CATEGORY]
|
||||
# Helper_App.console_log(f'Dog Command Link: {assessment}')
|
||||
return assessment
|
||||
|
||||
def to_json(self):
|
||||
as_json = {
|
||||
**self.get_shared_json_attributes(self)
|
||||
, self.ATTR_ID_ASSESSMENT: self.id_assessment
|
||||
, Weather.ATTR_ID_WEATHER: { Weather.ATTR_ID_WEATHER: None } if self.weather is None else self.weather.to_json()
|
||||
, Lighting_Level.ATTR_ID_LIGHTING_LEVEL: { Lighting_Level.ATTR_ID_LIGHTING_LEVEL: None } if self.lighting_level is None else self.lighting_level.to_json()
|
||||
, Location.ATTR_ID_LOCATION: { Location.ATTR_ID_LOCATION: None } if self.weather is None else self.weather.to_json()
|
||||
, self.FLAG_USER_HANDLER: { User.ATTR_ID_USER: None } if self.user_handler is None else self.user_handler.to_json()
|
||||
, self.FLAG_NOTES: self.notes
|
||||
, self.FLAG_TEMPERATURE_CELCIUS: self.temperature_celcius
|
||||
, self.FLAG_ACTIVE: self.active
|
||||
, self.FLAG_CREATED_ON: self.created_on
|
||||
|
||||
, self.FLAG_DISTRACTION: [distraction.to_json() for distraction in self.distractions] if (self.distractions is not None and len(self.distractions) > 0) else []
|
||||
, self.FLAG_ASSESSMENT_COMMAND_MODALITY_LINK: [link.to_json() for link in self.assessment_command_modality_links] if (self.assessment_command_modality_links is not None and len(self.assessment_command_modality_links) > 0) else []
|
||||
}
|
||||
# , Command_Category.FLAG_COMMAND_CATEGORY: self.id_command_category
|
||||
# Helper_App.console_log(f'as_json: {as_json}')
|
||||
return as_json
|
||||
|
||||
def __repr__(self):
|
||||
return f'''
|
||||
{self.__class__.__name__}(
|
||||
{self.FLAG_ASSESSMENT}: {self.id_assessment}
|
||||
{Weather.FLAG_WEATHER}: {self.weather}
|
||||
{Lighting_Level.FLAG_LIGHTING_LEVEL}: {self.lighting_level}
|
||||
{Location.FLAG_LOCATION}: {self.location}
|
||||
{self.FLAG_USER_HANDLER}: {self.user_handler}
|
||||
{self.FLAG_NOTES}: {self.notes}
|
||||
{self.FLAG_TEMPERATURE_CELCIUS}: {self.temperature_celcius}
|
||||
{self.FLAG_ACTIVE}: {self.active}
|
||||
{self.FLAG_CREATED_ON}: {self.created_on}
|
||||
)
|
||||
'''
|
||||
# {Command_Category.FLAG_COMMAND_CATEGORY}: {self.id_command_category}
|
||||
|
||||
class Assessment_Temp(db.Model, Base):
|
||||
__tablename__ = 'DOG_Assessment_Temp'
|
||||
__table_args__ = { 'extend_existing': True }
|
||||
id_temp = db.Column(db.Integer, primary_key=True)
|
||||
id_assessment = db.Column(db.Integer)
|
||||
id_weather = db.Column(db.Integer)
|
||||
id_lighting_level = db.Column(db.Integer)
|
||||
id_location = db.Column(db.Integer)
|
||||
id_user_handler = db.Column(db.Integer)
|
||||
notes = db.Column(db.Text)
|
||||
temperature_celcius = db.Column(db.Numeric(5, 2))
|
||||
# difficulty_level = db.Column(db.Float)
|
||||
active = db.Column(db.Boolean)
|
||||
# created_on = db.Column(db.DateTime)
|
||||
guid: str = db.Column(db.String(36))
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
|
||||
@classmethod
|
||||
def from_assessment(cls, assessment):
|
||||
_m = 'Assessment_Temp.from_assessment'
|
||||
temp = cls()
|
||||
temp.id_assessment = assessment.id_assessment
|
||||
temp.id_weather = assessment.id_weather
|
||||
temp.id_lighting_level = assessment.id_lighting_level
|
||||
temp.id_location = assessment.id_location
|
||||
temp.id_user_handler = assessment.id_user_handler
|
||||
temp.notes = assessment.notes
|
||||
temp.temperature_celcius = assessment.temperature_celcius
|
||||
temp.active = assessment.active
|
||||
# temp.created_on = assessment.created_on
|
||||
return temp
|
||||
|
||||
|
||||
class Parameters_Assessment(Get_Many_Parameters_Base):
|
||||
get_all_assessment: bool
|
||||
get_inactive_assessment: bool
|
||||
ids_assessment: str
|
||||
notes_assessment: str
|
||||
min_temperature_assessment: Optional[float]
|
||||
max_temperature_assessment: Optional[float]
|
||||
get_all_weather: bool
|
||||
get_inactive_weather: bool
|
||||
ids_weather: str
|
||||
names_weather: str
|
||||
get_all_lighting_level: bool
|
||||
get_inactive_lighting_level: bool
|
||||
ids_lighting_level: str
|
||||
names_lighting_level: str
|
||||
get_all_location: bool
|
||||
get_inactive_location: bool
|
||||
ids_location: str
|
||||
names_location: str
|
||||
get_all_user_handler: bool
|
||||
get_inactive_user_handler: bool
|
||||
ids_user_handler: str
|
||||
#auth0_ids_user_handler: str
|
||||
names_user_handler: str
|
||||
emails_user_handler: 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_assessment = True
|
||||
, get_inactive_assessment = False
|
||||
, ids_assessment = ''
|
||||
, notes_assessment = ''
|
||||
, min_temperature_assessment = None
|
||||
, max_temperature_assessment = None
|
||||
, get_all_weather = True
|
||||
, get_inactive_weather = False
|
||||
, ids_weather = ''
|
||||
, names_weather = ''
|
||||
, get_all_lighting_level = True
|
||||
, get_inactive_lighting_level = False
|
||||
, ids_lighting_level = ''
|
||||
, names_lighting_level = ''
|
||||
, get_all_location = True
|
||||
, get_inactive_location = False
|
||||
, ids_location = ''
|
||||
, names_location = ''
|
||||
, get_all_user_handler = True
|
||||
, get_inactive_user_handler = False
|
||||
, ids_user_handler = ''
|
||||
# , auth0_ids_user_handler = ''
|
||||
, names_user_handler = ''
|
||||
, emails_user_handler = ''
|
||||
, 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_assessment = json.get('a_get_all_assessment', False)
|
||||
, get_inactive_assessment = json.get('a_get_inactive_assessment', False)
|
||||
, ids_assessment = json.get('a_ids_assessment', '')
|
||||
, notes_assessment = json.get('a_notes_assessment', '')
|
||||
, min_temperature_assessment = json.get('a_min_temperature_assessment', None)
|
||||
, max_temperature_assessment = json.get('a_max_temperature_assessment', None)
|
||||
, get_all_weather = json.get('a_get_all_weather', False)
|
||||
, get_inactive_weather = json.get('a_get_inactive_weather', False)
|
||||
, ids_weather = json.get('a_ids_weather', '')
|
||||
, names_weather = json.get('a_names_weather', '')
|
||||
, get_all_lighting_level = json.get('a_get_all_lighting_level', False)
|
||||
, get_inactive_lighting_level = json.get('a_get_inactive_lighting_level', False)
|
||||
, ids_lighting_level = json.get('a_ids_lighting_level', '')
|
||||
, names_lighting_level = json.get('a_names_lighting_level', '')
|
||||
, get_all_location = json.get('a_get_all_location', False)
|
||||
, get_inactive_location = json.get('a_get_inactive_location', False)
|
||||
, ids_location = json.get('a_ids_location', '')
|
||||
, names_location = json.get('a_names_location', '')
|
||||
, get_all_user_handler = json.get('a_get_all_user_handler', False)
|
||||
, get_inactive_user_handler = json.get('a_get_inactive_user_handler', False)
|
||||
, ids_user_handler = json.get('a_ids_user_handler', '')
|
||||
# , auth0_ids_user_handler = json.get('a_ids_user_handler', '')
|
||||
, names_user_handler = json.get('a_names_user_handler', '')
|
||||
, emails_user_handler = json.get('a_emails_user_handler', '')
|
||||
, 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_assessment(cls, form):
|
||||
_m = f'{cls.__qualname__}.from_form_filters_assessment'
|
||||
Helper_App.console_log(_m)
|
||||
Helper_App.console_log(f'Filters: {form}')
|
||||
av.val_instance(form, 'form', _m, Filters_Assessment)
|
||||
has_filter_search_text = not (form.search.data == '' or form.search.data is None)
|
||||
has_filter_weather = not (form.id_weather.data == '0' or form.id_weather.data == '' or form.id_weather.data is None)
|
||||
has_filter_lighting_level = not (form.id_lighting_level.data == '0' or form.id_lighting_level.data == '' or form.id_lighting_level.data is None)
|
||||
has_filter_location = not (form.id_location.data == '0' or form.id_location.data == '' or form.id_location.data is None)
|
||||
has_filter_user_handler = not (form.id_user_handler.data == '0' or form.id_user_handler.data == '' or form.id_user_handler.data is None)
|
||||
active_only = av.input_bool(form.active_only.data, "active", _m)
|
||||
Helper_App.console_log(f'''
|
||||
has_filter_search_text: {has_filter_search_text}
|
||||
has_filter_weather: {has_filter_weather}
|
||||
has_filter_lighting_level: {has_filter_lighting_level}
|
||||
has_filter_location: {has_filter_location}
|
||||
has_filter_user_handler: {has_filter_user_handler}
|
||||
active_only: {active_only}
|
||||
''')
|
||||
filters = cls.get_default()
|
||||
filters.get_all_assessment = True
|
||||
filters.get_inactive_assessment = not active_only
|
||||
filters.ids_assessment = ''
|
||||
filters.get_all_weather = not has_filter_weather
|
||||
filters.get_inactive_weather = not active_only
|
||||
filters.ids_weather = form.id_weather.data if has_filter_weather else ''
|
||||
filters.names_weather = form.search.data if has_filter_search_text else ''
|
||||
filters.get_all_lighting_level = not has_filter_lighting_level
|
||||
filters.get_inactive_lighting_level = not active_only
|
||||
filters.ids_lighting_level = form.id_lighting_level.data if has_filter_lighting_level else ''
|
||||
filters.names_lighting_level = form.search.data if has_filter_search_text else ''
|
||||
filters.get_all_location = not has_filter_location
|
||||
filters.get_inactive_location = not active_only
|
||||
filters.ids_location = form.id_location.data if has_filter_location else ''
|
||||
filters.names_location = form.search.data if has_filter_search_text else ''
|
||||
filters.get_all_user_handler = not has_filter_user_handler
|
||||
filters.get_inactive_user_handler = not active_only
|
||||
filters.ids_user_handler = form.id_user_handler.data if has_filter_user_handler else ''
|
||||
# filters.auth0_ids_user_handler = form.id_user_handler.data if has_filter_user_handler else ''
|
||||
filters.names_user_handler = form.search.data if has_filter_search_text else ''
|
||||
filters.emails_user_handler = form.search.data if has_filter_search_text else ''
|
||||
return filters
|
||||
|
||||
def to_json(self):
|
||||
return {
|
||||
'a_get_all_assessment': self.get_all_assessment
|
||||
, 'a_get_inactive_assessment': self.get_inactive_assessment
|
||||
, 'a_ids_assessment': self.ids_assessment
|
||||
, 'a_notes_assessment': self.notes_assessment
|
||||
, 'a_min_temperature_assessment': self.min_temperature_assessment
|
||||
, 'a_max_temperature_assessment': self.max_temperature_assessment
|
||||
, 'get_all_weather': self.get_all_weather
|
||||
, 'get_inactive_weather': self.get_inactive_weather
|
||||
, 'ids_weather': self.ids_weather
|
||||
, 'names_weather': self.names_weather
|
||||
, 'get_all_lighting_level': self.get_all_lighting_level
|
||||
, 'get_inactive_lighting_level': self.get_inactive_lighting_level
|
||||
, 'ids_lighting_level': self.ids_lighting_level
|
||||
, 'names_lighting_level': self.names_lighting_level
|
||||
, 'get_all_location': self.get_all_location
|
||||
, 'get_inactive_location': self.get_inactive_location
|
||||
, 'ids_location': self.ids_location
|
||||
, 'names_location': self.names_location
|
||||
, 'get_all_user_handler': self.get_all_user_handler
|
||||
, 'get_inactive_user_handler': self.get_inactive_user_handler
|
||||
, 'ids_user_handler': self.ids_user_handler
|
||||
#, 'auth0_ids_user_handler': self.ids_user_handler
|
||||
, 'names_user_handler': self.names_user_handler
|
||||
, 'emails_user_handler': self.emails_user_handler
|
||||
, '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
|
||||
}
|
||||
513
business_objects/dog/assessment_command_modality_link.py
Normal file
513
business_objects/dog/assessment_command_modality_link.py
Normal file
@@ -0,0 +1,513 @@
|
||||
"""
|
||||
Project: PARTS Website
|
||||
Author: Edward Middleton-Smith
|
||||
Precision And Research Technology Systems Limited
|
||||
|
||||
Technology: Business Objects
|
||||
Feature: Assessment_Command_Modality_Link Command Modality Link Business Object
|
||||
"""
|
||||
|
||||
# internal
|
||||
from business_objects.base import Base
|
||||
from business_objects.dog.assessment import Assessment
|
||||
from business_objects.dog.bribe import Bribe
|
||||
from business_objects.dog.command import Command
|
||||
# from business_objects.dog.command_category import Command_Category
|
||||
from business_objects.db_base import SQLAlchemy_ABC, Get_Many_Parameters_Base
|
||||
from business_objects.dog.dog import Dog
|
||||
from business_objects.dog.command import Command
|
||||
from business_objects.dog.command_modality import Command_Modality
|
||||
from business_objects.dog.obedience_level import Obedience_Level
|
||||
from business_objects.dog.user import User
|
||||
from extensions import db
|
||||
from forms.dog.assessment import Filters_Assessment
|
||||
# from forms.dog.assessment_command_modality_link import Filters_Assessment_Command_Modality_Link
|
||||
from helpers.helper_app import Helper_App
|
||||
import lib.argument_validation as av
|
||||
# external
|
||||
from dataclasses import dataclass
|
||||
from typing import ClassVar, Optional
|
||||
|
||||
|
||||
class Assessment_Command_Modality_Link(SQLAlchemy_ABC, Base):
|
||||
ATTR_ID_ASSESSMENT_COMMAND_MODALITY_LINK: ClassVar[str] = 'id_link'
|
||||
FLAG_ASSESSMENT_COMMAND_MODALITY_LINK: ClassVar[str] = Assessment.FLAG_ASSESSMENT_COMMAND_MODALITY_LINK
|
||||
FLAG_ASSESSMENT_RESPONSE: ClassVar[str] = 'assessment_response'
|
||||
FLAG_DISTANCE_FROM_HANDLER: ClassVar[str] = 'distance-from-handler'
|
||||
FLAG_IS_IN_HEARING_RANGE_OF_HANDLER: ClassVar[str] = 'is-in-hearing-range-of-handler'
|
||||
FLAG_IS_IN_SCENT_RANGE_OF_HANDLER: ClassVar[str] = 'is-in-scent-range-of-handler'
|
||||
FLAG_IS_IN_SIGHT_OF_HANDLER: ClassVar[str] = 'is-in-sight-of-handler'
|
||||
FLAG_IS_ON_LEAD: ClassVar[str] = 'is-on-lead'
|
||||
FLAG_TRIAL_COUNT: ClassVar[str] = 'trial-count'
|
||||
NAME_ATTR_OPTION_VALUE: ClassVar[str] = ATTR_ID_ASSESSMENT_COMMAND_MODALITY_LINK
|
||||
NAME_ATTR_OPTION_TEXT: ClassVar[str] = ATTR_ID_ASSESSMENT_COMMAND_MODALITY_LINK
|
||||
|
||||
__tablename__ = 'DOG_Assessment_Command_Modality_Link'
|
||||
__table_args__ = { 'extend_existing': True }
|
||||
|
||||
id_link = db.Column(db.Integer, primary_key=True)
|
||||
id_assessment = db.Column(db.Integer)
|
||||
id_command = db.Column(db.Integer)
|
||||
id_command_modality = db.Column(db.Integer)
|
||||
id_bribe = db.Column(db.Integer)
|
||||
distance_from_handler = db.Column(db.Float)
|
||||
is_in_hearing_range_of_handler = db.Column(db.Boolean)
|
||||
is_in_scent_range_of_handler = db.Column(db.Boolean)
|
||||
is_in_sight_of_handler = db.Column(db.Boolean)
|
||||
is_on_lead = db.Column(db.Boolean)
|
||||
trial_count = db.Column(db.Integer)
|
||||
active = db.Column(db.Boolean)
|
||||
created_on = db.Column(db.DateTime)
|
||||
|
||||
def __init__(self):
|
||||
self.id_link = 0
|
||||
self.is_new = False
|
||||
self.assessment = None
|
||||
self.command = None
|
||||
self.command_modality = None
|
||||
self.bribe = None
|
||||
self.assessment_responses = None
|
||||
super().__init__()
|
||||
|
||||
@classmethod
|
||||
def from_db_assessment_command_modality_link(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_assessment_command_modality_link'
|
||||
assessment_command_modality_link = cls()
|
||||
assessment_command_modality_link.id_link = query_row[0]
|
||||
assessment_command_modality_link.id_assessment = query_row[1]
|
||||
assessment_command_modality_link.id_command = query_row[5]
|
||||
assessment_command_modality_link.id_command_modality = query_row[7]
|
||||
assessment_command_modality_link.id_bribe = query_row[9]
|
||||
assessment_command_modality_link.distance_from_handler = query_row[11]
|
||||
assessment_command_modality_link.is_in_hearing_range_of_handler = av.input_bool(query_row[12], 'is_in_hearing_range_of_handler', _m)
|
||||
assessment_command_modality_link.is_in_scent_range_of_handler = av.input_bool(query_row[13], 'is_in_scent_range_of_handler', _m)
|
||||
assessment_command_modality_link.is_in_sight_of_handler = av.input_bool(query_row[14], 'is_in_sight_of_handler', _m)
|
||||
assessment_command_modality_link.is_on_lead = av.input_bool(query_row[15], 'is_on_lead', _m)
|
||||
assessment_command_modality_link.trial_count = query_row[16]
|
||||
assessment_command_modality_link.active = av.input_bool(query_row[17], 'active', _m)
|
||||
|
||||
assessment_command_modality_link.assessment = Assessment.from_db_assessment_command_modality_link(query_row)
|
||||
assessment_command_modality_link.command = Command.from_db_assessment_command_modality_link(query_row)
|
||||
assessment_command_modality_link.command_modality = Command_Modality.from_db_assessment_command_modality_link(query_row)
|
||||
assessment_command_modality_link.bribe = Bribe.from_db_assessment_command_modality_link(query_row)
|
||||
return assessment_command_modality_link
|
||||
|
||||
@classmethod
|
||||
def from_db_assessment_response(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_assessment_response'
|
||||
assessment_command_modality_link = cls()
|
||||
assessment_command_modality_link.id_link = query_row[1]
|
||||
return assessment_command_modality_link
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json):
|
||||
_m = f'{cls.__qualname__}.from_json'
|
||||
assessment_command_modality_link = cls()
|
||||
if json is None: return assessment_command_modality_link
|
||||
# Helper_App.console_log(f'{_m}\njson: {json}')
|
||||
assessment_command_modality_link.id_link = json.get(Assessment_Command_Modality_Link.ATTR_ID_ASSESSMENT_COMMAND_MODALITY_LINK, -1)
|
||||
assessment_command_modality_link.id_assessment = json[Assessment.ATTR_ID_ASSESSMENT]
|
||||
assessment_command_modality_link.id_command = json[Command.ATTR_ID_COMMAND]
|
||||
assessment_command_modality_link.id_command_modality = json[Command_Modality.ATTR_ID_COMMAND_MODALITY]
|
||||
assessment_command_modality_link.id_bribe = json[Bribe.ATTR_ID_BRIBE]
|
||||
assessment_command_modality_link.distance_from_handler = json[cls.FLAG_DISTANCE_FROM_HANDLER]
|
||||
assessment_command_modality_link.is_in_hearing_range_of_handler = json[cls.FLAG_IS_IN_HEARING_RANGE_OF_HANDLER]
|
||||
assessment_command_modality_link.is_in_scent_range_of_handler = json[cls.FLAG_IS_IN_SCENT_RANGE_OF_HANDLER]
|
||||
assessment_command_modality_link.is_in_sight_of_handler = json[cls.FLAG_IS_IN_SIGHT_OF_HANDLER]
|
||||
assessment_command_modality_link.is_on_lead = json[cls.FLAG_IS_ON_LEAD]
|
||||
assessment_command_modality_link.trial_count = json[cls.FLAG_TRIAL_COUNT]
|
||||
assessment_command_modality_link.active = json[cls.FLAG_ACTIVE]
|
||||
assessment_command_modality_link.created_on = json.get(cls.FLAG_CREATED_ON, None)
|
||||
# assessment_command_modality_link.id_command_category = json[Command_Category.FLAG_COMMAND_CATEGORY]
|
||||
# Helper_App.console_log(f'Dog Command Link: {assessment_command_modality_link}')
|
||||
return assessment_command_modality_link
|
||||
|
||||
def to_json(self):
|
||||
as_json = {
|
||||
**self.get_shared_json_attributes(self)
|
||||
, self.ATTR_ID_ASSESSMENT_COMMAND_MODALITY_LINK: self.id_link
|
||||
, Assessment.ATTR_ID_ASSESSMENT: { Assessment.ATTR_ID_ASSESSMENT: None } if self.assessment is None else self.assessment.to_json()
|
||||
, Command.ATTR_ID_COMMAND: { Command.ATTR_ID_COMMAND: None } if self.command is None else self.command.to_json()
|
||||
, Command_Modality.ATTR_ID_COMMAND_MODALITY: { Command_Modality.ATTR_ID_COMMAND_MODALITY: None } if self.command_modality is None else self.command_modality.to_json()
|
||||
, Bribe.FLAG_BRIBE: { Bribe.FLAG_BRIBE: None } if self.bribe is None else self.bribe.to_json()
|
||||
, self.FLAG_DISTANCE_FROM_HANDLER: self.distance_from_handler
|
||||
, self.FLAG_IS_IN_HEARING_RANGE_OF_HANDLER: self.is_in_hearing_range_of_handler
|
||||
, self.FLAG_IS_IN_SCENT_RANGE_OF_HANDLER: self.is_in_scent_range_of_handler
|
||||
, self.FLAG_IS_IN_SIGHT_OF_HANDLER: self.is_in_sight_of_handler
|
||||
, self.FLAG_IS_ON_LEAD: self.is_on_lead
|
||||
, self.FLAG_TRIAL_COUNT: self.trial_count
|
||||
, self.FLAG_ACTIVE: self.active
|
||||
, self.FLAG_CREATED_ON: self.created_on
|
||||
, self.FLAG_ASSESSMENT_RESPONSE: [] if self.assessment_responses is None else [response.to_json() for response in self.assessment_responses]
|
||||
}
|
||||
# , Command_Category.FLAG_COMMAND_CATEGORY: self.id_command_category
|
||||
# Helper_App.console_log(f'as_json: {as_json}')
|
||||
return as_json
|
||||
|
||||
def __repr__(self):
|
||||
return f'''
|
||||
{self.__class__.__name__}(
|
||||
{self.FLAG_ASSESSMENT_COMMAND_MODALITY_LINK}: {self.id_link}
|
||||
{Assessment.FLAG_ASSESSMENT}: {self.assessment}
|
||||
{Command.FLAG_COMMAND}: {self.command}
|
||||
{Command_Modality.FLAG_COMMAND_MODALITY}: {self.command_modality}
|
||||
{Bribe.FLAG_BRIBE}: {self.bribe}
|
||||
{self.FLAG_DISTANCE_FROM_HANDLER}: {self.distance_from_handler}
|
||||
{self.FLAG_IS_IN_HEARING_RANGE_OF_HANDLER}: {self.is_in_hearing_range_of_handler}
|
||||
{self.FLAG_IS_IN_SCENT_RANGE_OF_HANDLER}: {self.is_in_scent_range_of_handler}
|
||||
{self.FLAG_IS_IN_SIGHT_OF_HANDLER}: {self.is_in_sight_of_handler}
|
||||
{self.FLAG_IS_ON_LEAD}: {self.is_on_lead}
|
||||
{self.FLAG_TRIAL_COUNT}: {self.trial_count}
|
||||
{self.FLAG_ACTIVE}: {self.active}
|
||||
{self.FLAG_CREATED_ON}: {self.created_on}
|
||||
)
|
||||
'''
|
||||
# {Command_Category.FLAG_COMMAND_CATEGORY}: {self.id_command_category}
|
||||
|
||||
class Assessment_Command_Modality_Link_Temp(db.Model, Base):
|
||||
__tablename__ = 'DOG_Assessment_Command_Modality_Link_Temp'
|
||||
__table_args__ = { 'extend_existing': True }
|
||||
id_temp = db.Column(db.Integer, primary_key=True)
|
||||
id_link = db.Column(db.Integer)
|
||||
id_assessment = db.Column(db.Integer)
|
||||
id_command = db.Column(db.Integer)
|
||||
id_command_modality = db.Column(db.Integer)
|
||||
id_bribe = db.Column(db.Integer)
|
||||
distance_from_handler = db.Column(db.Float)
|
||||
is_in_hearing_range_of_handler = db.Column(db.Boolean)
|
||||
is_in_scent_range_of_handler = db.Column(db.Boolean)
|
||||
is_in_sight_of_handler = db.Column(db.Boolean)
|
||||
is_on_lead = db.Column(db.Boolean)
|
||||
trial_count = db.Column(db.Integer)
|
||||
active = db.Column(db.Boolean)
|
||||
# created_on = db.Column(db.DateTime)
|
||||
guid: str = db.Column(db.String(36))
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
|
||||
@classmethod
|
||||
def from_assessment_command_modality_link(cls, assessment_command_modality_link):
|
||||
_m = f'{cls.__qualname__}.from_assessment_command_modality_link'
|
||||
temp = cls()
|
||||
temp.id_link = assessment_command_modality_link.id_link
|
||||
temp.id_assessment = assessment_command_modality_link.id_assessment
|
||||
temp.id_command = assessment_command_modality_link.id_command
|
||||
temp.id_command_modality = assessment_command_modality_link.id_command_modality
|
||||
temp.id_bribe = assessment_command_modality_link.id_bribe
|
||||
temp.distance_from_handler = assessment_command_modality_link.distance_from_handler
|
||||
temp.is_in_hearing_range_of_handler = assessment_command_modality_link.is_in_hearing_range_of_handler
|
||||
temp.is_in_scent_range_of_handler = assessment_command_modality_link.is_in_scent_range_of_handler
|
||||
temp.is_in_sight_of_handler = assessment_command_modality_link.is_in_sight_of_handler
|
||||
temp.is_on_lead = assessment_command_modality_link.is_on_lead
|
||||
temp.trial_count = assessment_command_modality_link.trial_count
|
||||
temp.active = assessment_command_modality_link.active
|
||||
# temp.created_on = assessment_command_modality_link.created_on
|
||||
return temp
|
||||
|
||||
|
||||
class Parameters_Assessment_Command_Modality_Link(Get_Many_Parameters_Base):
|
||||
get_all_link: bool
|
||||
get_inactive_link: bool
|
||||
ids_link: str
|
||||
min_distance_from_handler_link: Optional[float]
|
||||
max_distance_from_handler_link: Optional[float]
|
||||
value_is_in_sight_of_handler_link: Optional[bool]
|
||||
value_is_in_scent_range_of_handler_link: Optional[bool]
|
||||
value_is_in_hearing_range_of_handler_link: Optional[bool]
|
||||
value_is_on_lead_link: Optional[bool]
|
||||
min_trial_count_link: Optional[float]
|
||||
max_trial_count_link: Optional[float]
|
||||
|
||||
get_all_assessment: bool
|
||||
get_inactive_assessment: bool
|
||||
ids_assessment: str
|
||||
notes_assessment: str
|
||||
min_temperature_assessment: Optional[float]
|
||||
max_temperature_assessment: Optional[float]
|
||||
get_all_weather: bool
|
||||
get_inactive_weather: bool
|
||||
ids_weather: str
|
||||
names_weather: str
|
||||
get_all_lighting_level: bool
|
||||
get_inactive_lighting_level: bool
|
||||
ids_lighting_level: str
|
||||
names_lighting_level: str
|
||||
get_all_location: bool
|
||||
get_inactive_location: bool
|
||||
ids_location: str
|
||||
names_location: str
|
||||
get_all_user_handler: bool
|
||||
get_inactive_user_handler: bool
|
||||
ids_user_handler: str
|
||||
#auth0_ids_user_handler: str
|
||||
names_user_handler: str
|
||||
emails_user_handler: str
|
||||
|
||||
get_all_command_category: bool
|
||||
get_inactive_command_category: bool
|
||||
ids_command_category: str
|
||||
names_command_category: str
|
||||
get_all_command: bool
|
||||
get_inactive_command: bool
|
||||
ids_command: str
|
||||
names_command: str
|
||||
hand_signal_default_descriptions_command: str
|
||||
notes_command: str
|
||||
|
||||
get_all_command_modality: bool
|
||||
get_inactive_command_modality: bool
|
||||
ids_command_modality: str
|
||||
names_command_modality: str
|
||||
|
||||
get_all_bribe: bool
|
||||
get_inactive_bribe: bool
|
||||
ids_bribe: str
|
||||
names_bribe: 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_link = True
|
||||
, get_inactive_link = False
|
||||
, ids_link = ''
|
||||
, min_distance_from_handler_link = None
|
||||
, max_distance_from_handler_link = None
|
||||
, value_is_in_sight_of_handler_link = None
|
||||
, value_is_in_scent_range_of_handler_link = None
|
||||
, value_is_in_hearing_range_of_handler_link = None
|
||||
, value_is_on_lead_link = None
|
||||
, min_trial_count_link = None
|
||||
, max_trial_count_link = None
|
||||
|
||||
, get_all_assessment = True
|
||||
, get_inactive_assessment = False
|
||||
, ids_assessment = ''
|
||||
, notes_assessment = ''
|
||||
, min_temperature_assessment = None
|
||||
, max_temperature_assessment = None
|
||||
, get_all_weather = True
|
||||
, get_inactive_weather = False
|
||||
, ids_weather = ''
|
||||
, names_weather = ''
|
||||
, get_all_lighting_level = True
|
||||
, get_inactive_lighting_level = False
|
||||
, ids_lighting_level = ''
|
||||
, names_lighting_level = ''
|
||||
, get_all_location = True
|
||||
, get_inactive_location = False
|
||||
, ids_location = ''
|
||||
, names_location = ''
|
||||
, get_all_user_handler = True
|
||||
, get_inactive_user_handler = False
|
||||
, ids_user_handler = ''
|
||||
# , auth0_ids_user_handler = ''
|
||||
, names_user_handler = ''
|
||||
, emails_user_handler = ''
|
||||
|
||||
, get_all_command_category = True
|
||||
, get_inactive_command_category = False
|
||||
, ids_command_category = ''
|
||||
, names_command_category = ''
|
||||
, get_all_command = True
|
||||
, get_inactive_command = False
|
||||
, ids_command = ''
|
||||
, names_command = ''
|
||||
, hand_signal_default_descriptions_command = ''
|
||||
, notes_command = ''
|
||||
|
||||
, get_all_command_modality = True
|
||||
, get_inactive_command_modality = False
|
||||
, ids_command_modality = ''
|
||||
, names_command_modality = ''
|
||||
|
||||
, get_all_bribe = True
|
||||
, get_inactive_bribe = False
|
||||
, ids_bribe = ''
|
||||
, names_bribe = ''
|
||||
|
||||
, 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_link = json.get('a_get_all_link', False)
|
||||
, get_inactive_link = json.get('a_get_inactive_link', False)
|
||||
, ids_link = json.get('a_ids_link', '')
|
||||
, notes_assessment_command_modality_link = json.get('a_notes_assessment_command_modality_link', '')
|
||||
, min_distance_from_handler_link = json.get('a_min_distance_from_handler_link', None)
|
||||
, max_distance_from_handler_link = json.get('a_max_distance_from_handler_link', None)
|
||||
, value_is_in_sight_of_handler_link = json.get('a_value_is_in_sight_of_handler_link', None)
|
||||
, value_is_in_scent_range_of_handler_link = json.get('a_value_is_in_scent_range_of_handler_link', None)
|
||||
, value_is_in_hearing_range_of_handler_link = json.get('a_value_is_in_hearing_range_of_handler_link', None)
|
||||
, value_is_on_lead_link = json.get('a_value_is_on_lead_link', None)
|
||||
, min_trial_count_link = json.get('a_min_trial_count_link', None)
|
||||
, max_trial_count_link = json.get('a_max_trial_count_link', None)
|
||||
|
||||
, get_all_assessment = json.get('a_get_all_assessment', False)
|
||||
, get_inactive_assessment = json.get('a_get_inactive_assessment', False)
|
||||
, ids_assessment = json.get('a_ids_assessment', '')
|
||||
, notes_assessment = json.get('a_notes_assessment', '')
|
||||
, min_temperature_assessment = json.get('a_min_temperature_assessment', None)
|
||||
, max_temperature_assessment = json.get('a_max_temperature_assessment', None)
|
||||
, get_all_weather = json.get('a_get_all_weather', False)
|
||||
, get_inactive_weather = json.get('a_get_inactive_weather', False)
|
||||
, ids_weather = json.get('a_ids_weather', '')
|
||||
, names_weather = json.get('a_names_weather', '')
|
||||
, get_all_lighting_level = json.get('a_get_all_lighting_level', False)
|
||||
, get_inactive_lighting_level = json.get('a_get_inactive_lighting_level', False)
|
||||
, ids_lighting_level = json.get('a_ids_lighting_level', '')
|
||||
, names_lighting_level = json.get('a_names_lighting_level', '')
|
||||
, get_all_location = json.get('a_get_all_location', False)
|
||||
, get_inactive_location = json.get('a_get_inactive_location', False)
|
||||
, ids_location = json.get('a_ids_location', '')
|
||||
, names_location = json.get('a_names_location', '')
|
||||
, get_all_user_handler = json.get('a_get_all_user_handler', False)
|
||||
, get_inactive_user_handler = json.get('a_get_inactive_user_handler', False)
|
||||
, ids_user_handler = json.get('a_ids_user_handler', '')
|
||||
# , auth0_ids_user_handler = json.get('a_ids_user_handler', '')
|
||||
, names_user_handler = json.get('a_names_user_handler', '')
|
||||
, emails_user_handler = json.get('a_emails_user_handler', '')
|
||||
|
||||
, get_all_command_category = json.get('a_get_all_command_category', False)
|
||||
, get_inactive_command_category = json.get('a_get_inactive_command_category', False)
|
||||
, ids_command_category = json.get('a_ids_command_category', '')
|
||||
, names_command_category = json.get('a_names_command_category', '')
|
||||
, get_all_command = json.get('a_get_all_command', False)
|
||||
, get_inactive_command = json.get('a_get_inactive_command', False)
|
||||
, ids_command = json.get('a_ids_command', '')
|
||||
, names_command = json.get('a_names_command', '')
|
||||
, hand_signal_default_descriptions_command = json.get('a_hand_signal_default_descriptions_command', '')
|
||||
, notes_command = json.get('a_notes_command', '')
|
||||
|
||||
, get_all_command_modality = json.get('a_get_all_command_modality', False)
|
||||
, get_inactive_command_modality = json.get('a_get_inactive_command_modality', False)
|
||||
, ids_command_modality = json.get('a_ids_command_modality', '')
|
||||
, names_command_modality = json.get('a_names_command_modality', '')
|
||||
|
||||
, get_all_bribe = json.get('a_get_all_bribe', False)
|
||||
, get_inactive_bribe = json.get('a_get_inactive_bribe', False)
|
||||
, ids_bribe = json.get('a_ids_bribe', '')
|
||||
, names_bribe = json.get('a_names_bribe', '')
|
||||
|
||||
, 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_assessment(cls, form):
|
||||
_m = f'{cls.__qualname__}.from_form_filters_assessment'
|
||||
Helper_App.console_log(_m)
|
||||
Helper_App.console_log(f'Filters: {form}')
|
||||
av.val_instance(form, 'form', _m, Filters_Assessment)
|
||||
has_filter_search_text = not (form.search.data == '' or form.search.data is None)
|
||||
has_filter_assessment = not (form.id_assessment.data == '0' or form.id_assessment.data == '' or form.id_assessment.data is None)
|
||||
has_filter_command = False
|
||||
has_filter_command_modality = False
|
||||
has_filter_bribe = False
|
||||
active_only = av.input_bool(form.active_only.data, "active", _m)
|
||||
Helper_App.console_log(f'''
|
||||
has_filter_search_text: {has_filter_search_text}
|
||||
has_filter_assessment: {has_filter_assessment}
|
||||
has_filter_command: {has_filter_command}
|
||||
has_filter_command_modality: {has_filter_command_modality}
|
||||
has_filter_bribe: {has_filter_bribe}
|
||||
active_only: {active_only}
|
||||
''')
|
||||
filters = cls.get_default()
|
||||
filters.get_all_link = True
|
||||
filters.get_inactive_link = not active_only
|
||||
filters.ids_link = ''
|
||||
filters.get_all_assessment = not has_filter_assessment
|
||||
filters.get_inactive_assessment = not active_only
|
||||
filters.ids_assessment = form.id_assessment.data if has_filter_assessment else ''
|
||||
filters.get_all_command = not has_filter_command
|
||||
filters.get_inactive_command = not active_only
|
||||
filters.ids_command = ''
|
||||
filters.names_command = form.search.data if has_filter_search_text else ''
|
||||
filters.get_all_command_modality = not has_filter_command_modality
|
||||
filters.get_inactive_command_modality = not active_only
|
||||
filters.ids_command_modality = ''
|
||||
filters.names_command_modality = form.search.data if has_filter_search_text else ''
|
||||
filters.get_all_bribe = not has_filter_bribe
|
||||
filters.get_inactive_bribe = not active_only
|
||||
filters.ids_bribe = ''
|
||||
filters.names_bribe = form.search.data if has_filter_search_text else ''
|
||||
return filters
|
||||
|
||||
def to_json(self):
|
||||
return {
|
||||
'a_get_all_link': self.get_all_link
|
||||
, 'a_get_inactive_link': self.get_inactive_link
|
||||
, 'a_ids_link': self.ids_link
|
||||
, 'a_min_distance_from_handler_link': self.min_distance_from_handler_link
|
||||
, 'a_max_distance_from_handler_link': self.max_distance_from_handler_link
|
||||
, 'a_value_is_in_sight_of_handler_link': self.value_is_in_sight_of_handler_link
|
||||
, 'a_value_is_in_scent_range_of_handler_link': self.value_is_in_scent_range_of_handler_link
|
||||
, 'a_value_is_in_hearing_range_of_handler_link': self.value_is_in_hearing_range_of_handler_link
|
||||
, 'a_value_is_on_lead_link': self.value_is_on_lead_link
|
||||
, 'a_min_trial_count_link': self.min_trial_count_link
|
||||
, 'a_max_trial_count_link': self.max_trial_count_link
|
||||
|
||||
, 'a_get_all_assessment': self.get_all_assessment
|
||||
, 'a_get_inactive_assessment': self.get_inactive_assessment
|
||||
, 'a_ids_assessment': self.ids_assessment
|
||||
, 'a_notes_assessment': self.notes_assessment
|
||||
, 'a_min_temperature_assessment': self.min_temperature_assessment
|
||||
, 'a_max_temperature_assessment': self.max_temperature_assessment
|
||||
, 'get_all_weather': self.get_all_weather
|
||||
, 'get_inactive_weather': self.get_inactive_weather
|
||||
, 'ids_weather': self.ids_weather
|
||||
, 'names_weather': self.names_weather
|
||||
, 'get_all_lighting_level': self.get_all_lighting_level
|
||||
, 'get_inactive_lighting_level': self.get_inactive_lighting_level
|
||||
, 'ids_lighting_level': self.ids_lighting_level
|
||||
, 'names_lighting_level': self.names_lighting_level
|
||||
, 'get_all_location': self.get_all_location
|
||||
, 'get_inactive_location': self.get_inactive_location
|
||||
, 'ids_location': self.ids_location
|
||||
, 'names_location': self.names_location
|
||||
, 'get_all_user_handler': self.get_all_user_handler
|
||||
, 'get_inactive_user_handler': self.get_inactive_user_handler
|
||||
, 'ids_user_handler': self.ids_user_handler
|
||||
#, 'auth0_ids_user_handler': self.ids_user_handler
|
||||
, 'names_user_handler': self.names_user_handler
|
||||
, 'emails_user_handler': self.emails_user_handler
|
||||
|
||||
, 'a_get_all_command_category': self.get_all_command_category
|
||||
, 'a_get_inactive_command_category': self.get_inactive_command_category
|
||||
, 'a_ids_command_category': self.ids_command_category
|
||||
, 'a_names_command_category': self.names_command_category
|
||||
, 'a_get_all_command': self.get_all_command
|
||||
, 'a_get_inactive_command': self.get_inactive_command
|
||||
, 'a_ids_command': self.ids_command
|
||||
, 'a_names_command': self.names_command
|
||||
, 'a_hand_signal_default_descriptions_command': self.hand_signal_default_descriptions_command
|
||||
, 'a_notes_command': self.notes_command
|
||||
|
||||
, 'a_get_all_command_modality': self.get_all_command_modality
|
||||
, 'a_get_inactive_command_modality': self.get_inactive_command_modality
|
||||
, 'a_ids_command_modality': self.ids_command_modality
|
||||
, 'a_names_command_modality': self.names_command_modality
|
||||
|
||||
, 'a_get_all_bribe': self.get_all_bribe
|
||||
, 'a_get_inactive_bribe': self.get_inactive_bribe
|
||||
, 'a_ids_bribe': self.ids_bribe
|
||||
, 'a_names_bribe': self.names_bribe
|
||||
|
||||
, '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
|
||||
}
|
||||
516
business_objects/dog/assessment_response.py
Normal file
516
business_objects/dog/assessment_response.py
Normal file
@@ -0,0 +1,516 @@
|
||||
"""
|
||||
Project: PARTS Website
|
||||
Author: Edward Middleton-Smith
|
||||
Precision And Research Technology Systems Limited
|
||||
|
||||
Technology: Business Objects
|
||||
Feature: Assessment_Response Business Object
|
||||
"""
|
||||
|
||||
# internal
|
||||
from business_objects.base import Base
|
||||
from business_objects.dog.command import Command
|
||||
# from business_objects.dog.command_category import Command_Category
|
||||
from business_objects.db_base import SQLAlchemy_ABC, Get_Many_Parameters_Base
|
||||
from business_objects.dog.dog import Dog
|
||||
from business_objects.dog.response_quality_metric import Response_Quality_Metric
|
||||
from business_objects.dog.obedience_level import Obedience_Level
|
||||
from business_objects.dog.obedience_level import Obedience_Level
|
||||
from business_objects.dog.assessment_command_modality_link import Assessment_Command_Modality_Link
|
||||
from business_objects.dog.user import User
|
||||
from extensions import db
|
||||
from forms.dog.assessment import Filters_Assessment
|
||||
from helpers.helper_app import Helper_App
|
||||
import lib.argument_validation as av
|
||||
# external
|
||||
from dataclasses import dataclass
|
||||
from typing import ClassVar, Optional
|
||||
|
||||
|
||||
class Assessment_Response(SQLAlchemy_ABC, Base):
|
||||
ATTR_ID_ASSESSMENT_RESPONSE: ClassVar[str] = 'id_response'
|
||||
FLAG_ASSESSMENT_RESPONSE: ClassVar[str] = Assessment_Command_Modality_Link.FLAG_ASSESSMENT_RESPONSE
|
||||
FLAG_VALUE_MEASURED: ClassVar[str] = 'value-measured'
|
||||
NAME_ATTR_OPTION_VALUE: ClassVar[str] = ATTR_ID_ASSESSMENT_RESPONSE
|
||||
NAME_ATTR_OPTION_TEXT: ClassVar[str] = ATTR_ID_ASSESSMENT_RESPONSE
|
||||
|
||||
__tablename__ = 'DOG_Assessment_Response'
|
||||
__table_args__ = { 'extend_existing': True }
|
||||
|
||||
id_response = db.Column(db.Integer, primary_key=True)
|
||||
id_assessment_command_modality_link = db.Column(db.Integer)
|
||||
id_response_quality_metric = db.Column(db.Integer)
|
||||
id_obedience_level = db.Column(db.Integer)
|
||||
value_measured = db.Column(db.Float)
|
||||
notes = db.Column(db.Text)
|
||||
active = db.Column(db.Boolean)
|
||||
created_on = db.Column(db.DateTime)
|
||||
|
||||
def __init__(self):
|
||||
self.id_response = 0
|
||||
self.is_new = False
|
||||
self.assessment_command_modality_link = None
|
||||
self.response_quality_metric = None
|
||||
self.obedience_level = None
|
||||
super().__init__()
|
||||
|
||||
@classmethod
|
||||
def from_db_assessment_response(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_assessment_response'
|
||||
assessment_response = cls()
|
||||
assessment_response.id_response = query_row[0]
|
||||
assessment_response.id_assessment_command_modality_link = query_row[1]
|
||||
assessment_response.id_response_quality_metric = query_row[2]
|
||||
assessment_response.id_obedience_level = query_row[3]
|
||||
assessment_response.value_measured = query_row[11]
|
||||
assessment_response.notes = query_row[10]
|
||||
assessment_response.active = av.input_bool(query_row[12], 'active', _m)
|
||||
|
||||
assessment_response.assessment_command_modality_link = Assessment_Command_Modality_Link.from_db_assessment_response(query_row)
|
||||
assessment_response.response_quality_metric = Response_Quality_Metric.from_db_assessment_response(query_row)
|
||||
assessment_response.obedience_level = Obedience_Level.from_db_assessment_response(query_row)
|
||||
return assessment_response
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json):
|
||||
_m = f'{cls.__qualname__}.from_json'
|
||||
assessment_response = cls()
|
||||
if json is None: return assessment_response
|
||||
# Helper_App.console_log(f'{_m}\njson: {json}')
|
||||
assessment_response.id_response = json.get(Assessment_Response.ATTR_ID_ASSESSMENT_RESPONSE, -1)
|
||||
assessment_response.id_assessment_command_modality_link = json[Assessment_Command_Modality_Link.ATTR_ID_ASSESSMENT_COMMAND_MODALITY_LINK]
|
||||
assessment_response.id_response_quality_metric = json[Response_Quality_Metric.ATTR_ID_ASSESSMENT_RESPONSE_QUALITY_METRIC]
|
||||
assessment_response.id_obedience_level = json[Obedience_Level.ATTR_ID_OBEDIENCE_LEVEL]
|
||||
assessment_response.value_measured = json[cls.FLAG_VALUE_MEASURED]
|
||||
assessment_response.notes = json[cls.FLAG_NOTES]
|
||||
assessment_response.active = json[cls.FLAG_ACTIVE]
|
||||
assessment_response.created_on = json.get(cls.FLAG_CREATED_ON, None)
|
||||
# assessment_response.id_command_category = json[Command_Category.FLAG_COMMAND_CATEGORY]
|
||||
# Helper_App.console_log(f'Dog Command Link: {assessment_response}')
|
||||
return assessment_response
|
||||
|
||||
def to_json(self):
|
||||
as_json = {
|
||||
**self.get_shared_json_attributes(self)
|
||||
, self.ATTR_ID_ASSESSMENT_RESPONSE: self.id_response
|
||||
, Assessment_Command_Modality_Link.ATTR_ID_ASSESSMENT_COMMAND_MODALITY_LINK: { Assessment_Command_Modality_Link.ATTR_ID_ASSESSMENT_COMMAND_MODALITY_LINK: None } if self.assessment_command_modality_link is None else self.assessment_command_modality_link.to_json()
|
||||
, Response_Quality_Metric.ATTR_ID_ASSESSMENT_RESPONSE_QUALITY_METRIC: { Response_Quality_Metric.ATTR_ID_ASSESSMENT_RESPONSE_QUALITY_METRIC: None } if self.response_quality_metric is None else self.response_quality_metric.to_json()
|
||||
, Obedience_Level.ATTR_ID_OBEDIENCE_LEVEL: { Obedience_Level.ATTR_ID_OBEDIENCE_LEVEL: None } if self.assessment_command_modality_link is None else self.assessment_command_modality_link.to_json()
|
||||
, self.FLAG_VALUE_MEASURED: self.value_measured
|
||||
, self.FLAG_NOTES: self.notes
|
||||
, self.FLAG_ACTIVE: self.active
|
||||
, self.FLAG_CREATED_ON: self.created_on
|
||||
}
|
||||
# , Command_Category.FLAG_COMMAND_CATEGORY: self.id_command_category
|
||||
# Helper_App.console_log(f'as_json: {as_json}')
|
||||
return as_json
|
||||
|
||||
def __repr__(self):
|
||||
return f'''
|
||||
{self.__class__.__name__}(
|
||||
{self.FLAG_ASSESSMENT_RESPONSE}: {self.id_response}
|
||||
{Assessment_Command_Modality_Link.FLAG_ASSESSMENT_COMMAND_MODALITY_LINK}: {self.assessment_command_modality_link}
|
||||
{Response_Quality_Metric.FLAG_RESPONSE_QUALITY_METRIC}: {self.response_quality_metric}
|
||||
{Obedience_Level.FLAG_OBEDIENCE_LEVEL}: {self.obedience_level}
|
||||
{self.FLAG_VALUE_MEASURED}: {self.value_measured}
|
||||
{self.FLAG_NOTES}: {self.notes}
|
||||
{self.FLAG_ACTIVE}: {self.active}
|
||||
{self.FLAG_CREATED_ON}: {self.created_on}
|
||||
)
|
||||
'''
|
||||
# {Command_Category.FLAG_COMMAND_CATEGORY}: {self.id_command_category}
|
||||
|
||||
class Assessment_Response_Temp(db.Model, Base):
|
||||
__tablename__ = 'DOG_Assessment_Response_Temp'
|
||||
__table_args__ = { 'extend_existing': True }
|
||||
id_temp = db.Column(db.Integer, primary_key=True)
|
||||
id_response = db.Column(db.Integer)
|
||||
id_assessment_command_modality_link = db.Column(db.Integer)
|
||||
id_response_quality_metric = db.Column(db.Integer)
|
||||
id_obedience_level = db.Column(db.Integer)
|
||||
value_measured = db.Column(db.Float)
|
||||
notes = db.Column(db.Text)
|
||||
active = db.Column(db.Boolean)
|
||||
# created_on = db.Column(db.DateTime)
|
||||
guid: str = db.Column(db.String(36))
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
|
||||
@classmethod
|
||||
def from_assessment_response(cls, assessment_response):
|
||||
_m = 'Assessment_Response_Temp.from_assessment_response'
|
||||
temp = cls()
|
||||
temp.id_response = assessment_response.id_response
|
||||
temp.id_assessment_command_modality_link = assessment_response.id_assessment_command_modality_link
|
||||
temp.id_response_quality_metric = assessment_response.id_response_quality_metric
|
||||
temp.id_obedience_level = assessment_response.id_obedience_level
|
||||
temp.value_measured = assessment_response.value_measured
|
||||
temp.notes = assessment_response.notes
|
||||
temp.active = assessment_response.active
|
||||
# temp.created_on = assessment_response.created_on
|
||||
return temp
|
||||
|
||||
|
||||
class Parameters_Assessment_Response(Get_Many_Parameters_Base):
|
||||
get_all_assessment_response: bool
|
||||
get_inactive_assessment_response: bool
|
||||
ids_assessment_response: str
|
||||
notes_assessment_response: str
|
||||
min_value_measured_assessment_response: Optional[float]
|
||||
max_value_measured_assessment_response: Optional[float]
|
||||
|
||||
get_all_ACM_link: bool
|
||||
get_inactive_ACM_link: bool
|
||||
ids_ACM_link: str
|
||||
min_distance_from_handler_ACM_link: Optional[float]
|
||||
max_distance_from_handler_ACM_link: Optional[float]
|
||||
value_is_in_sight_of_handler_ACM_link: Optional[bool]
|
||||
value_is_in_scent_range_of_handler_ACM_link: Optional[bool]
|
||||
value_is_in_hearing_range_of_handler_ACM_link: Optional[bool]
|
||||
value_is_on_lead_ACM_link: Optional[bool]
|
||||
min_trial_count_ACM_link: Optional[float]
|
||||
max_trial_count_ACM_link: Optional[float]
|
||||
get_all_assessment: bool
|
||||
get_inactive_assessment: bool
|
||||
ids_assessment: str
|
||||
notes_assessment: str
|
||||
min_temperature_assessment: Optional[float]
|
||||
max_temperature_assessment: Optional[float]
|
||||
get_all_weather: bool
|
||||
get_inactive_weather: bool
|
||||
ids_weather: str
|
||||
names_weather: str
|
||||
get_all_lighting_level: bool
|
||||
get_inactive_lighting_level: bool
|
||||
ids_lighting_level: str
|
||||
names_lighting_level: str
|
||||
get_all_location: bool
|
||||
get_inactive_location: bool
|
||||
ids_location: str
|
||||
names_location: str
|
||||
get_all_user_handler: bool
|
||||
get_inactive_user_handler: bool
|
||||
ids_user_handler: str
|
||||
#auth0_ids_user_handler: str
|
||||
names_user_handler: str
|
||||
emails_user_handler: str
|
||||
get_all_command_category: bool
|
||||
get_inactive_command_category: bool
|
||||
ids_command_category: str
|
||||
names_command_category: str
|
||||
get_all_command: bool
|
||||
get_inactive_command: bool
|
||||
ids_command: str
|
||||
names_command: str
|
||||
hand_signal_default_descriptions_command: str
|
||||
notes_command: str
|
||||
get_all_command_modality: bool
|
||||
get_inactive_command_modality: bool
|
||||
ids_command_modality: str
|
||||
names_command_modality: str
|
||||
get_all_bribe: bool
|
||||
get_inactive_bribe: bool
|
||||
ids_bribe: str
|
||||
names_bribe: str
|
||||
|
||||
get_all_response_quality_metric: bool
|
||||
get_inactive_response_quality_metric: bool
|
||||
ids_response_quality_metric: str
|
||||
names_response_quality_metric: str
|
||||
|
||||
get_all_obedience_level: bool
|
||||
get_inactive_obedience_level: bool
|
||||
ids_obedience_level: str
|
||||
names_obedience_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_assessment_response = True
|
||||
, get_inactive_assessment_response = False
|
||||
, ids_assessment_response = ''
|
||||
, notes_assessment_response = ''
|
||||
, min_value_measured_assessment_response = None
|
||||
, max_value_measured_assessment_response = None
|
||||
|
||||
, get_all_ACM_link = True
|
||||
, get_inactive_ACM_link = False
|
||||
, ids_ACM_link = ''
|
||||
, min_distance_from_handler_ACM_link = None
|
||||
, max_distance_from_handler_ACM_link = None
|
||||
, value_is_in_sight_of_handler_ACM_link = None
|
||||
, value_is_in_scent_range_of_handler_ACM_link = None
|
||||
, value_is_in_hearing_range_of_handler_ACM_link = None
|
||||
, value_is_on_lead_ACM_link = None
|
||||
, min_trial_count_ACM_link = None
|
||||
, max_trial_count_ACM_link = None
|
||||
, get_all_assessment = True
|
||||
, get_inactive_assessment = False
|
||||
, ids_assessment = ''
|
||||
, notes_assessment = ''
|
||||
, min_temperature_assessment = None
|
||||
, max_temperature_assessment = None
|
||||
, get_all_weather = True
|
||||
, get_inactive_weather = False
|
||||
, ids_weather = ''
|
||||
, names_weather = ''
|
||||
, get_all_lighting_level = True
|
||||
, get_inactive_lighting_level = False
|
||||
, ids_lighting_level = ''
|
||||
, names_lighting_level = ''
|
||||
, get_all_location = True
|
||||
, get_inactive_location = False
|
||||
, ids_location = ''
|
||||
, names_location = ''
|
||||
, get_all_user_handler = True
|
||||
, get_inactive_user_handler = False
|
||||
, ids_user_handler = ''
|
||||
# , auth0_ids_user_handler = ''
|
||||
, names_user_handler = ''
|
||||
, emails_user_handler = ''
|
||||
, get_all_command_category = True
|
||||
, get_inactive_command_category = False
|
||||
, ids_command_category = ''
|
||||
, names_command_category = ''
|
||||
, get_all_command = True
|
||||
, get_inactive_command = False
|
||||
, ids_command = ''
|
||||
, names_command = ''
|
||||
, hand_signal_default_descriptions_command = ''
|
||||
, notes_command = ''
|
||||
, get_all_command_modality = True
|
||||
, get_inactive_command_modality = False
|
||||
, ids_command_modality = ''
|
||||
, names_command_modality = ''
|
||||
, get_all_bribe = True
|
||||
, get_inactive_bribe = False
|
||||
, ids_bribe = ''
|
||||
, names_bribe = ''
|
||||
|
||||
, get_all_response_quality_metric = True
|
||||
, get_inactive_response_quality_metric = False
|
||||
, ids_response_quality_metric = ''
|
||||
, names_response_quality_metric = ''
|
||||
|
||||
, get_all_obedience_level = True
|
||||
, get_inactive_obedience_level = False
|
||||
, ids_obedience_level = ''
|
||||
, names_obedience_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_assessment_response = json.get('a_get_all_assessment_response', False)
|
||||
, get_inactive_assessment_response = json.get('a_get_inactive_assessment_response', False)
|
||||
, ids_assessment_response = json.get('a_ids_assessment_response', '')
|
||||
, notes_assessment_response = json.get('a_notes_assessment_response', '')
|
||||
, min_value_measured_assessment_response = json.get('a_min_value_measured_assessment_response', None)
|
||||
, max_value_measured_assessment_response = json.get('a_max_value_measured_assessment_response', None)
|
||||
|
||||
, get_all_ACM_link = json.get('a_get_all_ACM_link', False)
|
||||
, get_inactive_ACM_link = json.get('a_get_inactive_ACM_link', False)
|
||||
, ids_ACM_link = json.get('a_ids_ACM_link', '')
|
||||
, notes_assessment_command_modality_link = json.get('a_notes_assessment_command_modality_link', '')
|
||||
, min_distance_from_handler_ACM_link = json.get('a_min_distance_from_handler_ACM_link', None)
|
||||
, max_distance_from_handler_ACM_link = json.get('a_max_distance_from_handler_ACM_link', None)
|
||||
, value_is_in_sight_of_handler_ACM_link = json.get('a_value_is_in_sight_of_handler_ACM_link', None)
|
||||
, value_is_in_scent_range_of_handler_ACM_link = json.get('a_value_is_in_scent_range_of_handler_ACM_link', None)
|
||||
, value_is_in_hearing_range_of_handler_ACM_link = json.get('a_value_is_in_hearing_range_of_handler_ACM_link', None)
|
||||
, value_is_on_lead_ACM_link = json.get('a_value_is_on_lead_ACM_link', None)
|
||||
, min_trial_count_ACM_link = json.get('a_min_trial_count_ACM_link', None)
|
||||
, max_trial_count_ACM_link = json.get('a_max_trial_count_ACM_link', None)
|
||||
, get_all_assessment = json.get('a_get_all_assessment', False)
|
||||
, get_inactive_assessment = json.get('a_get_inactive_assessment', False)
|
||||
, ids_assessment = json.get('a_ids_assessment', '')
|
||||
, notes_assessment = json.get('a_notes_assessment', '')
|
||||
, min_temperature_assessment = json.get('a_min_temperature_assessment', None)
|
||||
, max_temperature_assessment = json.get('a_max_temperature_assessment', None)
|
||||
, get_all_weather = json.get('a_get_all_weather', False)
|
||||
, get_inactive_weather = json.get('a_get_inactive_weather', False)
|
||||
, ids_weather = json.get('a_ids_weather', '')
|
||||
, names_weather = json.get('a_names_weather', '')
|
||||
, get_all_lighting_level = json.get('a_get_all_lighting_level', False)
|
||||
, get_inactive_lighting_level = json.get('a_get_inactive_lighting_level', False)
|
||||
, ids_lighting_level = json.get('a_ids_lighting_level', '')
|
||||
, names_lighting_level = json.get('a_names_lighting_level', '')
|
||||
, get_all_location = json.get('a_get_all_location', False)
|
||||
, get_inactive_location = json.get('a_get_inactive_location', False)
|
||||
, ids_location = json.get('a_ids_location', '')
|
||||
, names_location = json.get('a_names_location', '')
|
||||
, get_all_user_handler = json.get('a_get_all_user_handler', False)
|
||||
, get_inactive_user_handler = json.get('a_get_inactive_user_handler', False)
|
||||
, ids_user_handler = json.get('a_ids_user_handler', '')
|
||||
# , auth0_ids_user_handler = json.get('a_ids_user_handler', '')
|
||||
, names_user_handler = json.get('a_names_user_handler', '')
|
||||
, emails_user_handler = json.get('a_emails_user_handler', '')
|
||||
, get_all_command_category = json.get('a_get_all_command_category', False)
|
||||
, get_inactive_command_category = json.get('a_get_inactive_command_category', False)
|
||||
, ids_command_category = json.get('a_ids_command_category', '')
|
||||
, names_command_category = json.get('a_names_command_category', '')
|
||||
, get_all_command = json.get('a_get_all_command', False)
|
||||
, get_inactive_command = json.get('a_get_inactive_command', False)
|
||||
, ids_command = json.get('a_ids_command', '')
|
||||
, names_command = json.get('a_names_command', '')
|
||||
, hand_signal_default_descriptions_command = json.get('a_hand_signal_default_descriptions_command', '')
|
||||
, notes_command = json.get('a_notes_command', '')
|
||||
, get_all_command_modality = json.get('a_get_all_command_modality', False)
|
||||
, get_inactive_command_modality = json.get('a_get_inactive_command_modality', False)
|
||||
, ids_command_modality = json.get('a_ids_command_modality', '')
|
||||
, names_command_modality = json.get('a_names_command_modality', '')
|
||||
, get_all_bribe = json.get('a_get_all_bribe', False)
|
||||
, get_inactive_bribe = json.get('a_get_inactive_bribe', False)
|
||||
, ids_bribe = json.get('a_ids_bribe', '')
|
||||
, names_bribe = json.get('a_names_bribe', '')
|
||||
|
||||
, get_all_response_quality_metric = json.get('a_get_all_response_quality_metric', False)
|
||||
, get_inactive_response_quality_metric = json.get('a_get_inactive_response_quality_metric', False)
|
||||
, ids_response_quality_metric = json.get('a_ids_response_quality_metric', '')
|
||||
, names_response_quality_metric = json.get('a_names_response_quality_metric', '')
|
||||
|
||||
, get_all_obedience_level = json.get('a_get_all_obedience_level', False)
|
||||
, get_inactive_obedience_level = json.get('a_get_inactive_obedience_level', False)
|
||||
, ids_obedience_level = json.get('a_ids_obedience_level', '')
|
||||
, names_obedience_level = json.get('a_names_obedience_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_assessment(cls, form):
|
||||
_m = f'{cls.__qualname__}.from_form_filters_assessment'
|
||||
Helper_App.console_log(_m)
|
||||
Helper_App.console_log(f'Filters: {form}')
|
||||
av.val_instance(form, 'form', _m, Filters_Assessment)
|
||||
has_filter_search_text = not (form.search.data == '' or form.search.data is None)
|
||||
has_filter_assessment_command_modality_link = False
|
||||
has_filter_response_quality_metric = False
|
||||
has_filter_obedience_level = False
|
||||
has_filter_user_handler = False
|
||||
has_filter_assessment = not (form.id_assessment.data == '' or form.id_assessment.data == '0' or form.id_assessment.data is None)
|
||||
active_only = av.input_bool(form.active_only.data, "active", _m)
|
||||
Helper_App.console_log(f'''
|
||||
has_filter_search_text: {has_filter_search_text}
|
||||
has_filter_assessment_command_modality_link: {has_filter_assessment_command_modality_link}
|
||||
has_filter_response_quality_metric: {has_filter_response_quality_metric}
|
||||
has_filter_obedience_level: {has_filter_obedience_level}
|
||||
has_filter_user_handler: {has_filter_user_handler}
|
||||
active_only: {active_only}
|
||||
''')
|
||||
filters = cls.get_default()
|
||||
filters.get_all_assessment_response = True
|
||||
filters.get_inactive_assessment_response = not active_only
|
||||
filters.ids_assessment_response = ''
|
||||
filters.get_all_ACM_link = not has_filter_assessment_command_modality_link
|
||||
filters.get_inactive_ACM_link = not active_only
|
||||
filters.ids_ACM_link = ''
|
||||
filters.get_all_response_quality_metric = not has_filter_response_quality_metric
|
||||
filters.get_inactive_response_quality_metric = not active_only
|
||||
filters.ids_response_quality_metric = ''
|
||||
filters.names_response_quality_metric = form.search.data if has_filter_search_text else ''
|
||||
filters.get_all_obedience_level = not has_filter_obedience_level
|
||||
filters.get_inactive_obedience_level = not active_only
|
||||
filters.ids_obedience_level = ''
|
||||
filters.names_obedience_level = form.search.data if has_filter_search_text else ''
|
||||
filters.get_all_user_handler = not has_filter_user_handler
|
||||
filters.get_inactive_user_handler = not active_only
|
||||
filters.ids_user_handler = ''
|
||||
# filters.auth0_ids_user_handler = form.id_user_handler.data if has_filter_user_handler else ''
|
||||
filters.names_user_handler = form.search.data if has_filter_search_text else ''
|
||||
filters.emails_user_handler = form.search.data if has_filter_search_text else ''
|
||||
|
||||
filters.ids_assessment = form.id_assessment.data if has_filter_assessment else ''
|
||||
return filters
|
||||
|
||||
def to_json(self):
|
||||
return {
|
||||
'a_get_all_assessment_response': self.get_all_assessment_response
|
||||
, 'a_get_inactive_assessment_response': self.get_inactive_assessment_response
|
||||
, 'a_ids_assessment_response': self.ids_assessment_response
|
||||
, 'a_notes_assessment_response': self.notes_assessment_response
|
||||
, 'a_min_value_measured_assessment_response': self.min_value_measured_assessment_response
|
||||
, 'a_max_value_measured_assessment_response': self.max_value_measured_assessment_response
|
||||
|
||||
, 'a_get_all_ACM_link': self.get_all_ACM_link
|
||||
, 'a_get_inactive_ACM_link': self.get_inactive_ACM_link
|
||||
, 'a_ids_ACM_link': self.ids_ACM_link
|
||||
, 'a_min_distance_from_handler_ACM_link': self.min_distance_from_handler_ACM_link
|
||||
, 'a_max_distance_from_handler_ACM_link': self.max_distance_from_handler_ACM_link
|
||||
, 'a_value_is_in_sight_of_handler_ACM_link': self.value_is_in_sight_of_handler_ACM_link
|
||||
, 'a_value_is_in_scent_range_of_handler_ACM_link': self.value_is_in_scent_range_of_handler_ACM_link
|
||||
, 'a_value_is_in_hearing_range_of_handler_ACM_link': self.value_is_in_hearing_range_of_handler_ACM_link
|
||||
, 'a_value_is_on_lead_ACM_link': self.value_is_on_lead_ACM_link
|
||||
, 'a_min_trial_count_ACM_link': self.min_trial_count_ACM_link
|
||||
, 'a_max_trial_count_ACM_link': self.max_trial_count_ACM_link
|
||||
, 'a_get_all_assessment': self.get_all_assessment
|
||||
, 'a_get_inactive_assessment': self.get_inactive_assessment
|
||||
, 'a_ids_assessment': self.ids_assessment
|
||||
, 'a_notes_assessment': self.notes_assessment
|
||||
, 'a_min_temperature_assessment': self.min_temperature_assessment
|
||||
, 'a_max_temperature_assessment': self.max_temperature_assessment
|
||||
, 'get_all_weather': self.get_all_weather
|
||||
, 'get_inactive_weather': self.get_inactive_weather
|
||||
, 'ids_weather': self.ids_weather
|
||||
, 'names_weather': self.names_weather
|
||||
, 'get_all_lighting_level': self.get_all_lighting_level
|
||||
, 'get_inactive_lighting_level': self.get_inactive_lighting_level
|
||||
, 'ids_lighting_level': self.ids_lighting_level
|
||||
, 'names_lighting_level': self.names_lighting_level
|
||||
, 'get_all_location': self.get_all_location
|
||||
, 'get_inactive_location': self.get_inactive_location
|
||||
, 'ids_location': self.ids_location
|
||||
, 'names_location': self.names_location
|
||||
, 'get_all_user_handler': self.get_all_user_handler
|
||||
, 'get_inactive_user_handler': self.get_inactive_user_handler
|
||||
, 'ids_user_handler': self.ids_user_handler
|
||||
#, 'auth0_ids_user_handler': self.ids_user_handler
|
||||
, 'names_user_handler': self.names_user_handler
|
||||
, 'emails_user_handler': self.emails_user_handler
|
||||
, 'a_get_all_command_category': self.get_all_command_category
|
||||
, 'a_get_inactive_command_category': self.get_inactive_command_category
|
||||
, 'a_ids_command_category': self.ids_command_category
|
||||
, 'a_names_command_category': self.names_command_category
|
||||
, 'a_get_all_command': self.get_all_command
|
||||
, 'a_get_inactive_command': self.get_inactive_command
|
||||
, 'a_ids_command': self.ids_command
|
||||
, 'a_names_command': self.names_command
|
||||
, 'a_hand_signal_default_descriptions_command': self.hand_signal_default_descriptions_command
|
||||
, 'a_notes_command': self.notes_command
|
||||
, 'a_get_all_command_modality': self.get_all_command_modality
|
||||
, 'a_get_inactive_command_modality': self.get_inactive_command_modality
|
||||
, 'a_ids_command_modality': self.ids_command_modality
|
||||
, 'a_names_command_modality': self.names_command_modality
|
||||
, 'a_get_all_bribe': self.get_all_bribe
|
||||
, 'a_get_inactive_bribe': self.get_inactive_bribe
|
||||
, 'a_ids_bribe': self.ids_bribe
|
||||
, 'a_names_bribe': self.names_bribe
|
||||
|
||||
, 'a_get_all_response_quality_metric': self.get_all_response_quality_metric
|
||||
, 'a_get_inactive_response_quality_metric': self.get_inactive_response_quality_metric
|
||||
, 'a_ids_response_quality_metric': self.ids_response_quality_metric
|
||||
, 'a_names_response_quality_metric': self.names_response_quality_metric
|
||||
|
||||
, 'a_get_all_obedience_level': self.get_all_obedience_level
|
||||
, 'a_get_inactive_obedience_level': self.get_inactive_obedience_level
|
||||
, 'a_ids_obedience_level': self.ids_obedience_level
|
||||
, 'a_names_obedience_level': self.names_obedience_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
|
||||
}
|
||||
190
business_objects/dog/bribe.py
Normal file
190
business_objects/dog/bribe.py
Normal file
@@ -0,0 +1,190 @@
|
||||
"""
|
||||
Project: PARTS Website
|
||||
Author: Edward Middleton-Smith
|
||||
Precision And Research Technology Systems Limited
|
||||
|
||||
Technology: Business Objects
|
||||
Feature: Bribe 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 Bribe(SQLAlchemy_ABC, Base):
|
||||
ATTR_ID_BRIBE: ClassVar[str] = 'id_bribe'
|
||||
FLAG_BRIBE: ClassVar[str] = 'bribe'
|
||||
NAME_ATTR_OPTION_VALUE: ClassVar[str] = ATTR_ID_BRIBE
|
||||
NAME_ATTR_OPTION_TEXT: ClassVar[str] = Base.FLAG_NAME
|
||||
|
||||
__tablename__ = 'DOG_Bribe'
|
||||
__table_args__ = { 'extend_existing': True }
|
||||
|
||||
id_bribe = 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_bribe = 0
|
||||
self.is_new = False
|
||||
super().__init__()
|
||||
|
||||
@classmethod
|
||||
def from_db_bribe(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_bribe'
|
||||
category = cls()
|
||||
category.id_bribe = 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(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_distraction'
|
||||
level = cls()
|
||||
level.id_bribe = query_row[2]
|
||||
level.name = query_row[3]
|
||||
level.active = True
|
||||
return level
|
||||
|
||||
@classmethod
|
||||
def from_db_assessment_command_modality_link(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_assessment_command_modality_link'
|
||||
level = cls()
|
||||
level.id_bribe = query_row[9]
|
||||
level.name = query_row[10]
|
||||
level.active = True
|
||||
return level
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json):
|
||||
_m = 'Bribe.from_json'
|
||||
bribe = cls()
|
||||
if json is None: return Bribe
|
||||
# Helper_App.console_log(f'{_m}\njson: {json}')
|
||||
bribe.id_bribe = json.get(cls.ATTR_ID_BRIBE, -1)
|
||||
bribe.name = json[cls.FLAG_NAME]
|
||||
bribe.code = json.get(cls.FLAG_CODE, bribe.name.upper().replace(" ", "_"))
|
||||
bribe.active = json[cls.FLAG_ACTIVE]
|
||||
# Helper_App.console_log(f'Bribe: {bribe}')
|
||||
return bribe
|
||||
|
||||
|
||||
def to_json(self):
|
||||
as_json = {
|
||||
**self.get_shared_json_attributes(self)
|
||||
, self.ATTR_ID_BRIBE: self.id_bribe
|
||||
, 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_BRIBE}: {self.id_bribe}
|
||||
{self.FLAG_CODE}: {self.code}
|
||||
{self.FLAG_NAME}: {self.name}
|
||||
{self.FLAG_ACTIVE}: {self.active}
|
||||
)
|
||||
'''
|
||||
|
||||
|
||||
class Bribe_Temp(db.Model, Base):
|
||||
__tablename__ = 'DOG_Bribe_Temp'
|
||||
__table_args__ = { 'extend_existing': True }
|
||||
id_temp = db.Column(db.Integer, primary_key=True)
|
||||
id_bribe = 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_bribe(cls, bribe):
|
||||
_m = 'Bribe_Temp.from_Bribe'
|
||||
temp = cls()
|
||||
temp.id_bribe = bribe.id_bribe
|
||||
temp.code = bribe.code
|
||||
temp.name = bribe.name
|
||||
temp.active = bribe.active
|
||||
return temp
|
||||
|
||||
|
||||
class Parameters_Bribe(Get_Many_Parameters_Base):
|
||||
get_all_bribe: bool
|
||||
get_inactive_bribe: bool
|
||||
ids_bribe: str
|
||||
names_bribe: 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_bribe = True
|
||||
, get_inactive_bribe = False
|
||||
, ids_bribe = ''
|
||||
, names_bribe = ''
|
||||
, 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_bribe = json.get('a_get_all_bribe', False)
|
||||
, get_inactive_bribe = json.get('a_get_inactive_bribe', False)
|
||||
, ids_bribe = json.get('a_ids_bribe', '')
|
||||
, names_bribe = json.get('a_names_bribe', '')
|
||||
, 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_bribe(cls, form):
|
||||
av.val_instance(form, 'form', 'Parameters_Bribe.from_form_filters_bribe', Filters_Bribe)
|
||||
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_Bribe.from_form_filters_bribe")
|
||||
filters = cls.get_default()
|
||||
filters.get_all_bribe = True
|
||||
filters.get_inactive_bribe = not active_only
|
||||
filters.ids_bribe = ''
|
||||
filters.names_bribe = form.search.data if has_filter_search_text else ''
|
||||
filters.notes_bribe = form.search.data if has_filter_search_text else ''
|
||||
return filters
|
||||
"""
|
||||
|
||||
def to_json(self):
|
||||
return {
|
||||
'a_get_all_bribe': self.get_all_bribe
|
||||
, 'a_get_inactive_bribe': self.get_inactive_bribe
|
||||
, 'a_ids_bribe': self.ids_bribe
|
||||
, 'a_names_bribe': self.names_bribe
|
||||
, '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
|
||||
}
|
||||
@@ -90,6 +90,16 @@ class Command(SQLAlchemy_ABC, Base):
|
||||
command.command_category = Command_Category.from_db_command_button_link(query_row)
|
||||
return command
|
||||
|
||||
@classmethod
|
||||
def from_db_assessment_command_modality_link(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_assessment_command_modality_link'
|
||||
command = cls()
|
||||
command.id_command = query_row[5]
|
||||
command.name = query_row[6]
|
||||
command.active = True
|
||||
command.command_category = Command_Category.from_db_assessment_command_modality_link(query_row)
|
||||
return command
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json):
|
||||
_m = f'{cls.__qualname__}.from_json'
|
||||
|
||||
@@ -66,6 +66,15 @@ class Command_Category(SQLAlchemy_ABC, Base):
|
||||
level.name = query_row[2]
|
||||
level.active = True
|
||||
return level
|
||||
|
||||
@classmethod
|
||||
def from_db_assessment_command_modality_link(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_assessment_command_modality_link'
|
||||
level = cls()
|
||||
level.id_command_category = query_row[3]
|
||||
level.name = query_row[4]
|
||||
level.active = True
|
||||
return level
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json):
|
||||
@@ -108,7 +117,7 @@ class Command_Category_Temp(db.Model, Base):
|
||||
__table_args__ = { 'extend_existing': True }
|
||||
id_temp = db.Column(db.Integer, primary_key=True)
|
||||
id_command_category = db.Column(db.Integer)
|
||||
# code = db.Column(db.String(250))
|
||||
code = db.Column(db.String(250))
|
||||
name = db.Column(db.String(250))
|
||||
active = db.Column(db.Boolean)
|
||||
guid: str = db.Column(db.String(36))
|
||||
@@ -121,7 +130,7 @@ class Command_Category_Temp(db.Model, Base):
|
||||
_m = 'Command_Category_Temp.from_Command_Category'
|
||||
temp = cls()
|
||||
temp.id_command_category = command_category.id_command_category
|
||||
# temp.code = command_category.code
|
||||
temp.code = command_category.code
|
||||
temp.name = command_category.name
|
||||
temp.active = command_category.active
|
||||
return temp
|
||||
190
business_objects/dog/command_modality.py
Normal file
190
business_objects/dog/command_modality.py
Normal file
@@ -0,0 +1,190 @@
|
||||
"""
|
||||
Project: PARTS Website
|
||||
Author: Edward Middleton-Smith
|
||||
Precision And Research Technology Systems Limited
|
||||
|
||||
Technology: Business Objects
|
||||
Feature: Command Modality 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 Command_Modality(SQLAlchemy_ABC, Base):
|
||||
ATTR_ID_COMMAND_MODALITY: ClassVar[str] = 'id_command_modality'
|
||||
FLAG_COMMAND_MODALITY: ClassVar[str] = 'command-modality'
|
||||
NAME_ATTR_OPTION_VALUE: ClassVar[str] = ATTR_ID_COMMAND_MODALITY
|
||||
NAME_ATTR_OPTION_TEXT: ClassVar[str] = Base.FLAG_NAME
|
||||
|
||||
__tablename__ = 'DOG_Command_Modality'
|
||||
__table_args__ = { 'extend_existing': True }
|
||||
|
||||
id_command_modality = 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_command_modality = 0
|
||||
self.is_new = False
|
||||
super().__init__()
|
||||
|
||||
@classmethod
|
||||
def from_db_command_modality(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_command_modality'
|
||||
category = cls()
|
||||
category.id_command_modality = 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(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_distraction'
|
||||
level = cls()
|
||||
level.id_command_modality = query_row[2]
|
||||
level.name = query_row[3]
|
||||
level.active = True
|
||||
return level
|
||||
|
||||
@classmethod
|
||||
def from_db_assessment_command_modality_link(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_assessment_command_modality_link'
|
||||
level = cls()
|
||||
level.id_command_modality = query_row[7]
|
||||
level.name = query_row[8]
|
||||
level.active = True
|
||||
return level
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json):
|
||||
_m = 'Command_Modality.from_json'
|
||||
command_modality = cls()
|
||||
if json is None: return Command_Modality
|
||||
# Helper_App.console_log(f'{_m}\njson: {json}')
|
||||
command_modality.id_command_modality = json.get(cls.ATTR_ID_COMMAND_MODALITY, -1)
|
||||
command_modality.name = json[cls.FLAG_NAME]
|
||||
command_modality.code = json.get(cls.FLAG_CODE, command_modality.name.upper().replace(" ", "_"))
|
||||
command_modality.active = json[cls.FLAG_ACTIVE]
|
||||
# Helper_App.console_log(f'Command_Modality: {command_modality}')
|
||||
return command_modality
|
||||
|
||||
|
||||
def to_json(self):
|
||||
as_json = {
|
||||
**self.get_shared_json_attributes(self)
|
||||
, self.ATTR_ID_COMMAND_MODALITY: self.id_command_modality
|
||||
, 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_COMMAND_MODALITY}: {self.id_command_modality}
|
||||
{self.FLAG_CODE}: {self.code}
|
||||
{self.FLAG_NAME}: {self.name}
|
||||
{self.FLAG_ACTIVE}: {self.active}
|
||||
)
|
||||
'''
|
||||
|
||||
|
||||
class Command_Modality_Temp(db.Model, Base):
|
||||
__tablename__ = 'DOG_Command_Modality_Temp'
|
||||
__table_args__ = { 'extend_existing': True }
|
||||
id_temp = db.Column(db.Integer, primary_key=True)
|
||||
id_command_modality = 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_command_modality(cls, command_modality):
|
||||
_m = 'Command_Modality_Temp.from_Command_Modality'
|
||||
temp = cls()
|
||||
temp.id_command_modality = command_modality.id_command_modality
|
||||
temp.code = command_modality.code
|
||||
temp.name = command_modality.name
|
||||
temp.active = command_modality.active
|
||||
return temp
|
||||
|
||||
|
||||
class Parameters_Command_Modality(Get_Many_Parameters_Base):
|
||||
get_all_command_modality: bool
|
||||
get_inactive_command_modality: bool
|
||||
ids_command_modality: str
|
||||
names_command_modality: 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_command_modality = True
|
||||
, get_inactive_command_modality = False
|
||||
, ids_command_modality = ''
|
||||
, names_command_modality = ''
|
||||
, 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_command_modality = json.get('a_get_all_command_modality', False)
|
||||
, get_inactive_command_modality = json.get('a_get_inactive_command_modality', False)
|
||||
, ids_command_modality = json.get('a_ids_command_modality', '')
|
||||
, names_command_modality = json.get('a_names_command_modality', '')
|
||||
, 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_command_modality(cls, form):
|
||||
av.val_instance(form, 'form', 'Parameters_Command_Modality.from_form_filters_command_modality', Filters_Command_Modality)
|
||||
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_Command_Modality.from_form_filters_command_modality")
|
||||
filters = cls.get_default()
|
||||
filters.get_all_command_modality = True
|
||||
filters.get_inactive_command_modality = not active_only
|
||||
filters.ids_command_modality = ''
|
||||
filters.names_command_modality = form.search.data if has_filter_search_text else ''
|
||||
filters.notes_command_modality = form.search.data if has_filter_search_text else ''
|
||||
return filters
|
||||
"""
|
||||
|
||||
def to_json(self):
|
||||
return {
|
||||
'a_get_all_command_modality': self.get_all_command_modality
|
||||
, 'a_get_inactive_command_modality': self.get_inactive_command_modality
|
||||
, 'a_ids_command_modality': self.ids_command_modality
|
||||
, 'a_names_command_modality': self.names_command_modality
|
||||
, '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
|
||||
}
|
||||
655
business_objects/dog/distraction.py
Normal file
655
business_objects/dog/distraction.py
Normal file
@@ -0,0 +1,655 @@
|
||||
"""
|
||||
Project: PARTS Website
|
||||
Author: Edward Middleton-Smith
|
||||
Precision And Research Technology Systems Limited
|
||||
|
||||
Technology: Business Objects
|
||||
Feature: Distraction Business Object
|
||||
"""
|
||||
|
||||
# internal
|
||||
from business_objects.base import Base
|
||||
from business_objects.db_base import SQLAlchemy_ABC, Get_Many_Parameters_Base
|
||||
from business_objects.dog.assessment import Assessment
|
||||
from business_objects.dog.command import Command
|
||||
# from business_objects.dog.command_category import Command_Category
|
||||
from business_objects.dog.distraction_intensity_level import Distraction_Intensity_Level
|
||||
from business_objects.dog.distraction_type import Distraction_Type
|
||||
from business_objects.dog.dog import Dog
|
||||
from extensions import db
|
||||
from forms.dog.assessment import Filters_Assessment
|
||||
# from forms.dog.distraction import Filters_Distraction
|
||||
from helpers.helper_app import Helper_App
|
||||
import lib.argument_validation as av
|
||||
# external
|
||||
from dataclasses import dataclass
|
||||
from typing import ClassVar, Optional
|
||||
|
||||
|
||||
class Distraction(SQLAlchemy_ABC, Base):
|
||||
ATTR_ID_DISTRACTION: ClassVar[str] = 'id_distraction'
|
||||
FLAG_DISTRACTION: ClassVar[str] = Assessment.FLAG_DISTRACTION
|
||||
FLAG_DISTRACTION_INTENSITY_LEVEL_EMOTIONAL: ClassVar[str] = f'{Distraction_Intensity_Level.FLAG_DISTRACTION_INTENSITY_LEVEL}-emotional'
|
||||
FLAG_DISTRACTION_INTENSITY_LEVEL_SCENT: ClassVar[str] = f'{Distraction_Intensity_Level.FLAG_DISTRACTION_INTENSITY_LEVEL}-scent'
|
||||
FLAG_DISTRACTION_INTENSITY_LEVEL_SIGHT: ClassVar[str] = f'{Distraction_Intensity_Level.FLAG_DISTRACTION_INTENSITY_LEVEL}-sight'
|
||||
FLAG_DISTRACTION_INTENSITY_LEVEL_SOUND: ClassVar[str] = f'{Distraction_Intensity_Level.FLAG_DISTRACTION_INTENSITY_LEVEL}-sound'
|
||||
FLAG_DISTRACTION_INTENSITY_LEVEL_TOUCH: ClassVar[str] = f'{Distraction_Intensity_Level.FLAG_DISTRACTION_INTENSITY_LEVEL}-touch'
|
||||
FLAG_PROXIMITY_METRES: ClassVar[str] = 'proximity-metres'
|
||||
NAME_ATTR_OPTION_VALUE: ClassVar[str] = ATTR_ID_DISTRACTION
|
||||
NAME_ATTR_OPTION_TEXT: ClassVar[str] = ATTR_ID_DISTRACTION
|
||||
|
||||
__tablename__ = 'DOG_Distraction'
|
||||
__table_args__ = { 'extend_existing': True }
|
||||
|
||||
id_distraction = db.Column(db.Integer, primary_key=True)
|
||||
id_assessment = db.Column(db.Integer)
|
||||
id_distraction_type = db.Column(db.Integer)
|
||||
id_intensity_level_emotional = db.Column(db.Integer)
|
||||
id_intensity_level_scent = db.Column(db.Integer)
|
||||
id_intensity_level_sight = db.Column(db.Integer)
|
||||
id_intensity_level_sound = db.Column(db.Integer)
|
||||
id_intensity_level_touch = db.Column(db.Integer)
|
||||
quantity = db.Column(db.Integer)
|
||||
proximity_metres = db.Column(db.Float)
|
||||
notes = db.Column(db.Text)
|
||||
active = db.Column(db.Boolean)
|
||||
created_on = db.Column(db.DateTime)
|
||||
|
||||
def __init__(self):
|
||||
self.id_distraction = 0
|
||||
self.is_new = False
|
||||
self.assessment = None
|
||||
self.distraction_type = None
|
||||
self.intensity_level_emotional = None
|
||||
self.intensity_level_scent = None
|
||||
self.intensity_level_sight = None
|
||||
self.intensity_level_sound = None
|
||||
self.intensity_level_touch = None
|
||||
super().__init__()
|
||||
|
||||
@classmethod
|
||||
def from_db_distraction(cls, query_row):
|
||||
_m = 'Distraction.from_db_distraction'
|
||||
distraction = cls()
|
||||
distraction.id_distraction = query_row[0]
|
||||
distraction.id_assessment = query_row[1]
|
||||
distraction.id_distraction_type = query_row[2]
|
||||
#distraction.id_command_category = query_row[3]
|
||||
distraction.id_intensity_level_emotional = query_row[4]
|
||||
distraction.id_intensity_level_scent = query_row[6]
|
||||
distraction.id_intensity_level_sight = query_row[8]
|
||||
distraction.id_intensity_level_sound = query_row[10]
|
||||
distraction.id_intensity_level_touch = query_row[12]
|
||||
distraction.quantity = query_row[14]
|
||||
distraction.proximity_metres = query_row[15]
|
||||
distraction.notes = query_row[16]
|
||||
distraction.active = av.input_bool(query_row[17], 'active', _m)
|
||||
# distraction.created_on = query_row[7]
|
||||
distraction.assessment = Assessment.from_db_distraction(query_row)
|
||||
distraction.distraction_type = Distraction_Type.from_db_distraction(query_row)
|
||||
distraction.intensity_level_emotional = Distraction_Intensity_Level.from_db_distraction_emotional(query_row)
|
||||
distraction.intensity_level_scent = Distraction_Intensity_Level.from_db_distraction_scent(query_row)
|
||||
distraction.intensity_level_sight = Distraction_Intensity_Level.from_db_distraction_sight(query_row)
|
||||
distraction.intensity_level_sound = Distraction_Intensity_Level.from_db_distraction_sound(query_row)
|
||||
distraction.intensity_level_touch = Distraction_Intensity_Level.from_db_distraction_touch(query_row)
|
||||
return distraction
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json):
|
||||
_m = 'Distraction.from_json'
|
||||
distraction = cls()
|
||||
if json is None: return distraction
|
||||
# Helper_App.console_log(f'{_m}\njson: {json}')
|
||||
distraction.id_distraction = json.get(cls.ATTR_ID_DISTRACTION, -1)
|
||||
distraction.id_assessment = json[Assessment.ATTR_ID_ASSESSMENT]
|
||||
distraction.id_distraction_type = json[Distraction_Type.ATTR_ID_DISTRACTION_TYPE]
|
||||
distraction.id_intensity_level_emotional = json[cls.FLAG_DISTRACTION_INTENSITY_LEVEL_EMOTIONAL]
|
||||
distraction.id_intensity_level_scent = json[cls.FLAG_DISTRACTION_INTENSITY_LEVEL_SCENT]
|
||||
distraction.id_intensity_level_sight = json[cls.FLAG_DISTRACTION_INTENSITY_LEVEL_SIGHT]
|
||||
distraction.id_intensity_level_sound = json[cls.FLAG_DISTRACTION_INTENSITY_LEVEL_SOUND]
|
||||
distraction.id_intensity_level_touch = json[cls.FLAG_DISTRACTION_INTENSITY_LEVEL_TOUCH]
|
||||
distraction.quantity = json[cls.FLAG_QUANTITY]
|
||||
distraction.proximity_metres = json[cls.FLAG_PROXIMITY_METRES]
|
||||
distraction.notes = json[cls.FLAG_NOTES]
|
||||
distraction.active = json[cls.FLAG_ACTIVE]
|
||||
distraction.created_on = json.get(cls.FLAG_CREATED_ON, None)
|
||||
# distraction.id_command_category = json[Command_Category.FLAG_COMMAND_CATEGORY]
|
||||
# Helper_App.console_log(f'Dog Command Link: {distraction}')
|
||||
return distraction
|
||||
|
||||
def to_json(self):
|
||||
as_json = {
|
||||
**self.get_shared_json_attributes(self)
|
||||
, self.ATTR_ID_DISTRACTION: self.id_distraction
|
||||
, Assessment.ATTR_ID_ASSESSMENT: { Assessment.ATTR_ID_ASSESSMENT: None } if self.assessment is None else self.assessment.to_json()
|
||||
, Distraction_Type.ATTR_ID_DISTRACTION_TYPE: { Distraction_Type.ATTR_ID_DISTRACTION_TYPE: None } if self.distraction_type is None else self.distraction_type.to_json()
|
||||
, self.FLAG_DISTRACTION_INTENSITY_LEVEL_EMOTIONAL: { self.FLAG_DISTRACTION_INTENSITY_LEVEL_EMOTIONAL: None } if self.intensity_level_emotional is None else self.intensity_level_emotional.to_json()
|
||||
, self.FLAG_DISTRACTION_INTENSITY_LEVEL_SCENT: { self.FLAG_DISTRACTION_INTENSITY_LEVEL_SCENT: None } if self.intensity_level_scent is None else self.intensity_level_scent.to_json()
|
||||
, self.FLAG_DISTRACTION_INTENSITY_LEVEL_SIGHT: { self.FLAG_DISTRACTION_INTENSITY_LEVEL_SIGHT: None } if self.intensity_level_sight is None else self.intensity_level_sight.to_json()
|
||||
, self.FLAG_DISTRACTION_INTENSITY_LEVEL_SOUND: { self.FLAG_DISTRACTION_INTENSITY_LEVEL_SOUND: None } if self.intensity_level_sound is None else self.intensity_level_sound.to_json()
|
||||
, self.FLAG_DISTRACTION_INTENSITY_LEVEL_TOUCH: { self.FLAG_DISTRACTION_INTENSITY_LEVEL_TOUCH: None } if self.intensity_level_touch is None else self.intensity_level_touch.to_json()
|
||||
, self.FLAG_QUANTITY: self.quantity
|
||||
, self.FLAG_PROXIMITY_METRES: self.proximity_metres
|
||||
, self.FLAG_NOTES: self.notes
|
||||
, self.FLAG_ACTIVE: self.active
|
||||
, self.FLAG_CREATED_ON: self.created_on
|
||||
}
|
||||
# , Command_Category.FLAG_COMMAND_CATEGORY: self.id_command_category
|
||||
# Helper_App.console_log(f'as_json: {as_json}')
|
||||
return as_json
|
||||
|
||||
def __repr__(self):
|
||||
return f'''
|
||||
{self.__class__.__name__}(
|
||||
{self.FLAG_DISTRACTION}: {self.id_distraction}
|
||||
{Assessment.ATTR_ID_ASSESSMENT}: {self.id_assessment}
|
||||
{Distraction_Type.ATTR_ID_DISTRACTION_TYPE}: {self.id_distraction_type}
|
||||
{self.FLAG_DISTRACTION_INTENSITY_LEVEL_EMOTIONAL}: {self.intensity_level_emotional}
|
||||
{self.FLAG_DISTRACTION_INTENSITY_LEVEL_SCENT}: {self.intensity_level_scent}
|
||||
{self.FLAG_DISTRACTION_INTENSITY_LEVEL_SIGHT}: {self.intensity_level_sight}
|
||||
{self.FLAG_DISTRACTION_INTENSITY_LEVEL_SOUND}: {self.intensity_level_sound}
|
||||
{self.FLAG_DISTRACTION_INTENSITY_LEVEL_TOUCH}: {self.intensity_level_touch}
|
||||
{self.FLAG_QUANTITY}: {self.quantity}
|
||||
{self.FLAG_PROXIMITY_METRES}: {self.proximity_metres}
|
||||
{self.FLAG_NOTES}: {self.notes}
|
||||
{self.FLAG_ACTIVE}: {self.active}
|
||||
{self.FLAG_CREATED_ON}: {self.created_on}
|
||||
)
|
||||
'''
|
||||
# {Command_Category.FLAG_COMMAND_CATEGORY}: {self.id_command_category}
|
||||
|
||||
class Distraction_Temp(db.Model, Base):
|
||||
__tablename__ = 'DOG_Distraction_Temp'
|
||||
__table_args__ = { 'extend_existing': True }
|
||||
id_temp = db.Column(db.Integer, primary_key=True)
|
||||
id_distraction = db.Column(db.Integer)
|
||||
id_assessment = db.Column(db.Integer)
|
||||
id_distraction_type = db.Column(db.Integer)
|
||||
id_intensity_level_emotional = db.Column(db.Integer)
|
||||
id_intensity_level_scent = db.Column(db.Integer)
|
||||
id_intensity_level_sight = db.Column(db.Integer)
|
||||
id_intensity_level_sound = db.Column(db.Integer)
|
||||
id_intensity_level_touch = db.Column(db.Integer)
|
||||
quantity = db.Column(db.Integer)
|
||||
proximity_metres = db.Column(db.Float)
|
||||
notes = db.Column(db.Text)
|
||||
active = db.Column(db.Boolean)
|
||||
# created_on = db.Column(db.DateTime)
|
||||
guid: str = db.Column(db.String(36))
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
|
||||
@classmethod
|
||||
def from_distraction(cls, distraction):
|
||||
_m = 'Distraction_Temp.from_distraction'
|
||||
temp = cls()
|
||||
temp.id_distraction = distraction.id_distraction
|
||||
temp.id_assessment = distraction.id_assessment
|
||||
temp.id_distraction_type = distraction.id_distraction_type
|
||||
temp.id_intensity_level_emotional = distraction.id_intensity_level_emotional
|
||||
temp.id_intensity_level_scent = distraction.id_intensity_level_scent
|
||||
temp.id_intensity_level_sight = distraction.id_intensity_level_sight
|
||||
temp.id_intensity_level_sound = distraction.id_intensity_level_sound
|
||||
temp.id_intensity_level_touch = distraction.id_intensity_level_touch
|
||||
temp.quantity = distraction.quantity
|
||||
temp.proximity_metres = distraction.proximity_metres
|
||||
temp.notes = distraction.notes
|
||||
temp.active = distraction.active
|
||||
# temp.created_on = distraction.created_on
|
||||
return temp
|
||||
|
||||
|
||||
class Parameters_Distraction(Get_Many_Parameters_Base):
|
||||
get_all_distraction: bool
|
||||
get_inactive_distraction: bool
|
||||
ids_distraction: str
|
||||
notes_distraction: str
|
||||
min_quantity_distraction: Optional[int]
|
||||
max_quantity_distraction: Optional[int]
|
||||
min_proximity_metres_distraction: Optional[float]
|
||||
max_proximity_metres_distraction: Optional[float]
|
||||
|
||||
get_all_distraction_type: bool
|
||||
get_inactive_distraction_type: bool
|
||||
ids_distraction_type: str
|
||||
names_distraction_type: str
|
||||
|
||||
get_all_distraction_intensity_level_emotional: bool
|
||||
get_inactive_distraction_intensity_level_emotional: bool
|
||||
ids_distraction_intensity_level_emotional: str
|
||||
names_distraction_intensity_level_emotional: str
|
||||
|
||||
get_all_distraction_intensity_level_scent: bool
|
||||
get_inactive_distraction_intensity_level_scent: bool
|
||||
ids_distraction_intensity_level_scent: str
|
||||
names_distraction_intensity_level_scent: str
|
||||
|
||||
get_all_distraction_intensity_level_sight: bool
|
||||
get_inactive_distraction_intensity_level_sight: bool
|
||||
ids_distraction_intensity_level_sight: str
|
||||
names_distraction_intensity_level_sight: str
|
||||
|
||||
get_all_distraction_intensity_level_sound: bool
|
||||
get_inactive_distraction_intensity_level_sound: bool
|
||||
ids_distraction_intensity_level_sound: str
|
||||
names_distraction_intensity_level_sound: str
|
||||
|
||||
get_all_distraction_intensity_level_touch: bool
|
||||
get_inactive_distraction_intensity_level_touch: bool
|
||||
ids_distraction_intensity_level_touch: str
|
||||
names_distraction_intensity_level_touch: str
|
||||
|
||||
get_all_assessment: bool
|
||||
get_inactive_assessment: bool
|
||||
ids_assessment: str
|
||||
notes_assessment: str
|
||||
min_temperature_assessment: Optional[float]
|
||||
max_temperature_assessment: Optional[float]
|
||||
get_all_weather: bool
|
||||
get_inactive_weather: bool
|
||||
ids_weather: str
|
||||
names_weather: str
|
||||
get_all_lighting_level: bool
|
||||
get_inactive_lighting_level: bool
|
||||
ids_lighting_level: str
|
||||
names_lighting_level: str
|
||||
get_all_location: bool
|
||||
get_inactive_location: bool
|
||||
ids_location: str
|
||||
names_location: str
|
||||
get_all_user_handler: bool
|
||||
get_inactive_user_handler: bool
|
||||
ids_user_handler: str
|
||||
#auth0_ids_user_handler: str
|
||||
names_user_handler: str
|
||||
emails_user_handler: 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 = True
|
||||
, get_inactive_distraction = False
|
||||
, ids_distraction = ''
|
||||
, notes_distraction = ''
|
||||
, min_quantity_distraction = None
|
||||
, max_quantity_distraction = None
|
||||
, min_proximity_metres_distraction = None
|
||||
, max_proximity_metres_distraction = None
|
||||
|
||||
, get_all_distraction_type = True
|
||||
, get_inactive_distraction_type = False
|
||||
, ids_distraction_type = ''
|
||||
, names_distraction_type = ''
|
||||
|
||||
, get_all_distraction_intensity_level_emotional = True
|
||||
, get_inactive_distraction_intensity_level_emotional = False
|
||||
, ids_distraction_intensity_level_emotional = ''
|
||||
, names_distraction_intensity_level_emotional = ''
|
||||
|
||||
, get_all_distraction_intensity_level_scent = True
|
||||
, get_inactive_distraction_intensity_level_scent = False
|
||||
, ids_distraction_intensity_level_scent = ''
|
||||
, names_distraction_intensity_level_scent = ''
|
||||
|
||||
, get_all_distraction_intensity_level_sight = True
|
||||
, get_inactive_distraction_intensity_level_sight = False
|
||||
, ids_distraction_intensity_level_sight = ''
|
||||
, names_distraction_intensity_level_sight = ''
|
||||
|
||||
, get_all_distraction_intensity_level_sound = True
|
||||
, get_inactive_distraction_intensity_level_sound = False
|
||||
, ids_distraction_intensity_level_sound = ''
|
||||
, names_distraction_intensity_level_sound = ''
|
||||
|
||||
, get_all_distraction_intensity_level_touch = True
|
||||
, get_inactive_distraction_intensity_level_touch = False
|
||||
, ids_distraction_intensity_level_touch = ''
|
||||
, names_distraction_intensity_level_touch = ''
|
||||
|
||||
, get_all_assessment = True
|
||||
, get_inactive_assessment = False
|
||||
, ids_assessment = ''
|
||||
, notes_assessment = ''
|
||||
, min_temperature_assessment = None
|
||||
, max_temperature_assessment = None
|
||||
, get_all_weather = True
|
||||
, get_inactive_weather = False
|
||||
, ids_weather = ''
|
||||
, names_weather = ''
|
||||
, get_all_lighting_level = True
|
||||
, get_inactive_lighting_level = False
|
||||
, ids_lighting_level = ''
|
||||
, names_lighting_level = ''
|
||||
, get_all_location = True
|
||||
, get_inactive_location = False
|
||||
, ids_location = ''
|
||||
, names_location = ''
|
||||
, get_all_user_handler = True
|
||||
, get_inactive_user_handler = False
|
||||
, ids_user_handler = ''
|
||||
# , auth0_ids_user_handler = ''
|
||||
, names_user_handler = ''
|
||||
, emails_user_handler = ''
|
||||
|
||||
, 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 = json.get('a_get_all_distraction', False)
|
||||
, get_inactive_distraction = json.get('a_get_inactive_distraction', False)
|
||||
, ids_distraction = json.get('a_ids_distraction', '')
|
||||
, notes_distraction = json.get('a_notes_distraction', '')
|
||||
, min_quantity_distraction = json.get('a_min_quantity_distraction', None)
|
||||
, max_quantity_distraction = json.get('a_max_quantity_distraction', None)
|
||||
, min_proximity_metres_distraction = json.get('a_min_proximity_metres_distraction', None)
|
||||
, max_proximity_metres_distraction = json.get('a_max_proximity_metres_distraction', None)
|
||||
|
||||
, get_all_distraction_type = json.get('a_get_all_distraction_type', False)
|
||||
, get_inactive_distraction_type = json.get('a_get_inactive_distraction_type', False)
|
||||
, ids_distraction_type = json.get('a_ids_distraction_type', '')
|
||||
, names_distraction_type = json.get('a_names_distraction_type', '')
|
||||
|
||||
, get_all_distraction_intensity_level_emotional = json.get('a_get_all_distraction_intensity_level_emotional', False)
|
||||
, get_inactive_distraction_intensity_level_emotional = json.get('a_get_inactive_distraction_intensity_level_emotional', False)
|
||||
, ids_distraction_intensity_level_emotional = json.get('a_ids_distraction_intensity_level_emotional', '')
|
||||
, names_distraction_intensity_level_emotional = json.get('a_names_distraction_intensity_level_emotional', '')
|
||||
|
||||
, get_all_distraction_intensity_level_scent = json.get('a_get_all_distraction_intensity_level_scent', False)
|
||||
, get_inactive_distraction_intensity_level_scent = json.get('a_get_inactive_distraction_intensity_level_scent', False)
|
||||
, ids_distraction_intensity_level_scent = json.get('a_ids_distraction_intensity_level_scent', '')
|
||||
, names_distraction_intensity_level_scent = json.get('a_names_distraction_intensity_level_scent', '')
|
||||
|
||||
, get_all_distraction_intensity_level_sight = json.get('a_get_all_distraction_intensity_level_sight', False)
|
||||
, get_inactive_distraction_intensity_level_sight = json.get('a_get_inactive_distraction_intensity_level_sight', False)
|
||||
, ids_distraction_intensity_level_sight = json.get('a_ids_distraction_intensity_level_sight', '')
|
||||
, names_distraction_intensity_level_sight = json.get('a_names_distraction_intensity_level_sight', '')
|
||||
|
||||
, get_all_distraction_intensity_level_sound = json.get('a_get_all_distraction_intensity_level_sound', False)
|
||||
, get_inactive_distraction_intensity_level_sound = json.get('a_get_inactive_distraction_intensity_level_sound', False)
|
||||
, ids_distraction_intensity_level_sound = json.get('a_ids_distraction_intensity_level_sound', '')
|
||||
, names_distraction_intensity_level_sound = json.get('a_names_distraction_intensity_level_sound', '')
|
||||
|
||||
, get_all_distraction_intensity_level_touch = json.get('a_get_all_distraction_intensity_level_touch', False)
|
||||
, get_inactive_distraction_intensity_level_touch = json.get('a_get_inactive_distraction_intensity_level_touch', False)
|
||||
, ids_distraction_intensity_level_touch = json.get('a_ids_distraction_intensity_level_touch', '')
|
||||
, names_distraction_intensity_level_touch = json.get('a_names_distraction_intensity_level_touch', '')
|
||||
|
||||
, get_all_assessment = json.get('a_get_all_assessment', False)
|
||||
, get_inactive_assessment = json.get('a_get_inactive_assessment', False)
|
||||
, ids_assessment = json.get('a_ids_assessment', '')
|
||||
, notes_assessment = json.get('a_notes_assessment', '')
|
||||
, min_temperature_assessment = json.get('a_min_temperature_assessment', None)
|
||||
, max_temperature_assessment = json.get('a_max_temperature_assessment', None)
|
||||
, get_all_weather = json.get('a_get_all_weather', False)
|
||||
, get_inactive_weather = json.get('a_get_inactive_weather', False)
|
||||
, ids_weather = json.get('a_ids_weather', '')
|
||||
, names_weather = json.get('a_names_weather', '')
|
||||
, get_all_lighting_level = json.get('a_get_all_lighting_level', False)
|
||||
, get_inactive_lighting_level = json.get('a_get_inactive_lighting_level', False)
|
||||
, ids_lighting_level = json.get('a_ids_lighting_level', '')
|
||||
, names_lighting_level = json.get('a_names_lighting_level', '')
|
||||
, get_all_location = json.get('a_get_all_location', False)
|
||||
, get_inactive_location = json.get('a_get_inactive_location', False)
|
||||
, ids_location = json.get('a_ids_location', '')
|
||||
, names_location = json.get('a_names_location', '')
|
||||
, get_all_user_handler = json.get('a_get_all_user_handler', False)
|
||||
, get_inactive_user_handler = json.get('a_get_inactive_user_handler', False)
|
||||
, ids_user_handler = json.get('a_ids_user_handler', '')
|
||||
# , auth0_ids_user_handler = json.get('a_ids_user_handler', '')
|
||||
, names_user_handler = json.get('a_names_user_handler', '')
|
||||
, emails_user_handler = json.get('a_emails_user_handler', '')
|
||||
|
||||
, 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(cls, form):
|
||||
_m = f'{cls.__qualname__}.from_form_filters_distraction'
|
||||
Helper_App.console_log(_m)
|
||||
Helper_App.console_log(f'Filters: {form}')
|
||||
av.val_instance(form, 'form', _m, Filters_Distraction)
|
||||
has_filter_search_text = not (form.search.data == '' or form.search.data is None)
|
||||
has_filter_distraction_type = not (form.id_distraction_type.data == '0' or form.id_distraction_type.data == '' or form.id_distraction_type.data is None)
|
||||
has_filter_intensity_level_emotional = not (form.id_intensity_level_emotional.data == '0' or form.id_intensity_level_emotional.data == '' or form.id_intensity_level_emotional.data is None)
|
||||
has_filter_intensity_level_scent = not (form.id_intensity_level_scent.data == '0' or form.id_intensity_level_scent.data == '' or form.id_intensity_level_scent.data is None)
|
||||
has_filter_intensity_level_sight = not (form.id_intensity_level_sight.data == '0' or form.id_intensity_level_sight.data == '' or form.id_intensity_level_sight.data is None)
|
||||
has_filter_intensity_level_sound = not (form.id_intensity_level_sound.data == '0' or form.id_intensity_level_sound.data == '' or form.id_intensity_level_sound.data is None)
|
||||
has_filter_intensity_level_touch = not (form.id_intensity_level_touch.data == '0' or form.id_intensity_level_touch.data == '' or form.id_intensity_level_touch.data is None)
|
||||
|
||||
has_filter_assessment = not (form.id_assessment.data == '0' or form.id_assessment.data == '' or form.id_assessment.data is None)
|
||||
has_filter_weather = not (form.id_weather.data == '0' or form.id_weather.data == '' or form.id_weather.data is None)
|
||||
has_filter_lighting_level = not (form.id_lighting_level.data == '0' or form.id_lighting_level.data == '' or form.id_lighting_level.data is None)
|
||||
has_filter_location = not (form.id_location.data == '0' or form.id_location.data == '' or form.id_location.data is None)
|
||||
has_filter_user_handler = not (form.id_user_handler.data == '0' or form.id_user_handler.data == '' or form.id_user_handler.data is None)
|
||||
active_only = av.input_bool(form.active_only.data, "active", _m)
|
||||
Helper_App.console_log(f'''
|
||||
has_filter_search_text: {has_filter_search_text}
|
||||
has_filter_distraction_type: {has_filter_distraction_type}
|
||||
has_filter_intensity_level_emotional: {has_filter_intensity_level_emotional}
|
||||
has_filter_intensity_level_scent: {has_filter_intensity_level_scent}
|
||||
has_filter_intensity_level_sight: {has_filter_intensity_level_sight}
|
||||
has_filter_intensity_level_sound: {has_filter_intensity_level_sound}
|
||||
has_filter_intensity_level_touch: {has_filter_intensity_level_touch}
|
||||
has_filter_assessment: {has_filter_assessment}
|
||||
has_filter_weather: {has_filter_weather}
|
||||
has_filter_lighting_level: {has_filter_lighting_level}
|
||||
has_filter_location: {has_filter_location}
|
||||
has_filter_user_handler: {has_filter_user_handler}
|
||||
active_only: {active_only}
|
||||
''')
|
||||
filters = cls.get_default()
|
||||
filters.get_all_distraction = True
|
||||
filters.get_inactive_distraction = not active_only
|
||||
filters.ids_distraction = ''
|
||||
filters.notes_distraction = form.search.data if has_filter_search_text else ''
|
||||
|
||||
filters.get_all_distraction_type = True
|
||||
filters.get_inactive_distraction_type = not active_only
|
||||
filters.ids_distraction_type = form.id_distraction_type.data if has_filter_distraction_type else ''
|
||||
filters.names_distraction_type = form.search.data if has_filter_search_text else ''
|
||||
|
||||
filters.get_all_distraction_intensity_level_emotional = True
|
||||
filters.get_inactive_distraction_intensity_level_emotional = not active_only
|
||||
filters.ids_distraction_intensity_level_emotional = form.id_intensity_level_emotional.data if has_filter_intensity_level_emotional else ''
|
||||
filters.names_distraction_intensity_level_emotional = form.search.data if has_filter_search_text else ''
|
||||
|
||||
filters.get_all_distraction_intensity_level_scent = True
|
||||
filters.get_inactive_distraction_intensity_level_scent = not active_only
|
||||
filters.ids_distraction_intensity_level_scent = form.id_intensity_level_scent.data if has_filter_intensity_level_scent else ''
|
||||
filters.names_distraction_intensity_level_scent = form.search.data if has_filter_search_text else ''
|
||||
|
||||
filters.get_all_distraction_intensity_level_sight = True
|
||||
filters.get_inactive_distraction_intensity_level_sight = not active_only
|
||||
filters.ids_distraction_intensity_level_sight = form.id_intensity_level_sight.data if has_filter_intensity_level_sight else ''
|
||||
filters.names_distraction_intensity_level_sight = form.search.data if has_filter_search_text else ''
|
||||
|
||||
filters.get_all_distraction_intensity_level_sound = True
|
||||
filters.get_inactive_distraction_intensity_level_sound = not active_only
|
||||
filters.ids_distraction_intensity_level_sound = form.id_intensity_level_sound.data if has_filter_intensity_level_sound else ''
|
||||
filters.names_distraction_intensity_level_sound = form.search.data if has_filter_search_text else ''
|
||||
|
||||
filters.get_all_distraction_intensity_level_touch = True
|
||||
filters.get_inactive_distraction_intensity_level_touch = not active_only
|
||||
filters.ids_distraction_intensity_level_touch = form.id_intensity_level_touch.data if has_filter_intensity_level_touch else ''
|
||||
filters.names_distraction_intensity_level_touch = form.search.data if has_filter_search_text else ''
|
||||
|
||||
filters.get_all_assessment = True
|
||||
filters.get_inactive_assessment = not active_only
|
||||
filters.ids_assessment = form.id_assessment.data if has_filter_assessment else ''
|
||||
filters.get_all_weather = not has_filter_weather
|
||||
filters.get_inactive_weather = not active_only
|
||||
filters.ids_weather = form.id_weather.data if has_filter_weather else ''
|
||||
filters.names_weather = form.search.data if has_filter_search_text else ''
|
||||
filters.get_all_lighting_level = not has_filter_lighting_level
|
||||
filters.get_inactive_lighting_level = not active_only
|
||||
filters.ids_lighting_level = form.id_lighting_level.data if has_filter_lighting_level else ''
|
||||
filters.names_lighting_level = form.search.data if has_filter_search_text else ''
|
||||
filters.get_all_location = not has_filter_location
|
||||
filters.get_inactive_location = not active_only
|
||||
filters.ids_location = form.id_location.data if has_filter_location else ''
|
||||
filters.names_location = form.search.data if has_filter_search_text else ''
|
||||
filters.get_all_user_handler = not has_filter_user_handler
|
||||
filters.get_inactive_user_handler = not active_only
|
||||
filters.ids_user_handler = form.id_user_handler.data if has_filter_user_handler else ''
|
||||
# filters.auth0_ids_user_handler = form.id_user_handler.data if has_filter_user_handler else ''
|
||||
filters.names_user_handler = form.search.data if has_filter_search_text else ''
|
||||
filters.emails_user_handler = form.search.data if has_filter_search_text else ''
|
||||
|
||||
return filters
|
||||
"""
|
||||
|
||||
@classmethod
|
||||
def from_form_filters_assessment(cls, form):
|
||||
_m = f'{cls.__qualname__}.from_form_filters_assessment'
|
||||
Helper_App.console_log(_m)
|
||||
Helper_App.console_log(f'Filters: {form}')
|
||||
av.val_instance(form, 'form', _m, Filters_Assessment)
|
||||
has_filter_search_text = not (form.search.data == '' or form.search.data is None)
|
||||
has_filter_distraction_type = False
|
||||
has_filter_intensity_level_emotional = False
|
||||
has_filter_intensity_level_scent = False
|
||||
has_filter_intensity_level_sight = False
|
||||
has_filter_intensity_level_sound = False
|
||||
has_filter_intensity_level_touch = False
|
||||
|
||||
has_filter_assessment = not (form.id_assessment.data == '0' or form.id_assessment.data == '' or form.id_assessment.data is None)
|
||||
active_only = av.input_bool(form.active_only.data, "active", _m)
|
||||
Helper_App.console_log(f'''
|
||||
has_filter_search_text: {has_filter_search_text}
|
||||
has_filter_distraction_type: {has_filter_distraction_type}
|
||||
has_filter_intensity_level_emotional: {has_filter_intensity_level_emotional}
|
||||
has_filter_intensity_level_scent: {has_filter_intensity_level_scent}
|
||||
has_filter_intensity_level_sight: {has_filter_intensity_level_sight}
|
||||
has_filter_intensity_level_sound: {has_filter_intensity_level_sound}
|
||||
has_filter_intensity_level_touch: {has_filter_intensity_level_touch}
|
||||
has_filter_assessment: {has_filter_assessment}
|
||||
active_only: {active_only}
|
||||
''')
|
||||
filters = cls.get_default()
|
||||
filters.get_all_distraction = True
|
||||
filters.get_inactive_distraction = not active_only
|
||||
filters.ids_distraction = ''
|
||||
filters.notes_distraction = form.search.data if has_filter_search_text else ''
|
||||
|
||||
filters.get_all_distraction_type = True
|
||||
filters.get_inactive_distraction_type = not active_only
|
||||
filters.ids_distraction_type = ''
|
||||
filters.names_distraction_type = form.search.data if has_filter_search_text else ''
|
||||
|
||||
filters.get_all_distraction_intensity_level_emotional = True
|
||||
filters.get_inactive_distraction_intensity_level_emotional = not active_only
|
||||
filters.ids_distraction_intensity_level_emotional = ''
|
||||
filters.names_distraction_intensity_level_emotional = form.search.data if has_filter_search_text else ''
|
||||
|
||||
filters.get_all_distraction_intensity_level_scent = True
|
||||
filters.get_inactive_distraction_intensity_level_scent = not active_only
|
||||
filters.ids_distraction_intensity_level_scent = ''
|
||||
filters.names_distraction_intensity_level_scent = form.search.data if has_filter_search_text else ''
|
||||
|
||||
filters.get_all_distraction_intensity_level_sight = True
|
||||
filters.get_inactive_distraction_intensity_level_sight = not active_only
|
||||
filters.ids_distraction_intensity_level_sight = ''
|
||||
filters.names_distraction_intensity_level_sight = form.search.data if has_filter_search_text else ''
|
||||
|
||||
filters.get_all_distraction_intensity_level_sound = True
|
||||
filters.get_inactive_distraction_intensity_level_sound = not active_only
|
||||
filters.ids_distraction_intensity_level_sound = ''
|
||||
filters.names_distraction_intensity_level_sound = form.search.data if has_filter_search_text else ''
|
||||
|
||||
filters.get_all_distraction_intensity_level_touch = True
|
||||
filters.get_inactive_distraction_intensity_level_touch = not active_only
|
||||
filters.ids_distraction_intensity_level_touch = ''
|
||||
filters.names_distraction_intensity_level_touch = form.search.data if has_filter_search_text else ''
|
||||
|
||||
filters.get_all_assessment = True
|
||||
filters.get_inactive_assessment = not active_only
|
||||
filters.ids_assessment = form.id_assessment.data if has_filter_assessment else ''
|
||||
|
||||
return filters
|
||||
|
||||
def to_json(self):
|
||||
return {
|
||||
'a_get_all_distraction': self.get_all_distraction
|
||||
, 'a_get_inactive_distraction': self.get_inactive_distraction
|
||||
, 'a_ids_distraction': self.ids_distraction
|
||||
, 'a_notes_distraction': self.notes_distraction
|
||||
, 'a_min_quantity_distraction': self.min_quantity_distraction
|
||||
, 'a_max_quantity_distraction': self.max_quantity_distraction
|
||||
, 'a_min_proximity_metres_distraction': self.min_proximity_metres_distraction
|
||||
, 'a_max_proximity_metres_distraction': self.max_proximity_metres_distraction
|
||||
|
||||
, 'a_get_all_distraction_type': self.get_all_distraction_type
|
||||
, 'a_get_inactive_distraction_type': self.get_inactive_distraction_type
|
||||
, 'a_ids_distraction_type': self.ids_distraction_type
|
||||
, 'a_names_distraction_type': self.names_distraction_type
|
||||
|
||||
, 'a_get_all_distraction_intensity_level_emotional': self.get_all_distraction_intensity_level_emotional
|
||||
, 'a_get_inactive_distraction_intensity_level_emotional': self.get_inactive_distraction_intensity_level_emotional
|
||||
, 'a_ids_distraction_intensity_level_emotional': self.ids_distraction_intensity_level_emotional
|
||||
, 'a_names_distraction_intensity_level_emotional': self.names_distraction_intensity_level_emotional
|
||||
|
||||
, 'a_get_all_distraction_intensity_level_scent': self.get_all_distraction_intensity_level_scent
|
||||
, 'a_get_inactive_distraction_intensity_level_scent': self.get_inactive_distraction_intensity_level_scent
|
||||
, 'a_ids_distraction_intensity_level_scent': self.ids_distraction_intensity_level_scent
|
||||
, 'a_names_distraction_intensity_level_scent': self.names_distraction_intensity_level_scent
|
||||
|
||||
, 'a_get_all_distraction_intensity_level_sight': self.get_all_distraction_intensity_level_sight
|
||||
, 'a_get_inactive_distraction_intensity_level_sight': self.get_inactive_distraction_intensity_level_sight
|
||||
, 'a_ids_distraction_intensity_level_sight': self.ids_distraction_intensity_level_sight
|
||||
, 'a_names_distraction_intensity_level_sight': self.names_distraction_intensity_level_sight
|
||||
|
||||
, 'a_get_all_distraction_intensity_level_sound': self.get_all_distraction_intensity_level_sound
|
||||
, 'a_get_inactive_distraction_intensity_level_sound': self.get_inactive_distraction_intensity_level_sound
|
||||
, 'a_ids_distraction_intensity_level_sound': self.ids_distraction_intensity_level_sound
|
||||
, 'a_names_distraction_intensity_level_sound': self.names_distraction_intensity_level_sound
|
||||
|
||||
, 'a_get_all_distraction_intensity_level_touch': self.get_all_distraction_intensity_level_touch
|
||||
, 'a_get_inactive_distraction_intensity_level_touch': self.get_inactive_distraction_intensity_level_touch
|
||||
, 'a_ids_distraction_intensity_level_touch': self.ids_distraction_intensity_level_touch
|
||||
, 'a_names_distraction_intensity_level_touch': self.names_distraction_intensity_level_touch
|
||||
|
||||
, 'a_get_all_assessment': self.get_all_assessment
|
||||
, 'a_get_inactive_assessment': self.get_inactive_assessment
|
||||
, 'a_ids_assessment': self.ids_assessment
|
||||
, 'a_notes_assessment': self.notes_assessment
|
||||
, 'a_min_temperature_assessment': self.min_temperature_assessment
|
||||
, 'a_max_temperature_assessment': self.max_temperature_assessment
|
||||
, 'get_all_weather': self.get_all_weather
|
||||
, 'get_inactive_weather': self.get_inactive_weather
|
||||
, 'ids_weather': self.ids_weather
|
||||
, 'names_weather': self.names_weather
|
||||
, 'get_all_lighting_level': self.get_all_lighting_level
|
||||
, 'get_inactive_lighting_level': self.get_inactive_lighting_level
|
||||
, 'ids_lighting_level': self.ids_lighting_level
|
||||
, 'names_lighting_level': self.names_lighting_level
|
||||
, 'get_all_location': self.get_all_location
|
||||
, 'get_inactive_location': self.get_inactive_location
|
||||
, 'ids_location': self.ids_location
|
||||
, 'names_location': self.names_location
|
||||
, 'get_all_user_handler': self.get_all_user_handler
|
||||
, 'get_inactive_user_handler': self.get_inactive_user_handler
|
||||
, 'ids_user_handler': self.ids_user_handler
|
||||
#, 'auth0_ids_user_handler': self.ids_user_handler
|
||||
, 'names_user_handler': self.names_user_handler
|
||||
, 'emails_user_handler': self.emails_user_handler
|
||||
|
||||
, '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
|
||||
}
|
||||
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
|
||||
}
|
||||
181
business_objects/dog/distraction_type.py
Normal file
181
business_objects/dog/distraction_type.py
Normal file
@@ -0,0 +1,181 @@
|
||||
"""
|
||||
Project: PARTS Website
|
||||
Author: Edward Middleton-Smith
|
||||
Precision And Research Technology Systems Limited
|
||||
|
||||
Technology: Business Objects
|
||||
Feature: Distraction Type 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_Type(SQLAlchemy_ABC, Base):
|
||||
ATTR_ID_DISTRACTION_TYPE: ClassVar[str] = 'id_distraction_type'
|
||||
FLAG_DISTRACTION_TYPE: ClassVar[str] = 'distraction-type'
|
||||
NAME_ATTR_OPTION_VALUE: ClassVar[str] = ATTR_ID_DISTRACTION_TYPE
|
||||
NAME_ATTR_OPTION_TEXT: ClassVar[str] = Base.FLAG_NAME
|
||||
|
||||
__tablename__ = 'DOG_Distraction_Type'
|
||||
__table_args__ = { 'extend_existing': True }
|
||||
|
||||
id_distraction_type = 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_distraction_type = 0
|
||||
self.is_new = False
|
||||
super().__init__()
|
||||
|
||||
@classmethod
|
||||
def from_db_distraction_type(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_distraction_type'
|
||||
category = cls()
|
||||
category.id_distraction_type = 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(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_distraction'
|
||||
level = cls()
|
||||
level.id_distraction_type = query_row[2]
|
||||
level.name = query_row[3]
|
||||
level.active = True
|
||||
return level
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json):
|
||||
_m = 'Distraction_Type.from_json'
|
||||
distraction_type = cls()
|
||||
if json is None: return Distraction_Type
|
||||
# Helper_App.console_log(f'{_m}\njson: {json}')
|
||||
distraction_type.id_distraction_type = json.get(cls.ATTR_ID_DISTRACTION_TYPE, -1)
|
||||
distraction_type.name = json[cls.FLAG_NAME]
|
||||
distraction_type.code = json.get(cls.FLAG_CODE, distraction_type.name.upper().replace(" ", "_"))
|
||||
distraction_type.active = json[cls.FLAG_ACTIVE]
|
||||
# Helper_App.console_log(f'Distraction_Type: {distraction_type}')
|
||||
return distraction_type
|
||||
|
||||
|
||||
def to_json(self):
|
||||
as_json = {
|
||||
**self.get_shared_json_attributes(self)
|
||||
, self.ATTR_ID_DISTRACTION_TYPE: self.id_distraction_type
|
||||
, 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_TYPE}: {self.id_distraction_type}
|
||||
{self.FLAG_CODE}: {self.code}
|
||||
{self.FLAG_NAME}: {self.name}
|
||||
{self.FLAG_ACTIVE}: {self.active}
|
||||
)
|
||||
'''
|
||||
|
||||
|
||||
class Distraction_Type_Temp(db.Model, Base):
|
||||
__tablename__ = 'DOG_Distraction_Type_Temp'
|
||||
__table_args__ = { 'extend_existing': True }
|
||||
id_temp = db.Column(db.Integer, primary_key=True)
|
||||
id_distraction_type = 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_type(cls, distraction_type):
|
||||
_m = 'Distraction_Type_Temp.from_Distraction_Type'
|
||||
temp = cls()
|
||||
temp.id_distraction_type = distraction_type.id_distraction_type
|
||||
temp.code = distraction_type.code
|
||||
temp.name = distraction_type.name
|
||||
temp.active = distraction_type.active
|
||||
return temp
|
||||
|
||||
|
||||
class Parameters_Distraction_Type(Get_Many_Parameters_Base):
|
||||
get_all_distraction_type: bool
|
||||
get_inactive_distraction_type: bool
|
||||
ids_distraction_type: str
|
||||
names_distraction_type: 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_type = True
|
||||
, get_inactive_distraction_type = False
|
||||
, ids_distraction_type = ''
|
||||
, names_distraction_type = ''
|
||||
, 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_type = json.get('a_get_all_distraction_type', False)
|
||||
, get_inactive_distraction_type = json.get('a_get_inactive_distraction_type', False)
|
||||
, ids_distraction_type = json.get('a_ids_distraction_type', '')
|
||||
, names_distraction_type = json.get('a_names_distraction_type', '')
|
||||
, 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_type(cls, form):
|
||||
av.val_instance(form, 'form', 'Parameters_Distraction_Type.from_form_filters_distraction_type', Filters_Distraction_Type)
|
||||
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_Type.from_form_filters_distraction_type")
|
||||
filters = cls.get_default()
|
||||
filters.get_all_distraction_type = True
|
||||
filters.get_inactive_distraction_type = not active_only
|
||||
filters.ids_distraction_type = ''
|
||||
filters.names_distraction_type = form.search.data if has_filter_search_text else ''
|
||||
filters.notes_distraction_type = form.search.data if has_filter_search_text else ''
|
||||
return filters
|
||||
"""
|
||||
|
||||
def to_json(self):
|
||||
return {
|
||||
'a_get_all_distraction_type': self.get_all_distraction_type
|
||||
, 'a_get_inactive_distraction_type': self.get_inactive_distraction_type
|
||||
, 'a_ids_distraction_type': self.ids_distraction_type
|
||||
, 'a_names_distraction_type': self.names_distraction_type
|
||||
, '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
|
||||
}
|
||||
180
business_objects/dog/lighting_level.py
Normal file
180
business_objects/dog/lighting_level.py
Normal file
@@ -0,0 +1,180 @@
|
||||
"""
|
||||
Project: PARTS Website
|
||||
Author: Edward Middleton-Smith
|
||||
Precision And Research Technology Systems Limited
|
||||
|
||||
Technology: Business Objects
|
||||
Feature: Button Shape Business Object
|
||||
"""
|
||||
|
||||
# internal
|
||||
from business_objects.base import Base
|
||||
from business_objects.db_base import SQLAlchemy_ABC, Get_Many_Parameters_Base
|
||||
from business_objects.dog.image import Image
|
||||
import lib.argument_validation as av
|
||||
from extensions import db
|
||||
# from forms.dog.lighting_level import Filters_Lighting_Level
|
||||
from helpers.helper_app import Helper_App
|
||||
# external
|
||||
from dataclasses import dataclass
|
||||
from typing import ClassVar
|
||||
|
||||
|
||||
class Lighting_Level(SQLAlchemy_ABC, Base):
|
||||
ATTR_ID_LIGHTING_LEVEL: ClassVar[str] = 'id_lighting_level'
|
||||
FLAG_LIGHTING_LEVEL: ClassVar[str] = 'lighting_level'
|
||||
NAME_ATTR_OPTION_VALUE: ClassVar[str] = ATTR_ID_LIGHTING_LEVEL
|
||||
NAME_ATTR_OPTION_TEXT: ClassVar[str] = Base.FLAG_NAME
|
||||
|
||||
__tablename__ = 'DOG_Lighting_Level'
|
||||
__table_args__ = { 'extend_existing': True }
|
||||
|
||||
id_lighting_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)
|
||||
created_on = db.Column(db.DateTime)
|
||||
|
||||
def __init__(self):
|
||||
self.id_lighting_level = 0
|
||||
self.is_new = False
|
||||
super().__init__()
|
||||
|
||||
@classmethod
|
||||
def from_db_lighting_level(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_lighting_level'
|
||||
lighting_level = cls()
|
||||
lighting_level.id_lighting_level = query_row[0]
|
||||
lighting_level.code = query_row[1]
|
||||
lighting_level.name = query_row[2]
|
||||
lighting_level.active = av.input_bool(query_row[3], 'active', _m)
|
||||
return lighting_level
|
||||
|
||||
@classmethod
|
||||
def from_db_assessment(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_assessment'
|
||||
lighting_level = cls()
|
||||
lighting_level.id_lighting_level = query_row[3]
|
||||
lighting_level.name = query_row[4]
|
||||
lighting_level.active = True
|
||||
return lighting_level
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json):
|
||||
_m = f'{cls.__qualname__}.from_json'
|
||||
lighting_level = cls()
|
||||
if json is None: return lighting_level
|
||||
# Helper_App.console_log(f'{_m}\njson: {json}')
|
||||
lighting_level.id_lighting_level = json.get(Lighting_Level.ATTR_ID_LIGHTING_LEVEL, -1)
|
||||
lighting_level.name = json[cls.FLAG_NAME]
|
||||
lighting_level.code = json.get(cls.FLAG_CODE, lighting_level.name.upper().replace(" ", "_"))
|
||||
lighting_level.active = json[cls.FLAG_ACTIVE]
|
||||
lighting_level.created_on = json.get(cls.FLAG_CREATED_ON, None)
|
||||
# Helper_App.console_log(f'Lighting_Level: {lighting_level}')
|
||||
return lighting_level
|
||||
|
||||
def to_json(self):
|
||||
as_json = {
|
||||
**self.get_shared_json_attributes(self)
|
||||
, self.ATTR_ID_LIGHTING_LEVEL: self.id_lighting_level
|
||||
, self.FLAG_CODE: self.code
|
||||
, self.FLAG_NAME: self.name
|
||||
, self.FLAG_ACTIVE: self.active
|
||||
, self.FLAG_CREATED_ON: self.created_on
|
||||
}
|
||||
# Helper_App.console_log(f'as_json: {as_json}')
|
||||
return as_json
|
||||
|
||||
def __repr__(self):
|
||||
return f'''
|
||||
{self.__class__.__name__}(
|
||||
{self.FLAG_LIGHTING_LEVEL}: {self.id_lighting_level}
|
||||
{self.FLAG_CODE}: {self.code}
|
||||
{self.FLAG_NAME}: {self.name}
|
||||
{self.FLAG_ACTIVE}: {self.active}
|
||||
{self.FLAG_CREATED_ON}: {self.created_on}
|
||||
)
|
||||
'''
|
||||
|
||||
class Lighting_Level_Temp(db.Model, Base):
|
||||
__tablename__ = 'DOG_Lighting_Level_Temp'
|
||||
__table_args__ = { 'extend_existing': True }
|
||||
id_temp = db.Column(db.Integer, primary_key=True)
|
||||
id_lighting_level = db.Column(db.Integer)
|
||||
code = db.Column(db.String(250))
|
||||
name = db.Column(db.String(250))
|
||||
active = db.Column(db.Boolean)
|
||||
# created_on = db.Column(db.DateTime)
|
||||
guid: str = db.Column(db.String(36))
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
|
||||
@classmethod
|
||||
def from_lighting_level(cls, lighting_level):
|
||||
_m = 'Lighting_Level_Temp.from_lighting_level'
|
||||
temp = cls()
|
||||
temp.id_lighting_level = lighting_level.id_lighting_level
|
||||
temp.code = lighting_level.code
|
||||
temp.name = lighting_level.name
|
||||
temp.active = lighting_level.active
|
||||
# temp.created_on = lighting_level.created_on
|
||||
return temp
|
||||
|
||||
def __repr__(self):
|
||||
return f'''
|
||||
{self.__class__.__name__}(
|
||||
{Lighting_Level.FLAG_LIGHTING_LEVEL}: {self.id_lighting_level}
|
||||
{self.FLAG_CODE}: {self.code}
|
||||
{self.FLAG_NAME}: {self.name}
|
||||
{self.FLAG_ACTIVE}: {self.active}
|
||||
)
|
||||
'''
|
||||
|
||||
class Parameters_Lighting_Level(Get_Many_Parameters_Base):
|
||||
get_all_lighting_level: bool
|
||||
get_inactive_lighting_level: bool
|
||||
ids_lighting_level: str
|
||||
names_lighting_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_lighting_level = True
|
||||
, get_inactive_lighting_level = False
|
||||
, ids_lighting_level = ''
|
||||
, names_lighting_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_lighting_level = json.get('a_get_all_lighting_level', False)
|
||||
, get_inactive_lighting_level = json.get('a_get_inactive_lighting_level', False)
|
||||
, ids_lighting_level = json.get('a_ids_lighting_level', '')
|
||||
, names_lighting_level = json.get('a_names_lighting_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)
|
||||
)
|
||||
|
||||
def to_json(self):
|
||||
return {
|
||||
'a_get_all_lighting_level': self.get_all_lighting_level
|
||||
, 'a_get_inactive_lighting_level': self.get_inactive_lighting_level
|
||||
, 'a_ids_lighting_level': self.ids_lighting_level
|
||||
, 'a_names_lighting_level': self.names_lighting_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
|
||||
}
|
||||
@@ -65,6 +65,15 @@ class Location(SQLAlchemy_ABC, Base):
|
||||
location.name = query_row[15]
|
||||
location.active = True
|
||||
return location
|
||||
|
||||
@classmethod
|
||||
def from_db_assessment(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_assessment'
|
||||
location = cls()
|
||||
location.id_location = query_row[5]
|
||||
location.name = query_row[6]
|
||||
location.active = True
|
||||
return location
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json):
|
||||
|
||||
@@ -9,7 +9,7 @@ Feature: Obedience Level Business Object
|
||||
|
||||
# internal
|
||||
from business_objects.base import Base
|
||||
from business_objects.db_base import SQLAlchemy_ABC
|
||||
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
|
||||
@@ -21,7 +21,7 @@ from typing import ClassVar
|
||||
class Obedience_Level(SQLAlchemy_ABC, Base):
|
||||
ATTR_ID_OBEDIENCE_LEVEL: ClassVar[str] = "id_obedience_level"
|
||||
FLAG_OBEDIENCE_LEVEL: ClassVar[str] = 'obedience-level'
|
||||
NAME_ATTR_OPTION_VALUE: ClassVar[str] = FLAG_OBEDIENCE_LEVEL
|
||||
NAME_ATTR_OPTION_VALUE: ClassVar[str] = ATTR_ID_OBEDIENCE_LEVEL
|
||||
NAME_ATTR_OPTION_TEXT: ClassVar[str] = Base.FLAG_NAME
|
||||
|
||||
__tablename__ = 'DOG_Obedience_Level'
|
||||
@@ -36,17 +36,26 @@ class Obedience_Level(SQLAlchemy_ABC, Base):
|
||||
self.id_obedience_level = 0
|
||||
self.is_new = False
|
||||
super().__init__()
|
||||
"""
|
||||
|
||||
@classmethod
|
||||
def from_db_dog_command_link(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_dog_command_link'
|
||||
def from_db_obedience_level(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_obedience_level'
|
||||
level = cls()
|
||||
level.id_obedience_level = query_row[5]
|
||||
level.code = query_row[6]
|
||||
level.name = query_row[7]
|
||||
level.id_obedience_level = query_row[0]
|
||||
level.code = query_row[1]
|
||||
level.name = query_row[2]
|
||||
level.active = av.input_bool(query_row[3], "active", _m)
|
||||
return level
|
||||
|
||||
@classmethod
|
||||
def from_db_assessment_response(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_assessment_response'
|
||||
level = cls()
|
||||
level.id_obedience_level = query_row[4]
|
||||
level.name = query_row[5]
|
||||
level.active = True
|
||||
return level
|
||||
"""
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json):
|
||||
_m = f'{cls.__qualname__}.from_json'
|
||||
@@ -104,4 +113,68 @@ class Obedience_Level_Temp(db.Model, Base):
|
||||
temp.code = obedience_level.code
|
||||
temp.name = obedience_level.name
|
||||
temp.active = obedience_level.active
|
||||
return temp
|
||||
return temp
|
||||
|
||||
|
||||
class Parameters_Obedience_Level(Get_Many_Parameters_Base):
|
||||
get_all_obedience_level: bool
|
||||
get_inactive_obedience_level: bool
|
||||
ids_obedience_level: str
|
||||
names_obedience_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_obedience_level = True
|
||||
, get_inactive_obedience_level = False
|
||||
, ids_obedience_level = ''
|
||||
, names_obedience_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_obedience_level = json.get('a_get_all_obedience_level', False)
|
||||
, get_inactive_obedience_level = json.get('a_get_inactive_obedience_level', False)
|
||||
, ids_obedience_level = json.get('a_ids_obedience_level', '')
|
||||
, names_obedience_level = json.get('a_names_obedience_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_obedience_level(cls, form):
|
||||
av.val_instance(form, 'form', 'Parameters_Obedience_Level.from_form_filters_obedience_level', Filters_Obedience_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_Obedience_Level.from_form_filters_obedience_level")
|
||||
filters = cls.get_default()
|
||||
filters.get_all_obedience_level = True
|
||||
filters.get_inactive_obedience_level = not active_only
|
||||
filters.ids_obedience_level = ''
|
||||
filters.names_obedience_level = form.search.data if has_filter_search_text else ''
|
||||
filters.notes_obedience_level = form.search.data if has_filter_search_text else ''
|
||||
return filters
|
||||
"""
|
||||
|
||||
def to_json(self):
|
||||
return {
|
||||
'a_get_all_obedience_level': self.get_all_obedience_level
|
||||
, 'a_get_inactive_obedience_level': self.get_inactive_obedience_level
|
||||
, 'a_ids_obedience_level': self.ids_obedience_level
|
||||
, 'a_names_obedience_level': self.names_obedience_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
|
||||
}
|
||||
|
||||
202
business_objects/dog/response_quality_metric.py
Normal file
202
business_objects/dog/response_quality_metric.py
Normal file
@@ -0,0 +1,202 @@
|
||||
"""
|
||||
Project: PARTS Website
|
||||
Author: Edward Middleton-Smith
|
||||
Precision And Research Technology Systems Limited
|
||||
|
||||
Technology: Business Objects
|
||||
Feature: Response Quality Metric Business Object
|
||||
"""
|
||||
|
||||
# internal
|
||||
from business_objects.base import Base
|
||||
from business_objects.db_base import SQLAlchemy_ABC, Get_Many_Parameters_Base
|
||||
from business_objects.dog.unit_measurement import Unit_Measurement
|
||||
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 Response_Quality_Metric(SQLAlchemy_ABC, Base):
|
||||
ATTR_ID_ASSESSMENT_RESPONSE_QUALITY_METRIC: ClassVar[str] = 'id_response_quality_metric'
|
||||
FLAG_RESPONSE_QUALITY_METRIC: ClassVar[str] = 'response-quality-metric'
|
||||
FLAG_VALUE_MIN: ClassVar[str] = 'value-min'
|
||||
FLAG_VALUE_MAX: ClassVar[str] = 'value-max'
|
||||
NAME_ATTR_OPTION_VALUE: ClassVar[str] = ATTR_ID_ASSESSMENT_RESPONSE_QUALITY_METRIC
|
||||
NAME_ATTR_OPTION_TEXT: ClassVar[str] = Base.FLAG_NAME
|
||||
|
||||
__tablename__ = 'DOG_Response_Quality_Metric'
|
||||
__table_args__ = { 'extend_existing': True }
|
||||
|
||||
id_response_quality_metric = db.Column(db.Integer, primary_key=True)
|
||||
id_unit_measurement = db.Column(db.Integer)
|
||||
code = db.Column(db.String(250))
|
||||
name = db.Column(db.String(250))
|
||||
value_min = db.Column(db.Float)
|
||||
value_max = db.Column(db.Float)
|
||||
active = db.Column(db.Boolean)
|
||||
|
||||
def __init__(self):
|
||||
self.id_response_quality_metric = 0
|
||||
self.is_new = False
|
||||
self.unit_measurement = None
|
||||
super().__init__()
|
||||
|
||||
@classmethod
|
||||
def from_db_response_quality_metric(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_response_quality_metric'
|
||||
response = cls()
|
||||
response.id_response_quality_metric = query_row[0]
|
||||
response.id_unit_measurement = query_row[1]
|
||||
response.code = query_row[5]
|
||||
response.name = query_row[6]
|
||||
response.value_min = query_row[7]
|
||||
response.value_max = query_row[8]
|
||||
response.active = av.input_bool(query_row[9], 'active', _m)
|
||||
response.unit_measurement = Unit_Measurement.from_db_response_quality_metric(query_row)
|
||||
return response
|
||||
|
||||
@classmethod
|
||||
def from_db_assessment_response(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_assessment_response'
|
||||
level = cls()
|
||||
level.id_response_quality_metric = query_row[2]
|
||||
level.name = query_row[3]
|
||||
level.active = True
|
||||
return level
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json):
|
||||
_m = 'Response_Quality_Metric.from_json'
|
||||
response_quality_metric = cls()
|
||||
if json is None: return Response_Quality_Metric
|
||||
# Helper_App.console_log(f'{_m}\njson: {json}')
|
||||
response_quality_metric.id_response_quality_metric = json.get(cls.ATTR_ID_ASSESSMENT_RESPONSE_QUALITY_METRIC, -1)
|
||||
response_quality_metric.name = json[cls.FLAG_NAME]
|
||||
response_quality_metric.code = json.get(cls.FLAG_CODE, response_quality_metric.name.upper().replace(" ", "_"))
|
||||
response_quality_metric.value_min = json[cls.FLAG_VALUE_MIN]
|
||||
response_quality_metric.value_max = json[cls.FLAG_VALUE_MAX]
|
||||
response_quality_metric.active = json[cls.FLAG_ACTIVE]
|
||||
# Helper_App.console_log(f'Response_Quality_Metric: {response_quality_metric}')
|
||||
return response_quality_metric
|
||||
|
||||
|
||||
def to_json(self):
|
||||
as_json = {
|
||||
**self.get_shared_json_attributes(self)
|
||||
, self.ATTR_ID_ASSESSMENT_RESPONSE_QUALITY_METRIC: self.id_response_quality_metric
|
||||
, self.FLAG_CODE: self.code
|
||||
, self.FLAG_NAME: f'{self.name} ({self.unit_measurement.symbol})'
|
||||
, self.FLAG_VALUE_MIN: self.value_min
|
||||
, self.FLAG_VALUE_MAX: self.value_max
|
||||
, self.FLAG_ACTIVE: self.active
|
||||
, Unit_Measurement.FLAG_UNIT_MEASUREMENT: None if self.unit_measurement is None else self.unit_measurement.to_json()
|
||||
}
|
||||
# Helper_App.console_log(f'as_json: {as_json}')
|
||||
return as_json
|
||||
|
||||
def __repr__(self):
|
||||
return f'''
|
||||
{self.__class__.__name__}(
|
||||
{self.FLAG_RESPONSE_QUALITY_METRIC}: {self.id_response_quality_metric}
|
||||
{self.FLAG_CODE}: {self.code}
|
||||
{self.FLAG_NAME}: {self.name}
|
||||
{self.FLAG_VALUE_MIN}: {self.value_min}
|
||||
{self.FLAG_VALUE_MAX}: {self.value_max}
|
||||
{self.FLAG_ACTIVE}: {self.active}
|
||||
)
|
||||
'''
|
||||
|
||||
|
||||
class Response_Quality_Metric_Temp(db.Model, Base):
|
||||
__tablename__ = 'DOG_Response_Quality_Metric_Temp'
|
||||
__table_args__ = { 'extend_existing': True }
|
||||
id_temp = db.Column(db.Integer, primary_key=True)
|
||||
id_response_quality_metric = db.Column(db.Integer)
|
||||
code = db.Column(db.String(250))
|
||||
name = db.Column(db.String(250))
|
||||
value_min = db.Column(db.Float)
|
||||
value_max = db.Column(db.Float)
|
||||
active = db.Column(db.Boolean)
|
||||
guid: str = db.Column(db.String(36))
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
|
||||
@classmethod
|
||||
def from_response_quality_metric(cls, response_quality_metric):
|
||||
_m = 'Response_Quality_Metric_Temp.from_Response_Quality_Metric'
|
||||
temp = cls()
|
||||
temp.id_response_quality_metric = response_quality_metric.id_response_quality_metric
|
||||
temp.code = response_quality_metric.code
|
||||
temp.name = response_quality_metric.name
|
||||
temp.value_min = response_quality_metric.value_min
|
||||
temp.value_max = response_quality_metric.value_max
|
||||
temp.active = response_quality_metric.active
|
||||
return temp
|
||||
|
||||
|
||||
class Parameters_Response_Quality_Metric(Get_Many_Parameters_Base):
|
||||
get_all_response_quality_metric: bool
|
||||
get_inactive_response_quality_metric: bool
|
||||
ids_response_quality_metric: str
|
||||
names_response_quality_metric: 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_response_quality_metric = True
|
||||
, get_inactive_response_quality_metric = False
|
||||
, ids_response_quality_metric = ''
|
||||
, names_response_quality_metric = ''
|
||||
, 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_response_quality_metric = json.get('a_get_all_response_quality_metric', False)
|
||||
, get_inactive_response_quality_metric = json.get('a_get_inactive_response_quality_metric', False)
|
||||
, ids_response_quality_metric = json.get('a_ids_response_quality_metric', '')
|
||||
, names_response_quality_metric = json.get('a_names_response_quality_metric', '')
|
||||
, 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_response_quality_metric(cls, form):
|
||||
av.val_instance(form, 'form', 'Parameters_Response_Quality_Metric.from_form_filters_response_quality_metric', Filters_Response_Quality_Metric)
|
||||
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_Response_Quality_Metric.from_form_filters_response_quality_metric")
|
||||
filters = cls.get_default()
|
||||
filters.get_all_response_quality_metric = True
|
||||
filters.get_inactive_response_quality_metric = not active_only
|
||||
filters.ids_response_quality_metric = ''
|
||||
filters.names_response_quality_metric = form.search.data if has_filter_search_text else ''
|
||||
filters.notes_response_quality_metric = form.search.data if has_filter_search_text else ''
|
||||
return filters
|
||||
"""
|
||||
|
||||
def to_json(self):
|
||||
return {
|
||||
'a_get_all_response_quality_metric': self.get_all_response_quality_metric
|
||||
, 'a_get_inactive_response_quality_metric': self.get_inactive_response_quality_metric
|
||||
, 'a_ids_response_quality_metric': self.ids_response_quality_metric
|
||||
, 'a_names_response_quality_metric': self.names_response_quality_metric
|
||||
, '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
|
||||
}
|
||||
224
business_objects/dog/unit_measurement.py
Normal file
224
business_objects/dog/unit_measurement.py
Normal file
@@ -0,0 +1,224 @@
|
||||
"""
|
||||
Project: PARTS Website
|
||||
Author: Edward Middleton-Smith
|
||||
Precision And Research Technology Systems Limited
|
||||
|
||||
Technology: Business Objects
|
||||
Feature: Unit Measurement 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 Unit_Measurement(SQLAlchemy_ABC, Base):
|
||||
ATTR_ID_UNIT_MEASUREMENT: ClassVar[str] = "id_unit_measurement"
|
||||
FLAG_IS_BASE_UNIT: ClassVar[str] = "is-base-unit"
|
||||
FLAG_IS_UNIT_OF_DISTANCE: ClassVar[str] = "is-unit-of-distance"
|
||||
FLAG_IS_UNIT_OF_MASS: ClassVar[str] = "is-unit-of-mass"
|
||||
FLAG_IS_UNIT_OF_TIME: ClassVar[str] = "is-unit-of-time"
|
||||
FLAG_IS_UNIT_OF_VOLUME: ClassVar[str] = "is-unit-of-volume"
|
||||
FLAG_SYMBOL_IS_SUFFIX_NOT_PREFIX: ClassVar[str] = "symbol-is-suffix-not-prefix"
|
||||
FLAG_UNIT_MEASUREMENT: ClassVar[str] = 'unit-measurement'
|
||||
NAME_ATTR_OPTION_VALUE: ClassVar[str] = FLAG_UNIT_MEASUREMENT
|
||||
NAME_ATTR_OPTION_TEXT: ClassVar[str] = Base.FLAG_SYMBOL
|
||||
|
||||
__tablename__ = 'DOG_Unit_Measurement'
|
||||
__table_args__ = { 'extend_existing': True }
|
||||
|
||||
id_unit_measurement = db.Column(db.Integer, primary_key=True)
|
||||
name_singular = db.Column(db.String(250))
|
||||
name_plural = db.Column(db.String(250))
|
||||
symbol = db.Column(db.String(50))
|
||||
symbol_is_suffix_not_prefix = db.Column(db.Boolean)
|
||||
is_base_unit = db.Column(db.Boolean)
|
||||
is_unit_of_distance = db.Column(db.Boolean)
|
||||
is_unit_of_mass = db.Column(db.Boolean)
|
||||
is_unit_of_time = db.Column(db.Boolean)
|
||||
is_unit_of_volume = db.Column(db.Boolean)
|
||||
active = db.Column(db.Boolean)
|
||||
|
||||
def __init__(self):
|
||||
self.id_unit_measurement = 0
|
||||
self.is_new = False
|
||||
super().__init__()
|
||||
|
||||
@classmethod
|
||||
def from_db_unit_measurement(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_unit_measurement'
|
||||
level = cls()
|
||||
level.id_unit_measurement = query_row[0]
|
||||
level.name_singular = query_row[1]
|
||||
level.name_plural = query_row[2]
|
||||
level.symbol = query_row[3]
|
||||
level.symbol_is_suffix_not_prefix = query_row[4]
|
||||
level.is_base_unit = query_row[5]
|
||||
level.is_unit_of_distance = query_row[6]
|
||||
level.is_unit_of_mass = query_row[7]
|
||||
level.is_unit_of_time = query_row[8]
|
||||
level.is_unit_of_volume = query_row[9]
|
||||
level.active = True
|
||||
return level
|
||||
|
||||
@classmethod
|
||||
def from_db_response_quality_metric(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_response_quality_metric'
|
||||
level = cls()
|
||||
level.id_unit_measurement = query_row[1]
|
||||
level.name_singular = query_row[2]
|
||||
level.name_plural = query_row[3]
|
||||
level.symbol = query_row[4]
|
||||
level.active = True
|
||||
return level
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json):
|
||||
_m = f'{cls.__qualname__}.from_json'
|
||||
unit_measurement = cls()
|
||||
if json is None: return Unit_Measurement
|
||||
Helper_App.console_log(f'{_m}\njson: {json}')
|
||||
unit_measurement.id_unit_measurement = json.get(Unit_Measurement.ATTR_ID_UNIT_MEASUREMENT, -1)
|
||||
unit_measurement.name_singular = json[cls.FLAG_NAME_SINGULAR]
|
||||
unit_measurement.name_plural = json[cls.FLAG_NAME_PLURAL]
|
||||
unit_measurement.symbol = json[cls.FLAG_SYMBOL]
|
||||
unit_measurement.symbol_is_suffix_not_prefix = json[cls.FLAG_SYMBOL_IS_SUFFIX_NOT_PREFIX]
|
||||
unit_measurement.is_base_unit = json[cls.FLAG_IS_BASE_UNIT]
|
||||
unit_measurement.is_unit_of_distance = json[cls.FLAG_IS_UNIT_OF_DISTANCE]
|
||||
unit_measurement.is_unit_of_mass = json[cls.FLAG_IS_UNIT_OF_MASS]
|
||||
unit_measurement.is_unit_of_time = json[cls.FLAG_IS_UNIT_OF_TIME]
|
||||
unit_measurement.is_unit_of_volume = json[cls.FLAG_IS_UNIT_OF_VOLUME]
|
||||
unit_measurement.active = json[cls.FLAG_ACTIVE]
|
||||
Helper_App.console_log(f'Unit_Measurement: {unit_measurement}')
|
||||
return unit_measurement
|
||||
|
||||
|
||||
def to_json(self):
|
||||
as_json = {
|
||||
**self.get_shared_json_attributes(self)
|
||||
, self.ATTR_ID_UNIT_MEASUREMENT: self.id_unit_measurement
|
||||
, self.FLAG_NAME_SINGULAR: self.name_singular
|
||||
, self.FLAG_NAME_PLURAL: self.name_plural
|
||||
, self.FLAG_SYMBOL: self.symbol
|
||||
, self.FLAG_SYMBOL_IS_SUFFIX_NOT_PREFIX: self.symbol_is_suffix_not_prefix
|
||||
, self.FLAG_IS_BASE_UNIT: self.is_base_unit
|
||||
, self.FLAG_IS_UNIT_OF_DISTANCE: self.is_unit_of_distance
|
||||
, self.FLAG_IS_UNIT_OF_MASS: self.is_unit_of_mass
|
||||
, self.FLAG_IS_UNIT_OF_TIME: self.is_unit_of_time
|
||||
, self.FLAG_IS_UNIT_OF_VOLUME: self.is_unit_of_volume
|
||||
, 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_UNIT_MEASUREMENT}: {self.id_unit_measurement}
|
||||
{self.FLAG_NAME_SINGULAR}: {self.name_singular}
|
||||
{self.FLAG_NAME_PLURAL}: {self.name_plural}
|
||||
{self.FLAG_SYMBOL}: {self.symbol}
|
||||
{self.FLAG_SYMBOL_IS_SUFFIX_NOT_PREFIX}: {self.symbol_is_suffix_not_prefix}
|
||||
{self.FLAG_IS_BASE_UNIT}: {self.is_base_unit}
|
||||
{self.FLAG_IS_UNIT_OF_DISTANCE}: {self.is_unit_of_distance}
|
||||
{self.FLAG_IS_UNIT_OF_MASS}: {self.is_unit_of_mass}
|
||||
{self.FLAG_IS_UNIT_OF_TIME}: {self.is_unit_of_time}
|
||||
{self.FLAG_IS_UNIT_OF_VOLUME}: {self.is_unit_of_volume}
|
||||
{self.FLAG_ACTIVE}: {self.active}
|
||||
)
|
||||
'''
|
||||
|
||||
|
||||
class Unit_Measurement_Temp(db.Model, Base):
|
||||
__tablename__ = 'DOG_Unit_Measurement_Temp'
|
||||
__table_args__ = { 'extend_existing': True }
|
||||
id_temp = db.Column(db.Integer, primary_key=True)
|
||||
id_unit_measurement = 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_unit_measurement(cls, unit_measurement):
|
||||
_m = 'Unit_Measurement_Temp.from_Unit_Measurement'
|
||||
temp = cls()
|
||||
temp.id_unit_measurement = unit_measurement.id_unit_measurement
|
||||
temp.code = unit_measurement.code
|
||||
temp.name = unit_measurement.name
|
||||
temp.active = unit_measurement.active
|
||||
return temp
|
||||
|
||||
"""
|
||||
class Parameters_Unit_Measurement(Get_Many_Parameters_Base):
|
||||
get_all_unit_measurement: bool
|
||||
get_inactive_unit_measurement: bool
|
||||
ids_unit_measurement: str
|
||||
names_unit_measurement: 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_unit_measurement = True
|
||||
, get_inactive_unit_measurement = False
|
||||
, ids_unit_measurement = ''
|
||||
, names_unit_measurement = ''
|
||||
, 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_unit_measurement = json.get('a_get_all_unit_measurement', False)
|
||||
, get_inactive_unit_measurement = json.get('a_get_inactive_unit_measurement', False)
|
||||
, ids_unit_measurement = json.get('a_ids_unit_measurement', '')
|
||||
, names_unit_measurement = json.get('a_names_unit_measurement', '')
|
||||
, 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_unit_measurement(cls, form):
|
||||
av.val_instance(form, 'form', 'Parameters_Unit_Measurement.from_form_filters_unit_measurement', Filters_Unit_Measurement)
|
||||
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_Unit_Measurement.from_form_filters_unit_measurement")
|
||||
filters = cls.get_default()
|
||||
filters.get_all_unit_measurement = True
|
||||
filters.get_inactive_unit_measurement = not active_only
|
||||
filters.ids_unit_measurement = ''
|
||||
filters.names_unit_measurement = form.search.data if has_filter_search_text else ''
|
||||
filters.notes_unit_measurement = form.search.data if has_filter_search_text else ''
|
||||
return filters
|
||||
"" "
|
||||
|
||||
def to_json(self):
|
||||
return {
|
||||
'a_get_all_unit_measurement': self.get_all_unit_measurement
|
||||
, 'a_get_inactive_unit_measurement': self.get_inactive_unit_measurement
|
||||
, 'a_ids_unit_measurement': self.ids_unit_measurement
|
||||
, 'a_names_unit_measurement': self.names_unit_measurement
|
||||
, '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
|
||||
}
|
||||
"""
|
||||
@@ -21,7 +21,7 @@ from typing import ClassVar, Optional
|
||||
|
||||
class User(SQLAlchemy_ABC, Base):
|
||||
NAME_ATTR_OPTION_VALUE: ClassVar[str] = Base.ATTR_ID_USER
|
||||
NAME_ATTR_OPTION_TEXT: ClassVar[str] = 'email'
|
||||
NAME_ATTR_OPTION_TEXT: ClassVar[str] = Base.FLAG_NAME
|
||||
|
||||
__tablename__ = 'DOG_User'
|
||||
__table_args__ = { 'extend_existing': True }
|
||||
@@ -41,10 +41,11 @@ class User(SQLAlchemy_ABC, Base):
|
||||
self.can_admin_dog = False
|
||||
self.can_admin_user = False
|
||||
super().__init__()
|
||||
|
||||
def from_DB_user(query_row):
|
||||
_m = 'User.from_DB_user'
|
||||
user = User()
|
||||
|
||||
@classmethod
|
||||
def from_db_user(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_user'
|
||||
user = cls()
|
||||
user.id_user = query_row[0]
|
||||
user.id_user_auth0 = query_row[1]
|
||||
user.firstname = query_row[2]
|
||||
@@ -56,6 +57,15 @@ class User(SQLAlchemy_ABC, Base):
|
||||
user.can_admin_user = av.input_bool(query_row[8], 'can_admin_user', _m)
|
||||
# user.is_new = av.input_bool(query_row[9], 'is_new', _m)
|
||||
return user
|
||||
|
||||
@classmethod
|
||||
def from_db_assessment(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_assessment'
|
||||
user = cls()
|
||||
user.id_user = query_row[7]
|
||||
user.firstname = query_row[8]
|
||||
user.surname = query_row[9]
|
||||
return user
|
||||
|
||||
@staticmethod
|
||||
def from_json(json):
|
||||
@@ -98,14 +108,15 @@ class User(SQLAlchemy_ABC, Base):
|
||||
|
||||
def to_json(self):
|
||||
as_json = {
|
||||
**self.get_shared_json_attributes(self),
|
||||
'id_user': self.id_user,
|
||||
'id_user_auth0': self.id_user_auth0,
|
||||
'firstname': self.firstname,
|
||||
'surname': self.surname,
|
||||
'email': self.email,
|
||||
'is_email_verified': self.is_email_verified,
|
||||
'is_super_user': self.is_super_user
|
||||
**self.get_shared_json_attributes(self)
|
||||
, 'id_user': self.id_user
|
||||
, 'id_user_auth0': self.id_user_auth0
|
||||
, 'firstname': self.firstname
|
||||
, 'surname': self.surname
|
||||
, self.FLAG_NAME: self.get_name()
|
||||
, 'email': self.email
|
||||
, 'is_email_verified': self.is_email_verified
|
||||
, 'is_super_user': self.is_super_user
|
||||
}
|
||||
Helper_App.console_log(f'as_json: {as_json}')
|
||||
return as_json
|
||||
@@ -123,6 +134,9 @@ class User(SQLAlchemy_ABC, Base):
|
||||
|
||||
def get_is_logged_in(self):
|
||||
return (self.id_user > 0 and self.id_user != Base.ID_USER_GUEST)
|
||||
|
||||
def get_name(self):
|
||||
return f'{self.firstname} {self.surname}'
|
||||
|
||||
class User_Temp(db.Model, Base):
|
||||
__tablename__ = 'DOG_User_Temp'
|
||||
@@ -238,7 +252,7 @@ class User_Permission_Evaluation(db.Model):
|
||||
can_edit = db.Column(db.Boolean)
|
||||
can_admin = db.Column(db.Boolean)
|
||||
|
||||
def from_DB_user_eval(query_row):
|
||||
def from_db_user_eval(query_row):
|
||||
user_permission_evaluation = User_Permission_Evaluation()
|
||||
user_permission_evaluation.id_evaluation = query_row[0]
|
||||
user_permission_evaluation.guid = query_row[1]
|
||||
|
||||
180
business_objects/dog/weather.py
Normal file
180
business_objects/dog/weather.py
Normal file
@@ -0,0 +1,180 @@
|
||||
"""
|
||||
Project: PARTS Website
|
||||
Author: Edward Middleton-Smith
|
||||
Precision And Research Technology Systems Limited
|
||||
|
||||
Technology: Business Objects
|
||||
Feature: Button Shape Business Object
|
||||
"""
|
||||
|
||||
# internal
|
||||
from business_objects.base import Base
|
||||
from business_objects.db_base import SQLAlchemy_ABC, Get_Many_Parameters_Base
|
||||
from business_objects.dog.image import Image
|
||||
import lib.argument_validation as av
|
||||
from extensions import db
|
||||
# from forms.dog.weather import Filters_Weather
|
||||
from helpers.helper_app import Helper_App
|
||||
# external
|
||||
from dataclasses import dataclass
|
||||
from typing import ClassVar
|
||||
|
||||
|
||||
class Weather(SQLAlchemy_ABC, Base):
|
||||
ATTR_ID_WEATHER: ClassVar[str] = 'id_weather'
|
||||
FLAG_WEATHER: ClassVar[str] = 'weather'
|
||||
NAME_ATTR_OPTION_VALUE: ClassVar[str] = ATTR_ID_WEATHER
|
||||
NAME_ATTR_OPTION_TEXT: ClassVar[str] = Base.FLAG_NAME
|
||||
|
||||
__tablename__ = 'DOG_Weather'
|
||||
__table_args__ = { 'extend_existing': True }
|
||||
|
||||
id_weather = db.Column(db.Integer, primary_key=True)
|
||||
code = db.Column(db.String(250))
|
||||
name = db.Column(db.String(250))
|
||||
active = db.Column(db.Boolean)
|
||||
created_on = db.Column(db.DateTime)
|
||||
|
||||
def __init__(self):
|
||||
self.id_weather = 0
|
||||
self.is_new = False
|
||||
super().__init__()
|
||||
|
||||
@classmethod
|
||||
def from_db_weather(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_weather'
|
||||
weather = cls()
|
||||
weather.id_weather = query_row[0]
|
||||
weather.code = query_row[1]
|
||||
weather.name = query_row[2]
|
||||
weather.active = av.input_bool(query_row[3], 'active', _m)
|
||||
return weather
|
||||
|
||||
@classmethod
|
||||
def from_db_assessment(cls, query_row):
|
||||
_m = f'{cls.__qualname__}.from_db_assessment'
|
||||
weather = cls()
|
||||
weather.id_weather = query_row[1]
|
||||
weather.name = query_row[2]
|
||||
weather.active = True
|
||||
return weather
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json):
|
||||
_m = f'{cls.__qualname__}.from_json'
|
||||
weather = cls()
|
||||
if json is None: return weather
|
||||
# Helper_App.console_log(f'{_m}\njson: {json}')
|
||||
weather.id_weather = json.get(Weather.ATTR_ID_WEATHER, -1)
|
||||
weather.name = json[cls.FLAG_NAME]
|
||||
weather.code = json.get(cls.FLAG_CODE, weather.name.upper().replace(" ", "_"))
|
||||
weather.active = json[cls.FLAG_ACTIVE]
|
||||
weather.created_on = json.get(cls.FLAG_CREATED_ON, None)
|
||||
# Helper_App.console_log(f'Weather: {weather}')
|
||||
return weather
|
||||
|
||||
def to_json(self):
|
||||
as_json = {
|
||||
**self.get_shared_json_attributes(self)
|
||||
, self.ATTR_ID_WEATHER: self.id_weather
|
||||
, self.FLAG_CODE: self.code
|
||||
, self.FLAG_NAME: self.name
|
||||
, self.FLAG_ACTIVE: self.active
|
||||
, self.FLAG_CREATED_ON: self.created_on
|
||||
}
|
||||
# Helper_App.console_log(f'as_json: {as_json}')
|
||||
return as_json
|
||||
|
||||
def __repr__(self):
|
||||
return f'''
|
||||
{self.__class__.__name__}(
|
||||
{self.FLAG_WEATHER}: {self.id_weather}
|
||||
{self.FLAG_CODE}: {self.code}
|
||||
{self.FLAG_NAME}: {self.name}
|
||||
{self.FLAG_ACTIVE}: {self.active}
|
||||
{self.FLAG_CREATED_ON}: {self.created_on}
|
||||
)
|
||||
'''
|
||||
|
||||
class Weather_Temp(db.Model, Base):
|
||||
__tablename__ = 'DOG_Weather_Temp'
|
||||
__table_args__ = { 'extend_existing': True }
|
||||
id_temp = db.Column(db.Integer, primary_key=True)
|
||||
id_weather = db.Column(db.Integer)
|
||||
code = db.Column(db.String(250))
|
||||
name = db.Column(db.String(250))
|
||||
active = db.Column(db.Boolean)
|
||||
# created_on = db.Column(db.DateTime)
|
||||
guid: str = db.Column(db.String(36))
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
|
||||
@classmethod
|
||||
def from_weather(cls, weather):
|
||||
_m = 'Weather_Temp.from_weather'
|
||||
temp = cls()
|
||||
temp.id_weather = weather.id_weather
|
||||
temp.code = weather.code
|
||||
temp.name = weather.name
|
||||
temp.active = weather.active
|
||||
# temp.created_on = weather.created_on
|
||||
return temp
|
||||
|
||||
def __repr__(self):
|
||||
return f'''
|
||||
{self.__class__.__name__}(
|
||||
{Weather.FLAG_WEATHER}: {self.id_weather}
|
||||
{self.FLAG_CODE}: {self.code}
|
||||
{self.FLAG_NAME}: {self.name}
|
||||
{self.FLAG_ACTIVE}: {self.active}
|
||||
)
|
||||
'''
|
||||
|
||||
class Parameters_Weather(Get_Many_Parameters_Base):
|
||||
get_all_weather: bool
|
||||
get_inactive_weather: bool
|
||||
ids_weather: str
|
||||
names_weather: 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_weather = True
|
||||
, get_inactive_weather = False
|
||||
, ids_weather = ''
|
||||
, names_weather = ''
|
||||
, 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_weather = json.get('a_get_all_weather', False)
|
||||
, get_inactive_weather = json.get('a_get_inactive_weather', False)
|
||||
, ids_weather = json.get('a_ids_weather', '')
|
||||
, names_weather = json.get('a_names_weather', '')
|
||||
, 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)
|
||||
)
|
||||
|
||||
def to_json(self):
|
||||
return {
|
||||
'a_get_all_weather': self.get_all_weather
|
||||
, 'a_get_inactive_weather': self.get_inactive_weather
|
||||
, 'a_ids_weather': self.ids_weather
|
||||
, 'a_names_weather': self.names_weather
|
||||
, '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
|
||||
}
|
||||
@@ -95,7 +95,7 @@ class File_Type_Temp(db.Model, Base):
|
||||
__table_args__ = { 'extend_existing': True }
|
||||
id_temp = db.Column(db.Integer, primary_key=True)
|
||||
id_file_type = db.Column(db.Integer)
|
||||
# code = db.Column(db.String(250))
|
||||
code = db.Column(db.String(250))
|
||||
name = db.Column(db.String(250))
|
||||
is_image = db.Column(db.Boolean)
|
||||
active = db.Column(db.Boolean)
|
||||
@@ -109,7 +109,7 @@ class File_Type_Temp(db.Model, Base):
|
||||
_m = 'File_Type_Temp.from_File_Type'
|
||||
temp = cls()
|
||||
temp.id_file_type = file_type.id_file_type
|
||||
# temp.code = file_type.code
|
||||
temp.code = file_type.code
|
||||
temp.name = file_type.name
|
||||
temp.is_image = file_type.is_image
|
||||
temp.active = file_type.active
|
||||
|
||||
Reference in New Issue
Block a user