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:
2025-07-24 16:48:18 +01:00
parent 6bb3a77a34
commit fad5336cc4
137 changed files with 10442 additions and 1116 deletions

View File

@@ -16,9 +16,7 @@ from models.model_view_base import Model_View_Base
# external
class Model_View_Accessibility_Report(Model_View_Base):
@property
def title(self):
return 'Accessibility Report'
def __init__(self, hash_page_current=Model_View_Base.HASH_PAGE_ACCESSIBILITY_REPORT):
super().__init__(hash_page_current=hash_page_current)
self._title = 'Accessibility Report'

View File

@@ -16,9 +16,7 @@ from models.model_view_base import Model_View_Base
# external
class Model_View_Accessibility_Statement(Model_View_Base):
@property
def title(self):
return 'Accessibility Statement'
def __init__(self, hash_page_current=Model_View_Base.HASH_PAGE_ACCESSIBILITY_STATEMENT):
super().__init__(hash_page_current=hash_page_current)
self._title = 'Accessibility Statement'

View File

@@ -19,17 +19,29 @@ Base data model for views
# from routes import bp_home
from business_objects.base import Base
from business_objects.file_type import File_Type
from business_objects.dog.assessment import Assessment
from business_objects.dog.assessment_command_modality_link import Assessment_Command_Modality_Link
from business_objects.dog.assessment_response import Assessment_Response
from business_objects.dog.bribe import Bribe
from business_objects.dog.button_icon import Button_Icon
from business_objects.dog.button_shape import Button_Shape
from business_objects.dog.colour import Colour
from business_objects.dog.command import Command
from business_objects.dog.command_button_link import Command_Button_Link
from business_objects.dog.command_category import Command_Category
from business_objects.dog.command_modality import Command_Modality
from business_objects.dog.distraction import Distraction
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 business_objects.dog.dog_command_link import Dog_Command_Link
from business_objects.dog.image import Image
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.response_quality_metric import Response_Quality_Metric
from business_objects.dog.user import User
from business_objects.dog.weather import Weather
from datastores.datastore_base import DataStore_Base
from datastores.datastore_dog import DataStore_Dog
from datastores.datastore_user import DataStore_User
@@ -44,17 +56,27 @@ from typing import ClassVar
class Model_View_Base(BaseModel, ABC):
ATTR_ID_ASSESSMENT: ClassVar[str] = Assessment.ATTR_ID_ASSESSMENT
ATTR_ID_ASSESSMENT_COMMAND_MODALITY_LINK: ClassVar[str] = Assessment_Command_Modality_Link.ATTR_ID_ASSESSMENT_COMMAND_MODALITY_LINK
ATTR_ID_ASSESSMENT_RESPONSE: ClassVar[str] = Assessment_Response.ATTR_ID_ASSESSMENT_RESPONSE
ATTR_ID_BRIBE: ClassVar[str] = Bribe.ATTR_ID_BRIBE
ATTR_ID_BUTTON_ICON: ClassVar[str] = Button_Icon.ATTR_ID_BUTTON_ICON
ATTR_ID_BUTTON_SHAPE: ClassVar[str] = Button_Shape.ATTR_ID_BUTTON_SHAPE
ATTR_ID_COLOUR: ClassVar[str] = Colour.ATTR_ID_COLOUR
ATTR_ID_COMMAND: ClassVar[str] = Command.ATTR_ID_COMMAND
ATTR_ID_COMMAND_BUTTON_LINK: ClassVar[str] = Command_Button_Link.ATTR_ID_COMMAND_BUTTON_LINK
ATTR_ID_COMMAND_CATEGORY: ClassVar[str] = Command_Category.ATTR_ID_COMMAND_CATEGORY
ATTR_ID_COMMAND_MODALITY: ClassVar[str] = Command_Modality.ATTR_ID_COMMAND_MODALITY
ATTR_ID_DISTRACTION: ClassVar[str] = Distraction.ATTR_ID_DISTRACTION
ATTR_ID_DISTRACTION_INTENSITY_LEVEL: ClassVar[str] = Distraction_Intensity_Level.ATTR_ID_DISTRACTION_INTENSITY_LEVEL
ATTR_ID_DISTRACTION_TYPE: ClassVar[str] = Distraction_Type.ATTR_ID_DISTRACTION_TYPE
ATTR_ID_DOG: ClassVar[str] = Dog.ATTR_ID_DOG
ATTR_ID_DOG_COMMAND_LINK: ClassVar[str] = Dog_Command_Link.ATTR_ID_DOG_COMMAND_LINK
ATTR_ID_FILE_TYPE: ClassVar[str] = File_Type.ATTR_ID_FILE_TYPE
ATTR_ID_IMAGE: ClassVar[str] = Image.ATTR_ID_IMAGE
ATTR_ID_LIGHTING_LEVEL: ClassVar[str] = Lighting_Level.ATTR_ID_LIGHTING_LEVEL
ATTR_ID_LOCATION: ClassVar[str] = Location.ATTR_ID_LOCATION
ATTR_ID_WEATHER: ClassVar[str] = Weather.ATTR_ID_WEATHER
ATTR_TEXT_COLLAPSED: ClassVar[str] = 'textCollapsed'
ATTR_TEXT_EXPANDED: ClassVar[str] = 'textExpanded'
ATTR_VALUE_CURRENT: ClassVar[str] = 'current-value'
@@ -87,8 +109,12 @@ class Model_View_Base(BaseModel, ABC):
FLAG_ACTIVE_ONLY: ClassVar[str] = Base.FLAG_ACTIVE_ONLY
FLAG_ADD: ClassVar[str] = 'add'
# FLAG_ADD_DELETE: ClassVar[str] = 'add-delete'
FLAG_ASSESSMENT: ClassVar[str] = Assessment.FLAG_ASSESSMENT
FLAG_ASSESSMENT_COMMAND_MODALITY_LINK: ClassVar[str] = Assessment_Command_Modality_Link.FLAG_ASSESSMENT_COMMAND_MODALITY_LINK
FLAG_ASSESSMENT_RESPONSE: ClassVar[str] = Assessment_Response.FLAG_ASSESSMENT_RESPONSE
FLAG_BOOL_FALSE: ClassVar[str] = 'false'
FLAG_BOOL_TRUE: ClassVar[str] = 'true'
FLAG_BRIBE: ClassVar[str] = Bribe.FLAG_BRIBE
FLAG_BUTTON: ClassVar[str] = 'button'
FLAG_BUTTON_ICON: ClassVar[str] = Button_Icon.FLAG_BUTTON_ICON
FLAG_BUTTON_LIGHT: ClassVar[str] = 'button-light'
@@ -106,6 +132,7 @@ class Model_View_Base(BaseModel, ABC):
FLAG_COMMAND: ClassVar[str] = Command.FLAG_COMMAND
FLAG_COMMAND_BUTTON_LINK: ClassVar[str] = Command_Button_Link.FLAG_COMMAND_BUTTON_LINK
FLAG_COMMAND_CATEGORY: ClassVar[str] = Command_Category.FLAG_COMMAND_CATEGORY
FLAG_COMMAND_MODALITY: ClassVar[str] = Command_Modality.FLAG_COMMAND_MODALITY
FLAG_COLUMN: ClassVar[str] = 'column'
FLAG_COMMENT: ClassVar[str] = 'comment'
FLAG_CONTAINER: ClassVar[str] = 'container'
@@ -118,6 +145,9 @@ class Model_View_Base(BaseModel, ABC):
FLAG_DDL_PREVIEW: ClassVar[str] = "ddl-preview"
FLAG_DELETE: ClassVar[str] = 'delete'
FLAG_DESCRIPTION: ClassVar[str] = Base.FLAG_DESCRIPTION
FLAG_DISTRACTION: ClassVar[str] = Distraction.FLAG_DISTRACTION
FLAG_DISTRACTION_INTENSITY_LEVEL: ClassVar[str] = Distraction_Intensity_Level.FLAG_DISTRACTION_INTENSITY_LEVEL
FLAG_DISTRACTION_TYPE: ClassVar[str] = Distraction_Type.FLAG_DISTRACTION_TYPE
FLAG_DETAIL: ClassVar[str] = 'detail'
FLAG_DIALOG: ClassVar[str] = 'dialog'
FLAG_DIRTY: ClassVar[str] = 'dirty'
@@ -139,6 +169,7 @@ class Model_View_Base(BaseModel, ABC):
FLAG_IS_CHECKED: ClassVar[str] = 'is_checked'
FLAG_IS_COLLAPSED: ClassVar[str] = 'is_collapsed'
FLAG_LEFT_HAND_STUB: ClassVar[str] = 'lhs'
FLAG_LIGHTING_LEVEL: ClassVar[str] = Lighting_Level.FLAG_LIGHTING_LEVEL
FLAG_LOCATION: ClassVar[str] = Location.FLAG_LOCATION
FLAG_LOCATION_PARENT: ClassVar[str] = Location.FLAG_LOCATION_PARENT
FLAG_LOGO: ClassVar[str] = 'logo'
@@ -151,6 +182,8 @@ class Model_View_Base(BaseModel, ABC):
# FLAG_NAME_SINGULAR: ClassVar[str] = Base.FLAG_NAME_SINGULAR
FLAG_NAV_ADMIN_HOME: ClassVar[str] = 'navAdminHome'
FLAG_NAV_CONTACT: ClassVar[str] = 'navContact'
FLAG_NAV_DOG_ASSESSMENT: ClassVar[str] = 'navDogAssessment'
FLAG_NAV_DOG_ASSESSMENTS: ClassVar[str] = 'navDogAssessments'
FLAG_NAV_DOG_BUTTON_ICONS: ClassVar[str] = 'navDogButtonIcons'
FLAG_NAV_DOG_COLOURS: ClassVar[str] = 'navDogColours'
FLAG_NAV_DOG_COMMAND_BUTTON_LINKS: ClassVar[str] = 'navDogCommandButtonLinks'
@@ -166,8 +199,11 @@ class Model_View_Base(BaseModel, ABC):
FLAG_NAV_USER_LOGIN: ClassVar[str] = 'navUserLogin'
FLAG_NAV_USER_LOGOUT: ClassVar[str] = 'navUserLogout'
FLAG_NOTES: ClassVar[str] = "notes"
FLAG_OBEDIENCE_LEVEL: ClassVar[str] = Obedience_Level.FLAG_OBEDIENCE_LEVEL
FLAG_OVERLAY: ClassVar[str] = 'overlay'
FLAG_PAGE_BODY: ClassVar[str] = 'page-body'
FLAG_QUANTITY: ClassVar[str] = 'quantity'
FLAG_RESPONSE_QUALITY_METRIC: ClassVar[str] = Response_Quality_Metric.FLAG_RESPONSE_QUALITY_METRIC
FLAG_RIGHT_HAND_SIDE: ClassVar[str] = 'rhs'
FLAG_ROW: ClassVar[str] = 'row'
FLAG_ROW_NEW: ClassVar[str] = 'row-new'
@@ -179,8 +215,10 @@ class Model_View_Base(BaseModel, ABC):
FLAG_STATUS: ClassVar[str] = 'status'
FLAG_SUBMIT: ClassVar[str] = 'submit'
FLAG_SUCCESS: ClassVar[str] = 'success'
FLAG_TABLE_MAIN: ClassVar[str] = 'table-main'
FLAG_TEMPORARY_ELEMENT: ClassVar[str] = 'temporary-element'
FLAG_USER: ClassVar[str] = User.FLAG_USER
FLAG_WEATHER: ClassVar[str] = Weather.FLAG_WEATHER
FLAG_WEBSITE: ClassVar[str] = Base.FLAG_WEBSITE
HASH_GET_ALTCHA_CHALLENGE: ClassVar[str] = '/altcha/create-challenge'
HASH_GET_DOG_SCRIPTS_SHARED: ClassVar[str] = '/dog/scripts-shared'
@@ -190,6 +228,8 @@ class Model_View_Base(BaseModel, ABC):
HASH_PAGE_CONTACT: ClassVar[str] = '/contact'
HASH_PAGE_CONTACT_SUCCESS: ClassVar[str] = '/contact-success'
HASH_PAGE_DATA_RETENTION_SCHEDULE: ClassVar[str] = '/retention-schedule'
HASH_PAGE_DOG_ASSESSMENT: ClassVar[str] = '/dog/assessment'
HASH_PAGE_DOG_ASSESSMENTS: ClassVar[str] = '/dog/assessments'
HASH_PAGE_DOG_BUTTON_ICONS: ClassVar[str] = '/dog/button-icons'
HASH_PAGE_DOG_COMMAND_BUTTON_LINKS: ClassVar[str] = '/dog/command-button-links'
HASH_PAGE_DOG_COMMAND_CATEGORIES: ClassVar[str] = '/dog/command-categories'
@@ -205,6 +245,7 @@ class Model_View_Base(BaseModel, ABC):
HASH_PAGE_USER_ACCOUNT: ClassVar[str] = '/user'
HASH_PAGE_USER_LOGIN: ClassVar[str] = '/login'
HASH_PAGE_USER_LOGOUT: ClassVar[str] = '/logout'
HASH_SAVE_DOG_ASSESSMENT: ClassVar[str] = '/dog/save-assessment'
HASH_SAVE_DOG_BUTTON_ICON: ClassVar[str] = '/dog/save-button-icon'
HASH_SAVE_DOG_COLOUR: ClassVar[str] = '/dog/save-colour'
HASH_SAVE_DOG_COMMAND: ClassVar[str] = '/dog/save-command'
@@ -234,6 +275,7 @@ class Model_View_Base(BaseModel, ABC):
URL_GITHUB: ClassVar[str] = 'https://github.com/Teddy-1024'
URL_LINKEDIN: ClassVar[str] = 'https://uk.linkedin.com/in/teddyms'
_title: str
hash_page_current: str
app: Flask = None
session: None = None
@@ -245,10 +287,12 @@ class Model_View_Base(BaseModel, ABC):
model_config = ConfigDict(arbitrary_types_allowed=True)
@property
@abstractmethod
# @abstractmethod
def title(self):
pass
if self._title is None:
raise NotImplementedError("Model Title required.")
return self._title
def __init__(self, hash_page_current, **kwargs):
BaseModel.__init__(self, hash_page_current=hash_page_current, **kwargs)
self.app = current_app

