Feat(SQL, UI): 1. Dog Command Links page completed with get + set functionality. \n 2. Commands page and Command Categories page completed with get + set functionality.

This commit is contained in:
2025-07-09 17:42:43 +01:00
parent 660b15cb8f
commit 28158cb0c4
68 changed files with 3302 additions and 3926 deletions

View File

@@ -13,6 +13,8 @@ from dog_training.business_objects.dog.command_category import Command_Category
from dog_training.business_objects.db_base import SQLAlchemy_ABC, Get_Many_Parameters_Base
import dog_training.lib.argument_validation as av
from dog_training.extensions import db
from dog_training.forms.dog.command import Filters_Command
from dog_training.forms.dog.command_category import Filters_Command_Category
from dog_training.helpers.helper_app import Helper_App
# external
from dataclasses import dataclass
@@ -59,6 +61,7 @@ class Command(SQLAlchemy_ABC, Base):
command.notes = query_row[5]
command.active = av.input_bool(query_row[6], 'active', _m)
# command.created_on = query_row[7]
# command.command_category = Command_Category.from_db_command(query_row)
return command
@classmethod
@@ -74,7 +77,7 @@ class Command(SQLAlchemy_ABC, Base):
# command.notes = query_row[4]
command.active = True # av.input_bool(True, 'active', _m)
# command.created_on = query_row[7]
command.command_category = Command_Category.from_db_dog_command_link(query_row)
command.command_category = Command_Category.from_db_dog_command_link(query_row) # this is done in datastore get many method using category dictionary
return command
@classmethod
@@ -84,7 +87,7 @@ class Command(SQLAlchemy_ABC, Base):
if json is None: return command
# Helper_App.console_log(f'{_m}\njson: {json}')
command.id_command = -1
command.id_command_category = json[Command_Category.FLAG_COMMAND_CATEGORY]
command.id_command_category = json[Command_Category.ATTR_ID_COMMAND_CATEGORY]
command.name = json[cls.FLAG_NAME]
command.hand_signal_default_description = json[cls.FLAG_HAND_SIGNAL_DEFAULT_DESCRIPTION]
command.can_have_button = json[cls.FLAG_CAN_HAVE_BUTTON]
@@ -141,8 +144,8 @@ class Command_Temp(db.Model, Base):
super().__init__()
@classmethod
def from_Command(cls, command):
_m = 'Command_Temp.from_Command'
def from_command(cls, command):
_m = 'Command_Temp.from_command'
temp = cls()
temp.id_command = command.id_command
temp.id_command_category = command.id_command_category
@@ -215,25 +218,38 @@ class Parameters_Command(Get_Many_Parameters_Base):
, output_commands = json.get('a_output_commands', False)
)
"""
@classmethod
def from_form_filters_dog_command_link(cls, form):
av.val_instance(form, 'form', 'Parameters_Command.from_form_filters_dog_command_link', Filters_Dog_Command_Link)
def from_form_filters_command(cls, form):
av.val_instance(form, 'form', 'Parameters_Command.from_form_filters_command', Filters_Command)
has_filter_search_text = not (form.search.data == '' or form.search.data is None)
has_filter_command_category = not (has_filter_search_text or form.id_command_category.data == '0' or form.id_command_category.data == '' or form.id_command_category.data is None)
has_filter_command = not (has_filter_search_text or form.id_command.data == '0' or form.id_command.data == '' or form.id_command.data is None)
active_only = av.input_bool(form.active_only.data, "active", "Parameters_Command.from_form_filters_dog_command_link")
return cls(
get_all_command_category = not has_filter_command_category
, get_inactive_command_category = not active_only
, ids_command_category = form.id_command_category.data if has_filter_command_category else ''
, names_command_category = form.search_text.data if has_filter_search_text else ''
, get_all_command = not has_filter_command
, get_inactive_command = not active_only
, ids_command = form.id_command.data if has_filter_command else ''
, names_command = form.search_text.data if has_filter_search_text else ''
)
"""
active_only = av.input_bool(form.active_only.data, "active", "Parameters_Command.from_form_filters_command")
filters = cls.get_default()
filters.get_all_command_category = not has_filter_command_category
filters.get_inactive_command_category = not active_only
filters.ids_command_category = form.id_command_category.data if has_filter_command_category else ''
filters.names_command_category = form.search_text.data if has_filter_search_text else ''
filters.get_all_command = True
filters.get_inactive_command = not active_only
filters.ids_command = ''
filters.names_command = form.search_text.data if has_filter_search_text else ''
return filters
@classmethod
def from_form_filters_command_category(cls, form):
av.val_instance(form, 'form', 'Parameters_Command.from_form_filters_command_category', Filters_Command_Category)
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.from_form_filters_command")
filters = cls.get_default()
filters.get_all_command_category = True
filters.get_inactive_command_category = not active_only
filters.ids_command_category = ''
filters.names_command_category = form.search_text.data if has_filter_search_text else ''
filters.get_all_command = True
filters.get_inactive_command = not active_only
filters.ids_command = ''
filters.names_command = form.search_text.data if has_filter_search_text else ''
return filters
def to_json(self):
return {