Feat(SQL, UI): 1. Perfected architecture for modular Search functionality across heirarchical Get Many and Calc Stored Procedures that allows text search filtering on different fields as well as by record Id with control over how the filters are applied. \n 2. Updated User Calc and Get Many Stored Procedures with new Search functionality. \n 3. Improved styles on Dog Command Link page.

This commit is contained in:
2025-07-05 23:17:07 +01:00
parent 0d1e644e6c
commit 8cb8508dcd
51 changed files with 4161 additions and 1292 deletions

View File

@@ -39,6 +39,7 @@ class User(SQLAlchemy_ABC, Base):
self.id_user = 0
self.is_new = False
self.can_admin_dog = False
self.can_admin_user = False
super().__init__()
def from_DB_user(query_row):
@@ -50,10 +51,10 @@ class User(SQLAlchemy_ABC, Base):
user.surname = query_row[3]
user.email = query_row[4]
user.is_email_verified = av.input_bool(query_row[5], 'is_email_verified', _m)
user.is_super_user = av.input_bool(query_row[9], 'is_super_user', _m)
user.is_new = av.input_bool(query_row[12], 'is_new', _m)
user.can_admin_dog = user.is_super_user
user.is_super_user = av.input_bool(query_row[6], 'is_super_user', _m)
user.can_admin_dog = av.input_bool(query_row[7], 'can_admin_dog', _m)
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
@staticmethod
@@ -133,9 +134,6 @@ class User_Temp(db.Model, Base):
email = db.Column(db.String(250))
is_email_verified = db.Column(db.Boolean)
is_super_user = db.Column(db.Boolean)
id_currency_default = db.Column(db.Integer)
id_region_default = db.Column(db.Integer)
is_included_VAT_default = db.Column(db.Boolean)
# is_logged_in: bool
def __init__(self):
@@ -150,36 +148,51 @@ class Parameters_User(Get_Many_Parameters_Base):
get_inactive_user: bool
ids_user: str
ids_user_auth0: str
names_user: 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
@staticmethod
def from_form(form):
@classmethod
def from_form(cls, form):
av.val_instance(form, 'form', 'Parameters_User.from_form', Form_Filters_User)
get_inactive = av.input_bool(form.active.data, "active", "Parameters_User.from_form")
id_user = '' if form.id_user.data is None else form.id_user.data
return Parameters_User(
get_all_user = (id_user == ''),
get_inactive_user = get_inactive,
ids_user = id_user,
ids_user_auth0 = '',
)
filters = cls.get_default()
filters.get_all_user = (id_user == '')
filters.get_inactive_user = get_inactive
filters.ids_user = id_user
filters.ids_user_auth0 = ''
filters.require_all_id_search_filters_met = True
filters.require_any_id_search_filters_met = True
filters.require_all_non_id_search_filters_met = False
filters.require_any_non_id_search_filters_met = True
return filters
@staticmethod
def from_user(user):
@classmethod
def from_user(cls, user):
av.val_instance(user, 'user', 'Parameters_User.from_user', User)
return Parameters_User(
get_all_user = ((user.id_user is None or user.id_user == 0) and user.id_user_auth0 is None),
get_inactive_user = False,
ids_user = '' if user.id_user is None else str(user.id_user),
ids_user_auth0 = user.id_user_auth0,
)
filters = cls.get_default()
filters.get_all_user = ((user.id_user is None or user.id_user == 0) and user.id_user_auth0 is None)
filters.get_inactive_user = False
filters.ids_user = '' if user.id_user is None else str(user.id_user)
filters.ids_user_auth0 = user.id_user_auth0
return filters
@staticmethod
def get_default():
return Parameters_User(
get_all_user = False,
get_inactive_user = False,
ids_user = '',
ids_user_auth0 = ''
@classmethod
def get_default(cls):
return cls(
get_all_user = False
, get_inactive_user = False
, ids_user = ''
, ids_user_auth0 = ''
, names_user = ''
, 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
@@ -191,6 +204,11 @@ class Parameters_User(Get_Many_Parameters_Base):
, 'a_get_inactive_user': self.get_inactive_user
, 'a_ids_user': self.ids_user
, 'a_ids_user_auth0': self.ids_user_auth0
, 'a_names_user': self.names_user
, '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
}
class User_Permission_Evaluation(db.Model):