View File

@@ -0,0 +1,205 @@
"""
Project: PARTS Website
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Technology: View Models
Feature: Dog Assessments View Model
Description:
Data model for dog assessments view
"""
# internal
from business_objects.dog.assessment import Assessment, Parameters_Assessment
from business_objects.dog.assessment_command_modality_link import Assessment_Command_Modality_Link, Parameters_Assessment_Command_Modality_Link
from business_objects.dog.assessment_response import Assessment_Response, Parameters_Assessment_Response
from business_objects.dog.bribe import Bribe, Parameters_Bribe
from business_objects.dog.command import Command, Parameters_Command
from business_objects.dog.command_category import Command_Category
from business_objects.dog.command_modality import Command_Modality, Parameters_Command_Modality
from business_objects.dog.distraction import Distraction, Parameters_Distraction
from business_objects.dog.distraction_intensity_level import Distraction_Intensity_Level, Parameters_Distraction_Intensity_Level
from business_objects.dog.distraction_type import Distraction_Type, Parameters_Distraction_Type
from business_objects.dog.lighting_level import Lighting_Level, Parameters_Lighting_Level
from business_objects.dog.location import Location, Parameters_Location
from business_objects.dog.obedience_level import Obedience_Level, Parameters_Obedience_Level
from business_objects.dog.response_quality_metric import Response_Quality_Metric, Parameters_Response_Quality_Metric
from business_objects.dog.user import User, Parameters_User
from business_objects.dog.weather import Weather, Parameters_Weather
from datastores.datastore_dog import DataStore_Dog
from datastores.datastore_user import DataStore_User
from models.model_view_dog_base import Model_View_Dog_Base
from forms.dog.assessment import Filters_Assessment
# from routes import bp_home
from helpers.helper_app import Helper_App
import lib.argument_validation as av
# external
from pydantic import BaseModel
from typing import ClassVar, Optional
from operator import attrgetter
class Model_View_Dog_Assessment(Model_View_Dog_Base):
FLAG_DISTANCE_FROM_HANDLER: ClassVar[str] = Assessment_Command_Modality_Link.FLAG_DISTANCE_FROM_HANDLER
FLAG_DISTRACTION_INTENSITY_LEVEL_EMOTIONAL: ClassVar[str] = Distraction.FLAG_DISTRACTION_INTENSITY_LEVEL_EMOTIONAL
FLAG_DISTRACTION_INTENSITY_LEVEL_SCENT: ClassVar[str] = Distraction.FLAG_DISTRACTION_INTENSITY_LEVEL_SCENT
FLAG_DISTRACTION_INTENSITY_LEVEL_SIGHT: ClassVar[str] = Distraction.FLAG_DISTRACTION_INTENSITY_LEVEL_SIGHT
FLAG_DISTRACTION_INTENSITY_LEVEL_SOUND: ClassVar[str] = Distraction.FLAG_DISTRACTION_INTENSITY_LEVEL_SOUND
FLAG_DISTRACTION_INTENSITY_LEVEL_TOUCH: ClassVar[str] = Distraction.FLAG_DISTRACTION_INTENSITY_LEVEL_TOUCH
FLAG_IS_IN_HEARING_RANGE_OF_HANDLER: ClassVar[str] = Assessment_Command_Modality_Link.FLAG_IS_IN_HEARING_RANGE_OF_HANDLER
FLAG_IS_IN_SCENT_RANGE_OF_HANDLER: ClassVar[str] = Assessment_Command_Modality_Link.FLAG_IS_IN_SCENT_RANGE_OF_HANDLER
FLAG_IS_IN_SIGHT_OF_HANDLER: ClassVar[str] = Assessment_Command_Modality_Link.FLAG_IS_IN_SIGHT_OF_HANDLER
FLAG_IS_ON_LEAD: ClassVar[str] = Assessment_Command_Modality_Link.FLAG_IS_ON_LEAD
FLAG_PROXIMITY_METRES: ClassVar[str] = Distraction.FLAG_PROXIMITY_METRES
FLAG_TEMPERATURE_CELCIUS: ClassVar[str] = Assessment.FLAG_TEMPERATURE_CELCIUS
FLAG_TRIAL_COUNT: ClassVar[str] = Assessment_Command_Modality_Link.FLAG_TRIAL_COUNT
FLAG_USER_HANDLER: ClassVar[str] = Assessment.FLAG_USER_HANDLER
FLAG_VALUE_MEASURED: ClassVar[str] = Assessment_Response.FLAG_VALUE_MEASURED
ID_FORM_ASSESSMENT: ClassVar[str] = 'form_assessment'
ID_FORM_ASSESSMENT_COMMAND_MODALITY_LINKS: ClassVar[str] = 'form_assessment_command_modality_links'
ID_FORM_DISTRACTIONS: ClassVar[str] = 'form_distractions'
ID_TABLE_ASSESSMENT: ClassVar[str] = 'table_assessment'
ID_TABLE_ASSESSMENT_COMMAND_MODALITY_LINKS: ClassVar[str] = 'table_assessment_command_modality_links'
ID_TABLE_ASSESSMENT_RESPONSES: ClassVar[str] = 'table_assessment_responses'
ID_TABLE_DISTRACTIONS: ClassVar[str] = 'table_distractions'
filter_bribes: list = None
filter_command_categories: list = None
filter_command_modalities: list = None
filter_commands: list = None
filter_distraction_intensity_levels: list = None
filter_distraction_types: list = None
filter_lighting_levels: list = None
filter_locations: list = None
filter_obedience_levels: list = None
filter_response_quality_metrics: list = None
filter_user_handlers: list = None
filter_weathers: list = None
assessments: list = None
form_filters: Filters_Assessment = None
form_filters_old: Filters_Assessment
id_assessment: Optional[int]
def __init__(self, form_filters_old, id_assessment = None, hash_page_current=Model_View_Dog_Base.HASH_PAGE_DOG_ASSESSMENTS):
_m = 'Model_View_Dog_Assessment.__init__'
Helper_App.console_log(f'{_m}\nstarting...')
super().__init__(hash_page_current=hash_page_current, form_filters_old=form_filters_old, id_assessment=id_assessment)
self._title = 'Assessments'
self.form_filters = form_filters_old
datastore_dog = DataStore_Dog()
datastore_user = DataStore_User()
# Assessments + filters
parameters_filter_lighting_level = Parameters_Lighting_Level.get_default()
self.filter_lighting_levels, errors = datastore_dog.get_many_lighting_level(parameters_filter_lighting_level)
if len(self.filter_lighting_levels) > 0:
self.form_filters.id_lighting_level.choices += [(str(lighting_level.id_lighting_level), lighting_level.name) for lighting_level in self.filter_lighting_levels]
parameters_filter_location = Parameters_Location.get_default()
self.filter_locations, errors = datastore_dog.get_many_location(parameters_filter_location)
if len(self.filter_locations) > 0:
self.form_filters.id_location.choices += [(str(location.id_location), location.name) for location in self.filter_locations]
parameters_filter_user = Parameters_User.get_default()
parameters_filter_user.id_user = self.user.id_user
parameters_filter_user.get_all_user = True
self.filter_user_handlers, errors = datastore_user.get_many_user(parameters_filter_user)
if len(self.filter_user_handlers) > 0:
self.form_filters.id_user_handler.choices += [(str(user.id_user), user.get_name()) for user in self.filter_user_handlers]
parameters_filter_weather = Parameters_Weather.get_default()
self.filter_weathers, errors = datastore_dog.get_many_weather(parameters_filter_weather)
if len(self.filter_weathers) > 0:
self.form_filters.id_weather.choices += [(str(weather.id_weather), weather.name) for weather in self.filter_weathers]
Helper_App.console_log(f'Form filters: {self.form_filters}')
parameters_filter_assessment = Parameters_Assessment.from_form_filters_assessment(self.form_filters)
if self.id_assessment is not None:
parameters_filter_assessment.ids_assessment = str(self.id_assessment)
Helper_App.console_log(f'Query args: {parameters_filter_assessment}')
self.assessments, errors = datastore_dog.get_many_assessment(parameters_filter_assessment)
# Distractions + filters
parameters_filter_distraction_type = Parameters_Distraction_Type.get_default()
self.filter_distraction_types, errors = datastore_dog.get_many_distraction_type(parameters_filter_distraction_type)
"""
if len(self.filter_distraction_types) > 0:
self.form_filters.id_distraction_type.choices += [(str(distraction_type.id_type), distraction_type.name) for distraction_type in self.filter_distraction_types]
"""
parameters_filter_distraction_intensity_level = Parameters_Distraction_Intensity_Level.get_default()
self.filter_distraction_intensity_levels, errors = datastore_dog.get_many_distraction_intensity_level(parameters_filter_distraction_intensity_level)
"""
if len(self.filter_distraction_intensity_levels) > 0:
self.form_filters.id_intensity_level.choices += [(str(distraction_intensity_level.id_intensity_level), distraction_intensity_level.name) for distraction_intensity_level in self.filter_distraction_intensity_levels]
"""
parameters_filter_distraction = Parameters_Distraction.from_form_filters_assessment(self.form_filters)
distractions, errors = datastore_dog.get_many_distraction(parameters_filter_distraction)
# Assessment Command Modality Links + filters
parameters_filter_command = Parameters_Command.get_default()
self.filter_command_categories, self.filter_commands, errors = datastore_dog.get_many_command(parameters_filter_command)
"""
if len(self.filter_command_categories) > 0:
self.form_filters.id_command_category.choices += [(str(command_category.id_command_category), command_category.name) for command_category in self.filter_command_categories]
if len(self.filter_commands) > 0:
Helper_App.console_log(f'filter commands: {self.filter_commands}')
sorted_filter_commands = self.filter_commands
sorted_filter_commands.sort(key = attrgetter('name'))
Helper_App.console_log(f'sorted filter commands: {sorted_filter_commands}')
self.form_filters.id_command.choices += [(str(command.id_command), command.name) for command in sorted_filter_commands] # .sort(key = lambda command: command[1])
"""
parameters_filter_command_modality = Parameters_Command_Modality.get_default()
self.filter_command_modalities, errors = datastore_dog.get_many_command_modality(parameters_filter_command_modality)
"""
if len(self.filter_command_modalities) > 0:
self.form_filters.id_command_modality.choices += [(str(command_modality.id_command_modality), command_modality.name) for command_modality in self.filter_command_modalities]
"""
parameters_filter_bribe = Parameters_Bribe.get_default()
self.filter_bribes, errors = datastore_dog.get_many_bribe(parameters_filter_bribe)
"""
if len(self.filter_bribes) > 0:
self.form_filters.id_bribe.choices += [(str(bribe.id_bribe), bribe.name) for bribe in self.filter_bribes]
"""
parameters_filter_assessment_command_modality_link = Parameters_Assessment_Command_Modality_Link.from_form_filters_assessment(self.form_filters)
assessment_command_modality_links, errors = datastore_dog.get_many_assessment_command_modality_link(parameters_filter_assessment_command_modality_link)
# Assessment Responses and filters
parameters_filter_response_quality_metric = Parameters_Response_Quality_Metric.get_default()
self.filter_response_quality_metrics, errors = datastore_dog.get_many_response_quality_metric(parameters_filter_response_quality_metric)
"""
if len(self.filter_response_quality_metrics) > 0:
self.form_filters.id_response_quality_metric.choices += [(str(response_quality_metric.id_response_quality_metric), response_quality_metric.name) for response_quality_metric in self.filter_response_quality_metrics]
"""
parameters_filter_obedience_level = Parameters_Obedience_Level.get_default()
self.filter_obedience_levels, errors = datastore_dog.get_many_obedience_level(parameters_filter_obedience_level)
"""
if len(self.filter_obedience_levels) > 0:
self.form_filters.id_obedience_level.choices += [(str(obedience_level.id_obedience_level), obedience_level.name) for obedience_level in self.filter_obedience_levels]
"""
parameters_filter_assessment_response = Parameters_Assessment_Response.from_form_filters_assessment(self.form_filters)
assessment_responses, errors = datastore_dog.get_many_assessment_response(parameters_filter_assessment_response)
for index_link in range(len(assessment_command_modality_links)):
link = assessment_command_modality_links[index_link]
link.assessment_responses = [response for response in assessment_responses if response.id_assessment_command_modality_link == link.id_link]
assessment_command_modality_links[index_link] = link
for index_assessment in range(len(self.assessments)):
assessment = self.assessments[index_assessment]
assessment.distractions = [distraction for distraction in distractions if distraction.id_assessment == assessment.id_assessment]
assessment.assessment_command_modality_links = [link for link in assessment_command_modality_links if link.id_assessment == assessment.id_assessment]
self.assessments[index_assessment] = assessment
Helper_App.console_log(f'Final assessments: {self.assessments}')
test_assessments = Model_View_Dog_Assessment.convert_list_objects_to_dict_json_by_attribute_key_default(self.assessments)
Helper_App.console_log(f'JSON assessments: {test_assessments}')

