Feat(SQL, UI): 1. Updated User Calc Stored Procedure with Search functionality from previous commit on Command and Dog tables. \n 2. Corrected functionality of active field trash and add icons instead of button with replaceable text. \n 3. Improved styling on Dog Command Link page.

This commit is contained in:
2025-07-06 20:50:35 +01:00
parent 8cb8508dcd
commit 660b15cb8f
28 changed files with 1279 additions and 562 deletions

View File

@@ -144,11 +144,14 @@ class User_Temp(db.Model, Base):
class Parameters_User(Get_Many_Parameters_Base): class Parameters_User(Get_Many_Parameters_Base):
id_user: int
auth0_id_user: str
get_all_user: bool get_all_user: bool
get_inactive_user: bool get_inactive_user: bool
ids_user: str ids_user: str
ids_user_auth0: str ids_user_auth0: str
names_user: str names_user: str
emails_user: str
require_all_id_search_filters_met: bool require_all_id_search_filters_met: bool
require_any_id_search_filters_met: bool require_any_id_search_filters_met: bool
require_all_non_id_search_filters_met: bool require_all_non_id_search_filters_met: bool
@@ -179,16 +182,21 @@ class Parameters_User(Get_Many_Parameters_Base):
filters.get_inactive_user = False filters.get_inactive_user = False
filters.ids_user = '' if user.id_user is None else str(user.id_user) filters.ids_user = '' if user.id_user is None else str(user.id_user)
filters.ids_user_auth0 = user.id_user_auth0 filters.ids_user_auth0 = user.id_user_auth0
filters.names_user = user.firstname + ' ' + user.surname
filters.emails_user = user.email
return filters return filters
@classmethod @classmethod
def get_default(cls): def get_default(cls):
return cls( return cls(
get_all_user = False id_user = None
, auth0_id_user = ''
, get_all_user = False
, get_inactive_user = False , get_inactive_user = False
, ids_user = '' , ids_user = ''
, ids_user_auth0 = '' , ids_user_auth0 = ''
, names_user = '' , names_user = ''
, emails_user = ''
, require_all_id_search_filters_met = True , require_all_id_search_filters_met = True
, require_any_id_search_filters_met = True , require_any_id_search_filters_met = True
, require_all_non_id_search_filters_met = False , require_all_non_id_search_filters_met = False
@@ -200,11 +208,14 @@ class Parameters_User(Get_Many_Parameters_Base):
pass pass
def to_json(self): def to_json(self):
return { return {
'a_get_all_user': self.get_all_user 'a_id_user': self.id_user
, 'a_auth0_id_user': self.auth0_id_user
, 'a_get_all_user': self.get_all_user
, 'a_get_inactive_user': self.get_inactive_user , 'a_get_inactive_user': self.get_inactive_user
, 'a_ids_user': self.ids_user , 'a_ids_user': self.ids_user
, 'a_ids_user_auth0': self.ids_user_auth0 , 'a_ids_user_auth0': self.ids_user_auth0
, 'a_names_user': self.names_user , 'a_names_user': self.names_user
, 'a_emails_user': self.emails_user
, 'a_require_all_id_search_filters_met': self.require_all_id_search_filters_met , '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_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_all_non_id_search_filters_met': self.require_all_non_id_search_filters_met

View File

@@ -80,10 +80,10 @@ class DataStore_User(DataStore_Base):
if user is None: if user is None:
user = self.get_user_session() user = self.get_user_session()
Helper_App.console_log(f'user: {user}') Helper_App.console_log(f'user: {user}')
user_filters.id_user = user.id_user
user_filters.auth0_id_user = user.id_user_auth0
argument_dict_list = { argument_dict_list = {
'a_id_user': user.id_user **user_filters.to_json()
, 'a_id_user_auth0': user.id_user_auth0
, **user_filters.to_json()
, 'a_debug': 0 , 'a_debug': 0
} }

View File

@@ -180,6 +180,7 @@ class Model_View_Base(BaseModel, ABC):
ID_BUTTON_CANCEL: ClassVar[str] = 'buttonCancel' ID_BUTTON_CANCEL: ClassVar[str] = 'buttonCancel'
ID_BUTTON_HAMBURGER: ClassVar[str] = 'buttonHamburger' ID_BUTTON_HAMBURGER: ClassVar[str] = 'buttonHamburger'
ID_BUTTON_SAVE: ClassVar[str] = 'buttonSave' ID_BUTTON_SAVE: ClassVar[str] = 'buttonSave'
ID_CONTAINER_TEMPLATE_ELEMENTS: ClassVar[str] = 'container-template-elements'
ID_CSRF_TOKEN: ClassVar[str] = 'X-CSRFToken' ID_CSRF_TOKEN: ClassVar[str] = 'X-CSRFToken'
ID_FORM_CONTACT: ClassVar[str] = 'formContact' ID_FORM_CONTACT: ClassVar[str] = 'formContact'
ID_FORM_FILTERS: ClassVar[str] = 'formFilters' ID_FORM_FILTERS: ClassVar[str] = 'formFilters'

View File

@@ -8,12 +8,13 @@ DROP PROCEDURE IF EXISTS p_dog_get_many_user;
DELIMITER // DELIMITER //
CREATE PROCEDURE p_dog_get_many_user ( CREATE PROCEDURE p_dog_get_many_user (
IN a_id_user INT IN a_id_user INT
, IN a_id_user_auth0 VARCHAR(200) , IN a_auth0_id_user VARCHAR(200)
, IN a_get_all_user BIT , IN a_get_all_user BIT
, IN a_get_inactive_user BIT , IN a_get_inactive_user BIT
, IN a_ids_user TEXT , IN a_ids_user TEXT
, IN a_ids_user_auth0 TEXT , IN a_auth0_ids_user TEXT
, IN a_names_user TEXT , IN a_names_user TEXT
, IN a_emails_user TEXT
, IN a_require_all_id_search_filters_met BIT , IN a_require_all_id_search_filters_met BIT
, IN a_require_any_id_search_filters_met BIT , IN a_require_any_id_search_filters_met BIT
, IN a_require_all_non_id_search_filters_met BIT , IN a_require_all_non_id_search_filters_met BIT
@@ -34,6 +35,7 @@ BEGIN
DECLARE v_id_permission_user_admin INT; DECLARE v_id_permission_user_admin INT;
DECLARE v_id_type_error_bad_data INT; DECLARE v_id_type_error_bad_data INT;
DECLARE v_ids_permission_required VARCHAR(4000); DECLARE v_ids_permission_required VARCHAR(4000);
DECLARE v_ids_user TEXT;
DECLARE v_is_new BIT; DECLARE v_is_new BIT;
DECLARE v_rank_max INT; DECLARE v_rank_max INT;
DECLARE v_time_start TIMESTAMP(6); DECLARE v_time_start TIMESTAMP(6);
@@ -100,8 +102,9 @@ BEGIN
SET a_get_all_user := IFNULL(a_get_all_user, 1); SET a_get_all_user := IFNULL(a_get_all_user, 1);
SET a_get_inactive_user := IFNULL(a_get_inactive_user, 0); SET a_get_inactive_user := IFNULL(a_get_inactive_user, 0);
SET a_ids_user := TRIM(IFNULL(a_ids_user, '')); SET a_ids_user := TRIM(IFNULL(a_ids_user, ''));
SET a_ids_user_auth0 := TRIM(IFNULL(a_ids_user_auth0, '')); SET a_auth0_ids_user := TRIM(IFNULL(a_auth0_ids_user, ''));
SET a_names_user := TRIM(IFNULL(a_names_user, '')); SET a_names_user := TRIM(IFNULL(a_names_user, ''));
SET a_emails_user := TRIM(IFNULL(a_emails_user, ''));
SET a_require_all_id_search_filters_met := IFNULL(a_require_all_id_search_filters_met, 1); SET a_require_all_id_search_filters_met := IFNULL(a_require_all_id_search_filters_met, 1);
SET a_require_any_id_search_filters_met := IFNULL(a_require_any_id_search_filters_met, 1); SET a_require_any_id_search_filters_met := IFNULL(a_require_any_id_search_filters_met, 1);
SET a_require_all_non_id_search_filters_met := IFNULL(a_require_all_non_id_search_filters_met, 0); SET a_require_all_non_id_search_filters_met := IFNULL(a_require_all_non_id_search_filters_met, 0);
@@ -111,12 +114,13 @@ BEGIN
IF a_debug = 1 THEN IF a_debug = 1 THEN
SELECT SELECT
a_id_user a_id_user
, a_id_user_auth0 , a_auth0_id_user
, a_get_all_user , a_get_all_user
, a_get_inactive_user , a_get_inactive_user
, a_ids_user , a_ids_user
, a_ids_user_auth0 , a_auth0_ids_user
, a_names_user , a_names_user
, a_emails_user
, a_require_all_id_search_filters_met , a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met , a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met , a_require_all_non_id_search_filters_met
@@ -125,18 +129,36 @@ BEGIN
; ;
END IF; END IF;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Name;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Auth0_Id;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Id;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error; DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
DROP TEMPORARY TABLE IF EXISTS tmp_User_Access;
DROP TEMPORARY TABLE IF EXISTS tmp_User; DROP TEMPORARY TABLE IF EXISTS tmp_User;
CREATE TEMPORARY TABLE tmp_User ( CREATE TEMPORARY TABLE tmp_User (
id_user INT NULL id_row INT PRIMARY KEY AUTO_INCREMENT NOT NULL
, can_admin_dog BIT NULL , id_user INT
, can_admin_user BIT NULL , id_permission_required INT NOT NULL
, does_meet_id_filters BIT , priority_access_level_required INT NOT NULL
, does_meet_non_id_filters BIT , is_super_user BIT
, priority_access_level_user INT
, has_access BIT
, can_view BIT
, can_edit BIT
, can_admin BIT
, can_admin_dog BIT
, can_admin_user BIT
);
CREATE TEMPORARY TABLE tmp_User_Access (
id_row INT PRIMARY KEY AUTO_INCREMENT NOT NULL
, id_user INT
, id_permission_required INT NOT NULL
, priority_access_level_required INT NOT NULL
, is_super_user BIT
, priority_access_level_user INT
, has_access BIT
, can_view BIT
, can_edit BIT
, can_admin BIT
); );
CREATE TEMPORARY TABLE tmp_Msg_Error ( CREATE TEMPORARY TABLE tmp_Msg_Error (
@@ -145,7 +167,7 @@ BEGIN
, code VARCHAR(100) NOT NULL , code VARCHAR(100) NOT NULL
, msg TEXT NOT NULL , msg TEXT NOT NULL
); );
/*
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split_Id ( CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split_Id (
substring VARCHAR(4000) NOT NULL substring VARCHAR(4000) NOT NULL
, as_int INT NULL , as_int INT NULL
@@ -163,14 +185,13 @@ BEGIN
, as_int INT NULL , as_int INT NULL
); );
DELETE FROM tmp_Split_Name; DELETE FROM tmp_Split_Name;
IF ISNULL(a_id_user) AND NOT ISNULL(a_auth0_id_user) THEN
IF ISNULL(a_id_user) AND NOT ISNULL(a_id_user_auth0) THEN SET a_id_user := (SELECT U.id_user FROM demo.DOG_User U WHERE U.id_user_auth0 = a_auth0_id_user LIMIT 1);
SET a_id_user := (SELECT U.id_user FROM demo.DOG_User U WHERE U.id_user_auth0 = a_id_user_auth0 LIMIT 1);
END IF; END IF;
IF IF
ISNULL(a_id_user) ISNULL(a_id_user)
AND ISNULL(a_id_user_auth0) AND ISNULL(a_auth0_id_user)
THEN THEN
INSERT INTO tmp_Msg_Error ( INSERT INTO tmp_Msg_Error (
id_type id_type
@@ -186,7 +207,7 @@ BEGIN
END IF; END IF;
SET v_has_filter_user_id := CASE WHEN a_ids_user = '' THEN 0 ELSE 1 END; SET v_has_filter_user_id := CASE WHEN a_ids_user = '' THEN 0 ELSE 1 END;
SET v_has_filter_user_auth0_id := CASE WHEN a_ids_user_auth0 = '' THEN 0 ELSE 1 END; SET v_has_filter_user_auth0_id := CASE WHEN a_auth0_ids_user = '' THEN 0 ELSE 1 END;
SET v_has_filter_user_name := CASE WHEN a_names_user = '' THEN 0 ELSE 1 END; SET v_has_filter_user_name := CASE WHEN a_names_user = '' THEN 0 ELSE 1 END;
IF a_debug = 1 THEN IF a_debug = 1 THEN
@@ -248,7 +269,7 @@ BEGIN
-- Auth0 User IDs -- Auth0 User IDs
IF v_has_filter_user_auth0_id = 1 THEN IF v_has_filter_user_auth0_id = 1 THEN
CALL demo.p_core_split(v_guid, a_ids_user_auth0, ',', FALSE); CALL demo.p_core_split(v_guid, a_auth0_ids_user, ',', FALSE);
INSERT INTO tmp_Split_Auth0_Id ( INSERT INTO tmp_Split_Auth0_Id (
substring substring
@@ -446,14 +467,25 @@ BEGIN
SELECT * FROM tmp_User; SELECT * FROM tmp_User;
END IF; END IF;
*/
-- Calculated fields -- Calculated fields
-- Can admin dog -- Can admin dog
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN demo.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN demo.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN IF a_debug = 1 THEN
SELECT SELECT
v_guid -- guid v_guid -- guid
, a_id_user -- ids_user , a_get_all_user -- get_all_user
, FALSE -- get_inactive_user , a_get_inactive_user -- get_inactive_user
, a_ids_user -- ids_user
, a_auth0_ids_user -- a_auth0_ids_user
, a_names_user -- a_names_user
, a_emails_user -- a_emails_user
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_admin -- ids_permission , v_id_permission_dog_admin -- ids_permission
, v_id_access_level_admin -- ids_access_level , v_id_access_level_admin -- ids_access_level
, 0 -- a_show_errors , 0 -- a_show_errors
@@ -463,26 +495,54 @@ BEGIN
END IF; END IF;
CALL demo.p_dog_calc_user( CALL demo.p_dog_calc_user(
v_guid -- guid v_guid -- guid
, a_id_user -- ids_user , a_get_all_user -- get_all_user
, FALSE -- get_inactive_user , a_get_inactive_user -- get_inactive_user
, a_ids_user -- ids_user
, a_auth0_ids_user -- a_auth0_ids_user
, a_names_user -- a_names_user
, a_emails_user -- a_emails_user
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_admin -- ids_permission , v_id_permission_dog_admin -- ids_permission
, v_id_access_level_admin -- ids_access_level , v_id_access_level_admin -- ids_access_level
, 0 -- a_show_errors , 0 -- a_show_errors
, 0 -- a_debug , 0 -- a_debug
); );
IF a_debug = 1 THEN INSERT INTO tmp_User (
SELECT * FROM demo.DOG_Calc_User_Temp WHERE GUID = v_guid; id_user
END IF; , id_permission_required
, priority_access_level_required
UPDATE tmp_User t_U , is_super_user
INNER JOIN demo.DOG_Calc_User_Temp CUT , priority_access_level_user
ON CUT.GUID = v_guid , has_access
AND t_U.id_user = CUT.id_user , can_view
SET t_U.can_admin_dog = CUT.can_admin , can_edit
, can_admin
, can_admin_dog
)
SELECT
CALC_USER_T.id_user
, CALC_USER_T.id_permission_required
, CALC_USER_T.priority_access_level_required
, CALC_USER_T.is_super_user
, CALC_USER_T.priority_access_level_user
, CALC_USER_T.has_access
, CALC_USER_T.can_view
, CALC_USER_T.can_edit
, CALC_USER_T.can_admin
, CALC_USER_T.can_admin AS can_admin_dog
FROM demo.DOG_Calc_User_Temp CALC_USER_T
WHERE CALC_USER_T.guid = v_guid
; ;
IF a_debug = 1 THEN
SELECT * FROM tmp_User;
END IF;
CALL demo.p_dog_clear_calc_user( v_guid, FALSE ); CALL demo.p_dog_clear_calc_user( v_guid, FALSE );
END IF; END IF;
@@ -490,11 +550,19 @@ BEGIN
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN demo.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN demo.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN IF a_debug = 1 THEN
SELECT SELECT
v_guid -- guid v_guid -- guid
, a_id_user -- ids_user , a_get_all_user -- get_all_user
, FALSE -- get_inactive_user , a_get_inactive_user -- get_inactive_user
, v_id_permission_user_admin -- ids_permission , a_ids_user -- ids_user
, v_id_access_level_admin -- ids_access_level , a_auth0_ids_user -- a_auth0_ids_user
, a_names_user -- a_names_user
, a_emails_user -- a_emails_user
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_admin -- ids_permission
, v_id_access_level_admin -- ids_access_level
, 0 -- a_show_errors , 0 -- a_show_errors
, 0 -- a_debug , 0 -- a_debug
; ;
@@ -502,26 +570,34 @@ BEGIN
END IF; END IF;
CALL demo.p_dog_calc_user( CALL demo.p_dog_calc_user(
v_guid -- guid v_guid -- guid
, a_id_user -- ids_user , a_get_all_user -- get_all_user
, FALSE -- get_inactive_user , a_get_inactive_user -- get_inactive_user
, a_ids_user -- ids_user
, a_auth0_ids_user -- a_auth0_ids_user
, a_names_user -- a_names_user
, a_emails_user -- a_emails_user
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, v_id_permission_user_admin -- ids_permission , v_id_permission_user_admin -- ids_permission
, v_id_access_level_admin -- ids_access_level , v_id_access_level_admin -- ids_access_level
, 0 -- a_show_errors , 0 -- a_show_errors
, 0 -- a_debug , 0 -- a_debug
); );
IF a_debug = 1 THEN UPDATE tmp_User t_USER
SELECT * FROM demo.DOG_Calc_User_Temp WHERE GUID = v_guid; INNER JOIN demo.DOG_Calc_User_Temp CALC_USER_T
END IF; ON CALC_USER_T.id_user = t_USER.id_user
AND CALC_USER_T.guid = v_guid
UPDATE tmp_User t_U SET t_USER.can_admin_user = CALC_USER_T.can_admin
INNER JOIN demo.DOG_Calc_User_Temp CUT
ON CUT.GUID = v_guid
AND t_U.id_user = CUT.id_user
SET t_U.can_admin_user = CUT.can_admin
; ;
IF a_debug = 1 THEN
SELECT * FROM tmp_User;
END IF;
CALL demo.p_dog_clear_calc_user( v_guid, FALSE ); CALL demo.p_dog_clear_calc_user( v_guid, FALSE );
END IF; END IF;
@@ -529,10 +605,18 @@ BEGIN
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN demo.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN demo.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN IF a_debug = 1 THEN
SELECT SELECT
v_guid -- guid v_guid -- guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user , a_id_user -- ids_user
, FALSE -- get_inactive_user , a_auth0_id_user -- a_auth0_ids_user
, v_ids_permission_required -- ids_permission , '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_user -- ids_permission
, v_id_access_level_view -- ids_access_level , v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors , 0 -- a_show_errors
, 0 -- a_debug , 0 -- a_debug
@@ -541,26 +625,53 @@ BEGIN
END IF; END IF;
CALL demo.p_dog_calc_user( CALL demo.p_dog_calc_user(
v_guid -- guid v_guid -- guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user , a_id_user -- ids_user
, FALSE -- get_inactive_user , a_auth0_id_user -- a_auth0_ids_user
, v_ids_permission_required -- ids_permission , '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_user -- ids_permission
, v_id_access_level_view -- ids_access_level , v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors , 0 -- a_show_errors
, 0 -- a_debug , 0 -- a_debug
); );
INSERT INTO tmp_User_Access (
id_user
, id_permission_required
, priority_access_level_required
, is_super_user
, priority_access_level_user
, has_access
, can_view
, can_edit
, can_admin
)
SELECT
CALC_USER_T.id_user
, CALC_USER_T.id_permission_required
, CALC_USER_T.priority_access_level_required
, CALC_USER_T.is_super_user
, CALC_USER_T.priority_access_level_user
, CALC_USER_T.has_access
, CALC_USER_T.can_view
, CALC_USER_T.can_edit
, CALC_USER_T.can_admin
FROM demo.DOG_Calc_User_Temp CALC_USER_T
WHERE CALC_USER_T.guid = v_guid
;
IF a_debug = 1 THEN IF a_debug = 1 THEN
SELECT * FROM demo.DOG_Calc_User_Temp WHERE GUID = v_guid; SELECT * FROM tmp_User_Access;
END IF; END IF;
IF NOT EXISTS ( IF NOT EXISTS (SELECT * FROM tmp_User t_USER WHERE t_USER.can_view = 1) THEN
SELECT can_view
FROM demo.DOG_Calc_User_Temp CUT
WHERE
CUT.GUID = v_guid
AND can_view = 1
) THEN
INSERT INTO tmp_Msg_Error ( INSERT INTO tmp_Msg_Error (
id_type id_type
, code , code
@@ -569,11 +680,12 @@ BEGIN
VALUES ( VALUES (
v_id_type_error_bad_data v_id_type_error_bad_data
, v_code_type_error_bad_data , v_code_type_error_bad_data
, CONCAT('You do not have view permissions for ', (SELECT name FROM demo.DOG_Permission P INNER JOIN demo.DOG_Calc_User_Temp CUT ON P.id_permission = CUT.id_permission_required WHERE GUID = v_guid AND IFNULL(can_view, 0) = 0 LIMIT 1)) , CONCAT(
'You do not have view permissions for '
, (SELECT PERMISSION.name FROM demo.DOG_Permission PERMISSION WHERE PERMISSION.id_permission = v_id_permission_user LIMIT 1)
)
) )
; ;
ELSE
SET a_debug := a_debug;
END IF; END IF;
CALL demo.p_dog_clear_calc_user( v_guid, FALSE ); CALL demo.p_dog_clear_calc_user( v_guid, FALSE );
@@ -582,34 +694,25 @@ BEGIN
IF EXISTS(SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN demo.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN IF EXISTS(SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN demo.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN IF a_debug = 1 THEN
SELECT * FROM tmp_Dog_Calc_Dog; SELECT * FROM tmp_User;
END IF; END IF;
DELETE FROM tmp_Dog_Calc_Dog; DELETE FROM tmp_User;
END IF; END IF;
-- Returns -- Returns
/* NULL record required for flask sql_alchemy to detect result set */
IF EXISTS (SELECT * FROM tmp_Msg_Error) THEN
DELETE FROM tmp_User;
INSERT INTO tmp_User ( id_user )
VALUES ( NULL );
END IF;
SELECT SELECT
U.id_user USER.id_user
, U.id_user_auth0 , USER.id_user_auth0
, U.firstname , USER.firstname
, U.surname , USER.surname
, U.email , USER.email
, U.is_email_verified , USER.is_email_verified
, U.is_super_user , USER.is_super_user
, t_U.can_admin_dog , t_USER.can_admin_dog
, t_U.can_admin_user , t_USER.can_admin_user
, v_is_new AS is_new FROM tmp_User t_USER
FROM tmp_User t_U INNER JOIN demo.DOG_User USER ON t_USER.id_user = USER.id_user
INNER JOIN demo.DOG_User U ON t_U.id_user = U.id_user
; ;
# Errors # Errors
@@ -628,14 +731,14 @@ BEGIN
; ;
IF a_debug = 1 THEN IF a_debug = 1 THEN
SELECT 'End';
SELECT * FROM tmp_User; SELECT * FROM tmp_User;
SELECT * FROM tmp_User_Access;
END IF; END IF;
-- Clean up -- Clean up
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Name;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Auth0_Id;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Id;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error; DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
DROP TEMPORARY TABLE IF EXISTS tmp_User_Access;
DROP TEMPORARY TABLE IF EXISTS tmp_User; DROP TEMPORARY TABLE IF EXISTS tmp_User;
IF a_debug = 1 THEN IF a_debug = 1 THEN
@@ -645,43 +748,24 @@ END //
DELIMITER ; DELIMITER ;
/*
CALL p_dog_get_many_user (
NULL
, 'google-oauth2|109567376920138999933'
, False
, False
-- , False
, NULL
, 'google-oauth2|109567376920138999933'
, 0
);
NULL # a_id_user
, 'auth0|6582b95c895d09a70ba10fef' # a_id_user_auth0
, 0 # a_get_all_user
, 0 # a_get_inactive_user
-- , 0 # a_get_first_user_only
, NULL # a_ids_user
, 'auth0|6582b95c895d09a70ba10fef' # a_ids_user_auth0
, 0 -- a_debug
);*/
/* /*
select * FROM demo.DOG_Calc_User_Temp; select * FROM demo.DOG_Calc_User_Temp;
delete FROM demo.DOG_Calc_User_Temp; delete FROM demo.DOG_Calc_User_Temp;
SELECT * SELECT *
FROM demo.DOG_USER; FROM demo.DOG_USER;
*/
CALL p_dog_get_many_user( CALL p_dog_get_many_user(
NULL -- :a_id_user, NULL -- :a_id_user,
, 'auth0|6582b95c895d09a70ba10fef' -- :a_id_user_auth0, , 'auth0|6582b95c895d09a70ba10fef' -- :a_auth0_id_user,
, 1 -- :a_get_all_user, , 1 -- :a_get_all_user,
, 0 -- :a_get_inactive_user, , 0 -- :a_get_inactive_user,
-- , 0 -- :a_get_first_user_only, -- , 0 -- :a_get_first_user_only,
, NULL -- :a_ids_user, , NULL -- :a_ids_user,
, 'auth0|6582b95c895d09a70ba10fef' -- :a_ids_user_auth0 , 'auth0|6582b95c895d09a70ba10fef' -- :a_auth0_ids_user
, '' -- a_names_user , '' -- a_names_user
, '' -- a_emails_user
, 1 -- :a_require_all_id_search_filters_met, , 1 -- :a_require_all_id_search_filters_met,
, 1 -- :a_require_any_id_search_filters_met, , 1 -- :a_require_any_id_search_filters_met,
, 0 -- :a_require_all_non_id_search_filters_met, , 0 -- :a_require_all_non_id_search_filters_met,
@@ -689,4 +773,3 @@ CALL p_dog_get_many_user(
, 0 -- a_debug , 0 -- a_debug
); );
*/

View File

@@ -8,12 +8,13 @@ DROP PROCEDURE IF EXISTS p_dog_get_many_user;
DELIMITER // DELIMITER //
CREATE PROCEDURE p_dog_get_many_user ( CREATE PROCEDURE p_dog_get_many_user (
IN a_id_user INT IN a_id_user INT
, IN a_id_user_auth0 VARCHAR(200) , IN a_auth0_id_user VARCHAR(200)
, IN a_get_all_user BIT , IN a_get_all_user BIT
, IN a_get_inactive_user BIT , IN a_get_inactive_user BIT
, IN a_ids_user TEXT , IN a_ids_user TEXT
, IN a_ids_user_auth0 TEXT , IN a_auth0_ids_user TEXT
, IN a_names_user TEXT , IN a_names_user TEXT
, IN a_emails_user TEXT
, IN a_require_all_id_search_filters_met BIT , IN a_require_all_id_search_filters_met BIT
, IN a_require_any_id_search_filters_met BIT , IN a_require_any_id_search_filters_met BIT
, IN a_require_all_non_id_search_filters_met BIT , IN a_require_all_non_id_search_filters_met BIT
@@ -34,6 +35,7 @@ BEGIN
DECLARE v_id_permission_user_admin INT; DECLARE v_id_permission_user_admin INT;
DECLARE v_id_type_error_bad_data INT; DECLARE v_id_type_error_bad_data INT;
DECLARE v_ids_permission_required VARCHAR(4000); DECLARE v_ids_permission_required VARCHAR(4000);
DECLARE v_ids_user TEXT;
DECLARE v_is_new BIT; DECLARE v_is_new BIT;
DECLARE v_rank_max INT; DECLARE v_rank_max INT;
DECLARE v_time_start TIMESTAMP(6); DECLARE v_time_start TIMESTAMP(6);
@@ -100,8 +102,9 @@ BEGIN
SET a_get_all_user := IFNULL(a_get_all_user, 1); SET a_get_all_user := IFNULL(a_get_all_user, 1);
SET a_get_inactive_user := IFNULL(a_get_inactive_user, 0); SET a_get_inactive_user := IFNULL(a_get_inactive_user, 0);
SET a_ids_user := TRIM(IFNULL(a_ids_user, '')); SET a_ids_user := TRIM(IFNULL(a_ids_user, ''));
SET a_ids_user_auth0 := TRIM(IFNULL(a_ids_user_auth0, '')); SET a_auth0_ids_user := TRIM(IFNULL(a_auth0_ids_user, ''));
SET a_names_user := TRIM(IFNULL(a_names_user, '')); SET a_names_user := TRIM(IFNULL(a_names_user, ''));
SET a_emails_user := TRIM(IFNULL(a_emails_user, ''));
SET a_require_all_id_search_filters_met := IFNULL(a_require_all_id_search_filters_met, 1); SET a_require_all_id_search_filters_met := IFNULL(a_require_all_id_search_filters_met, 1);
SET a_require_any_id_search_filters_met := IFNULL(a_require_any_id_search_filters_met, 1); SET a_require_any_id_search_filters_met := IFNULL(a_require_any_id_search_filters_met, 1);
SET a_require_all_non_id_search_filters_met := IFNULL(a_require_all_non_id_search_filters_met, 0); SET a_require_all_non_id_search_filters_met := IFNULL(a_require_all_non_id_search_filters_met, 0);
@@ -111,12 +114,13 @@ BEGIN
IF a_debug = 1 THEN IF a_debug = 1 THEN
SELECT SELECT
a_id_user a_id_user
, a_id_user_auth0 , a_auth0_id_user
, a_get_all_user , a_get_all_user
, a_get_inactive_user , a_get_inactive_user
, a_ids_user , a_ids_user
, a_ids_user_auth0 , a_auth0_ids_user
, a_names_user , a_names_user
, a_emails_user
, a_require_all_id_search_filters_met , a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met , a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met , a_require_all_non_id_search_filters_met
@@ -125,18 +129,36 @@ BEGIN
; ;
END IF; END IF;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Name;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Auth0_Id;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Id;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error; DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
DROP TEMPORARY TABLE IF EXISTS tmp_User_Access;
DROP TEMPORARY TABLE IF EXISTS tmp_User; DROP TEMPORARY TABLE IF EXISTS tmp_User;
CREATE TEMPORARY TABLE tmp_User ( CREATE TEMPORARY TABLE tmp_User (
id_user INT NULL id_row INT PRIMARY KEY AUTO_INCREMENT NOT NULL
, can_admin_dog BIT NULL , id_user INT
, can_admin_user BIT NULL , id_permission_required INT NOT NULL
, does_meet_id_filters BIT , priority_access_level_required INT NOT NULL
, does_meet_non_id_filters BIT , is_super_user BIT
, priority_access_level_user INT
, has_access BIT
, can_view BIT
, can_edit BIT
, can_admin BIT
, can_admin_dog BIT
, can_admin_user BIT
);
CREATE TEMPORARY TABLE tmp_User_Access (
id_row INT PRIMARY KEY AUTO_INCREMENT NOT NULL
, id_user INT
, id_permission_required INT NOT NULL
, priority_access_level_required INT NOT NULL
, is_super_user BIT
, priority_access_level_user INT
, has_access BIT
, can_view BIT
, can_edit BIT
, can_admin BIT
); );
CREATE TEMPORARY TABLE tmp_Msg_Error ( CREATE TEMPORARY TABLE tmp_Msg_Error (
@@ -145,7 +167,7 @@ BEGIN
, code VARCHAR(100) NOT NULL , code VARCHAR(100) NOT NULL
, msg TEXT NOT NULL , msg TEXT NOT NULL
); );
/*
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split_Id ( CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split_Id (
substring VARCHAR(4000) NOT NULL substring VARCHAR(4000) NOT NULL
, as_int INT NULL , as_int INT NULL
@@ -163,14 +185,13 @@ BEGIN
, as_int INT NULL , as_int INT NULL
); );
DELETE FROM tmp_Split_Name; DELETE FROM tmp_Split_Name;
IF ISNULL(a_id_user) AND NOT ISNULL(a_auth0_id_user) THEN
IF ISNULL(a_id_user) AND NOT ISNULL(a_id_user_auth0) THEN SET a_id_user := (SELECT U.id_user FROM parts.DOG_User U WHERE U.id_user_auth0 = a_auth0_id_user LIMIT 1);
SET a_id_user := (SELECT U.id_user FROM parts.DOG_User U WHERE U.id_user_auth0 = a_id_user_auth0 LIMIT 1);
END IF; END IF;
IF IF
ISNULL(a_id_user) ISNULL(a_id_user)
AND ISNULL(a_id_user_auth0) AND ISNULL(a_auth0_id_user)
THEN THEN
INSERT INTO tmp_Msg_Error ( INSERT INTO tmp_Msg_Error (
id_type id_type
@@ -186,7 +207,7 @@ BEGIN
END IF; END IF;
SET v_has_filter_user_id := CASE WHEN a_ids_user = '' THEN 0 ELSE 1 END; SET v_has_filter_user_id := CASE WHEN a_ids_user = '' THEN 0 ELSE 1 END;
SET v_has_filter_user_auth0_id := CASE WHEN a_ids_user_auth0 = '' THEN 0 ELSE 1 END; SET v_has_filter_user_auth0_id := CASE WHEN a_auth0_ids_user = '' THEN 0 ELSE 1 END;
SET v_has_filter_user_name := CASE WHEN a_names_user = '' THEN 0 ELSE 1 END; SET v_has_filter_user_name := CASE WHEN a_names_user = '' THEN 0 ELSE 1 END;
IF a_debug = 1 THEN IF a_debug = 1 THEN
@@ -248,7 +269,7 @@ BEGIN
-- Auth0 User IDs -- Auth0 User IDs
IF v_has_filter_user_auth0_id = 1 THEN IF v_has_filter_user_auth0_id = 1 THEN
CALL parts.p_core_split(v_guid, a_ids_user_auth0, ',', FALSE); CALL parts.p_core_split(v_guid, a_auth0_ids_user, ',', FALSE);
INSERT INTO tmp_Split_Auth0_Id ( INSERT INTO tmp_Split_Auth0_Id (
substring substring
@@ -446,14 +467,25 @@ BEGIN
SELECT * FROM tmp_User; SELECT * FROM tmp_User;
END IF; END IF;
*/
-- Calculated fields -- Calculated fields
-- Can admin dog -- Can admin dog
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN IF a_debug = 1 THEN
SELECT SELECT
v_guid -- guid v_guid -- guid
, a_id_user -- ids_user , a_get_all_user -- get_all_user
, FALSE -- get_inactive_user , a_get_inactive_user -- get_inactive_user
, a_ids_user -- ids_user
, a_auth0_ids_user -- a_auth0_ids_user
, a_names_user -- a_names_user
, a_emails_user -- a_emails_user
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_admin -- ids_permission , v_id_permission_dog_admin -- ids_permission
, v_id_access_level_admin -- ids_access_level , v_id_access_level_admin -- ids_access_level
, 0 -- a_show_errors , 0 -- a_show_errors
@@ -463,26 +495,54 @@ BEGIN
END IF; END IF;
CALL parts.p_dog_calc_user( CALL parts.p_dog_calc_user(
v_guid -- guid v_guid -- guid
, a_id_user -- ids_user , a_get_all_user -- get_all_user
, FALSE -- get_inactive_user , a_get_inactive_user -- get_inactive_user
, a_ids_user -- ids_user
, a_auth0_ids_user -- a_auth0_ids_user
, a_names_user -- a_names_user
, a_emails_user -- a_emails_user
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_admin -- ids_permission , v_id_permission_dog_admin -- ids_permission
, v_id_access_level_admin -- ids_access_level , v_id_access_level_admin -- ids_access_level
, 0 -- a_show_errors , 0 -- a_show_errors
, 0 -- a_debug , 0 -- a_debug
); );
IF a_debug = 1 THEN INSERT INTO tmp_User (
SELECT * FROM parts.DOG_Calc_User_Temp WHERE GUID = v_guid; id_user
END IF; , id_permission_required
, priority_access_level_required
UPDATE tmp_User t_U , is_super_user
INNER JOIN parts.DOG_Calc_User_Temp CUT , priority_access_level_user
ON CUT.GUID = v_guid , has_access
AND t_U.id_user = CUT.id_user , can_view
SET t_U.can_admin_dog = CUT.can_admin , can_edit
, can_admin
, can_admin_dog
)
SELECT
CALC_USER_T.id_user
, CALC_USER_T.id_permission_required
, CALC_USER_T.priority_access_level_required
, CALC_USER_T.is_super_user
, CALC_USER_T.priority_access_level_user
, CALC_USER_T.has_access
, CALC_USER_T.can_view
, CALC_USER_T.can_edit
, CALC_USER_T.can_admin
, CALC_USER_T.can_admin AS can_admin_dog
FROM parts.DOG_Calc_User_Temp CALC_USER_T
WHERE CALC_USER_T.guid = v_guid
; ;
IF a_debug = 1 THEN
SELECT * FROM tmp_User;
END IF;
CALL parts.p_dog_clear_calc_user( v_guid, FALSE ); CALL parts.p_dog_clear_calc_user( v_guid, FALSE );
END IF; END IF;
@@ -490,11 +550,19 @@ BEGIN
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN IF a_debug = 1 THEN
SELECT SELECT
v_guid -- guid v_guid -- guid
, a_id_user -- ids_user , a_get_all_user -- get_all_user
, FALSE -- get_inactive_user , a_get_inactive_user -- get_inactive_user
, v_id_permission_user_admin -- ids_permission , a_ids_user -- ids_user
, v_id_access_level_admin -- ids_access_level , a_auth0_ids_user -- a_auth0_ids_user
, a_names_user -- a_names_user
, a_emails_user -- a_emails_user
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_admin -- ids_permission
, v_id_access_level_admin -- ids_access_level
, 0 -- a_show_errors , 0 -- a_show_errors
, 0 -- a_debug , 0 -- a_debug
; ;
@@ -502,26 +570,34 @@ BEGIN
END IF; END IF;
CALL parts.p_dog_calc_user( CALL parts.p_dog_calc_user(
v_guid -- guid v_guid -- guid
, a_id_user -- ids_user , a_get_all_user -- get_all_user
, FALSE -- get_inactive_user , a_get_inactive_user -- get_inactive_user
, a_ids_user -- ids_user
, a_auth0_ids_user -- a_auth0_ids_user
, a_names_user -- a_names_user
, a_emails_user -- a_emails_user
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, v_id_permission_user_admin -- ids_permission , v_id_permission_user_admin -- ids_permission
, v_id_access_level_admin -- ids_access_level , v_id_access_level_admin -- ids_access_level
, 0 -- a_show_errors , 0 -- a_show_errors
, 0 -- a_debug , 0 -- a_debug
); );
IF a_debug = 1 THEN UPDATE tmp_User t_USER
SELECT * FROM parts.DOG_Calc_User_Temp WHERE GUID = v_guid; INNER JOIN parts.DOG_Calc_User_Temp CALC_USER_T
END IF; ON CALC_USER_T.id_user = t_USER.id_user
AND CALC_USER_T.guid = v_guid
UPDATE tmp_User t_U SET t_USER.can_admin_user = CALC_USER_T.can_admin
INNER JOIN parts.DOG_Calc_User_Temp CUT
ON CUT.GUID = v_guid
AND t_U.id_user = CUT.id_user
SET t_U.can_admin_user = CUT.can_admin
; ;
IF a_debug = 1 THEN
SELECT * FROM tmp_User;
END IF;
CALL parts.p_dog_clear_calc_user( v_guid, FALSE ); CALL parts.p_dog_clear_calc_user( v_guid, FALSE );
END IF; END IF;
@@ -529,10 +605,18 @@ BEGIN
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN IF a_debug = 1 THEN
SELECT SELECT
v_guid -- guid v_guid -- guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user , a_id_user -- ids_user
, FALSE -- get_inactive_user , a_auth0_id_user -- a_auth0_ids_user
, v_ids_permission_required -- ids_permission , '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_user -- ids_permission
, v_id_access_level_view -- ids_access_level , v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors , 0 -- a_show_errors
, 0 -- a_debug , 0 -- a_debug
@@ -541,26 +625,53 @@ BEGIN
END IF; END IF;
CALL parts.p_dog_calc_user( CALL parts.p_dog_calc_user(
v_guid -- guid v_guid -- guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user , a_id_user -- ids_user
, FALSE -- get_inactive_user , a_auth0_id_user -- a_auth0_ids_user
, v_ids_permission_required -- ids_permission , '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_user -- ids_permission
, v_id_access_level_view -- ids_access_level , v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors , 0 -- a_show_errors
, 0 -- a_debug , 0 -- a_debug
); );
INSERT INTO tmp_User_Access (
id_user
, id_permission_required
, priority_access_level_required
, is_super_user
, priority_access_level_user
, has_access
, can_view
, can_edit
, can_admin
)
SELECT
CALC_USER_T.id_user
, CALC_USER_T.id_permission_required
, CALC_USER_T.priority_access_level_required
, CALC_USER_T.is_super_user
, CALC_USER_T.priority_access_level_user
, CALC_USER_T.has_access
, CALC_USER_T.can_view
, CALC_USER_T.can_edit
, CALC_USER_T.can_admin
FROM parts.DOG_Calc_User_Temp CALC_USER_T
WHERE CALC_USER_T.guid = v_guid
;
IF a_debug = 1 THEN IF a_debug = 1 THEN
SELECT * FROM parts.DOG_Calc_User_Temp WHERE GUID = v_guid; SELECT * FROM tmp_User_Access;
END IF; END IF;
IF NOT EXISTS ( IF NOT EXISTS (SELECT * FROM tmp_User t_USER WHERE t_USER.can_view = 1) THEN
SELECT can_view
FROM parts.DOG_Calc_User_Temp CUT
WHERE
CUT.GUID = v_guid
AND can_view = 1
) THEN
INSERT INTO tmp_Msg_Error ( INSERT INTO tmp_Msg_Error (
id_type id_type
, code , code
@@ -569,11 +680,12 @@ BEGIN
VALUES ( VALUES (
v_id_type_error_bad_data v_id_type_error_bad_data
, v_code_type_error_bad_data , v_code_type_error_bad_data
, CONCAT('You do not have view permissions for ', (SELECT name FROM parts.DOG_Permission P INNER JOIN parts.DOG_Calc_User_Temp CUT ON P.id_permission = CUT.id_permission_required WHERE GUID = v_guid AND IFNULL(can_view, 0) = 0 LIMIT 1)) , CONCAT(
'You do not have view permissions for '
, (SELECT PERMISSION.name FROM parts.DOG_Permission PERMISSION WHERE PERMISSION.id_permission = v_id_permission_user LIMIT 1)
)
) )
; ;
ELSE
SET a_debug := a_debug;
END IF; END IF;
CALL parts.p_dog_clear_calc_user( v_guid, FALSE ); CALL parts.p_dog_clear_calc_user( v_guid, FALSE );
@@ -582,34 +694,25 @@ BEGIN
IF EXISTS(SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN IF EXISTS(SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN IF a_debug = 1 THEN
SELECT * FROM tmp_Dog_Calc_Dog; SELECT * FROM tmp_User;
END IF; END IF;
DELETE FROM tmp_Dog_Calc_Dog; DELETE FROM tmp_User;
END IF; END IF;
-- Returns -- Returns
/* NULL record required for flask sql_alchemy to detect result set */
IF EXISTS (SELECT * FROM tmp_Msg_Error) THEN
DELETE FROM tmp_User;
INSERT INTO tmp_User ( id_user )
VALUES ( NULL );
END IF;
SELECT SELECT
U.id_user USER.id_user
, U.id_user_auth0 , USER.id_user_auth0
, U.firstname , USER.firstname
, U.surname , USER.surname
, U.email , USER.email
, U.is_email_verified , USER.is_email_verified
, U.is_super_user , USER.is_super_user
, t_U.can_admin_dog , t_USER.can_admin_dog
, t_U.can_admin_user , t_USER.can_admin_user
, v_is_new AS is_new FROM tmp_User t_USER
FROM tmp_User t_U INNER JOIN parts.DOG_User USER ON t_USER.id_user = USER.id_user
INNER JOIN parts.DOG_User U ON t_U.id_user = U.id_user
; ;
# Errors # Errors
@@ -628,14 +731,14 @@ BEGIN
; ;
IF a_debug = 1 THEN IF a_debug = 1 THEN
SELECT 'End';
SELECT * FROM tmp_User; SELECT * FROM tmp_User;
SELECT * FROM tmp_User_Access;
END IF; END IF;
-- Clean up -- Clean up
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Name;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Auth0_Id;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Id;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error; DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
DROP TEMPORARY TABLE IF EXISTS tmp_User_Access;
DROP TEMPORARY TABLE IF EXISTS tmp_User; DROP TEMPORARY TABLE IF EXISTS tmp_User;
IF a_debug = 1 THEN IF a_debug = 1 THEN
@@ -645,43 +748,24 @@ END //
DELIMITER ; DELIMITER ;
/*
CALL p_dog_get_many_user (
NULL
, 'google-oauth2|109567376920138999933'
, False
, False
-- , False
, NULL
, 'google-oauth2|109567376920138999933'
, 0
);
NULL # a_id_user
, 'auth0|6582b95c895d09a70ba10fef' # a_id_user_auth0
, 0 # a_get_all_user
, 0 # a_get_inactive_user
-- , 0 # a_get_first_user_only
, NULL # a_ids_user
, 'auth0|6582b95c895d09a70ba10fef' # a_ids_user_auth0
, 0 -- a_debug
);*/
/* /*
select * FROM parts.DOG_Calc_User_Temp; select * FROM parts.DOG_Calc_User_Temp;
delete FROM parts.DOG_Calc_User_Temp; delete FROM parts.DOG_Calc_User_Temp;
SELECT * SELECT *
FROM parts.DOG_USER; FROM parts.DOG_USER;
*/
CALL p_dog_get_many_user( CALL p_dog_get_many_user(
NULL -- :a_id_user, NULL -- :a_id_user,
, 'auth0|6582b95c895d09a70ba10fef' -- :a_id_user_auth0, , 'auth0|6582b95c895d09a70ba10fef' -- :a_auth0_id_user,
, 1 -- :a_get_all_user, , 1 -- :a_get_all_user,
, 0 -- :a_get_inactive_user, , 0 -- :a_get_inactive_user,
-- , 0 -- :a_get_first_user_only, -- , 0 -- :a_get_first_user_only,
, NULL -- :a_ids_user, , NULL -- :a_ids_user,
, 'auth0|6582b95c895d09a70ba10fef' -- :a_ids_user_auth0 , 'auth0|6582b95c895d09a70ba10fef' -- :a_auth0_ids_user
, '' -- a_names_user , '' -- a_names_user
, '' -- a_emails_user
, 1 -- :a_require_all_id_search_filters_met, , 1 -- :a_require_all_id_search_filters_met,
, 1 -- :a_require_any_id_search_filters_met, , 1 -- :a_require_any_id_search_filters_met,
, 0 -- :a_require_all_non_id_search_filters_met, , 0 -- :a_require_all_non_id_search_filters_met,
@@ -689,4 +773,3 @@ CALL p_dog_get_many_user(
, 0 -- a_debug , 0 -- a_debug
); );
*/

View File

@@ -6,29 +6,39 @@ DROP PROCEDURE IF EXISTS p_dog_calc_user;
DELIMITER // DELIMITER //
CREATE PROCEDURE p_dog_calc_user ( CREATE PROCEDURE p_dog_calc_user (
IN a_guid BINARY(36) IN a_guid BINARY(36)
, IN a_ids_user TEXT , IN a_get_all_user BIT
, IN a_get_inactive_user BIT , IN a_get_inactive_user BIT
, IN a_ids_permission TEXT , IN a_ids_user TEXT
, IN a_ids_access_level TEXT , IN a_auth0_ids_user TEXT
, IN a_names_user TEXT
, IN a_emails_user TEXT
, IN a_require_all_id_search_filters_met BIT
, IN a_require_any_id_search_filters_met BIT
, IN a_require_all_non_id_search_filters_met BIT
, IN a_require_any_non_id_search_filters_met BIT
, IN a_ids_permission_required TEXT
, IN a_ids_access_level_required TEXT
, IN a_show_errors BIT , IN a_show_errors BIT
, IN a_debug BIT , IN a_debug BIT
) )
BEGIN BEGIN
DECLARE v_code_type_error_bad_data VARCHAR(200); DECLARE v_code_type_error_bad_data VARCHAR(200);
DECLARE v_code_type_error_no_permission VARCHAR(200);
DECLARE v_has_filter_permission BIT;
DECLARE v_has_filter_user BIT;
DECLARE v_has_filter_access_level BIT; DECLARE v_has_filter_access_level BIT;
DECLARE v_id_access_level INT; DECLARE v_has_filter_permission BIT;
DECLARE v_has_filter_user_auth0_id BIT;
DECLARE v_has_filter_user_email BIT;
DECLARE v_has_filter_user_id BIT;
DECLARE v_has_filter_user_name BIT;
DECLARE v_id_access_level_required INT;
DECLARE v_id_access_level_view INT; DECLARE v_id_access_level_view INT;
DECLARE v_id_permission INT;
DECLARE v_id_permission_required INT; DECLARE v_id_permission_required INT;
DECLARE v_id_type_error_bad_data INT; DECLARE v_id_type_error_bad_data INT;
DECLARE v_ids_row_delete VARCHAR(500); DECLARE v_ids_row_delete VARCHAR(500);
DECLARE v_priority_access_level_view INT;
DECLARE v_priority_access_level_edit INT;
DECLARE v_priority_access_level_admin INT; DECLARE v_priority_access_level_admin INT;
DECLARE v_priority_access_level INT; DECLARE v_priority_access_level_edit INT;
DECLARE v_priority_access_level_none INT;
DECLARE v_priority_access_level_required INT;
DECLARE v_priority_access_level_view INT;
DECLARE v_time_start TIMESTAMP(6); DECLARE v_time_start TIMESTAMP(6);
DECLARE exit handler for SQLEXCEPTION DECLARE exit handler for SQLEXCEPTION
@@ -81,33 +91,63 @@ BEGIN
SET v_time_start := CURRENT_TIMESTAMP(6); SET v_time_start := CURRENT_TIMESTAMP(6);
SET v_code_type_error_bad_data := 'BAD_DATA'; SET v_code_type_error_bad_data := 'BAD_DATA';
SET v_id_type_error_bad_data := (SELECT id_type FROM parts.CORE_Msg_Error_Type WHERE code = v_code_type_error_bad_data LIMIT 1); SET v_id_type_error_bad_data := (SELECT id_type FROM parts.CORE_Msg_Error_Type WHERE code = v_code_type_error_bad_data LIMIT 1);
SET v_id_access_level_view = (SELECT id_access_level FROM parts.DOG_Access_Level WHERE code = 'VIEW' LIMIT 1);
SET v_code_type_error_no_permission := (SELECT code FROM parts.CORE_Msg_Error_Type WHERE id_type = 2); SET v_priority_access_level_view = (SELECT priority FROM parts.DOG_Access_Level WHERE id_access_level = v_id_access_level_view);
SET v_priority_access_level_edit = (SELECT priority FROM parts.DOG_Access_Level WHERE code = 'EDIT' LIMIT 1);
SET v_priority_access_level_admin = (SELECT priority FROM parts.DOG_Access_Level WHERE code = 'ADMIN' LIMIT 1);
SET v_priority_access_level_none = (SELECT priority FROM parts.DOG_Access_Level WHERE code = 'NONE' LIMIT 1);
CALL parts.p_validate_guid ( a_guid ); CALL parts.p_validate_guid ( a_guid );
SET a_ids_user := TRIM(IFNULL(a_ids_user, '')); SET a_get_all_user := IFNULL(a_get_all_user, 0);
SET a_get_inactive_user := IFNULL(a_get_inactive_user, 0); SET a_get_inactive_user := IFNULL(a_get_inactive_user, 0);
SET a_ids_permission := TRIM(IFNULL(a_ids_permission, '')); SET a_ids_user := TRIM(IFNULL(a_ids_user, ''));
SET a_ids_access_level := TRIM(IFNULL(a_ids_access_level, '')); SET a_auth0_ids_user := TRIM(IFNULL(a_auth0_ids_user, ''));
SET a_names_user := TRIM(IFNULL(a_names_user, ''));
SET a_emails_user := TRIM(IFNULL(a_emails_user, ''));
SET a_ids_permission_required := TRIM(IFNULL(a_ids_permission_required, ''));
SET a_ids_access_level_required := TRIM(IFNULL(a_ids_access_level_required, ''));
SET a_require_all_id_search_filters_met := IFNULL(a_require_all_id_search_filters_met, 0);
SET a_require_any_id_search_filters_met := IFNULL(a_require_any_id_search_filters_met, 0);
SET a_require_all_non_id_search_filters_met := IFNULL(a_require_all_non_id_search_filters_met, 0);
SET a_require_any_non_id_search_filters_met := IFNULL(a_require_any_non_id_search_filters_met, 0);
SET a_show_errors := IFNULL(a_show_errors, 0); SET a_show_errors := IFNULL(a_show_errors, 0);
SET a_debug := IFNULL(a_debug, 0); SET a_debug := IFNULL(a_debug, 0);
IF a_debug = 1 THEN IF a_debug = 1 THEN
SELECT SELECT
a_guid a_guid
, a_ids_user , a_get_all_user
, a_get_inactive_user , a_get_inactive_user
, a_ids_permission , a_ids_user
, a_ids_access_level , a_auth0_ids_user
, a_names_user
, a_emails_user
, a_ids_permission_required
, a_ids_access_level_required
, a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met
, a_show_errors , a_show_errors
, a_debug , a_debug
; ;
SELECT
v_priority_access_level_view
, v_priority_access_level_edit
, v_priority_access_level_admin
, v_id_access_level_view
, v_id_type_error_bad_data
, v_code_type_error_bad_data
;
END IF; END IF;
-- Clear previous proc results -- Clear previous proc results
DROP TABLE IF EXISTS tmp_Split_Calc_User; DROP TABLE IF EXISTS tmp_Split_Email_Calc_User;
DROP TABLE IF EXISTS tmp_Split_Name_Calc_User;
DROP TABLE IF EXISTS tmp_Split_Auth0_Id_Calc_User;
DROP TABLE IF EXISTS tmp_Split_Id_Calc_User;
DROP TABLE IF EXISTS tmp_Msg_Error_Calc_User; DROP TABLE IF EXISTS tmp_Msg_Error_Calc_User;
DROP TABLE IF EXISTS tmp_User_Calc_User;
DROP TABLE IF EXISTS tmp_Calc_User; DROP TABLE IF EXISTS tmp_Calc_User;
-- Permanent Table -- Permanent Table
@@ -118,15 +158,13 @@ BEGIN
, priority_access_level_required INT NOT NULL , priority_access_level_required INT NOT NULL
, is_super_user BIT , is_super_user BIT
, priority_access_level_user INT , priority_access_level_user INT
, has_access BIT
, can_view BIT , can_view BIT
, can_edit BIT , can_edit BIT
, can_admin BIT , can_admin BIT
);
CREATE TEMPORARY TABLE tmp_User_Calc_User ( , does_meet_id_filters BIT
id_user INT NOT NULL , does_meet_non_id_filters BIT
, is_super_user BIT NOT NULL
, priority_access_level INT NOT NULL
); );
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error_Calc_User ( CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error_Calc_User (
@@ -136,25 +174,45 @@ BEGIN
, msg TEXT NOT NULL , msg TEXT NOT NULL
); );
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split_Calc_User ( CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split_Id_Calc_User (
substring VARCHAR(4000) NOT NULL substring VARCHAR(4000) NOT NULL
, as_int INT NULL , as_int INT NULL
); );
DELETE FROM tmp_Split_Calc_User; DELETE FROM tmp_Split_Id_Calc_User;
SET v_has_filter_user = CASE WHEN a_ids_user = '' THEN 0 ELSE 1 END; CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split_Auth0_Id_Calc_User (
SET v_has_filter_permission = CASE WHEN a_ids_permission = '' THEN 0 ELSE 1 END; substring VARCHAR(4000) NOT NULL
SET v_has_filter_access_level = CASE WHEN a_ids_access_level = '' THEN 0 ELSE 1 END; , as_int INT NULL
SET v_id_access_level_view = (SELECT id_access_level FROM parts.DOG_Access_Level WHERE code = 'VIEW' LIMIT 1); );
SET v_priority_access_level_view = (SELECT priority FROM parts.DOG_Access_Level WHERE id_access_level = v_id_access_level_view); DELETE FROM tmp_Split_Auth0_Id_Calc_User;
SET v_priority_access_level_edit = (SELECT priority FROM parts.DOG_Access_Level WHERE code = 'EDIT' LIMIT 1);
SET v_priority_access_level_admin = (SELECT priority FROM parts.DOG_Access_Level WHERE code = 'ADMIN' LIMIT 1); CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split_Name_Calc_User (
substring VARCHAR(4000) NOT NULL
, as_int INT NULL
);
DELETE FROM tmp_Split_Name_Calc_User;
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split_Email_Calc_User (
substring VARCHAR(4000) NOT NULL
, as_int INT NULL
);
DELETE FROM tmp_Split_Email_Calc_User;
SET v_has_filter_user_id = CASE WHEN a_ids_user = '' THEN 0 ELSE 1 END;
SET v_has_filter_user_auth0_id = CASE WHEN a_auth0_ids_user = '' THEN 0 ELSE 1 END;
SET v_has_filter_user_name = CASE WHEN a_names_user = '' THEN 0 ELSE 1 END;
SET v_has_filter_user_email = CASE WHEN a_emails_user = '' THEN 0 ELSE 1 END;
SET v_has_filter_permission = CASE WHEN a_ids_permission_required = '' THEN 0 ELSE 1 END;
SET v_has_filter_access_level = CASE WHEN a_ids_access_level_required = '' THEN 0 ELSE 1 END;
IF a_debug = 1 THEN IF a_debug = 1 THEN
SELECT SELECT
v_priority_access_level_view v_has_filter_user_id
, v_priority_access_level_edit , v_has_filter_user_auth0_id
, v_priority_access_level_admin , v_has_filter_user_name
, v_has_filter_user_email
, v_has_filter_permission
, v_has_filter_access_level
; ;
END IF; END IF;
@@ -164,17 +222,15 @@ BEGIN
SELECT SELECT
'p_core_split' 'p_core_split'
, a_guid , a_guid
, a_ids_access_level , a_ids_access_level_required
, ',' , ','
, a_debug , a_debug
; ;
END IF; END IF;
CALL parts.p_core_clear_split( a_guid ); CALL parts.p_core_split(a_guid, a_ids_access_level_required, ',', a_debug);
CALL parts.p_core_split(a_guid, a_ids_access_level, ',', a_debug);
DELETE FROM tmp_Split_Calc_User; INSERT INTO tmp_Split_Id_Calc_User (
INSERT INTO tmp_Split_Calc_User (
substring substring
, as_int , as_int
) )
@@ -188,9 +244,9 @@ BEGIN
; ;
IF a_debug = 1 THEN IF a_debug = 1 THEN
SELECT 'Access Levels split', a_ids_access_level; SELECT 'Access Levels split', a_ids_access_level_required;
SELECT * SELECT *
FROM tmp_Split_Calc_User; FROM tmp_Split_Id_Calc_User;
END IF; END IF;
CALL parts.p_core_clear_split( a_guid ); CALL parts.p_core_clear_split( a_guid );
@@ -198,7 +254,7 @@ BEGIN
# Invalid IDs # Invalid IDs
IF EXISTS ( IF EXISTS (
SELECT t_SPLIT.substring SELECT t_SPLIT.substring
FROM tmp_Split_Calc_User t_SPLIT FROM tmp_Split_Id_Calc_User t_SPLIT
LEFT JOIN parts.DOG_Access_Level ACCESS_LEVEL ON t_SPLIT.as_int = ACCESS_LEVEL.id_access_level LEFT JOIN parts.DOG_Access_Level ACCESS_LEVEL ON t_SPLIT.as_int = ACCESS_LEVEL.id_access_level
WHERE WHERE
ISNULL(t_SPLIT.as_int) ISNULL(t_SPLIT.as_int)
@@ -214,7 +270,7 @@ BEGIN
v_id_type_error_bad_data v_id_type_error_bad_data
, v_code_type_error_bad_data , v_code_type_error_bad_data
, CONCAT('Invalid or inactive access level IDs: ', GROUP_CONCAT(t_SPLIT.substring SEPARATOR ',')) , CONCAT('Invalid or inactive access level IDs: ', GROUP_CONCAT(t_SPLIT.substring SEPARATOR ','))
FROM tmp_Split_Calc_User t_SPLIT FROM tmp_Split_Id_Calc_User t_SPLIT
LEFT JOIN parts.DOG_Access_Level ACCESS_LEVEL ON t_SPLIT.as_int = ACCESS_LEVEL.id_access_level LEFT JOIN parts.DOG_Access_Level ACCESS_LEVEL ON t_SPLIT.as_int = ACCESS_LEVEL.id_access_level
WHERE WHERE
ISNULL(t_SPLIT.as_int) ISNULL(t_SPLIT.as_int)
@@ -224,9 +280,9 @@ BEGIN
SET v_has_filter_access_level = 0; SET v_has_filter_access_level = 0;
ELSE ELSE
SET v_id_access_level := ( SET v_id_access_level_required := (
SELECT ACCESS_LEVEL.id_access_level SELECT ACCESS_LEVEL.id_access_level
FROM tmp_Split_Calc_User t_SPLIT FROM tmp_Split_Id_Calc_User t_SPLIT
INNER JOIN parts.DOG_Access_Level ACCESS_LEVEL INNER JOIN parts.DOG_Access_Level ACCESS_LEVEL
ON t_SPLIT.as_int = ACCESS_LEVEL.id_access_level ON t_SPLIT.as_int = ACCESS_LEVEL.id_access_level
AND ACCESS_LEVEL.active = 1 AND ACCESS_LEVEL.active = 1
@@ -235,21 +291,17 @@ BEGIN
); );
END IF; END IF;
END IF; END IF;
DELETE FROM tmp_Split_Calc_User; DELETE FROM tmp_Split_Id_Calc_User;
IF ISNULL(v_id_access_level) THEN IF ISNULL(v_id_access_level_required) THEN
SET v_id_access_level = v_id_access_level_view; SET v_id_access_level_required = v_id_access_level_view;
END IF; END IF;
SET v_priority_access_level := (SELECT priority FROM parts.DOG_Access_Level WHERE id_access_level = v_id_access_level LIMIT 1);
-- Permission IDs -- Permission IDs
IF v_has_filter_permission = 1 THEN IF v_has_filter_permission = 1 THEN
CALL parts.p_core_clear_split( a_guid ); CALL parts.p_core_split(a_guid, a_ids_permission_required, ',', a_debug);
CALL parts.p_core_split(a_guid, a_ids_permission, ',', a_debug);
DELETE FROM tmp_Split_Calc_User; INSERT INTO tmp_Split_Id_Calc_User (
INSERT INTO tmp_Split_Calc_User (
substring substring
, as_int , as_int
) )
@@ -263,15 +315,15 @@ BEGIN
; ;
IF a_debug = 1 THEN IF a_debug = 1 THEN
SELECT 'Permissions split', a_ids_permission; SELECT 'Permissions split', a_ids_permission_required;
SELECT * SELECT *
FROM tmp_Split_Calc_User; FROM tmp_Split_Id_Calc_User;
END IF; END IF;
CALL parts.p_core_clear_split( a_guid ); CALL parts.p_core_clear_split( a_guid );
# Invalid or inactive # Invalid or inactive
IF EXISTS (SELECT PERMISSION.id_permission FROM tmp_Split_Calc_User t_SPLIT LEFT JOIN parts.DOG_Permission PERMISSION ON t_SPLIT.as_int = PERMISSION.id_permission WHERE ISNULL(t_SPLIT.as_int) OR ISNULL(PERMISSION.id_permission) OR PERMISSION.active = 0) THEN IF EXISTS (SELECT PERMISSION.id_permission FROM tmp_Split_Id_Calc_User t_SPLIT LEFT JOIN parts.DOG_Permission PERMISSION ON t_SPLIT.as_int = PERMISSION.id_permission WHERE ISNULL(t_SPLIT.as_int) OR ISNULL(PERMISSION.id_permission) OR PERMISSION.active = 0) THEN
INSERT INTO tmp_Msg_Error_Calc_User ( INSERT INTO tmp_Msg_Error_Calc_User (
id_type id_type
, code , code
@@ -281,7 +333,7 @@ BEGIN
v_id_type_error_bad_data v_id_type_error_bad_data
, v_code_type_error_bad_data , v_code_type_error_bad_data
, CONCAT('Invalid or inactive permission IDs: ', IFNULL(GROUP_CONCAT(t_SPLIT.substring SEPARATOR ','), 'NULL')) , CONCAT('Invalid or inactive permission IDs: ', IFNULL(GROUP_CONCAT(t_SPLIT.substring SEPARATOR ','), 'NULL'))
FROM tmp_Split_Calc_User t_SPLIT FROM tmp_Split_Id_Calc_User t_SPLIT
LEFT JOIN parts.DOG_Permission PERMISSION ON t_SPLIT.as_int = PERMISSION.id_permission LEFT JOIN parts.DOG_Permission PERMISSION ON t_SPLIT.as_int = PERMISSION.id_permission
WHERE WHERE
ISNULL(t_SPLIT.as_int) ISNULL(t_SPLIT.as_int)
@@ -291,7 +343,7 @@ BEGIN
ELSE ELSE
SET v_id_permission_required := ( SET v_id_permission_required := (
SELECT PERMISSION.id_permission SELECT PERMISSION.id_permission
FROM tmp_Split_Calc_User t_SPLIT FROM tmp_Split_Id_Calc_User t_SPLIT
INNER JOIN parts.DOG_Permission PERMISSION ON t_SPLIT.as_int = PERMISSION.id_permission INNER JOIN parts.DOG_Permission PERMISSION ON t_SPLIT.as_int = PERMISSION.id_permission
INNER JOIN parts.DOG_Access_Level ACCESS_LEVEL ON PERMISSION.id_access_level_required = ACCESS_LEVEL.id_access_level INNER JOIN parts.DOG_Access_Level ACCESS_LEVEL ON PERMISSION.id_access_level_required = ACCESS_LEVEL.id_access_level
ORDER BY ACCESS_LEVEL.priority ASC ORDER BY ACCESS_LEVEL.priority ASC
@@ -299,129 +351,398 @@ BEGIN
); );
END IF; END IF;
END IF; END IF;
DELETE FROM tmp_Split_Calc_User; DELETE FROM tmp_Split_Id_Calc_User;
SET v_priority_access_level_required := (
SELECT ACCESS_LEVEL.priority
FROM parts.DOG_Access_Level ACCESS_LEVEL
LEFT JOIN parts.DOG_Permission PERMISSION ON ACCESS_LEVEL.id_access_level = PERMISSION.id_access_level_required
WHERE
ACCESS_LEVEL.id_access_level = v_id_access_level_required
OR PERMISSION.id_permission = v_id_permission_required
ORDER BY ACCESS_LEVEL.priority
LIMIT 1
);
# Users # Users
CALL parts.p_core_clear_split( a_guid ); # Ids
CALL parts.p_core_split(a_guid, a_ids_user, ',', a_debug); IF v_has_filter_user_id = 1 THEN
CALL parts.p_core_split(a_guid, a_ids_user, ',', a_debug);
DELETE FROM tmp_Split_Calc_User; INSERT INTO tmp_Split_Id_Calc_User (
INSERT INTO tmp_Split_Calc_User ( substring
substring , as_int
, as_int
)
SELECT
substring
, CONVERT(substring, DECIMAL(10,0)) AS as_int
FROM parts.CORE_Split_Temp
WHERE
GUID = a_guid
AND NOT ISNULL(substring)
AND substring != ''
;
IF a_debug = 1 THEN
SELECT 'Users split', a_ids_user;
SELECT *
FROM tmp_Split_Calc_User;
END IF;
CALL parts.p_core_clear_split( a_guid );
IF a_debug = 1 THEN
SELECT v_id_permission_required, v_id_access_level, v_priority_access_level;
SELECT * FROM tmp_User_Calc_User;
SELECT * FROM tmp_Msg_Error_Calc_User;
END IF;
# Invalid or inactive
IF EXISTS (
SELECT USER.id_user
FROM tmp_Split_Calc_User t_SPLIT
LEFT JOIN parts.DOG_User USER ON t_SPLIT.as_int = USER.id_user
WHERE
ISNULL(t_SPLIT.as_int)
OR ISNULL(USER.id_user)
OR (
a_get_inactive_user = 0
AND USER.active = 0
)
) )
THEN
INSERT INTO tmp_Msg_Error_Calc_User (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('Invalid or inactive user IDs: ', IFNULL(GROUP_CONCAT(t_SPLIT.substring SEPARATOR ','), 'NULL'))
FROM tmp_Split_Calc_User t_SPLIT
LEFT JOIN parts.DOG_User USER ON t_SPLIT.as_int = USER.id_user
WHERE
ISNULL(t_SPLIT.as_int)
OR ISNULL(USER.id_user)
OR (
a_get_inactive_user = 0
AND USER.active = 0
)
;
ELSE
IF NOT EXISTS (SELECT * FROM tmp_Split_Calc_User) THEN
INSERT INTO tmp_Split_Calc_User ( substring, as_int )
VALUES ( '', NULL );
END IF;
INSERT INTO tmp_User_Calc_User (
id_user
, is_super_user
, priority_access_level
)
SELECT SELECT
USER.id_user SPLIT_T.substring
, IFNULL(USER.is_super_user, 0) AS is_super_user , CONVERT(SPLIT_T.substring, DECIMAL(10,0)) AS as_int
, IFNULL(MIN(ACCESS_LEVEL.priority), v_priority_access_level_view) AS priority_access_level FROM parts.CORE_Split_Temp SPLIT_T
FROM tmp_Split_Calc_User t_SPLIT WHERE
INNER JOIN parts.DOG_User USER ON t_SPLIT.as_int = USER.id_user SPLIT_T.GUID = a_guid
LEFT JOIN parts.DOG_User_Role_Link USER_ROLE_LINK AND IFNULL(SPLIT_T.substring, '') != ''
ON USER.id_user = USER_ROLE_LINK.id_user
AND USER_ROLE_LINK.active
LEFT JOIN parts.DOG_Role_Permission_Link ROLE_PERMISSION_LINK
ON USER_ROLE_LINK.id_role = ROLE_PERMISSION_LINK.id_role
AND ROLE_PERMISSION_LINK.active
LEFT JOIN parts.DOG_Access_Level ACCESS_LEVEL
ON ROLE_PERMISSION_LINK.id_access_level = ACCESS_LEVEL.id_access_level
AND ACCESS_LEVEL.active
GROUP BY USER.id_user
; ;
INSERT INTO tmp_Calc_User ( IF a_debug = 1 THEN
id_user SELECT 'User Id split', a_ids_user;
, id_permission_required SELECT *
, priority_access_level_required FROM tmp_Split_Id_Calc_User;
, priority_access_level_user END IF;
CALL parts.p_core_clear_split( a_guid );
# Invalid or inactive
IF EXISTS (
SELECT USER.id_user
FROM tmp_Split_Id_Calc_User t_SPLIT
LEFT JOIN parts.DOG_User USER ON t_SPLIT.as_int = USER.id_user
WHERE
ISNULL(t_SPLIT.as_int)
OR ISNULL(USER.id_user)
OR (
a_get_inactive_user = 0
AND USER.active = 0
)
)
THEN
INSERT INTO tmp_Msg_Error_Calc_User (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('Invalid or inactive user IDs: ', IFNULL(GROUP_CONCAT(t_SPLIT.substring SEPARATOR ','), 'NULL'))
FROM tmp_Split_Id_Calc_User t_SPLIT
LEFT JOIN parts.DOG_User USER ON t_SPLIT.as_int = USER.id_user
WHERE
ISNULL(t_SPLIT.as_int)
OR ISNULL(USER.id_user)
OR (
a_get_inactive_user = 0
AND USER.active = 0
)
;
END IF;
END IF;
# Auth0 Ids
IF v_has_filter_user_auth0_id = 1 THEN
CALL parts.p_core_split(a_guid, a_auth0_ids_user, ',', a_debug);
INSERT INTO tmp_Split_Auth0_Id_Calc_User ( substring )
SELECT SPLIT_T.substring
FROM parts.CORE_Split_Temp SPLIT_T
WHERE
SPLIT_T.GUID = a_guid
AND IFNULL(SPLIT_T.substring, '') != ''
;
IF a_debug = 1 THEN
SELECT 'User Auth0 Id split', a_auth0_ids_user;
SELECT *
FROM tmp_Split_Auth0_Id_Calc_User;
END IF;
CALL parts.p_core_clear_split( a_guid );
# Invalid or inactive
IF EXISTS (
SELECT USER.id_user
FROM tmp_Split_Auth0_Id_Calc_User t_SPLIT
LEFT JOIN parts.DOG_User USER ON t_SPLIT.substring = USER.id_user_auth0
WHERE
ISNULL(USER.id_user)
OR (
a_get_inactive_user = 0
AND USER.active = 0
)
)
THEN
INSERT INTO tmp_Msg_Error_Calc_User (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('Invalid or inactive user Auth0 IDs: ', IFNULL(GROUP_CONCAT(t_SPLIT.substring SEPARATOR ','), 'NULL'))
FROM tmp_Split_Auth0_Id_Calc_User t_SPLIT
LEFT JOIN parts.DOG_User USER ON t_SPLIT.substring = USER.id_user_auth0
WHERE
ISNULL(USER.id_user)
OR (
a_get_inactive_user = 0
AND USER.active = 0
)
;
END IF;
END IF;
# Names
IF v_has_filter_user_name = 1 THEN
CALL parts.p_core_split(a_guid, a_names_user, ',', a_debug);
INSERT INTO tmp_Split_Name_Calc_User ( substring )
SELECT SPLIT_T.substring
FROM parts.CORE_Split_Temp SPLIT_T
WHERE
SPLIT_T.GUID = a_guid
AND IFNULL(SPLIT_T.substring, '') != ''
;
IF a_debug = 1 THEN
SELECT 'User Name split', a_names_user;
SELECT *
FROM tmp_Split_Name_Calc_User;
END IF;
CALL parts.p_core_clear_split( a_guid );
END IF;
# Emails
IF v_has_filter_user_email = 1 THEN
CALL parts.p_core_split(a_guid, a_emails_user, ',', a_debug);
INSERT INTO tmp_Split_Email_Calc_User ( substring )
SELECT SPLIT_T.substring
FROM parts.CORE_Split_Temp SPLIT_T
WHERE
SPLIT_T.GUID = a_guid
AND IFNULL(SPLIT_T.substring, '') != ''
;
IF a_debug = 1 THEN
SELECT 'User Email split', a_emails_user;
SELECT *
FROM tmp_Split_Email_Calc_User;
END IF;
CALL parts.p_core_clear_split( a_guid );
END IF;
-- Get all users
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error_Calc_User t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
INSERT INTO tmp_Calc_User (
id_user
, id_permission_required
, priority_access_level_required
, is_super_user , is_super_user
) /*
SELECT , priority_access_level_user
t_USER.id_user , can_view
, v_id_permission_required , can_edit
, v_priority_access_level AS priority_access_level_required , can_admin
, t_USER.is_super_user AS is_super_user */
, t_USER.priority_access_level AS priority_access_level_user , does_meet_id_filters
FROM tmp_User_Calc_User t_USER , does_meet_non_id_filters
; )
WITH
User_Id_Filter AS (
SELECT USER.id_user
FROM tmp_Split_Id_Calc_User t_SPLIT_ID
INNER JOIN parts.DOG_User USER ON t_SPLIT_ID.as_int = USER.id_user
)
, User_Auth0_Id_Filter AS (
SELECT USER.id_user
FROM tmp_Split_Auth0_Id_Calc_User t_SPLIT_AUTH0_ID
INNER JOIN parts.DOG_User USER ON t_SPLIT_AUTH0_ID.substring = USER.id_user_auth0
)
, User_Name_Filter AS (
SELECT USER.id_user
FROM tmp_Split_Name_Calc_User t_SPLIT_NAME
INNER JOIN parts.DOG_User USER ON CONCAT(USER.firstname, ' ', USER.surname) LIKE CONCAT('%', t_SPLIT_NAME.substring, '%')
WHERE IFNULL(t_SPLIT_NAME.substring, '') <> ''
)
, User_Email_Filter AS (
SELECT USER.id_user
FROM tmp_Split_Email_Calc_User t_SPLIT_EMAIL
INNER JOIN demo.DOG_User USER ON USER.email LIKE CONCAT('%', t_SPLIT_EMAIL.substring, '%')
WHERE IFNULL(t_SPLIT_EMAIL.substring, '') <> ''
)
, User_Filters AS (
SELECT
USER_COMBINED.id_user
, MAX(USER_COMBINED.does_meet_id_filter) AS does_meet_id_filter
, MAX(USER_COMBINED.does_meet_auth0_id_filter) AS does_meet_auth0_id_filter
, MAX(USER_COMBINED.does_meet_name_filter) AS does_meet_name_filter
, MAX(USER_COMBINED.does_meet_email_filter) AS does_meet_email_filter
FROM (
SELECT
USER_ID_FILTER.id_user
, 1 AS does_meet_id_filter
, 0 AS does_meet_auth0_id_filter
, 0 AS does_meet_name_filter
, 0 AS does_meet_email_filter
FROM User_Id_Filter USER_ID_FILTER
UNION
SELECT
USER_AUTH0_ID_FILTER.id_user
, 0 AS does_meet_id_filter
, 1 AS does_meet_auth0_id_filter
, 0 AS does_meet_name_filter
, 0 AS does_meet_email_filter
FROM User_Auth0_Id_Filter USER_AUTH0_ID_FILTER
UNION
SELECT
USER_NAME_FILTER.id_user
, 0 AS does_meet_id_filter
, 0 AS does_meet_auth0_id_filter
, 1 AS does_meet_name_filter
, 0 AS does_meet_email_filter
FROM User_Name_Filter USER_NAME_FILTER
UNION
SELECT
USER_EMAIL_FILTER.id_user
, 0 AS does_meet_id_filter
, 0 AS does_meet_auth0_id_filter
, 0 AS does_meet_name_filter
, 1 AS does_meet_email_filter
FROM User_Email_Filter USER_EMAIL_FILTER
) USER_COMBINED
GROUP BY USER_COMBINED.id_user
)
SELECT
USER.id_user -- id_user
# SET v_has_filter_user = EXISTS ( SELECT * FROM tmp_User_Calc_User LIMIT 1 ); , v_id_permission_required -- id_permission_required
, v_priority_access_level_required -- priority_access_level_required
, IFNULL(USER.is_super_user, 0) AS is_super_user
, CASE WHEN
(
v_has_filter_user_id = 0
AND v_has_filter_user_auth0_id = 0
)
OR IFNULL(USER_FILTERS.does_meet_id_filter, 0) = 1
OR IFNULL(USER_FILTERS.does_meet_auth0_id_filter, 0) = 1
THEN 1 ELSE 0 END AS does_meet_id_filters
, CASE WHEN
(
v_has_filter_user_name = 0
AND v_has_filter_user_email = 0
)
OR IFNULL(USER_FILTERS.does_meet_name_filter, 0) = 1
OR IFNULL(USER_FILTERS.does_meet_email_filter, 0) = 1
THEN 1 ELSE 0 END AS does_meet_non_id_filters
FROM parts.DOG_User USER
LEFT JOIN User_Filters USER_FILTERS ON USER.id_user = USER_FILTERS.id_user
WHERE
(
a_get_all_user = 1
OR (
v_has_filter_user_id = 1
AND USER_FILTERS.does_meet_id_filter = 1
)
OR (
v_has_filter_user_auth0_id = 1
AND USER_FILTERS.does_meet_auth0_id_filter = 1
)
OR (
v_has_filter_user_name = 1
AND USER_FILTERS.does_meet_name_filter = 1
)
OR (
v_has_filter_user_email = 1
AND USER_FILTERS.does_meet_email_filter = 1
)
)
AND (
a_get_inactive_user = 1
OR USER.active = 1
)
;
END IF; END IF;
DELETE FROM tmp_Split_Calc_User;
DELETE FROM tmp_Split_Id_Calc_User;
DELETE FROM tmp_Split_Auth0_Id_Calc_User;
DELETE FROM tmp_Split_Name_Calc_User;
DELETE FROM tmp_Split_Email_Calc_User;
IF a_debug = 1 THEN
SELECT 'After get Users';
SELECT * FROM tmp_Calc_User;
END IF;
-- Filter records
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error_Calc_User t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
DELETE t_USER
FROM tmp_Calc_User t_USER
WHERE
(
a_require_all_id_search_filters_met = 1
AND t_USER.does_meet_id_filters = 0
)
OR (
a_require_all_non_id_search_filters_met = 1
AND t_USER.does_meet_non_id_filters = 0
)
OR (
a_require_any_id_search_filters_met = 1
AND t_USER.does_meet_id_filters = 0
)
OR (
a_require_any_non_id_search_filters_met = 1
AND t_USER.does_meet_non_id_filters = 0
)
;
END IF;
IF a_debug = 1 THEN
SELECT 'After filter Users';
SELECT * FROM tmp_Calc_User;
END IF;
-- Calculated fields -- Calculated fields
-- Priority Access Level User
WITH User_Access_Level AS (
SELECT
USER.id_user
, MIN(IFNULL(ACCESS_LEVEL.priority, v_priority_access_level_none)) AS priority_access_level
FROM parts.DOG_User USER -- tmp_Calc_User t_CALC_USER
LEFT JOIN parts.DOG_User_Role_Link USER_ROLE_LINK
ON USER.id_user = USER_ROLE_LINK.id_user
AND USER_ROLE_LINK.active = 1
LEFT JOIN parts.DOG_Role_Permission_Link ROLE_PERMISSION_LINK
ON USER_ROLE_LINK.id_role = ROLE_PERMISSION_LINK.id_role
AND ROLE_PERMISSION_LINK.active = 1
LEFT JOIN parts.DOG_Access_Level ACCESS_LEVEL
ON ROLE_PERMISSION_LINK.id_access_level = ACCESS_LEVEL.id_access_level
AND ACCESS_LEVEL.active = 1
GROUP BY USER.id_user
)
UPDATE tmp_Calc_User t_CALC_USER
INNER JOIN User_Access_Level USER_ACCESS_LEVEL ON t_CALC_USER.id_user = USER_ACCESS_LEVEL.id_user
SET
t_CALC_USER.priority_access_level_user = USER_ACCESS_LEVEL.priority_access_level
, t_CALC_USER.has_access = CASE WHEN USER_ACCESS_LEVEL.priority_access_level <= v_priority_access_level_required THEN 1 ELSE 0 END
;
-- Has access
UPDATE tmp_Calc_User t_CALC_USER UPDATE tmp_Calc_User t_CALC_USER
SET SET
t_CALC_USER.can_view = t_CALC_USER.is_super_user = 1 OR (t_CALC_USER.priority_access_level_user <= v_priority_access_level_view AND t_CALC_USER.priority_access_level_user <= t_CALC_USER.priority_access_level_required) t_CALC_USER.can_view = CASE WHEN
, t_CALC_USER.can_edit = t_CALC_USER.is_super_user = 1 OR (t_CALC_USER.priority_access_level_user <= v_priority_access_level_edit AND t_CALC_USER.priority_access_level_user <= t_CALC_USER.priority_access_level_required) t_CALC_USER.is_super_user = 1
, t_CALC_USER.can_admin = t_CALC_USER.is_super_user = 1 OR (t_CALC_USER.priority_access_level_user <= v_priority_access_level_admin AND t_CALC_USER.priority_access_level_user <= t_CALC_USER.priority_access_level_required) OR (
t_CALC_USER.priority_access_level_user <= v_priority_access_level_view
AND t_CALC_USER.has_access = 1
)
THEN 1 ELSE 0 END
, t_CALC_USER.can_edit = CASE WHEN
t_CALC_USER.is_super_user = 1
OR (
t_CALC_USER.priority_access_level_user <= v_priority_access_level_edit
AND t_CALC_USER.has_access = 1
)
THEN 1 ELSE 0 END
, t_CALC_USER.can_admin = CASE WHEN
t_CALC_USER.is_super_user = 1
OR (
t_CALC_USER.priority_access_level_user <= v_priority_access_level_admin
AND t_CALC_USER.has_access = 1
)
THEN 1 ELSE 0 END
; ;
-- Export data to staging table -- Export data to staging table
@@ -446,7 +767,7 @@ BEGIN
, t_CALC_USER.priority_access_level_required , t_CALC_USER.priority_access_level_required
, t_CALC_USER.is_super_user , t_CALC_USER.is_super_user
, t_CALC_USER.priority_access_level_user , t_CALC_USER.priority_access_level_user
, CASE WHEN t_CALC_USER.priority_access_level_user <= t_CALC_USER.priority_access_level_required THEN 1 ELSE 0 END AS has_access , t_CALC_USER.has_access
, t_CALC_USER.can_view , t_CALC_USER.can_view
, t_CALC_USER.can_edit , t_CALC_USER.can_edit
, t_CALC_USER.can_admin , t_CALC_USER.can_admin
@@ -473,17 +794,19 @@ BEGIN
END IF; END IF;
IF a_debug = 1 THEN IF a_debug = 1 THEN
SELECT 'End';
SELECT * FROM tmp_Msg_Error_Calc_User; SELECT * FROM tmp_Msg_Error_Calc_User;
SELECT * FROM tmp_Calc_User; SELECT * FROM tmp_Calc_User;
SELECT * FROM tmp_User_Calc_User;
SELECT * FROM parts.DOG_Calc_User_Temp WHERE GUID = a_guid; SELECT * FROM parts.DOG_Calc_User_Temp WHERE GUID = a_guid;
CALL parts.p_dog_clear_calc_user ( a_guid, a_debug ); CALL parts.p_dog_clear_calc_user ( a_guid, a_debug );
END IF; END IF;
-- Clean up -- Clean up
DROP TABLE IF EXISTS tmp_Split_Calc_User; DROP TABLE IF EXISTS tmp_Split_Email_Calc_User;
DROP TABLE IF EXISTS tmp_Split_Name_Calc_User;
DROP TABLE IF EXISTS tmp_Split_Auth0_Id_Calc_User;
DROP TABLE IF EXISTS tmp_Split_Id_Calc_User;
DROP TABLE IF EXISTS tmp_Msg_Error_Calc_User; DROP TABLE IF EXISTS tmp_Msg_Error_Calc_User;
DROP TABLE IF EXISTS tmp_User_Calc_User;
DROP TABLE IF EXISTS tmp_Calc_User; DROP TABLE IF EXISTS tmp_Calc_User;
IF a_debug = 1 THEN IF a_debug = 1 THEN
@@ -492,30 +815,23 @@ BEGIN
END // END //
DELIMITER ; DELIMITER ;
/* /*
IN a_guid BINARY(36)
CALL parts.p_dog_calc_user ( , IN a_get_all_user BIT
'chips ' -- a_guid , IN a_get_inactive_user BIT
, 1 -- a_ids_user , IN a_ids_user TEXT
, 0 -- a_get_inactive_user , IN a_auth0_ids_user TEXT
, '2' -- a_ids_permission , IN a_names_user TEXT
, '1' -- a_ids_access_level , IN a_emails_user TEXT
, 0 -- a_show_errors , IN a_require_all_id_search_filters_met BIT
, 0 -- a_debug , IN a_require_any_id_search_filters_met BIT
); , IN a_require_all_non_id_search_filters_met BIT
CALL parts.p_dog_calc_user ( , IN a_require_any_non_id_search_filters_met BIT
'chips ' -- a_guid , IN a_ids_permission_required TEXT
, 1 -- a_ids_user , IN a_ids_access_level_required TEXT
, 0 -- a_get_inactive_user , IN a_show_errors BIT
, '2' -- a_ids_permission , IN a_debug BIT
, '1' -- a_ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
);
SELECT * FROM parts.DOG_Calc_User_Temp WHERE GUID = 'chips ';
DELETE FROM parts.DOG_Calc_User_Temp WHERE GUID = 'chips ';
*/
-- SELECT * FROM parts.DOG_Calc_User_Temp; -- SELECT * FROM parts.DOG_Calc_User_Temp;
@@ -526,10 +842,18 @@ DROP TABLE IF EXISTS tmp_Msg_Error_Calc_User;
CALL parts.p_dog_calc_user( CALL parts.p_dog_calc_user(
'chips '-- a_guid 'chips '-- a_guid
, '1' -- a_ids_user , 0 -- a_get_all_user
, 0 -- a_get_inactive_user , 0 -- a_get_inactive_user
, '8' -- a_ids_permission , '1' -- a_ids_user
, '1' -- a_ids_access_level , '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 1 -- a_require_any_non_id_search_filters_met
, '8' -- a_ids_permission_required
, '1' -- a_ids_access_level_required
, 1 -- a_show_errors , 1 -- a_show_errors
, 0 -- a_debug , 0 -- a_debug
); );
@@ -538,3 +862,4 @@ CALL parts.p_dog_clear_calc_user ( 'chips ', 0 );
DROP TABLE IF EXISTS tmp_Msg_Error_Calc_User; DROP TABLE IF EXISTS tmp_Msg_Error_Calc_User;
*/

View File

@@ -349,6 +349,11 @@ BEGIN
DELETE FROM tmp_Split_Id_Calc_Dog; DELETE FROM tmp_Split_Id_Calc_Dog;
DELETE FROM tmp_Split_Name_Calc_Dog; DELETE FROM tmp_Split_Name_Calc_Dog;
IF a_debug = 1 THEN
SELECT 'After get all dogs';
SELECT * FROM tmp_Dog_Calc_Dog;
END IF;
-- Filter records -- Filter records
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error_Calc_Dog t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN IF NOT EXISTS (SELECT * FROM tmp_Msg_Error_Calc_Dog t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
DELETE t_DOG DELETE t_DOG
@@ -373,13 +378,26 @@ BEGIN
; ;
END IF; END IF;
IF a_debug = 1 THEN
SELECT 'After filter dogs';
SELECT * FROM tmp_Dog_Calc_Dog;
END IF;
-- Permissions -- Permissions
IF a_debug = 1 THEN IF a_debug = 1 THEN
SELECT SELECT
a_guid -- a_guid a_guid -- a_guid
, a_id_user -- a_id_user , 0 -- get_all_user
, FALSE -- a_get_inactive_user , 0 -- get_inactive_user
, v_id_permission_dog_view -- ids_permission , a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level , v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors , 0 -- a_show_errors
, 0 -- a_debug , 0 -- a_debug
@@ -388,8 +406,16 @@ BEGIN
CALL parts.p_dog_calc_user( CALL parts.p_dog_calc_user(
a_guid -- a_guid a_guid -- a_guid
, a_id_user -- a_id_user , 0 -- get_all_user
, FALSE -- a_get_inactive_user , 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission , v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level , v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors , 0 -- a_show_errors
@@ -401,7 +427,7 @@ BEGIN
INTO INTO
v_can_view v_can_view
FROM parts.DOG_Calc_User_Temp CALC_USER_T FROM parts.DOG_Calc_User_Temp CALC_USER_T
WHERE CALC_USER_T.GUID = a_guid WHERE CALC_USER_T.guid = a_guid
LIMIT 1 LIMIT 1
; ;

View File

@@ -146,9 +146,17 @@ BEGIN
IF a_debug = 1 THEN IF a_debug = 1 THEN
SELECT SELECT
v_guid -- guid v_guid -- guid
, a_id_user -- ids_user , 0 -- get_all_user
, FALSE -- a_get_inactive_user , 0 -- get_inactive_user
, v_id_permission_dog_view -- ids_permission , a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level , v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors , 0 -- a_show_errors
, a_debug -- a_debug , a_debug -- a_debug
@@ -157,8 +165,16 @@ BEGIN
CALL parts.p_dog_calc_user( CALL parts.p_dog_calc_user(
v_guid-- guid v_guid-- guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user , a_id_user -- ids_user
, FALSE -- a_get_inactive_user , '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission , v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level , v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors , 0 -- a_show_errors

View File

@@ -214,10 +214,18 @@ BEGIN
IF a_debug = 1 THEN IF a_debug = 1 THEN
SELECT SELECT
a_guid a_guid
, a_id_user , 0 -- get_all_user
, FALSE -- a_get_inactive_user , 0 -- get_inactive_user
, v_id_permission_dog_admin , a_id_user -- ids_user
, v_id_permission_dog_new , '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_admin -- ids_permission
, v_id_access_level_admin -- ids_access_level
, 0 -- a_debug , 0 -- a_debug
; ;
END IF; END IF;
@@ -225,9 +233,17 @@ BEGIN
-- Can Admin -- Can Admin
CALL parts.p_dog_calc_user( CALL parts.p_dog_calc_user(
a_guid a_guid
, a_id_user , 0 -- get_all_user
, FALSE -- a_get_inactive_user , 0 -- get_inactive_user
, v_id_permission_dog_admin-- ids_permission , a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_admin -- ids_permission
, v_id_access_level_admin -- ids_access_level , v_id_access_level_admin -- ids_access_level
, 0 -- a_show_errors , 0 -- a_show_errors
, 0 -- a_debug , 0 -- a_debug
@@ -250,9 +266,17 @@ BEGIN
-- Can Create -- Can Create
CALL parts.p_dog_calc_user( CALL parts.p_dog_calc_user(
a_guid a_guid
, a_id_user , 0 -- get_all_user
, FALSE -- a_get_inactive_user , 0 -- get_inactive_user
, v_id_permission_dog_new-- ids_permission , a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_new -- ids_permission
, v_id_access_level_create -- ids_access_level , v_id_access_level_create -- ids_access_level
, 0 -- a_show_errors , 0 -- a_show_errors
, 0 -- a_debug , 0 -- a_debug

View File

@@ -891,9 +891,17 @@ BEGIN
IF a_debug = 1 THEN IF a_debug = 1 THEN
SELECT SELECT
a_guid -- a_guid a_guid -- a_guid
, a_id_user -- a_id_user , 0 -- get_all_user
, FALSE -- a_get_inactive_user , 0 -- get_inactive_user
, v_id_permission_dog_view -- ids_permission , a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level , v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors , 0 -- a_show_errors
, 0 -- a_debug , 0 -- a_debug
@@ -902,8 +910,16 @@ BEGIN
CALL parts.p_dog_calc_user( CALL parts.p_dog_calc_user(
a_guid -- a_guid a_guid -- a_guid
, a_id_user -- a_id_user , 0 -- get_all_user
, FALSE -- a_get_inactive_user , 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission , v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level , v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors , 0 -- a_show_errors

View File

@@ -182,9 +182,17 @@ BEGIN
IF a_debug = 1 THEN IF a_debug = 1 THEN
SELECT SELECT
v_guid v_guid
, a_id_user , 0 -- get_all_user
, FALSE -- a_get_inactive_user , 0 -- get_inactive_user
, v_id_permission_dog_view -- ids_permission , a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level , v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors , 0 -- a_show_errors
, 0 -- a_debug , 0 -- a_debug
@@ -193,8 +201,16 @@ BEGIN
CALL parts.p_dog_calc_user( CALL parts.p_dog_calc_user(
v_guid v_guid
, a_id_user , 0 -- get_all_user
, FALSE -- a_get_inactive_user , 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission , v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level , v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors , 0 -- a_show_errors

View File

@@ -285,9 +285,17 @@ BEGIN
IF a_debug = 1 THEN IF a_debug = 1 THEN
SELECT SELECT
v_guid v_guid
, a_id_user , 0 -- get_all_user
, FALSE -- a_get_inactive_user , 0 -- get_inactive_user
, v_id_permission_dog_view -- A_ids_permission , a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level , v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors , 0 -- a_show_errors
, 0 -- a_debug , 0 -- a_debug
@@ -296,9 +304,17 @@ BEGIN
CALL parts.p_dog_calc_user( CALL parts.p_dog_calc_user(
v_guid -- a_guid v_guid -- a_guid
, a_id_user -- a_ids_user , 0 -- get_all_user
, FALSE -- a_get_inactive_user , 0 -- get_inactive_user
, v_id_permission_dog_view -- a_ids_permission , a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level , v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors , 0 -- a_show_errors
, 0 -- a_debug , 0 -- a_debug

View File

@@ -76,6 +76,12 @@ VALUES
, 'Admin' , 'Admin'
, 1 , 1
) )
, (
4
, 'NONE'
, 'None'
, 999
)
; ;
-- Permission Groups -- Permission Groups

View File

@@ -252,8 +252,16 @@ BEGIN
IF a_debug = 1 THEN IF a_debug = 1 THEN
SELECT SELECT
v_guid v_guid
, a_id_user , 0 -- get_all_user
, FALSE -- a_get_inactive_user , 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_command_view -- ids_permission , v_id_permission_command_view -- ids_permission
, v_id_access_level_view -- ids_access_level , v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors , 0 -- a_show_errors
@@ -263,8 +271,16 @@ BEGIN
CALL parts.p_dog_calc_user( CALL parts.p_dog_calc_user(
v_guid v_guid
, a_id_user , 0 -- get_all_user
, FALSE -- a_get_inactive_user , 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_command_view -- ids_permission , v_id_permission_command_view -- ids_permission
, v_id_access_level_view -- ids_access_level , v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors , 0 -- a_show_errors

View File

@@ -289,9 +289,17 @@ BEGIN
IF a_debug = 1 THEN IF a_debug = 1 THEN
SELECT SELECT
v_guid v_guid
, a_id_user , 0 -- get_all_user
, FALSE -- a_get_inactive_user , 0 -- get_inactive_user
, v_id_permission_understanding_level_view -- ids_permission , a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level , v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors , 0 -- a_show_errors
, 0 -- a_debug , 0 -- a_debug
@@ -300,9 +308,17 @@ BEGIN
CALL parts.p_dog_calc_user( CALL parts.p_dog_calc_user(
v_guid v_guid
, a_id_user , 0 -- get_all_user
, FALSE -- a_get_inactive_user , 0 -- get_inactive_user
, v_id_permission_understanding_level_view -- ids_permission , a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level , v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors , 0 -- a_show_errors
, 0 -- a_debug , 0 -- a_debug

View File

@@ -37,7 +37,9 @@
width: 90vh; width: 90vh;
} }
#tableMain select, #tableMain input:not([type="checkbox"]), #tableMain textarea, #tableMain div { #tableMain select,
#tableMain input:not([type="checkbox"]),
#tableMain textarea, #tableMain div {
box-sizing: border-box; box-sizing: border-box;
width: 100%; width: 100%;
height: 100%; height: 100%;
@@ -52,14 +54,36 @@
height: 5vh; height: 5vh;
padding-top: 0.5vh; padding-top: 0.5vh;
} }
#tableMain tbody tr td:has(.dirty) {
background-color: var(--colour-primary);
}
#tableMain tbody tr:not(:last-of-type) td { #tableMain tbody tr:not(:last-of-type) td {
padding-bottom: 0.5vh; padding-bottom: 0.5vh;
} }
#tableMain thead tr th.active, #tableMain tbody tr td.active { #tableMain thead tr th.active,
#tableMain tbody tr td.active {
width: 6vh; width: 6vh;
min-width: 6vh; min-width: 6vh;
} }
#tableMain tbody tr td.display_order, #tableMain thead tr th.display_order { #tableMain thead tr th.active svg.active.add {
fill: var(--colour-primary);
background-color: var(--colour-accent);
border: 2px solid var(--colour-accent);
padding: 0;
border-radius: 1vh;
}
#tableMain tbody tr td.active svg.active.add {
fill: var(--colour-primary);
}
#tableMain tbody tr td.active svg.active.delete {
fill: var(--colour-error);
}
#tableMain tbody tr td.display_order,
#tableMain thead tr th.display_order {
width: 5vh; width: 5vh;
min-width: 5vh; min-width: 5vh;
} }
#container-template-elements {
display: none;
}

View File

@@ -122,7 +122,7 @@ export default class DOM {
else if (tagName === 'INPUT' || tagName === 'TEXTAREA' || tagName === 'SELECT') { else if (tagName === 'INPUT' || tagName === 'TEXTAREA' || tagName === 'SELECT') {
returnVal = element.value; returnVal = element.value;
} }
else if (tagName === 'BUTTON' && element.classList.contains(flagActive)) { else if (element.classList.contains(flagButton) && element.classList.contains(flagActive)) { // tagName === 'BUTTON'
returnVal = element.classList.contains(flagDelete); returnVal = element.classList.contains(flagDelete);
} }
else if (tagName === 'TD') { else if (tagName === 'TD') {
@@ -218,4 +218,15 @@ export default class DOM {
option.selected = optionJson.selected; option.selected = optionJson.selected;
return option; return option;
} }
static escapeHtml(text) {
const div = document.createElement('div');
div.textContent = text;
return div.innerHTML;
}
static unescapeHtml(html) {
const div = document.createElement('div');
div.innerHTML = html;
return div.textContent || div.innerText || '';
}
} }

View File

@@ -17,7 +17,7 @@ export default class Utils {
return list; return list;
} }
static consoleLogIfNotProductionEnvironment(message) { static consoleLogIfNotProductionEnvironment(message) {
if (!environment.is_production) { if (environment.is_production != "true") {
console.log(message); console.log(message);
} }
} }

View File

@@ -389,10 +389,10 @@ export default class TableBasePage extends BasePage {
let wasDirtyElement = element.classList.contains(flagDirty); let wasDirtyElement = element.classList.contains(flagDirty);
let isDirtyElement = DOM.updateAndCheckIsElementDirty(element); let isDirtyElement = DOM.updateAndCheckIsElementDirty(element);
Utils.consoleLogIfNotProductionEnvironment({isDirtyElement, wasDirtyElement, wasDirtyParentRows}); Utils.consoleLogIfNotProductionEnvironment({isDirtyElement, wasDirtyElement, wasDirtyParentRows});
let td = DOM.getCellFromElement(element); // let td = DOM.getCellFromElement(element);
DOM.setElementAttributeValueCurrent(td, DOM.getElementAttributeValueCurrent(element)); // DOM.setElementAttributeValueCurrent(td, DOM.getElementAttributeValueCurrent(element));
if (isDirtyElement != wasDirtyElement) { if (isDirtyElement != wasDirtyElement) {
DOM.handleDirtyElement(td, isDirtyElement); // DOM.handleDirtyElement(td, isDirtyElement);
this.updateAndToggleShowButtonsSaveCancel(); this.updateAndToggleShowButtonsSaveCancel();
this.cascadeChangedIsDirtyNestedElementCellTable(element, isDirtyElement, wasDirtyParentRows); this.cascadeChangedIsDirtyNestedElementCellTable(element, isDirtyElement, wasDirtyParentRows);
} }
@@ -402,7 +402,7 @@ export default class TableBasePage extends BasePage {
let parent = element; let parent = element;
let isDirty; let isDirty;
while (parent) { while (parent) {
if (parent.matches('tr')) { if (parent.tagName.toUpperCase() == 'TR') {
isDirty = parent.classList.contains(flagDirty) isDirty = parent.classList.contains(flagDirty)
rows.push(isDirty); rows.push(isDirty);
} }
@@ -412,11 +412,8 @@ export default class TableBasePage extends BasePage {
} }
cascadeChangedIsDirtyNestedElementCellTable(element, isDirtyElement, wasDirtyParentRows) { cascadeChangedIsDirtyNestedElementCellTable(element, isDirtyElement, wasDirtyParentRows) {
if (Validation.isEmpty(wasDirtyParentRows)) return; if (Validation.isEmpty(wasDirtyParentRows)) return;
let td = DOM.getCellFromElement(element); let tr = DOM.getRowFromElement(element);
let isDirtyTd = isDirtyElement || DOM.hasDirtyChildrenContainer(tr); let isDirtyRow = isDirtyElement || DOM.hasDirtyChildrenContainer(tr);
DOM.handleDirtyElement(td, isDirtyTd);
let tr = DOM.getRowFromElement(td);
let isDirtyRow = isDirtyTd || DOM.hasDirtyChildrenContainer(tr);
let wasDirtyRow = wasDirtyParentRows.shift(); let wasDirtyRow = wasDirtyParentRows.shift();
Utils.consoleLogIfNotProductionEnvironment({isDirtyRow, wasDirtyRow}); Utils.consoleLogIfNotProductionEnvironment({isDirtyRow, wasDirtyRow});
if (isDirtyRow != wasDirtyRow) { if (isDirtyRow != wasDirtyRow) {
@@ -440,7 +437,7 @@ export default class TableBasePage extends BasePage {
this.hookupChangeHandlerTableCells(idTableMain + ' tbody tr td.' + flagDescription + ' textarea'); this.hookupChangeHandlerTableCells(idTableMain + ' tbody tr td.' + flagDescription + ' textarea');
} }
hookupFieldsActive(flagTable = '', handleClickRowNew = (event, element) => { this.handleClickAddRowTable(event, element); }) { hookupFieldsActive(flagTable = '', handleClickRowNew = (event, element) => { this.handleClickAddRowTable(event, element); }) {
let selectorButton = 'table' + (Validation.isEmpty(flagTable) ? '' : '.' + flagTable) + ' > tbody > tr > td.' + flagActive + ' button'; let selectorButton = 'table' + (Validation.isEmpty(flagTable) ? '' : '.' + flagTable) + ' > tbody > tr > td.' + flagActive + ' .' + flagButton + '.' + flagActive;
let selectorButtonDelete = selectorButton + '.' + flagDelete; let selectorButtonDelete = selectorButton + '.' + flagDelete;
let selectorButtonUndelete = selectorButton + ':not(.' + flagDelete + ')'; let selectorButtonUndelete = selectorButton + ':not(.' + flagDelete + ')';
Utils.consoleLogIfNotProductionEnvironment("hookupFieldsActive: ", selectorButtonDelete, selectorButtonUndelete); Utils.consoleLogIfNotProductionEnvironment("hookupFieldsActive: ", selectorButtonDelete, selectorButtonUndelete);
@@ -448,7 +445,7 @@ export default class TableBasePage extends BasePage {
this.hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete); this.hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete);
this.hookupEventHandler( this.hookupEventHandler(
"click" "click"
, 'table' + (Validation.isEmpty(flagTable) ? '' : '.' + flagTable) + ' > thead > tr > th.' + flagActive + ' button' , 'table' + (Validation.isEmpty(flagTable) ? '' : '.' + flagTable) + ' > thead > tr > th.' + flagActive + ' .' + flagButton + '.' + flagActive
, (event, button) => { handleClickRowNew(event, button); } , (event, button) => { handleClickRowNew(event, button); }
); );
} }
@@ -458,18 +455,23 @@ export default class TableBasePage extends BasePage {
}); });
} }
handleClickButtonRowDelete(event, element, selectorButtonDelete, selectorButtonUndelete, changeHandler = (event, element) => { this.handleChangeNestedElementCellTable(event, element); }) { handleClickButtonRowDelete(event, element, selectorButtonDelete, selectorButtonUndelete, changeHandler = (event, element) => { this.handleChangeNestedElementCellTable(event, element); }) {
if (element.tagName.toUpperCase() != 'SVG') element = element.parentElement;
let valuePrevious = DOM.getElementAttributeValuePrevious(element);
let wasDirty = element.classList.contains(flagDirty);
let row = DOM.getRowFromElement(element); let row = DOM.getRowFromElement(element);
if (row.classList.contains(flagRowNew) && !DOM.hasDirtyChildrenContainer(row)) { if (row.classList.contains(flagRowNew) && !DOM.hasDirtyChildrenContainer(row)) {
row.parentNode.removeChild(row); row.parentNode.removeChild(row);
} }
let buttonAdd = element.cloneNode(false); else {
buttonAdd.classList.remove(flagInitialised); let buttonAddTemplate = document.querySelector(idContainerTemplateElements + ' .' + flagButton + '.' + flagActive + '.' + flagAdd);
buttonAdd.classList.remove(flagDelete); let buttonAdd = buttonAddTemplate.cloneNode(true);
buttonAdd.classList.add(flagAdd); DOM.setElementAttributeValuePrevious(buttonAdd, valuePrevious);
buttonAdd.textContent = '+'; DOM.setElementAttributeValueCurrent(buttonAdd, false);
element.replaceWith(buttonAdd); if (wasDirty) buttonAdd.classList.add(flagDirty);
changeHandler(null, buttonAdd); element.replaceWith(buttonAdd);
this.hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete, (changeEvent, changeElement) => { changeHandler(changeEvent, changeElement); }); changeHandler(null, buttonAdd);
this.hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete, (changeEvent, changeElement) => { changeHandler(changeEvent, changeElement); });
}
this.updateAndToggleShowButtonsSaveCancel(); this.updateAndToggleShowButtonsSaveCancel();
} }
hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete, changeHandler = (event, element) => { this.handleChangeNestedElementCellTable(event, element); }) { hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete, changeHandler = (event, element) => { this.handleChangeNestedElementCellTable(event, element); }) {
@@ -478,11 +480,14 @@ export default class TableBasePage extends BasePage {
}); });
} }
handleClickButtonRowUndelete(event, element, selectorButtonDelete, selectorButtonUndelete, changeHandler = (event, element) => { this.handleChangeNestedElementCellTable(event, element); }) { handleClickButtonRowUndelete(event, element, selectorButtonDelete, selectorButtonUndelete, changeHandler = (event, element) => { this.handleChangeNestedElementCellTable(event, element); }) {
let buttonDelete = element.cloneNode(false); if (element.tagName.toUpperCase() != 'SVG') element = element.parentElement;
buttonDelete.classList.remove(flagInitialised); let valuePrevious = DOM.getElementAttributeValuePrevious(element);
buttonDelete.classList.remove(flagAdd); let wasDirty = DOM.isElementDirty(element);
buttonDelete.classList.add(flagDelete); let buttonDeleteTemplate = document.querySelector(idContainerTemplateElements + ' .' + flagButton + '.' + flagActive + '.' + flagDelete);
buttonDelete.textContent = 'x'; let buttonDelete = buttonDeleteTemplate.cloneNode(true);
DOM.setElementAttributeValuePrevious(buttonDelete, valuePrevious);
DOM.setElementAttributeValueCurrent(buttonDelete, true);
if (wasDirty) buttonDelete.classList.add(flagDirty);
element.replaceWith(buttonDelete); element.replaceWith(buttonDelete);
changeHandler(null, buttonDelete); changeHandler(null, buttonDelete);
this.hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete, (changeEvent, changeElement) => { changeHandler(changeEvent, changeElement); }); this.hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete, (changeEvent, changeElement) => { changeHandler(changeEvent, changeElement); });

View File

@@ -1,11 +1,15 @@
{% if colour is not defined %} {% if class_name is not defined %}
{% set colour = model.COLOUR_PRIMARY %} {% set class_name = '' %}
{% endif %}
{% if attribute_text is not defined %}
{% set attribute_text = '' %}
{% endif %} {% endif %}
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"
fill="{{ colour }}" class="{{ model.FLAG_BUTTON }} {{ model.FLAG_ICON }} {{ model.FLAG_ADD }} {{ class_name }}"
class="{{ model.FLAG_BUTTON }} {{ model.FLAG_ICON }} {{ model.FLAG_ADD }} {{ model.FLAG_ACTIVE }}" {{ attribute_text }}
> >
<!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--> <!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.-->
<path d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM232 344l0-64-64 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l64 0 0-64c0-13.3 10.7-24 24-24s24 10.7 24 24l0 64 64 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-64 0 0 64c0 13.3-10.7 24-24 24s-24-10.7-24-24z"/> <path d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM232 344l0-64-64 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l64 0 0-64c0-13.3 10.7-24 24-24s24 10.7 24 24l0 64 64 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-64 0 0 64c0 13.3-10.7 24-24 24s-24-10.7-24-24z"/>

View File

@@ -1,11 +1,15 @@
{% if colour is not defined %} {% if class_name is not defined %}
{% set colour = model.COLOUR_PRIMARY %} {% set class_name = '' %}
{% endif %}
{% if attribute_text is not defined %}
{% set attribute_text = '' %}
{% endif %} {% endif %}
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"
fill="{{ colour }}" class="{{ model.FLAG_BUTTON }} {{ model.FLAG_ICON }} {{ model.FLAG_DELETE }} {{ model.FLAG_ACTIVE }} {{ class_name }}"
class="{{ model.FLAG_BUTTON }} {{ model.FLAG_ICON }} {{ model.FLAG_DELETE }} {{ model.FLAG_ACTIVE }}" {{ attribute_text }}
> >
<!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--> <!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.-->
<path d="M135.2 17.7L128 32 32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0-7.2-14.3C307.4 6.8 296.3 0 284.2 0L163.8 0c-12.1 0-23.2 6.8-28.6 17.7zM416 128L32 128 53.2 467c1.6 25.3 22.6 45 47.9 45l245.8 0c25.3 0 46.3-19.7 47.9-45L416 128z"/> <path d="M135.2 17.7L128 32 32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0-7.2-14.3C307.4 6.8 296.3 0 284.2 0L163.8 0c-12.1 0-23.2 6.8-28.6 17.7zM416 128L32 128 53.2 467c1.6 25.3 22.6 45 47.9 45l245.8 0c25.3 0 46.3-19.7 47.9-45L416 128z"/>

View File

@@ -1,2 +1,5 @@
<div class="{{ model.FLAG_COMMAND }}" >{% if not is_blank_row %}{{ command.name }}{% endif %}</div> {% set value_previous = '0' if is_blank_row else command.id_command %}
{% set text_previous = '' if is_blank_row else command.name %}
<div class="{{ model.FLAG_COMMAND }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ value_previous }}" {{ model.ATTR_VALUE_CURRENT }}="{{ value_previous }}">{{ text_previous }}</div>

View File

@@ -1,2 +1,5 @@
<div class="{{ model.FLAG_COMMAND_CATEGORY }}" >{% if not is_blank_row %}{{ command_category.name }}{% endif %}</div> {% set value_previous = '0' if is_blank_row else command_category.id_command_category %}
{% set text_previous = '' if is_blank_row else command_category.name %}
<div class="{{ model.FLAG_COMMAND_CATEGORY }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ value_previous }}" {{ model.ATTR_VALUE_CURRENT }}="{{ value_previous }}">{{ text_previous }}</div>

View File

@@ -1,2 +1,5 @@
<div class="{{ model.FLAG_DOG }}" >{% if not is_blank_row %}{{ dog.name }}{% endif %}</div> {% set value_previous = '0' if is_blank_row else dog.id_dog %}
{% set text_previous = '' if is_blank_row else dog.name %}
<div class="{{ model.FLAG_DOG }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ value_previous }}" {{ model.ATTR_VALUE_CURRENT }}="{{ value_previous }}">{{ text_previous }}</div>

View File

@@ -1,13 +1,13 @@
{% if is_blank_row %} {% if is_blank_row %}
<tr class="{{ model.FLAG_ROW_NEW }} {{ model.FLAG_DOG_COMMAND_LINK }}" {{ model.ATTR_ID_DOG_COMMAND_LINK }}> <tr class="{{ model.FLAG_ROW_NEW }} {{ model.FLAG_DOG_COMMAND_LINK }}" {{ model.ATTR_ID_DOG_COMMAND_LINK }}>
<td class="{{ model.FLAG_DOG }}" {{ model.ATTR_VALUE_CURRENT }}="0" {{ model.ATTR_VALUE_PREVIOUS }}="0"> <td class="{{ model.FLAG_DOG }}">
{% include 'components/dog/_preview_DDL_dog.html' %} {% include 'components/dog/_preview_DDL_dog.html' %}
</td> </td>
<td class="{{ model.FLAG_COMMAND_CATEGORY }}" {{ model.ATTR_VALUE_CURRENT }}="0" {{ model.ATTR_VALUE_PREVIOUS }}="0"> <td class="{{ model.FLAG_COMMAND_CATEGORY }}">
{% include 'components/dog/_preview_DDL_command_category.html' %} {% include 'components/dog/_preview_DDL_command_category.html' %}
</td> </td>
<td class="{{ model.FLAG_COMMAND }}" {{ model.ATTR_VALUE_CURRENT }}="0" {{ model.ATTR_VALUE_PREVIOUS }}="0"> <td class="{{ model.FLAG_COMMAND }}">
{% include 'components/dog/_preview_DDL_command.html' %} {% include 'components/dog/_preview_DDL_command.html' %}
</td> </td>
<td class="{{ model.FLAG_HAND_SIGNAL_DESCRIPTION}}"> <td class="{{ model.FLAG_HAND_SIGNAL_DESCRIPTION}}">
@@ -16,28 +16,28 @@
<td class="{{ model.FLAG_NOTES}}"> <td class="{{ model.FLAG_NOTES}}">
<textarea class="{{ model.FLAG_NOTES }}" {{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }}></textarea> <textarea class="{{ model.FLAG_NOTES }}" {{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }}></textarea>
</td> </td>
{% set active = true %} {% set active = True %}
{% include 'components/dog/_td_active.html' %} {% include 'components/dog/_td_active.html' %}
</tr> </tr>
{% else %} {% else %}
<tr class="{{ model.FLAG_DOG_COMMAND_LINK }}" {{ model.ATTR_ID_DOG_COMMAND_LINK }}="{{ link.id_link }}"> <tr class="{{ model.FLAG_DOG_COMMAND_LINK }}" {{ model.ATTR_ID_DOG_COMMAND_LINK }}="{{ link.id_link }}">
{% set dog = link.dog %} {% set dog = link.dog %}
<td class="{{ model.FLAG_DOG }}" {{ model.ATTR_VALUE_CURRENT }}="{{ dog.id_dog }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ dog.id_dog }}"> <td class="{{ model.FLAG_DOG }}">
{% include 'components/dog/_preview_DDL_dog.html' %} {% include 'components/dog/_preview_DDL_dog.html' %}
</td> </td>
{% set command_category = link.command.command_category %} {% set command_category = link.command.command_category %}
<td class="{{ model.FLAG_COMMAND_CATEGORY }}" {{ model.ATTR_VALUE_CURRENT }}="{{ command_category.id_command_category }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ command_category.id_command_category }}"> <td class="{{ model.FLAG_COMMAND_CATEGORY }}">
{% include 'components/dog/_preview_DDL_command_category.html' %} {% include 'components/dog/_preview_DDL_command_category.html' %}
</td> </td>
{% set command = link.command %} {% set command = link.command %}
<td class="{{ model.FLAG_COMMAND }}" {{ model.ATTR_VALUE_CURRENT }}="{{ command.id_command }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ command.id_command }}"> <td class="{{ model.FLAG_COMMAND }}">
{% include 'components/dog/_preview_DDL_command.html' %} {% include 'components/dog/_preview_DDL_command.html' %}
</td> </td>
<td class="{{ model.FLAG_HAND_SIGNAL_DESCRIPTION}}" {{ model.ATTR_VALUE_CURRENT }}="{{ link.hand_signal_description }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ link.hand_signal_description }}"> <td class="{{ model.FLAG_HAND_SIGNAL_DESCRIPTION}}">
<textarea class="{{ model.FLAG_HAND_SIGNAL_DESCRIPTION }}" {{ model.ATTR_VALUE_CURRENT }}="{{ link.hand_signal_description }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ link.hand_signal_description }}">{{ link.hand_signal_description }}</textarea> <textarea class="{{ model.FLAG_HAND_SIGNAL_DESCRIPTION }}" {{ model.ATTR_VALUE_CURRENT }}="{{ link.hand_signal_description|escape }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ link.hand_signal_description|escape }}">{{ link.hand_signal_description }}</textarea>
</td> </td>
<td class="{{ model.FLAG_NOTES}}" {{ model.ATTR_VALUE_CURRENT }}="{{ link.notes }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ link.notes }}"> <td class="{{ model.FLAG_NOTES}}">
<textarea class="{{ model.FLAG_NOTES }}" {{ model.ATTR_VALUE_CURRENT }}="{{ link.notes }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ link.notes }}">{{ link.notes }}</textarea> <textarea class="{{ model.FLAG_NOTES }}" {{ model.ATTR_VALUE_CURRENT }}="{{ link.notes|escape }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ link.notes|escape }}">{{ link.notes }}</textarea>
</td> </td>
{% set active = link.active %} {% set active = link.active %}
{% include 'components/dog/_td_active.html' %} {% include 'components/dog/_td_active.html' %}

View File

@@ -2,20 +2,12 @@
{% with _active = (active is not defined or active or active is none) %} {% with _active = (active is not defined or active or active is none) %}
<td class="{{ model.FLAG_ACTIVE }}"> <td class="{{ model.FLAG_ACTIVE }}">
{# {% set attribute_text = model.ATTR_VALUE_CURRENT + '=' + _active | lower + ' ' + model.ATTR_VALUE_PREVIOUS + '=' + _active | lower + '' %}
<input class="{{ model.FLAG_ACTIVE }}" type="checkbox" {% if active %}checked{% endif %} {{ model.ATTR_VALUE_CURRENT }}="{{ active | lower }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ active | lower }}"> {% if _active %}
#} {% set class_name = '' %}
{#
<button type="button" class="{{ model.FLAG_ACTIVE }} {% if active %}{{ model.FLAG_DELETE }}{% endif %}"
{{ model.ATTR_VALUE_CURRENT }}="{{ active | lower }}"
{{ model.ATTR_VALUE_PREVIOUS }}="{{ active | lower }}"
>{% if active %}x{% else %}+{% endif %}</button>
#}
{% if active %}
{% set colour = model.COLOUR_ERROR %}
{% include 'components/common/buttons/_icon_trash.html' %} {% include 'components/common/buttons/_icon_trash.html' %}
{% else %} {% else %}
{% set colour = model.COLOUR_PRIMARY %} {% set class_name = model.FLAG_ACTIVE %}
{% include 'components/common/buttons/_icon_add.html' %} {% include 'components/common/buttons/_icon_add.html' %}
{% endif %} {% endif %}
</td> </td>

View File

@@ -60,8 +60,8 @@
var colourTextLinkVisited = "{{ model.COLOUR_TEXT_LINK_VISITED }}"; var colourTextLinkVisited = "{{ model.COLOUR_TEXT_LINK_VISITED }}";
var environment = { var environment = {
"name": "{{ model.app.app_config.FLASK_ENV }}", "name": "{{ model.app.app_config.FLASK_ENV }}",
"is_production": "{{ model.app.app_config.is_production }}", "is_production": "{{ model.app.app_config.is_production | lower }}",
"is_development": "{{ model.app.app_config.is_development }}", "is_development": "{{ model.app.app_config.is_development | lower }}",
}; };
var flagAccessLevel = "{{ model.FLAG_ACCESS_LEVEL }}"; var flagAccessLevel = "{{ model.FLAG_ACCESS_LEVEL }}";
var flagAccessLevelRequired = "{{ model.FLAG_ACCESS_LEVEL_REQUIRED }}"; var flagAccessLevelRequired = "{{ model.FLAG_ACCESS_LEVEL_REQUIRED }}";
@@ -179,6 +179,7 @@
var hashPageUserLogout = "{{ model.HASH_PAGE_USER_LOGOUT }}"; var hashPageUserLogout = "{{ model.HASH_PAGE_USER_LOGOUT }}";
var idButtonApplyFilters = "#{{ model.ID_BUTTON_APPLY_FILTERS }}"; var idButtonApplyFilters = "#{{ model.ID_BUTTON_APPLY_FILTERS }}";
var idButtonHamburger = "#{{ model.ID_BUTTON_HAMBURGER }}"; var idButtonHamburger = "#{{ model.ID_BUTTON_HAMBURGER }}";
var idContainerTemplateElements = "#{{ model.ID_CONTAINER_TEMPLATE_ELEMENTS }}";
var idCSRFToken = "#{{ model.ID_CSRF_TOKEN }}"; var idCSRFToken = "#{{ model.ID_CSRF_TOKEN }}";
var idFormFilters = "#{{ model.ID_FORM_FILTERS }}"; var idFormFilters = "#{{ model.ID_FORM_FILTERS }}";
var idLabelError = "#{{ model.ID_LABEL_ERROR }}"; var idLabelError = "#{{ model.ID_LABEL_ERROR }}";

View File

@@ -59,7 +59,8 @@
<th class="{{ model.FLAG_HAND_SIGNAL_DESCRIPTION }}">Hand Signal</th> <th class="{{ model.FLAG_HAND_SIGNAL_DESCRIPTION }}">Hand Signal</th>
<th class="{{ model.FLAG_NOTES }}">Notes</th> <th class="{{ model.FLAG_NOTES }}">Notes</th>
<th class="{{ model.FLAG_ACTIVE }}"> <th class="{{ model.FLAG_ACTIVE }}">
{% set colour = model.COLOUR_PRIMARY %} {% set class_name = model.FLAG_ACTIVE %}
{% set attribute_text = '' %}
{% include 'components/common/buttons/_icon_add.html' %} {% include 'components/common/buttons/_icon_add.html' %}
</th> </th>
</tr> </tr>
@@ -78,6 +79,17 @@
{% include 'components/common/temporary/_overlay_confirm.html' %} {% include 'components/common/temporary/_overlay_confirm.html' %}
{% include 'components/common/temporary/_overlay_error.html' %} {% include 'components/common/temporary/_overlay_error.html' %}
<div id="{{ model.ID_CONTAINER_TEMPLATE_ELEMENTS }}">
<!-- Active column -->
<!-- Delete -->
{% set class_name = '' %}
{% include 'components/common/buttons/_icon_trash.html' %}
<!-- Undelete -->
{% set class_name = model.FLAG_ACTIVE %}
{% set attribute_text = '' %}
{% include 'components/common/buttons/_icon_add.html' %}
</div>
<script src="{{ url_for('routes_dog.scripts_section_dog') }}"></script> <script src="{{ url_for('routes_dog.scripts_section_dog') }}"></script>
<script> <script>