Feat(SQL, UI): Logic for Get-Many SQL Stored Procedures refactored to use Calc Stored Procedures and Dog Command Links page styling improved.

This commit is contained in:
2025-07-01 21:21:51 +01:00
parent caeb13429a
commit 0d1e644e6c
102 changed files with 6971 additions and 1797 deletions

View File

@@ -20,8 +20,11 @@ Base data model for views
from dog_training.business_objects.base import Base
from dog_training.business_objects.dog.user import User
from dog_training.business_objects.dog.command import Command
from dog_training.business_objects.dog.dog import Dog
from dog_training.business_objects.dog.dog_command_link import Dog_Command_Link
from dog_training.datastores.datastore_base import DataStore_Base
from dog_training.datastores.datastore_dog import DataStore_Dog
from dog_training.datastores.datastore_user import DataStore_User
from dog_training.helpers.helper_app import Helper_App
import dog_training.lib.argument_validation as av
# external
@@ -33,10 +36,24 @@ from typing import ClassVar
class Model_View_Base(BaseModel, ABC):
ATTR_ID_COMMAND: ClassVar[str] = Command.ATTR_ID_COMMAND
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_TEXT_COLLAPSED: ClassVar[str] = 'textCollapsed'
ATTR_TEXT_EXPANDED: ClassVar[str] = 'textExpanded'
ATTR_VALUE_CURRENT: ClassVar[str] = 'current-value'
ATTR_VALUE_PREVIOUS: ClassVar[str] = 'previous-value'
COLOUR_ACCENT: ClassVar[str] = '#C77DFF'
COLOUR_ERROR: ClassVar[str] = 'red'
COLOUR_PAGE_BACKGROUND: ClassVar[str] = '#E0AAFF'
COLOUR_PAGE_BACKGROUND_1: ClassVar[str] = '#F5ECFE'
COLOUR_PAGE_BACKGROUND_2: ClassVar[str] = '#FAE0E2'
COLOUR_PRIMARY: ClassVar[str] = '#240046'
COLOUR_SECONDARY: ClassVar[str] = '#3C096C'
COLOUR_TEXT: ClassVar[str] = '#10002B'
COLOUR_TEXT_BACKGROUND: ClassVar[str] = 'white'
COLOUR_TEXT_LINK_UNVISITED: ClassVar[str] = '#0000EE'
COLOUR_TEXT_LINK_VISITED: ClassVar[str] = '#551A8B'
COMPANY_ADDRESS_SHORT: ClassVar[str] = '53 Alfred Green Close, Rugby, United Kingdom, CV22 6DN'
COMPANY_NUMBER: ClassVar[str] = '13587499'
ENDPOINT_GET_ALTCHA_CHALLENGE: ClassVar[str] = 'routes_core_contact.create_altcha_challenge'
@@ -66,6 +83,7 @@ class Model_View_Base(BaseModel, ABC):
FLAG_CODE: ClassVar[str] = Base.FLAG_CODE
FLAG_COLLAPSED: ClassVar[str] = 'collapsed'
FLAG_COLLAPSIBLE: ClassVar[str] = 'collapsible'
FLAG_COMMAND: ClassVar[str] = Command.FLAG_COMMAND
FLAG_COLUMN: ClassVar[str] = 'column'
FLAG_COMMENT: ClassVar[str] = 'comment'
FLAG_CONTAINER: ClassVar[str] = 'container'
@@ -82,6 +100,8 @@ class Model_View_Base(BaseModel, ABC):
FLAG_DIALOG: ClassVar[str] = 'dialog'
FLAG_DIRTY: ClassVar[str] = 'dirty'
FLAG_DISPLAY_ORDER: ClassVar[str] = Base.FLAG_DISPLAY_ORDER
FLAG_DOG: ClassVar[str] = Dog.FLAG_DOG
FLAG_DOG_COMMAND_LINK: ClassVar[str] = Dog_Command_Link.FLAG_DOG_COMMAND_LINK
FLAG_EDIT: ClassVar[str] = 'edit'
FLAG_EMAIL: ClassVar[str] = Base.FLAG_EMAIL
FLAG_ERROR: ClassVar[str] = 'error'
@@ -91,6 +111,7 @@ class Model_View_Base(BaseModel, ABC):
FLAG_FORM: ClassVar[str] = 'form'
FLAG_FORM_FILTERS: ClassVar[str] = 'form-filters'
FLAG_HAMBURGER: ClassVar[str] = 'hamburger'
FLAG_ICON: ClassVar[str] = "icon"
FLAG_IMAGE_LOGO: ClassVar[str] = 'image-logo'
FLAG_INITIALISED: ClassVar[str] = 'initialised'
FLAG_LEFT_HAND_STUB: ClassVar[str] = 'lhs'
@@ -102,16 +123,19 @@ class Model_View_Base(BaseModel, ABC):
FLAG_NAME_ATTR_OPTION_VALUE: ClassVar[str] = Base.FLAG_NAME_ATTR_OPTION_VALUE
FLAG_NAME_PLURAL: ClassVar[str] = Base.FLAG_NAME_PLURAL
# FLAG_NAME_SINGULAR: ClassVar[str] = Base.FLAG_NAME_SINGULAR
FLAG_SEARCH_TEXT: ClassVar[str] = Base.FLAG_SEARCH_TEXT
FLAG_NAV_ADMIN_HOME: ClassVar[str] = 'navAdminHome'
FLAG_NAV_CONTACT: ClassVar[str] = 'navContact'
FLAG_NAV_DOG_COMMAND: ClassVar[str] = 'navDogCommand'
FLAG_NAV_DOG_DOG: ClassVar[str] = 'navDogDog'
FLAG_NAV_DOG_DOG_COMMAND_LINK: ClassVar[str] = 'navDogDogCommandLink'
FLAG_NAV_DOG_COMMANDS: ClassVar[str] = 'navDogCommands'
FLAG_NAV_DOG_DOGS: ClassVar[str] = 'navDogDogs'
FLAG_NAV_DOG_DOG_COMMAND_LINKS: ClassVar[str] = 'navDogDogCommandLinks'
FLAG_NAV_DOG_HOME: ClassVar[str] = 'navDogHome'
FLAG_NAV_HOME: ClassVar[str] = 'navHome'
FLAG_NAV_USER_ACCOUNT: ClassVar[str] = 'navUserAccount'
FLAG_NAV_USER_ADMIN: ClassVar[str] = 'navUserAdmin'
FLAG_NAV_USER_LOGIN: ClassVar[str] = 'navUserLogin'
FLAG_NAV_USER_LOGOUT: ClassVar[str] = 'navUserLogout'
FLAG_NOTES: ClassVar[str] = "notes"
FLAG_OVERLAY: ClassVar[str] = 'overlay'
FLAG_PAGE_BODY: ClassVar[str] = 'page-body'
FLAG_RIGHT_HAND_SIDE: ClassVar[str] = 'rhs'
@@ -128,12 +152,17 @@ class Model_View_Base(BaseModel, ABC):
FLAG_USER: ClassVar[str] = User.FLAG_USER
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'
HASH_PAGE_ACCESSIBILITY_REPORT: ClassVar[str] = '/accessibility-report'
HASH_PAGE_ACCESSIBILITY_STATEMENT: ClassVar[str] = '/accessibility-statement'
HASH_PAGE_ADMIN_HOME: ClassVar[str] = '/admin'
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_COMMANDS: ClassVar[str] = '/dog/commands'
HASH_PAGE_DOG_DOG_COMMAND_LINKS: ClassVar[str] = '/dog/dog_command_links'
HASH_PAGE_DOG_DOGS: ClassVar[str] = '/dog/dogs'
HASH_PAGE_DOG_HOME: ClassVar[str] = '/dog/home'
HASH_PAGE_ERROR_NO_PERMISSION: ClassVar[str] = '/error'
HASH_PAGE_HOME: ClassVar[str] = '/'
HASH_PAGE_LICENSE: ClassVar[str] = '/license'
@@ -165,7 +194,7 @@ class Model_View_Base(BaseModel, ABC):
hash_page_current: str
app: Flask = None
session: None = None
is_page_store: bool = None
is_page_dog: bool = None
is_user_logged_in: bool = None
user: User = None
access_levels: list = None
@@ -182,7 +211,7 @@ class Model_View_Base(BaseModel, ABC):
self.app = current_app
with self.app.app_context():
self.session = session
self.is_page_store = False
self.is_page_dog = False
Helper_App.console_log(f'session: {self.session}')
datastore_base = DataStore_Base()