View File

@@ -37,23 +37,10 @@ class Model_View_Dog_Base(Model_View_Base):
# HASH_GET_STORE_CUSTOMER_SALES_ORDER: ClassVar[str] = '/store/customer_sales_order_get'
# HASH_GET_STORE_MANUFACTURING_PURCHASE_ORDER: ClassVar[str] = '/store/manufacturing_purchase_order_get'
@property
def title(self):
if self.hash_page_current == Model_View_Base.HASH_PAGE_DOG_HOME:
return 'Dog Home'
raise NotImplementedError('title must be implemented in child class')
def __init__(self, hash_page_current, **kwargs):
_m = 'Model_View_Dog_Base.__init__'
Helper_App.console_log(f'{_m}\nstarting')
super().__init__(hash_page_current=hash_page_current, **kwargs)
self.is_page_dog = True
"""
def get_many_dog(self, dog_filters):
_m = 'Model_View_Dog_Base.get_many_dog'
av.val_instance(dog_filters, 'dog_filters', _m, Parameters_Dog)
return DataStore_Dog().get_many_dog(dog_filters)
"""
if self.hash_page_current == Model_View_Base.HASH_PAGE_DOG_HOME:
self._title = 'Dog Home'

View File

@@ -27,15 +27,12 @@ class Model_View_Dog_Button_Icon(Model_View_Dog_Base):
button_icons: list = None
form_filters: Filters_Button_Icon = None
form_filters_old: Filters_Button_Icon
@property
def title(self):
return 'Button Icon'
def __init__(self, form_filters_old, hash_page_current=Model_View_Dog_Base.HASH_PAGE_DOG_BUTTON_ICONS):
_m = 'Model_View_Dog_Button_Icon.__init__'
Helper_App.console_log(f'{_m}\nstarting...')
super().__init__(hash_page_current=hash_page_current, form_filters_old=form_filters_old)
self._title = 'Button Icon'
self.form_filters = form_filters_old
datastore = DataStore_Dog()
@@ -43,11 +40,3 @@ class Model_View_Dog_Button_Icon(Model_View_Dog_Base):
parameters_filter_button_icon = Parameters_Button_Icon.from_form_filters_button_icon(self.form_filters)
Helper_App.console_log(f'Query args: {parameters_filter_button_icon}')
self.button_icons, errors = datastore.get_many_button_icon(parameters_filter_button_icon)
"""
@classmethod
def save_categories(cls, comment, list_categories):
_m = f'{cls.__name__}.save_categories'
return DataStore_Store_Product_Category().save_categories(comment, list_categories)
"""

View File

@@ -31,14 +31,11 @@ class Model_View_Dog_Command(Model_View_Dog_Base):
form_filters: Filters_Command = None
form_filters_old: Filters_Command
@property
def title(self):
return 'Command'
def __init__(self, form_filters_old, hash_page_current=Model_View_Dog_Base.HASH_PAGE_DOG_COMMANDS):
_m = 'Model_View_Dog_Command.__init__'
Helper_App.console_log(f'{_m}\nstarting...')
super().__init__(hash_page_current=hash_page_current, form_filters_old=form_filters_old)
self._title = 'Command'
self.form_filters = form_filters_old
datastore = DataStore_Dog()
@@ -50,11 +47,3 @@ class Model_View_Dog_Command(Model_View_Dog_Base):
parameters_filter_command = Parameters_Command.from_form_filters_command(self.form_filters)
Helper_App.console_log(f'Query args: {parameters_filter_command}')
command_categories, self.commands, errors = datastore.get_many_command(parameters_filter_command)
"""
@classmethod
def save_categories(cls, comment, list_categories):
_m = f'{cls.__name__}.save_categories'
return DataStore_Store_Product_Category().save_categories(comment, list_categories)
"""

View File

@@ -41,15 +41,12 @@ class Model_View_Dog_Command_Button_Link(Model_View_Dog_Base):
command_button_links: list = None
form_filters: Filters_Command_Button_Link = None
form_filters_old: Filters_Command_Button_Link
@property
def title(self):
return 'Command Button Link'
def __init__(self, form_filters_old, hash_page_current=Model_View_Dog_Base.HASH_PAGE_DOG_COMMAND_BUTTON_LINKS):
_m = 'Model_View_Dog_Command_Button_Link.__init__'
Helper_App.console_log(f'{_m}\nstarting...')
super().__init__(hash_page_current=hash_page_current, form_filters_old=form_filters_old)
self._title = 'Command Button Link'
self.form_filters = form_filters_old
datastore = DataStore_Dog()

View File

@@ -28,15 +28,12 @@ class Model_View_Dog_Command_Category(Model_View_Dog_Base):
command_categories: list = None
form_filters: Filters_Command_Category = None
form_filters_old: Filters_Command_Category
@property
def title(self):
return 'Command Category'
def __init__(self, form_filters_old, hash_page_current=Model_View_Dog_Base.HASH_PAGE_DOG_COMMAND_CATEGORIES):
_m = 'Model_View_Dog_Command_Category.__init__'
Helper_App.console_log(f'{_m}\nstarting...')
super().__init__(hash_page_current=hash_page_current, form_filters_old=form_filters_old)
self._title = 'Command Category'
self.form_filters = form_filters_old
datastore = DataStore_Dog()
@@ -45,10 +42,3 @@ class Model_View_Dog_Command_Category(Model_View_Dog_Base):
Helper_App.console_log(f'Query args: {parameters_filter_command}')
self.command_categories, commands, errors = datastore.get_many_command(parameters_filter_command)
"""
@classmethod
def save_categories(cls, comment, list_categories):
_m = f'{cls.__name__}.save_categories'
return DataStore_Store_Product_Category().save_categories(comment, list_categories)
"""

View File

@@ -35,15 +35,12 @@ class Model_View_Dog_Dog_Command_Link(Model_View_Dog_Base):
dog_command_links: list = None
form_filters: Filters_Dog_Command_Link = None
form_filters_old: Filters_Dog_Command_Link
@property
def title(self):
return 'Dog Command Link'
def __init__(self, form_filters_old, hash_page_current=Model_View_Dog_Base.HASH_PAGE_DOG_DOG_COMMAND_LINKS):
_m = 'Model_View_Dog_Dog_Command_Link.__init__'
Helper_App.console_log(f'{_m}\nstarting...')
super().__init__(hash_page_current=hash_page_current, form_filters_old=form_filters_old)
self._title = 'Dog Command Link'
self.form_filters = form_filters_old
datastore = DataStore_Dog()
parameters_filter_dog = Parameters_Dog.get_default()

View File

@@ -27,15 +27,12 @@ class Model_View_Dog_Location(Model_View_Dog_Base):
locations: list = None
form_filters: Filters_Location = None
form_filters_old: Filters_Location
@property
def title(self):
return 'Location'
def __init__(self, form_filters_old, hash_page_current=Model_View_Dog_Base.HASH_PAGE_DOG_LOCATIONS):
_m = 'Model_View_Dog_Location.__init__'
Helper_App.console_log(f'{_m}\nstarting...')
super().__init__(hash_page_current=hash_page_current, form_filters_old=form_filters_old)
self._title = 'Location'
self.form_filters = form_filters_old
datastore = DataStore_Dog()
@@ -44,10 +41,3 @@ class Model_View_Dog_Location(Model_View_Dog_Base):
Helper_App.console_log(f'Query args: {parameters_filter_location}')
self.locations, errors = datastore.get_many_location(parameters_filter_location)
"""
@classmethod
def save_categories(cls, comment, list_categories):
_m = f'{cls.__name__}.save_categories'
return DataStore_Store_Product_Category().save_categories(comment, list_categories)
"""

View File

@@ -16,9 +16,7 @@ from models.model_view_base import Model_View_Base
# external
class Model_View_Home(Model_View_Base):
@property
def title(self):
return 'Home'
def __init__(self, hash_page_current=Model_View_Base.HASH_PAGE_HOME):
super().__init__(hash_page_current=hash_page_current)
self._title = 'Home'

View File

@@ -16,9 +16,7 @@ from models.model_view_base import Model_View_Base
# external
class Model_View_License(Model_View_Base):
@property
def title(self):
return 'License'
def __init__(self, hash_page_current=Model_View_Base.HASH_PAGE_LICENSE):
super().__init__(hash_page_current=hash_page_current)
self._title = 'License'

View File

@@ -16,9 +16,7 @@ from models.model_view_base import Model_View_Base
# external
class Model_View_Privacy_Policy(Model_View_Base):
@property
def title(self):
return 'Privacy Policy'
def __init__(self, hash_page_current=Model_View_Base.HASH_PAGE_PRIVACY_POLICY):
super().__init__(hash_page_current=hash_page_current)
self._title = 'Privacy Policy'

View File

@@ -16,9 +16,7 @@ from models.model_view_base import Model_View_Base
# external
class Model_View_Retention_Schedule(Model_View_Base):
@property
def title(self):
return 'Retention Schedule'
def __init__(self, hash_page_current=Model_View_Base.HASH_PAGE_DATA_RETENTION_SCHEDULE):
super().__init__(hash_page_current=hash_page_current)
self._title = 'Retention Schedule'

View File

@@ -26,12 +26,10 @@ class Model_View_User(Model_View_Base):
currencies: list = None
regions: list = None
users: list = None
@property
def title(self):
return 'User'
def __init__(self, hash_page_current=Model_View_Base.HASH_PAGE_USER_ACCOUNT):
super().__init__(hash_page_current=hash_page_current, form_filters_old = None)
self._title = 'User'
datastore_user = DataStore_User()
self.currencies = datastore_user.get_many_currency()
self.regions = datastore_user.get_many_region()