Fix(UI): Product Permutations page saving.

This commit is contained in:
2024-11-18 19:37:21 +00:00
parent 7fbc1cef34
commit ece68966e6
11 changed files with 542 additions and 264 deletions

View File

@@ -1,10 +1,21 @@
result: <sqlalchemy.engine.cursor.CursorResult object at 0x000001E40EB4E580>
index_variation_type: {1: 0, 2: 1}
raw errors: ()
new result set: ()
argument_dict: {'active': True}
executing p_shop_get_many_unit_measurement
DataStore_Base.db_procedure_execute
proc_string: CALL p_shop_get_many_unit_measurement(:active)
args: {'active': True}
result: <sqlalchemy.engine.cursor.CursorResult object at 0x000001E40EB4E580>
data received
raw units of measurement: ((1, 'metre', 'metres', 'm', b'\x01', b'\x01', b'\x01', b'\x00', b'\x00', b'\x00', b'\x01'), (2, 'millimetre', 'millimetres', 'mm', b'\x01', b'\x00', b'\x01', b'\x00', b'\x00', b'\x00', b'\x01'), (3, 'kilogram', 'kilograms', 'kg', b'\x01', b'\x01', b'\x00', b'\x01', b'\x00', b'\x00', b'\x01'), (4, 'gram', 'grams', 'g', b'\x01', b'\x00', b'\x00', b'\x01', b'\x00', b'\x00', b'\x01'), (5, 'litre', 'litres', 'L', b'\x01', b'\x00', b'\x00', b'\x00', b'\x00', b'\x01', b'\x01'), (6, 'millilitre', 'millilitres', 'mL', b'\x01', b'\x00', b'\x00', b'\x00', b'\x00', b'\x01', b'\x01'), (7, 'item', 'items', 'x', b'\x01', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x01'), (8, 'hour', 'hours', 'h', b'\x01', b'\x01', b'\x00', b'\x00', b'\x01', b'\x00', b'\x01'), (9, 'day', 'days', 'd', b'\x01', b'\x00', b'\x00', b'\x00', b'\x01', b'\x00', b'\x01')) raw units of measurement: ((1, 'metre', 'metres', 'm', b'\x01', b'\x01', b'\x01', b'\x00', b'\x00', b'\x00', b'\x01'), (2, 'millimetre', 'millimetres', 'mm', b'\x01', b'\x00', b'\x01', b'\x00', b'\x00', b'\x00', b'\x01'), (3, 'kilogram', 'kilograms', 'kg', b'\x01', b'\x01', b'\x00', b'\x01', b'\x00', b'\x00', b'\x01'), (4, 'gram', 'grams', 'g', b'\x01', b'\x00', b'\x00', b'\x01', b'\x00', b'\x00', b'\x01'), (5, 'litre', 'litres', 'L', b'\x01', b'\x00', b'\x00', b'\x00', b'\x00', b'\x01', b'\x01'), (6, 'millilitre', 'millilitres', 'mL', b'\x01', b'\x00', b'\x00', b'\x00', b'\x00', b'\x01', b'\x01'), (7, 'item', 'items', 'x', b'\x01', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x01'), (8, 'hour', 'hours', 'h', b'\x01', b'\x01', b'\x00', b'\x00', b'\x01', b'\x00', b'\x01'), (9, 'day', 'days', 'd', b'\x01', b'\x00', b'\x00', b'\x00', b'\x01', b'\x00', b'\x01'))
raw errors: () raw errors: ()
executing p_shop_get_many_currency executing p_shop_get_many_currency
DataStore_Base.db_procedure_execute DataStore_Base.db_procedure_execute
proc_string: CALL p_shop_get_many_currency(:a_get_inactive_currency) proc_string: CALL p_shop_get_many_currency(:a_get_inactive_currency)
args: {'a_get_inactive_currency': 0} args: {'a_get_inactive_currency': 0}
result: <sqlalchemy.engine.cursor.CursorResult object at 0x0000026B689D1550> result: <sqlalchemy.engine.cursor.CursorResult object at 0x000001E40EB4E580>
data received data received
currencies: [ currencies: [
id: 1 id: 1
@@ -26,25 +37,35 @@ currencies: [
new result set: () new result set: ()
{1: {'NAME_ATTR_OPTION_TEXT': 'name_singular', 'NAME_ATTR_OPTION_VALUE': 'id_unit_measurement', 'id_unit_measurement': 1, 'name_singular': 'metre', 'name_plural': 'metres', 'symbol': 'm', 'symbol_is_suffix_not_prefix': True, 'is_base_unit': True, 'is_unit_of_distance': True, 'is_unit_of_mass': False, 'is_unit_of_time': False, 'is_unit_of_volume': False, 'active': True}, 2: {'NAME_ATTR_OPTION_TEXT': 'name_singular', 'NAME_ATTR_OPTION_VALUE': 'id_unit_measurement', 'id_unit_measurement': 2, 'name_singular': 'millimetre', 'name_plural': 'millimetres', 'symbol': 'mm', 'symbol_is_suffix_not_prefix': True, 'is_base_unit': False, 'is_unit_of_distance': True, 'is_unit_of_mass': False, 'is_unit_of_time': False, 'is_unit_of_volume': False, 'active': True}, 3: {'NAME_ATTR_OPTION_TEXT': 'name_singular', 'NAME_ATTR_OPTION_VALUE': 'id_unit_measurement', 'id_unit_measurement': 3, 'name_singular': 'kilogram', 'name_plural': 'kilograms', 'symbol': 'kg', 'symbol_is_suffix_not_prefix': True, 'is_base_unit': True, 'is_unit_of_distance': False, 'is_unit_of_mass': True, 'is_unit_of_time': False, 'is_unit_of_volume': False, 'active': True}, 4: {'NAME_ATTR_OPTION_TEXT': 'name_singular', 'NAME_ATTR_OPTION_VALUE': 'id_unit_measurement', 'id_unit_measurement': 4, 'name_singular': 'gram', 'name_plural': 'grams', 'symbol': 'g', 'symbol_is_suffix_not_prefix': True, 'is_base_unit': False, 'is_unit_of_distance': False, 'is_unit_of_mass': True, 'is_unit_of_time': False, 'is_unit_of_volume': False, 'active': True}, 5: {'NAME_ATTR_OPTION_TEXT': 'name_singular', 'NAME_ATTR_OPTION_VALUE': 'id_unit_measurement', 'id_unit_measurement': 5, 'name_singular': 'litre', 'name_plural': 'litres', 'symbol': 'L', 'symbol_is_suffix_not_prefix': True, 'is_base_unit': False, 'is_unit_of_distance': False, 'is_unit_of_mass': False, 'is_unit_of_time': False, 'is_unit_of_volume': True, 'active': True}, 6: {'NAME_ATTR_OPTION_TEXT': 'name_singular', 'NAME_ATTR_OPTION_VALUE': 'id_unit_measurement', 'id_unit_measurement': 6, 'name_singular': 'millilitre', 'name_plural': 'millilitres', 'symbol': 'mL', 'symbol_is_suffix_not_prefix': True, 'is_base_unit': False, 'is_unit_of_distance': False, 'is_unit_of_mass': False, 'is_unit_of_time': False, 'is_unit_of_volume': True, 'active': True}, 7: {'NAME_ATTR_OPTION_TEXT': 'name_singular', 'NAME_ATTR_OPTION_VALUE': 'id_unit_measurement', 'id_unit_measurement': 7, 'name_singular': 'item', 'name_plural': 'items', 'symbol': 'x', 'symbol_is_suffix_not_prefix': True, 'is_base_unit': False, 'is_unit_of_distance': False, 'is_unit_of_mass': False, 'is_unit_of_time': False, 'is_unit_of_volume': False, 'active': True}, 8: {'NAME_ATTR_OPTION_TEXT': 'name_singular', 'NAME_ATTR_OPTION_VALUE': 'id_unit_measurement', 'id_unit_measurement': 8, 'name_singular': 'hour', 'name_plural': 'hours', 'symbol': 'h', 'symbol_is_suffix_not_prefix': True, 'is_base_unit': True, 'is_unit_of_distance': False, 'is_unit_of_mass': False, 'is_unit_of_time': True, 'is_unit_of_volume': False, 'active': True}, 9: {'NAME_ATTR_OPTION_TEXT': 'name_singular', 'NAME_ATTR_OPTION_VALUE': 'id_unit_measurement', 'id_unit_measurement': 9, 'name_singular': 'day', 'name_plural': 'days', 'symbol': 'd', 'symbol_is_suffix_not_prefix': True, 'is_base_unit': False, 'is_unit_of_distance': False, 'is_unit_of_mass': False, 'is_unit_of_time': True, 'is_unit_of_volume': False, 'active': True}} {1: {'NAME_ATTR_OPTION_TEXT': 'name_singular', 'NAME_ATTR_OPTION_VALUE': 'id_unit_measurement', 'id_unit_measurement': 1, 'name_singular': 'metre', 'name_plural': 'metres', 'symbol': 'm', 'symbol_is_suffix_not_prefix': True, 'is_base_unit': True, 'is_unit_of_distance': True, 'is_unit_of_mass': False, 'is_unit_of_time': False, 'is_unit_of_volume': False, 'active': True}, 2: {'NAME_ATTR_OPTION_TEXT': 'name_singular', 'NAME_ATTR_OPTION_VALUE': 'id_unit_measurement', 'id_unit_measurement': 2, 'name_singular': 'millimetre', 'name_plural': 'millimetres', 'symbol': 'mm', 'symbol_is_suffix_not_prefix': True, 'is_base_unit': False, 'is_unit_of_distance': True, 'is_unit_of_mass': False, 'is_unit_of_time': False, 'is_unit_of_volume': False, 'active': True}, 3: {'NAME_ATTR_OPTION_TEXT': 'name_singular', 'NAME_ATTR_OPTION_VALUE': 'id_unit_measurement', 'id_unit_measurement': 3, 'name_singular': 'kilogram', 'name_plural': 'kilograms', 'symbol': 'kg', 'symbol_is_suffix_not_prefix': True, 'is_base_unit': True, 'is_unit_of_distance': False, 'is_unit_of_mass': True, 'is_unit_of_time': False, 'is_unit_of_volume': False, 'active': True}, 4: {'NAME_ATTR_OPTION_TEXT': 'name_singular', 'NAME_ATTR_OPTION_VALUE': 'id_unit_measurement', 'id_unit_measurement': 4, 'name_singular': 'gram', 'name_plural': 'grams', 'symbol': 'g', 'symbol_is_suffix_not_prefix': True, 'is_base_unit': False, 'is_unit_of_distance': False, 'is_unit_of_mass': True, 'is_unit_of_time': False, 'is_unit_of_volume': False, 'active': True}, 5: {'NAME_ATTR_OPTION_TEXT': 'name_singular', 'NAME_ATTR_OPTION_VALUE': 'id_unit_measurement', 'id_unit_measurement': 5, 'name_singular': 'litre', 'name_plural': 'litres', 'symbol': 'L', 'symbol_is_suffix_not_prefix': True, 'is_base_unit': False, 'is_unit_of_distance': False, 'is_unit_of_mass': False, 'is_unit_of_time': False, 'is_unit_of_volume': True, 'active': True}, 6: {'NAME_ATTR_OPTION_TEXT': 'name_singular', 'NAME_ATTR_OPTION_VALUE': 'id_unit_measurement', 'id_unit_measurement': 6, 'name_singular': 'millilitre', 'name_plural': 'millilitres', 'symbol': 'mL', 'symbol_is_suffix_not_prefix': True, 'is_base_unit': False, 'is_unit_of_distance': False, 'is_unit_of_mass': False, 'is_unit_of_time': False, 'is_unit_of_volume': True, 'active': True}, 7: {'NAME_ATTR_OPTION_TEXT': 'name_singular', 'NAME_ATTR_OPTION_VALUE': 'id_unit_measurement', 'id_unit_measurement': 7, 'name_singular': 'item', 'name_plural': 'items', 'symbol': 'x', 'symbol_is_suffix_not_prefix': True, 'is_base_unit': False, 'is_unit_of_distance': False, 'is_unit_of_mass': False, 'is_unit_of_time': False, 'is_unit_of_volume': False, 'active': True}, 8: {'NAME_ATTR_OPTION_TEXT': 'name_singular', 'NAME_ATTR_OPTION_VALUE': 'id_unit_measurement', 'id_unit_measurement': 8, 'name_singular': 'hour', 'name_plural': 'hours', 'symbol': 'h', 'symbol_is_suffix_not_prefix': True, 'is_base_unit': True, 'is_unit_of_distance': False, 'is_unit_of_mass': False, 'is_unit_of_time': True, 'is_unit_of_volume': False, 'active': True}, 9: {'NAME_ATTR_OPTION_TEXT': 'name_singular', 'NAME_ATTR_OPTION_VALUE': 'id_unit_measurement', 'id_unit_measurement': 9, 'name_singular': 'day', 'name_plural': 'days', 'symbol': 'd', 'symbol_is_suffix_not_prefix': True, 'is_base_unit': False, 'is_unit_of_distance': False, 'is_unit_of_mass': False, 'is_unit_of_time': True, 'is_unit_of_volume': False, 'active': True}}
{8: {'NAME_ATTR_OPTION_TEXT': 'name_singular', 'NAME_ATTR_OPTION_VALUE': 'id_unit_measurement', 'id_unit_measurement': 8, 'name_singular': 'hour', 'name_plural': 'hours', 'symbol': 'h', 'symbol_is_suffix_not_prefix': True, 'is_base_unit': True, 'is_unit_of_distance': False, 'is_unit_of_mass': False, 'is_unit_of_time': True, 'is_unit_of_volume': False, 'active': True}, 9: {'NAME_ATTR_OPTION_TEXT': 'name_singular', 'NAME_ATTR_OPTION_VALUE': 'id_unit_measurement', 'id_unit_measurement': 9, 'name_singular': 'day', 'name_plural': 'days', 'symbol': 'd', 'symbol_is_suffix_not_prefix': True, 'is_base_unit': False, 'is_unit_of_distance': False, 'is_unit_of_mass': False, 'is_unit_of_time': True, 'is_unit_of_volume': False, 'active': True}} {8: {'NAME_ATTR_OPTION_TEXT': 'name_singular', 'NAME_ATTR_OPTION_VALUE': 'id_unit_measurement', 'id_unit_measurement': 8, 'name_singular': 'hour', 'name_plural': 'hours', 'symbol': 'h', 'symbol_is_suffix_not_prefix': True, 'is_base_unit': True, 'is_unit_of_distance': False, 'is_unit_of_mass': False, 'is_unit_of_time': True, 'is_unit_of_volume': False, 'active': True}, 9: {'NAME_ATTR_OPTION_TEXT': 'name_singular', 'NAME_ATTR_OPTION_VALUE': 'id_unit_measurement', 'id_unit_measurement': 9, 'name_singular': 'day', 'name_plural': 'days', 'symbol': 'd', 'symbol_is_suffix_not_prefix': True, 'is_base_unit': False, 'is_unit_of_distance': False, 'is_unit_of_mass': False, 'is_unit_of_time': True, 'is_unit_of_volume': False, 'active': True}}
Product_Variation_Tree.to_preview_str
variation_types: [
Product_Variation_Type
id_type: 1
code: COLOUR
name_singular: Colour
name_plural: Colours
display_order: 1
active: True
]
preview_str: Colour: Red
{'NAME_ATTR_OPTION_TEXT': 'name_singular', 'NAME_ATTR_OPTION_VALUE': 'id_unit_measurement', 'id_unit_measurement': 1, 'name_singular': 'metre', 'name_plural': 'metres', 'symbol': 'm', 'symbol_is_suffix_not_prefix': True, 'is_base_unit': True, 'is_unit_of_distance': True, 'is_unit_of_mass': False, 'is_unit_of_time': False, 'is_unit_of_volume': False, 'active': True}
Product_Variation_Tree.to_preview_str
variation_types: [
Product_Variation_Type
id_type: 1
code: COLOUR
name_singular: Colour
name_plural: Colours
display_order: 1
active: True
]
preview_str: Colour: Blue
{'NAME_ATTR_OPTION_TEXT': 'name_singular', 'NAME_ATTR_OPTION_VALUE': 'id_unit_measurement', 'id_unit_measurement': 1, 'name_singular': 'metre', 'name_plural': 'metres', 'symbol': 'm', 'symbol_is_suffix_not_prefix': True, 'is_base_unit': True, 'is_unit_of_distance': True, 'is_unit_of_mass': False, 'is_unit_of_time': False, 'is_unit_of_volume': False, 'active': True}
{'NAME_ATTR_OPTION_TEXT': 'name_singular', 'NAME_ATTR_OPTION_VALUE': 'id_unit_measurement', 'id_unit_measurement': 1, 'name_singular': 'metre', 'name_plural': 'metres', 'symbol': 'm', 'symbol_is_suffix_not_prefix': True, 'is_base_unit': True, 'is_unit_of_distance': True, 'is_unit_of_mass': False, 'is_unit_of_time': False, 'is_unit_of_volume': False, 'active': True}
{'NAME_ATTR_OPTION_TEXT': 'name_singular', 'NAME_ATTR_OPTION_VALUE': 'id_unit_measurement', 'id_unit_measurement': 1, 'name_singular': 'metre', 'name_plural': 'metres', 'symbol': 'm', 'symbol_is_suffix_not_prefix': True, 'is_base_unit': True, 'is_unit_of_distance': True, 'is_unit_of_mass': False, 'is_unit_of_time': False, 'is_unit_of_volume': False, 'active': True}
{'NAME_ATTR_OPTION_TEXT': 'name_singular', 'NAME_ATTR_OPTION_VALUE': 'id_unit_measurement', 'id_unit_measurement': 1, 'name_singular': 'metre', 'name_plural': 'metres', 'symbol': 'm', 'symbol_is_suffix_not_prefix': True, 'is_base_unit': True, 'is_unit_of_distance': True, 'is_unit_of_mass': False, 'is_unit_of_time': False, 'is_unit_of_volume': False, 'active': True}
{'NAME_ATTR_OPTION_TEXT': 'name_singular', 'NAME_ATTR_OPTION_VALUE': 'id_unit_measurement', 'id_unit_measurement': 1, 'name_singular': 'metre', 'name_plural': 'metres', 'symbol': 'm', 'symbol_is_suffix_not_prefix': True, 'is_base_unit': True, 'is_unit_of_distance': True, 'is_unit_of_mass': False, 'is_unit_of_time': False, 'is_unit_of_volume': False, 'active': True}
Model_View_Store.__init__ Model_View_Store.__init__
starting starting
session: <SecureCookieSession {'_permanent': True, 'authorisedUser': {'can_admin_store': True, 'can_admin_user': True, 'email': 'edward.middletonsmith@gmail.com', 'firstname': 'Teddy', 'id_currency_default': None, 'id_region_default': None, 'id_user': 1, 'id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'is_email_verified': False, 'is_included_VAT_default': True, 'is_super_user': True, 'surname': 'Middleton-Smith'}, 'csrf_token': '62a72bf881c6405d538a3e29f81249c4b05b8139', 'user': {'access_token': 'eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiaXNzIjoiaHR0cHM6Ly9kZXYtbndhazIwNjZlZjZoOGl4bi51cy5hdXRoMC5jb20vIn0..U5ygDcfqoeoGTLgA.CSpBOxXywtwjmGGVQH9h2MDcYueJhBoblhO0MBYMk120anymk-mioySgkGJBiIRGWM_7P4-AMf-7bxlO1mMQBG84-da_XziygHVTHtZdi5hD0tp7osa6RNjUpHG4CAnZ3q0Hj_EaSMPTz3-XhWsR5izqOALDsBp69kliXzjbHBkvnzJGPgeQZcP1-FkXlTQYkCm-A9oOzdCqI9mbGaQVzvxDWfYeSnW5BAtEkhXCy_eMEOnKY0y9mlYs-koIhF-dT2WA_c_K8reOq1NjIZBjJLAJ88xr7AVd5jsEMsPr-aEIW7wHcUOeawa3Kfnh9NfNMZaHoBjFAv6g4aP3y9bkbMpK.3-McrmK7ITgjpNPlJefLNQ', 'expires_at': 1731923381, 'expires_in': 86400, 'id_token': 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InVveXZURk44bjJvZHg1VkFLMFh1RyJ9.eyJuaWNrbmFtZSI6ImVkd2FyZC5taWRkbGV0b25zbWl0aCIsIm5hbWUiOiJlZHdhcmQubWlkZGxldG9uc21pdGhAZ21haWwuY29tIiwicGljdHVyZSI6Imh0dHBzOi8vcy5ncmF2YXRhci5jb20vYXZhdGFyLzUzZDNmMjQ0MDdkNTI1N2Y4NGYyN2NhMDc4NzRiZDY0P3M9NDgwJnI9cGcmZD1odHRwcyUzQSUyRiUyRmNkbi5hdXRoMC5jb20lMkZhdmF0YXJzJTJGZWQucG5nIiwidXBkYXRlZF9hdCI6IjIwMjQtMTEtMTdUMDk6NDk6NDEuNzIyWiIsImVtYWlsIjoiZWR3YXJkLm1pZGRsZXRvbnNtaXRoQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiaXNzIjoiaHR0cHM6Ly9kZXYtbndhazIwNjZlZjZoOGl4bi51cy5hdXRoMC5jb20vIiwiYXVkIjoiZ0dqeXRxTk1XQ2hTaXhxTzcyUlF6VkhXQWFlSkp6UmkiLCJpYXQiOjE3MzE4MzY5ODIsImV4cCI6MTczMTg3Mjk4Miwic3ViIjoiYXV0aDB8NjU4MmI5NWM4OTVkMDlhNzBiYTEwZmVmIiwic2lkIjoiTXBlbFE4cEtSOWhOOVg0bUlsZkJxM1JaR3p4WExBeGkiLCJub25jZSI6ImxJUVNIS1lzZW9sMjVhN3NFTFBPIn0.oB687ksKRtGbZQYXO4GS5GskJq0SmKofO-BaQftxowZmqIYMwzFumG8mVfm4l7-YI19tc8ik7jXiNGgAI3XpXQH5Ieud8h_TGsh3jNfmVIp4zjxO45Y39kaNHZQgnU2N6ckKD1W0pONirwKLD2Drdj9zVvdcYywQHPmhPHXoz06P8k4UvkdjST_AGgt-RAfpT-j5Nnbh3vqadv95ZGzJPHy3_q0lFS1PRUksYG9YGIMSrSpevC_sVgD3Qum_E35mZyJtwJMyNFzRj3kJHcpMKJH5qAZ2CTMbGLh5iHrUA9_KgOyMRGZTcooHSQnwemq_Sh3lNXJE0fUXzf99FMfaBw', 'scope': 'openid profile email', 'token_type': 'Bearer', 'userinfo': {'aud': 'gGjytqNMWChSixqO72RQzVHWAaeJJzRi', 'email': 'edward.middletonsmith@gmail.com', 'email_verified': False, 'exp': 1731872982, 'iat': 1731836982, 'iss': 'https://dev-nwak2066ef6h8ixn.us.auth0.com/', 'name': 'edward.middletonsmith@gmail.com', 'nickname': 'edward.middletonsmith', 'nonce': 'lIQSHKYseol25a7sELPO', 'picture': 'https://s.gravatar.com/avatar/53d3f24407d5257f84f27ca07874bd64?s=480&r=pg&d=https%3A%2F%2Fcdn.auth0.com%2Favatars%2Fed.png', 'sid': 'MpelQ8pKR9hN9X4mIlfBq3RZGzxXLAxi', 'sub': 'auth0|6582b95c895d09a70ba10fef', 'updated_at': '2024-11-17T09:49:41.722Z'}}}>
DataStore_Base.get_user_session
User.from_json
json: {'can_admin_store': True, 'can_admin_user': True, 'email': 'edward.middletonsmith@gmail.com', 'firstname': 'Teddy', 'id_currency_default': None, 'id_region_default': None, 'id_user': 1, 'id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'is_email_verified': False, 'is_included_VAT_default': True, 'is_super_user': True, 'surname': 'Middleton-Smith'}
user:
id_user: 1
id_user_auth0: auth0|6582b95c895d09a70ba10fef
firstname: Teddy
surname: Middleton-Smith
email: edward.middletonsmith@gmail.com
is_email_verified: False
is_super_user: True
id_currency_default: None
id_region_default: None
is_included_VAT_default: True
can_admin_store: True
can_admin_user: True
User.from_json
json: {'can_admin_store': True, 'can_admin_user': True, 'email': 'edward.middletonsmith@gmail.com', 'firstname': 'Teddy', 'id_currency_default': None, 'id_region_default': None, 'id_user': 1, 'id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'is_email_verified': False, 'is_included_VAT_default': True, 'is_super_user': True, 'surname': 'Middleton-Smith'}

View File

@@ -1,3 +1,20 @@
DataStore_Base.get_user_session
User.from_json
json: {'can_admin_store': True, 'can_admin_user': True, 'email': 'edward.middletonsmith@gmail.com', 'firstname': 'Teddy', 'id_currency_default': None, 'id_region_default': None, 'id_user': 1, 'id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'is_email_verified': False, 'is_included_VAT_default': True, 'is_super_user': True, 'surname': 'Middleton-Smith'}
user:
id_user: 1
id_user_auth0: auth0|6582b95c895d09a70ba10fef
firstname: Teddy
surname: Middleton-Smith
email: edward.middletonsmith@gmail.com
is_email_verified: False
is_super_user: True
id_currency_default: None
id_region_default: None
is_included_VAT_default: True
can_admin_store: True
can_admin_user: True
User.from_json User.from_json
json: {'can_admin_store': True, 'can_admin_user': True, 'email': 'edward.middletonsmith@gmail.com', 'firstname': 'Teddy', 'id_currency_default': None, 'id_region_default': None, 'id_user': 1, 'id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'is_email_verified': False, 'is_included_VAT_default': True, 'is_super_user': True, 'surname': 'Middleton-Smith'} json: {'can_admin_store': True, 'can_admin_user': True, 'email': 'edward.middletonsmith@gmail.com', 'firstname': 'Teddy', 'id_currency_default': None, 'id_region_default': None, 'id_user': 1, 'id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'is_email_verified': False, 'is_included_VAT_default': True, 'is_super_user': True, 'surname': 'Middleton-Smith'}
user: user:
@@ -19,7 +36,7 @@ executing p_get_many_user
DataStore_Base.db_procedure_execute DataStore_Base.db_procedure_execute
proc_string: CALL p_get_many_user(:a_id_user, :a_id_user_auth0, :get_all_user, :get_inactive_user, :ids_user, :ids_user_auth0, :a_debug) proc_string: CALL p_get_many_user(:a_id_user, :a_id_user_auth0, :get_all_user, :get_inactive_user, :ids_user, :ids_user_auth0, :a_debug)
args: {'a_id_user': 1, 'a_id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'get_all_user': False, 'get_inactive_user': False, 'ids_user': 1, 'ids_user_auth0': '', 'a_debug': 0} args: {'a_id_user': 1, 'a_id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'get_all_user': False, 'get_inactive_user': False, 'ids_user': 1, 'ids_user_auth0': '', 'a_debug': 0}
result: <sqlalchemy.engine.cursor.CursorResult object at 0x0000026B6897A660> result: <sqlalchemy.engine.cursor.CursorResult object at 0x000001E40EB4E4A0>
data received data received
raw users: ((1, 'auth0|6582b95c895d09a70ba10fef', 'Teddy', 'Middleton-Smith', 'edward.middletonsmith@gmail.com', b'\x00', None, None, b'\x01', b'\x01', b'\x01', b'\x01', b'\x00'),) raw users: ((1, 'auth0|6582b95c895d09a70ba10fef', 'Teddy', 'Middleton-Smith', 'edward.middletonsmith@gmail.com', b'\x00', None, None, b'\x01', b'\x01', b'\x01', b'\x01', b'\x00'),)
raw errors: () raw errors: ()
@@ -29,7 +46,7 @@ executing p_shop_get_many_product
DataStore_Base.db_procedure_execute DataStore_Base.db_procedure_execute
proc_string: CALL p_shop_get_many_product(:a_id_user, :a_get_all_product_category, :a_get_inactive_product_category, :a_ids_product_category, :a_get_all_product, :a_get_inactive_product, :a_ids_product, :a_get_all_permutation, :a_get_inactive_permutation, :a_ids_permutation, :a_get_all_image, :a_get_inactive_image, :a_ids_image, :a_get_products_quantity_stock_below_min, :a_debug) proc_string: CALL p_shop_get_many_product(:a_id_user, :a_get_all_product_category, :a_get_inactive_product_category, :a_ids_product_category, :a_get_all_product, :a_get_inactive_product, :a_ids_product, :a_get_all_permutation, :a_get_inactive_permutation, :a_ids_permutation, :a_get_all_image, :a_get_inactive_image, :a_ids_image, :a_get_products_quantity_stock_below_min, :a_debug)
args: {'a_id_user': 1, 'a_get_all_product_category': True, 'a_get_inactive_product_category': False, 'a_ids_product_category': '', 'a_get_all_product': True, 'a_get_inactive_product': False, 'a_ids_product': '', 'a_get_all_permutation': True, 'a_get_inactive_permutation': False, 'a_ids_permutation': '', 'a_get_all_image': False, 'a_get_inactive_image': False, 'a_ids_image': '', 'a_get_products_quantity_stock_below_min': False, 'a_debug': 0} args: {'a_id_user': 1, 'a_get_all_product_category': True, 'a_get_inactive_product_category': False, 'a_ids_product_category': '', 'a_get_all_product': True, 'a_get_inactive_product': False, 'a_ids_product': '', 'a_get_all_permutation': True, 'a_get_inactive_permutation': False, 'a_ids_permutation': '', 'a_get_all_image': False, 'a_get_inactive_image': False, 'a_ids_image': '', 'a_get_products_quantity_stock_below_min': False, 'a_debug': 0}
result: <sqlalchemy.engine.cursor.CursorResult object at 0x0000026B6897A660> result: <sqlalchemy.engine.cursor.CursorResult object at 0x000001E40EB4E4A0>
data received data received
initial category_list: categories: [] initial category_list: categories: []
raw categories: ((4, 'CHOCOLATE', 'Chocolates and sweets', 'Confectionery', 1, 'View', 1, b'\x01', None, None, None),) raw categories: ((4, 'CHOCOLATE', 'Chocolates and sweets', 'Confectionery', 1, 'View', 1, b'\x01', None, None, None),)
@@ -156,7 +173,7 @@ executing p_get_many_user
DataStore_Base.db_procedure_execute DataStore_Base.db_procedure_execute
proc_string: CALL p_get_many_user(:a_id_user, :a_id_user_auth0, :get_all_user, :get_inactive_user, :ids_user, :ids_user_auth0, :a_debug) proc_string: CALL p_get_many_user(:a_id_user, :a_id_user_auth0, :get_all_user, :get_inactive_user, :ids_user, :ids_user_auth0, :a_debug)
args: {'a_id_user': 1, 'a_id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'get_all_user': False, 'get_inactive_user': False, 'ids_user': 1, 'ids_user_auth0': '', 'a_debug': 0} args: {'a_id_user': 1, 'a_id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'get_all_user': False, 'get_inactive_user': False, 'ids_user': 1, 'ids_user_auth0': '', 'a_debug': 0}
result: <sqlalchemy.engine.cursor.CursorResult object at 0x0000026B6897A900> result: <sqlalchemy.engine.cursor.CursorResult object at 0x000001E40EB4E580>
data received data received
raw users: ((1, 'auth0|6582b95c895d09a70ba10fef', 'Teddy', 'Middleton-Smith', 'edward.middletonsmith@gmail.com', b'\x00', None, None, b'\x01', b'\x01', b'\x01', b'\x01', b'\x00'),) raw users: ((1, 'auth0|6582b95c895d09a70ba10fef', 'Teddy', 'Middleton-Smith', 'edward.middletonsmith@gmail.com', b'\x00', None, None, b'\x01', b'\x01', b'\x01', b'\x01', b'\x00'),)
raw errors: () raw errors: ()
@@ -164,14 +181,3 @@ new result set: ()
DataStore_Base.db_procedure_execute DataStore_Base.db_procedure_execute
proc_string: CALL p_shop_get_many_product_variation(:a_id_user, :a_get_all_variation_type, :a_get_inactive_variation_type, :a_ids_variation_type, :a_get_all_variation, :a_get_inactive_variation, :a_ids_variation, :a_debug) proc_string: CALL p_shop_get_many_product_variation(:a_id_user, :a_get_all_variation_type, :a_get_inactive_variation_type, :a_ids_variation_type, :a_get_all_variation, :a_get_inactive_variation, :a_ids_variation, :a_debug)
args: {'a_id_user': 1, 'a_get_all_variation_type': True, 'a_get_inactive_variation_type': False, 'a_ids_variation_type': '', 'a_get_all_variation': True, 'a_get_inactive_variation': False, 'a_ids_variation': '', 'a_debug': 0} args: {'a_id_user': 1, 'a_get_all_variation_type': True, 'a_get_inactive_variation_type': False, 'a_ids_variation_type': '', 'a_get_all_variation': True, 'a_get_inactive_variation': False, 'a_ids_variation': '', 'a_debug': 0}
result: <sqlalchemy.engine.cursor.CursorResult object at 0x0000026B6897A900>
index_variation_type: {1: 0, 2: 1}
raw errors: ()
new result set: ()
argument_dict: {'active': True}
executing p_shop_get_many_unit_measurement
DataStore_Base.db_procedure_execute
proc_string: CALL p_shop_get_many_unit_measurement(:active)
args: {'active': True}
result: <sqlalchemy.engine.cursor.CursorResult object at 0x0000026B689D1710>
data received

539
app.log.3
View File

@@ -1,153 +1,125 @@
user: get many category_list: categories: [
id_user: 1 id: 1
id_user_auth0: auth0|6582b95c895d09a70ba10fef code: ASS
firstname: Teddy name: Assistive Devices
surname: Middleton-Smith description: Braille product line and other assistive devices
email: edward.middletonsmith@gmail.com
is_email_verified: False
is_super_user: True
id_currency_default: None
id_region_default: None
is_included_VAT_default: True
can_admin_store: True
can_admin_user: True
User.from_json
json: {'can_admin_store': True, 'can_admin_user': True, 'email': 'edward.middletonsmith@gmail.com', 'firstname': 'Teddy', 'id_currency_default': None, 'id_region_default': None, 'id_user': 1, 'id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'is_email_verified': False, 'is_included_VAT_default': True, 'is_super_user': True, 'surname': 'Middleton-Smith'}
user:
id_user: 1
id_user_auth0: auth0|6582b95c895d09a70ba10fef
firstname: Teddy
surname: Middleton-Smith
email: edward.middletonsmith@gmail.com
is_email_verified: False
is_super_user: True
id_currency_default: None
id_region_default: None
is_included_VAT_default: True
can_admin_store: True
can_admin_user: True
argument_dict: {'a_id_user': 1, 'a_id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'get_all_user': False, 'get_inactive_user': False, 'ids_user': 1, 'ids_user_auth0': '', 'a_debug': 0}
executing p_get_many_user
DataStore_Base.db_procedure_execute
proc_string: CALL p_get_many_user(:a_id_user, :a_id_user_auth0, :get_all_user, :get_inactive_user, :ids_user, :ids_user_auth0, :a_debug)
args: {'a_id_user': 1, 'a_id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'get_all_user': False, 'get_inactive_user': False, 'ids_user': 1, 'ids_user_auth0': '', 'a_debug': 0}
result: <sqlalchemy.engine.cursor.CursorResult object at 0x0000026B6897A660>
data received
raw users: ((1, 'auth0|6582b95c895d09a70ba10fef', 'Teddy', 'Middleton-Smith', 'edward.middletonsmith@gmail.com', b'\x00', None, None, b'\x01', b'\x01', b'\x01', b'\x01', b'\x00'),)
raw errors: ()
new result set: ()
model_view_base init end - model.user:
id_user: 1
id_user_auth0: auth0|6582b95c895d09a70ba10fef
firstname: Teddy
surname: Middleton-Smith
email: edward.middletonsmith@gmail.com
is_email_verified: False
is_super_user: True
id_currency_default: None
id_region_default: None
is_included_VAT_default: True
can_admin_store: True
can_admin_user: True
form question: <class 'wtforms.fields.simple.BooleanField'>
bool interpretted: False
form question: <class 'wtforms.fields.simple.BooleanField'>
get_inactive:False
type form: <class 'forms.store.product_permutation.Filters_Product_Permutation'>
DataStore_Base.get_user_session
User.from_json
json: {'can_admin_store': True, 'can_admin_user': True, 'email': 'edward.middletonsmith@gmail.com', 'firstname': 'Teddy', 'id_currency_default': None, 'id_region_default': None, 'id_user': 1, 'id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'is_email_verified': False, 'is_included_VAT_default': True, 'is_super_user': True, 'surname': 'Middleton-Smith'}
user:
id_user: 1
id_user_auth0: auth0|6582b95c895d09a70ba10fef
firstname: Teddy
surname: Middleton-Smith
email: edward.middletonsmith@gmail.com
is_email_verified: False
is_super_user: True
id_currency_default: None
id_region_default: None
is_included_VAT_default: True
can_admin_store: True
can_admin_user: True
User.from_json
json: {'can_admin_store': True, 'can_admin_user': True, 'email': 'edward.middletonsmith@gmail.com', 'firstname': 'Teddy', 'id_currency_default': None, 'id_region_default': None, 'id_user': 1, 'id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'is_email_verified': False, 'is_included_VAT_default': True, 'is_super_user': True, 'surname': 'Middleton-Smith'}
user:
id_user: 1
id_user_auth0: auth0|6582b95c895d09a70ba10fef
firstname: Teddy
surname: Middleton-Smith
email: edward.middletonsmith@gmail.com
is_email_verified: False
is_super_user: True
id_currency_default: None
id_region_default: None
is_included_VAT_default: True
can_admin_store: True
can_admin_user: True
argument_dict: {'a_id_user': 1, 'a_id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'get_all_user': False, 'get_inactive_user': False, 'ids_user': 1, 'ids_user_auth0': '', 'a_debug': 0}
executing p_get_many_user
DataStore_Base.db_procedure_execute
proc_string: CALL p_get_many_user(:a_id_user, :a_id_user_auth0, :get_all_user, :get_inactive_user, :ids_user, :ids_user_auth0, :a_debug)
args: {'a_id_user': 1, 'a_id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'get_all_user': False, 'get_inactive_user': False, 'ids_user': 1, 'ids_user_auth0': '', 'a_debug': 0}
result: <sqlalchemy.engine.cursor.CursorResult object at 0x0000026B6897B0E0>
data received
raw users: ((1, 'auth0|6582b95c895d09a70ba10fef', 'Teddy', 'Middleton-Smith', 'edward.middletonsmith@gmail.com', b'\x00', None, None, b'\x01', b'\x01', b'\x01', b'\x01', b'\x00'),)
raw errors: ()
new result set: ()
argument_dict: {'a_id_user': 1, 'a_get_all_product_category': True, 'a_get_inactive_product_category': False, 'a_ids_product_category': '', 'a_get_all_product': True, 'a_get_inactive_product': False, 'a_ids_product': '', 'a_get_all_permutation': True, 'a_get_inactive_permutation': False, 'a_ids_permutation': '', 'a_get_all_image': False, 'a_get_inactive_image': False, 'a_ids_image': '', 'a_get_products_quantity_stock_below_min': False, 'a_debug': 0}
executing p_shop_get_many_product
DataStore_Base.db_procedure_execute
proc_string: CALL p_shop_get_many_product(:a_id_user, :a_get_all_product_category, :a_get_inactive_product_category, :a_ids_product_category, :a_get_all_product, :a_get_inactive_product, :a_ids_product, :a_get_all_permutation, :a_get_inactive_permutation, :a_ids_permutation, :a_get_all_image, :a_get_inactive_image, :a_ids_image, :a_get_products_quantity_stock_below_min, :a_debug)
args: {'a_id_user': 1, 'a_get_all_product_category': True, 'a_get_inactive_product_category': False, 'a_ids_product_category': '', 'a_get_all_product': True, 'a_get_inactive_product': False, 'a_ids_product': '', 'a_get_all_permutation': True, 'a_get_inactive_permutation': False, 'a_ids_permutation': '', 'a_get_all_image': False, 'a_get_inactive_image': False, 'a_ids_image': '', 'a_get_products_quantity_stock_below_min': False, 'a_debug': 0}
result: <sqlalchemy.engine.cursor.CursorResult object at 0x0000026B6897B0E0>
data received
initial category_list: categories: []
raw categories: ((4, 'CHOCOLATE', 'Chocolates and sweets', 'Confectionery', 1, 'View', 1, b'\x01', None, None, None),)
new_category:
id: 4
code: CHOCOLATE
name: Chocolates and sweets
description: Confectionery
access_level: View access_level: View
display_order: 1 display_order: 1
active: True active: False
products: [] products: [Product
id_product: 1
category-loaded category_list: categories: [ id_category: 1
id: 4 name: Braille Keyboard Translator
code: CHOCOLATE
name: Chocolates and sweets
description: Confectionery
access_level: View
display_order: 1
active: True
products: []
]
raw products: ((6, 4, 'Digestives', b'\x01', 1, 'View', b'\x01', 1, None, None, None),)
row: (6, 4, 'Digestives', b'\x01', 1, 'View', b'\x01', 1, None, None, None)
new_product: Product
id_product: 6
id_category: 4
name: Digestives
display_order: 1 display_order: 1
can_view: False can_view: False
can_edit: False can_edit: False
can_admin: False can_admin: False
has_variations: True has_variations: True
permutations: [] permutations: [Product_Permutation
variation trees: [] id_permutation: 1
active: True id_product: 1
id_category: 1
description: Good Red
cost_local_VAT_excl: 5.0
cost_local_VAT_incl: 6.0
currency_cost:
id: 1
name: None
code: GBP
symbol: £
factor from GBP: None
display_order: None
active: None
raw errors: () latency_manufacture: 14
product with id:6 has variations id_unit_measurement_quantity: 1
new result set: () symbol_unit_measurement_quantity: m
get many category_list: categories: [ symbol_is_suffix_not_prefix_unit_measurement_quantity: True
name_singular_unit_measurement_quantity: metre
name_plural_unit_measurement_quantity: metres
count_unit_measurement_per_quantity_step: 1.0
quantity_min: 3.0
quantity_max: 99.0
quantity_stock: 1.0
is_subscription: False
id_unit_measurement_interval_recurrence: None
symbol_unit_measurement_interval_recurrence: None
symbol_is_suffix_not_prefix_unit_measurement_interval_recurrence: False
name_singular_unit_measurement_interval_recurrence: None
name_plural_unit_measurement_interval_recurrence: None
count_interval_recurrence: None
id_stripe_product: None
does_expire_faster_once_unsealed: False
id_unit_measurement_interval_expiration_unsealed: None
symbol_unit_measurement_interval_expiration_unsealed: None
symbol_is_suffix_not_prefix_unit_measurement_interval_expiration_unsealed: False
name_singular_unit_measurement_interval_expiration_unsealed: None
name_plural_unit_measurement_interval_expiration_unsealed: None
count_interval_expiration_unsealed: None
has_variations: True
csv_id_pairs_variation: None
can_view: False
can_edit: False
can_admin: False
variation tree: <business_objects.store.product_variation_tree.Product_Variation_Tree object at 0x000001E40EB73F50>
images: []
delivery_options: []
prices: []
, Product_Permutation
id_permutation: 2
id_product: 1
id_category: 1
description: Good Blue
cost_local_VAT_excl: 6.0
cost_local_VAT_incl: 7.2
currency_cost:
id: 1
name: None
code: GBP
symbol: £
factor from GBP: None
display_order: None
active: None
latency_manufacture: 14
id_unit_measurement_quantity: 1
symbol_unit_measurement_quantity: m
symbol_is_suffix_not_prefix_unit_measurement_quantity: True
name_singular_unit_measurement_quantity: metre
name_plural_unit_measurement_quantity: metres
count_unit_measurement_per_quantity_step: 1.0
quantity_min: 3.0
quantity_max: 99.0
quantity_stock: 1.0
is_subscription: False
id_unit_measurement_interval_recurrence: None
symbol_unit_measurement_interval_recurrence: None
symbol_is_suffix_not_prefix_unit_measurement_interval_recurrence: False
name_singular_unit_measurement_interval_recurrence: None
name_plural_unit_measurement_interval_recurrence: None
count_interval_recurrence: None
id_stripe_product: None
does_expire_faster_once_unsealed: False
id_unit_measurement_interval_expiration_unsealed: None
symbol_unit_measurement_interval_expiration_unsealed: None
symbol_is_suffix_not_prefix_unit_measurement_interval_expiration_unsealed: False
name_singular_unit_measurement_interval_expiration_unsealed: None
name_plural_unit_measurement_interval_expiration_unsealed: None
count_interval_expiration_unsealed: None
has_variations: True
csv_id_pairs_variation: None
can_view: False
can_edit: False
can_admin: False
variation tree: <business_objects.store.product_variation_tree.Product_Variation_Tree object at 0x000001E40EB73E30>
images: []
delivery_options: []
prices: []
]
variation trees: [<business_objects.store.product_variation_tree.Product_Variation_Tree object at 0x000001E40EB73F50>, <business_objects.store.product_variation_tree.Product_Variation_Tree object at 0x000001E40EB73E30>]
active: False
]
,
id: 4 id: 4
code: CHOCOLATE code: CHOCOLATE
name: Chocolates and sweets name: Chocolates and sweets
@@ -168,21 +140,270 @@ get many category_list: categories: [
variation trees: [] variation trees: []
active: True active: True
] ]
] ,
DataStore_Base.get_user_session id: 3
User.from_json code: TECH
json: {'can_admin_store': True, 'can_admin_user': True, 'email': 'edward.middletonsmith@gmail.com', 'firstname': 'Teddy', 'id_currency_default': None, 'id_region_default': None, 'id_user': 1, 'id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'is_email_verified': False, 'is_included_VAT_default': True, 'is_super_user': True, 'surname': 'Middleton-Smith'} name: Technology
user: description: Technological devices
id_user: 1 access_level: View
id_user_auth0: auth0|6582b95c895d09a70ba10fef display_order: 2
firstname: Teddy active: False
surname: Middleton-Smith products: [Product
email: edward.middletonsmith@gmail.com id_product: 3
is_email_verified: False id_category: 3
is_super_user: True name: Phone
id_currency_default: None display_order: 2
id_region_default: None can_view: False
is_included_VAT_default: True can_edit: False
can_admin_store: True can_admin: False
can_admin_user: True has_variations: False
permutations: [Product_Permutation
id_permutation: 4
id_product: 3
id_category: 3
description: Phone describes good
cost_local_VAT_excl: 10.0
cost_local_VAT_incl: 12.0
currency_cost:
id: 1
name: None
code: GBP
symbol: £
factor from GBP: None
display_order: None
active: None
latency_manufacture: 14
id_unit_measurement_quantity: 1
symbol_unit_measurement_quantity: m
symbol_is_suffix_not_prefix_unit_measurement_quantity: True
name_singular_unit_measurement_quantity: metre
name_plural_unit_measurement_quantity: metres
count_unit_measurement_per_quantity_step: 1.0
quantity_min: 2.0
quantity_max: 99.0
quantity_stock: 1.0
is_subscription: False
id_unit_measurement_interval_recurrence: None
symbol_unit_measurement_interval_recurrence: None
symbol_is_suffix_not_prefix_unit_measurement_interval_recurrence: False
name_singular_unit_measurement_interval_recurrence: None
name_plural_unit_measurement_interval_recurrence: None
count_interval_recurrence: None
id_stripe_product: None
does_expire_faster_once_unsealed: False
id_unit_measurement_interval_expiration_unsealed: None
symbol_unit_measurement_interval_expiration_unsealed: None
symbol_is_suffix_not_prefix_unit_measurement_interval_expiration_unsealed: False
name_singular_unit_measurement_interval_expiration_unsealed: None
name_plural_unit_measurement_interval_expiration_unsealed: None
count_interval_expiration_unsealed: None
has_variations: False
csv_id_pairs_variation: None
can_view: False
can_edit: False
can_admin: False
variation tree: None
images: []
delivery_options: []
prices: []
]
variation trees: []
active: False
, Product
id_product: 4
id_category: 3
name: Laptop
display_order: 2
can_view: False
can_edit: False
can_admin: False
has_variations: False
permutations: [Product_Permutation
id_permutation: 5
id_product: 4
id_category: 3
description: Laptop describes good
cost_local_VAT_excl: 10.0
cost_local_VAT_incl: 12.0
currency_cost:
id: 1
name: None
code: GBP
symbol: £
factor from GBP: None
display_order: None
active: None
latency_manufacture: 14
id_unit_measurement_quantity: 1
symbol_unit_measurement_quantity: m
symbol_is_suffix_not_prefix_unit_measurement_quantity: True
name_singular_unit_measurement_quantity: metre
name_plural_unit_measurement_quantity: metres
count_unit_measurement_per_quantity_step: 1.0
quantity_min: 2.0
quantity_max: 99.0
quantity_stock: 1.0
is_subscription: False
id_unit_measurement_interval_recurrence: None
symbol_unit_measurement_interval_recurrence: None
symbol_is_suffix_not_prefix_unit_measurement_interval_recurrence: False
name_singular_unit_measurement_interval_recurrence: None
name_plural_unit_measurement_interval_recurrence: None
count_interval_recurrence: None
id_stripe_product: None
does_expire_faster_once_unsealed: False
id_unit_measurement_interval_expiration_unsealed: None
symbol_unit_measurement_interval_expiration_unsealed: None
symbol_is_suffix_not_prefix_unit_measurement_interval_expiration_unsealed: False
name_singular_unit_measurement_interval_expiration_unsealed: None
name_plural_unit_measurement_interval_expiration_unsealed: None
count_interval_expiration_unsealed: None
has_variations: False
csv_id_pairs_variation: None
can_view: False
can_edit: False
can_admin: False
variation tree: None
images: []
delivery_options: []
prices: []
]
variation trees: []
active: False
, Product
id_product: 5
id_category: 3
name: Smart Watch
display_order: 2
can_view: False
can_edit: False
can_admin: False
has_variations: False
permutations: [Product_Permutation
id_permutation: 6
id_product: 5
id_category: 3
description: Smart watch describes good
cost_local_VAT_excl: 10.0
cost_local_VAT_incl: 12.0
currency_cost:
id: 1
name: None
code: GBP
symbol: £
factor from GBP: None
display_order: None
active: None
latency_manufacture: 14
id_unit_measurement_quantity: 1
symbol_unit_measurement_quantity: m
symbol_is_suffix_not_prefix_unit_measurement_quantity: True
name_singular_unit_measurement_quantity: metre
name_plural_unit_measurement_quantity: metres
count_unit_measurement_per_quantity_step: 1.0
quantity_min: 2.0
quantity_max: 99.0
quantity_stock: 1.0
is_subscription: False
id_unit_measurement_interval_recurrence: None
symbol_unit_measurement_interval_recurrence: None
symbol_is_suffix_not_prefix_unit_measurement_interval_recurrence: False
name_singular_unit_measurement_interval_recurrence: None
name_plural_unit_measurement_interval_recurrence: None
count_interval_recurrence: None
id_stripe_product: None
does_expire_faster_once_unsealed: False
id_unit_measurement_interval_expiration_unsealed: None
symbol_unit_measurement_interval_expiration_unsealed: None
symbol_is_suffix_not_prefix_unit_measurement_interval_expiration_unsealed: False
name_singular_unit_measurement_interval_expiration_unsealed: None
name_plural_unit_measurement_interval_expiration_unsealed: None
count_interval_expiration_unsealed: None
has_variations: False
csv_id_pairs_variation: None
can_view: False
can_edit: False
can_admin: False
variation tree: None
images: []
delivery_options: []
prices: []
]
variation trees: []
active: False
]
,
id: 2
code: MISC
name: Miscellaneous
description: Not category allocated products
access_level: View
display_order: 99
active: False
products: [Product
id_product: 2
id_category: 2
name: Test product 1
display_order: 99
can_view: False
can_edit: False
can_admin: False
has_variations: False
permutations: [Product_Permutation
id_permutation: 3
id_product: 2
id_category: 2
description: Test product describes good
cost_local_VAT_excl: 10.0
cost_local_VAT_incl: 12.0
currency_cost:
id: 1
name: None
code: GBP
symbol: £
factor from GBP: None
display_order: None
active: None
latency_manufacture: 14
id_unit_measurement_quantity: 1
symbol_unit_measurement_quantity: m
symbol_is_suffix_not_prefix_unit_measurement_quantity: True
name_singular_unit_measurement_quantity: metre
name_plural_unit_measurement_quantity: metres
count_unit_measurement_per_quantity_step: 1.0
quantity_min: 2.0
quantity_max: 99.0
quantity_stock: 1.0
is_subscription: False
id_unit_measurement_interval_recurrence: None
symbol_unit_measurement_interval_recurrence: None
symbol_is_suffix_not_prefix_unit_measurement_interval_recurrence: False
name_singular_unit_measurement_interval_recurrence: None
name_plural_unit_measurement_interval_recurrence: None
count_interval_recurrence: None
id_stripe_product: None
does_expire_faster_once_unsealed: False
id_unit_measurement_interval_expiration_unsealed: None
symbol_unit_measurement_interval_expiration_unsealed: None
symbol_is_suffix_not_prefix_unit_measurement_interval_expiration_unsealed: False
name_singular_unit_measurement_interval_expiration_unsealed: None
name_plural_unit_measurement_interval_expiration_unsealed: None
count_interval_expiration_unsealed: None
has_variations: False
csv_id_pairs_variation: None
can_view: False
can_edit: False
can_admin: False
variation tree: None
images: []
delivery_options: []
prices: []
]
variation trees: []
active: False
]
]

View File

@@ -587,6 +587,15 @@ CALL partsltd_prod.p_shop_calc_user (
, '1,2,3,4,5' , '1,2,3,4,5'
, 0 , 0
); );
CALL partsltd_prod.p_shop_calc_user (
'chips '
, 1
, 0
, '2'
, '1'
, NULL
, 0
);
SELECT * FROM partsltd_prod.Shop_Calc_User_Temp WHERE GUID = 'chips '; SELECT * FROM partsltd_prod.Shop_Calc_User_Temp WHERE GUID = 'chips ';
DELETE FROM partsltd_prod.Shop_Calc_User_Temp WHERE GUID = 'chips '; DELETE FROM partsltd_prod.Shop_Calc_User_Temp WHERE GUID = 'chips ';

View File

@@ -457,7 +457,7 @@ BEGIN
; ;
END IF; END IF;
IF EXISTS (SELECT * FROM partsltd_prod.Shop_User_Eval_Temp WHERE ISNULL(id_product) AND GUID = a_guid AND can_edit = 0) THEN IF EXISTS (SELECT * FROM partsltd_prod.Shop_Calc_User_Temp WHERE ISNULL(id_product) AND GUID = a_guid AND can_edit = 0) THEN
DELETE FROM tmp_Msg_Error DELETE FROM tmp_Msg_Error
WHERE id_type <> v_id_type_error_no_permission WHERE id_type <> v_id_type_error_no_permission
; ;

View File

@@ -96,7 +96,7 @@ BEGIN
-1 -- id_permutation -1 -- id_permutation
, 1 -- id_product , 1 -- id_product
, '1:3' -- csv_id_pairs_variation , '1:3' -- csv_id_pairs_variation
, 'Test with variations' -- description , 'Good Green' -- description
, NULL -- cost_local_VAT_excl , NULL -- cost_local_VAT_excl
, NULL -- cost_local_VAT_incl , NULL -- cost_local_VAT_incl
, 1 -- id_currency_cost , 1 -- id_currency_cost
@@ -147,7 +147,6 @@ BEGIN
END // END //
DELIMITER ;; DELIMITER ;;
/*
CALL partsltd_prod.p_shop_save_product_permutation_test (); CALL partsltd_prod.p_shop_save_product_permutation_test ();
DELETE FROM partsltd_prod.Shop_Product_Permutation_Temp; DELETE FROM partsltd_prod.Shop_Product_Permutation_Temp;
@@ -155,6 +154,7 @@ DELETE FROM partsltd_prod.Shop_Product_Permutation_Temp;
DROP TABLE IF EXISTS tmp_Msg_Error; DROP TABLE IF EXISTS tmp_Msg_Error;
/*
DELETE FROM partsltd_prod.Shop_Product_Permutation_Variation_Link DELETE FROM partsltd_prod.Shop_Product_Permutation_Variation_Link
WHERE id_link >= 3 WHERE id_link >= 3
; ;

View File

@@ -269,7 +269,7 @@ li {
} }
:not(input,textarea,select).dirty { :not(input,textarea,select,button).dirty {
background-color: var(--c_purple_dark); background-color: var(--c_purple_dark);
} }
input.dirty, textarea.dirty, select.dirty { input.dirty, textarea.dirty, select.dirty {

View File

@@ -269,7 +269,7 @@ li {
} }
:not(input,textarea,select).dirty { :not(input,textarea,select,button).dirty {
background-color: var(--c_purple_dark); background-color: var(--c_purple_dark);
} }
input.dirty, textarea.dirty, select.dirty { input.dirty, textarea.dirty, select.dirty {

View File

@@ -2626,13 +2626,23 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
key: "hookupButtonsRowDelete", key: "hookupButtonsRowDelete",
value: function hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete) { value: function hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete) {
var _this13 = this; var _this13 = this;
var changeHandler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (event, element) {
_this13.handleChangeNestedElementCellTable(event, element);
};
this.hookupEventHandler("click", selectorButtonDelete, function (event, element) { this.hookupEventHandler("click", selectorButtonDelete, function (event, element) {
_this13.handleClickButtonRowDelete(event, element, selectorButtonDelete, selectorButtonUndelete); _this13.handleClickButtonRowDelete(event, element, selectorButtonDelete, selectorButtonUndelete, function (changeEvent, changeElement) {
changeHandler(changeEvent, changeElement);
});
}); });
} }
}, { }, {
key: "handleClickButtonRowDelete", key: "handleClickButtonRowDelete",
value: function handleClickButtonRowDelete(event, element, selectorButtonDelete, selectorButtonUndelete) { value: function handleClickButtonRowDelete(event, element, selectorButtonDelete, selectorButtonUndelete) {
var _this14 = this;
var changeHandler = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : function (event, element) {
_this14.handleChangeNestedElementCellTable(event, element);
};
debugger;
var row = DOM.getRowFromElement(element); var row = DOM.getRowFromElement(element);
// row.classList.add(flagDelete); // row.classList.add(flagDelete);
if (row.classList.contains(flagRowNew) && !DOM.hasDirtyChildrenContainer(row)) { if (row.classList.contains(flagRowNew) && !DOM.hasDirtyChildrenContainer(row)) {
@@ -2645,21 +2655,33 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
buttonAdd.textContent = '+'; buttonAdd.textContent = '+';
// DOM.setElementAttributeValueCurrent(buttonAdd, false); // DOM.setElementAttributeValueCurrent(buttonAdd, false);
element.replaceWith(buttonAdd); element.replaceWith(buttonAdd);
this.handleChangeNestedElementCellTable(null, buttonAdd); changeHandler(null, buttonAdd);
this.hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete); this.hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete, function (changeEvent, changeElement) {
changeHandler(changeEvent, changeElement);
});
this.updateAndToggleShowButtonsSaveCancel(); this.updateAndToggleShowButtonsSaveCancel();
} }
}, { }, {
key: "hookupButtonsRowUndelete", key: "hookupButtonsRowUndelete",
value: function hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete) { value: function hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete) {
var _this14 = this; var _this15 = this;
var changeHandler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (event, element) {
_this15.handleChangeNestedElementCellTable(event, element);
};
this.hookupEventHandler("click", selectorButtonUndelete, function (event, element) { this.hookupEventHandler("click", selectorButtonUndelete, function (event, element) {
_this14.handleClickButtonRowUndelete(event, element, selectorButtonDelete, selectorButtonUndelete); _this15.handleClickButtonRowUndelete(event, element, selectorButtonDelete, selectorButtonUndelete, function (changeEvent, changeElement) {
changeHandler(changeEvent, changeElement);
});
}); });
} }
}, { }, {
key: "handleClickButtonRowUndelete", key: "handleClickButtonRowUndelete",
value: function handleClickButtonRowUndelete(event, element, selectorButtonDelete, selectorButtonUndelete) { value: function handleClickButtonRowUndelete(event, element, selectorButtonDelete, selectorButtonUndelete) {
var _this16 = this;
var changeHandler = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : function (event, element) {
_this16.handleChangeNestedElementCellTable(event, element);
};
debugger;
// let row = DOM.getRowFromElement(element); // let row = DOM.getRowFromElement(element);
// row.classList.remove(flagDelete); // row.classList.remove(flagDelete);
var buttonDelete = element.cloneNode(false); // document.createElement("button"); var buttonDelete = element.cloneNode(false); // document.createElement("button");
@@ -2669,8 +2691,10 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
buttonDelete.textContent = 'x'; buttonDelete.textContent = 'x';
// DOM.setElementAttributeValueCurrent(buttonDelete, true); // DOM.setElementAttributeValueCurrent(buttonDelete, true);
element.replaceWith(buttonDelete); element.replaceWith(buttonDelete);
this.handleChangeNestedElementCellTable(null, buttonDelete); changeHandler(null, buttonDelete);
this.hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete); this.hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete, function (changeEvent, changeElement) {
changeHandler(changeEvent, changeElement);
});
this.updateAndToggleShowButtonsSaveCancel(); this.updateAndToggleShowButtonsSaveCancel();
} }
}, { }, {
@@ -2682,15 +2706,15 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, { }, {
key: "hookupTableCellDdlPreviews", key: "hookupTableCellDdlPreviews",
value: function hookupTableCellDdlPreviews(cellSelector, optionList) { value: function hookupTableCellDdlPreviews(cellSelector, optionList) {
var _this15 = this; var _this17 = this;
var ddlHookup = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (cellSelector) { var ddlHookup = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (cellSelector) {
_this15.hookupTableCellDdls(cellSelector); _this17.hookupTableCellDdls(cellSelector);
}; };
var changeHandler = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function (event, element) { var changeHandler = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function (event, element) {
_this15.handleChangeNestedElementCellTable(event, element); _this17.handleChangeNestedElementCellTable(event, element);
}; };
this.hookupEventHandler("click", cellSelector, function (event, td) { this.hookupEventHandler("click", cellSelector, function (event, td) {
_this15.handleClickTableCellDdlPreview(event, td, optionList, cellSelector, function (cellSelector) { _this17.handleClickTableCellDdlPreview(event, td, optionList, cellSelector, function (cellSelector) {
ddlHookup(cellSelector, function (event, element) { ddlHookup(cellSelector, function (event, element) {
changeHandler(event, element); changeHandler(event, element);
}); });
@@ -2701,9 +2725,9 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, { }, {
key: "hookupTableCellDdls", key: "hookupTableCellDdls",
value: function hookupTableCellDdls(ddlSelector) { value: function hookupTableCellDdls(ddlSelector) {
var _this16 = this; var _this18 = this;
var changeHandler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (event, element) { var changeHandler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (event, element) {
_this16.handleChangeNestedElementCellTable(event, element); _this18.handleChangeNestedElementCellTable(event, element);
}; };
this.hookupEventHandler("change", ddlSelector, function (event, element) { this.hookupEventHandler("change", ddlSelector, function (event, element) {
changeHandler(event, element); changeHandler(event, element);
@@ -2712,9 +2736,9 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, { }, {
key: "handleClickTableCellDdlPreview", key: "handleClickTableCellDdlPreview",
value: function handleClickTableCellDdlPreview(event, td, optionObjectList, cellSelector) { value: function handleClickTableCellDdlPreview(event, td, optionObjectList, cellSelector) {
var _this17 = this; var _this19 = this;
var ddlHookup = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : function (cellSelector) { var ddlHookup = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : function (cellSelector) {
_this17.hookupTableCellDdls(cellSelector); _this19.hookupTableCellDdls(cellSelector);
}; };
if (td.querySelector('select')) return; if (td.querySelector('select')) return;
// td.removeEventListener("click", ddlHookup); // td.removeEventListener("click", ddlHookup);
@@ -2774,14 +2798,14 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, { }, {
key: "hookupTableCellDDlPreviewsWhenNotCollapsed", key: "hookupTableCellDDlPreviewsWhenNotCollapsed",
value: function hookupTableCellDDlPreviewsWhenNotCollapsed(cellSelector, optionList) { value: function hookupTableCellDDlPreviewsWhenNotCollapsed(cellSelector, optionList) {
var _this18 = this; var _this20 = this;
var ddlHookup = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (event, element) { var ddlHookup = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (event, element) {
_this18.hookupTableCellDdls(event, element); _this20.hookupTableCellDdls(event, element);
}; };
this.hookupEventHandler("click", cellSelector, function (event, td) { this.hookupEventHandler("click", cellSelector, function (event, td) {
var div = td.querySelector('div'); var div = td.querySelector('div');
if (!div || div.classList.contains(flagCollapsed)) return; if (!div || div.classList.contains(flagCollapsed)) return;
_this18.handleClickTableCellDdlPreview(event, td, optionList, cellSelector, function (event, element) { _this20.handleClickTableCellDdlPreview(event, td, optionList, cellSelector, function (event, element) {
ddlHookup(event, element); ddlHookup(event, element);
}); });
}); });
@@ -2789,9 +2813,9 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, { }, {
key: "hookupProductCategoryDdls", key: "hookupProductCategoryDdls",
value: function hookupProductCategoryDdls(ddlSelector) { value: function hookupProductCategoryDdls(ddlSelector) {
var _this19 = this; var _this21 = this;
this.hookupChangeHandlerTableCells(ddlSelector, function (event, element) { this.hookupChangeHandlerTableCells(ddlSelector, function (event, element) {
_this19.handleChangeProductCategoryDdl(event, element); _this21.handleChangeProductCategoryDdl(event, element);
}); });
} }
}, { }, {
@@ -2825,15 +2849,15 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, { }, {
key: "hookupPreviewsProductPermutationVariation", key: "hookupPreviewsProductPermutationVariation",
value: function hookupPreviewsProductPermutationVariation() { value: function hookupPreviewsProductPermutationVariation() {
var _this20 = this; var _this22 = this;
this.hookupEventHandler("click", idTableMain + ' td.' + flagProductVariations, function (event, element) { this.hookupEventHandler("click", idTableMain + ' td.' + flagProductVariations, function (event, element) {
return _this20.handleClickProductPermutationVariationsPreview(event, element); return _this22.handleClickProductPermutationVariationsPreview(event, element);
}); });
} }
}, { }, {
key: "handleClickProductPermutationVariationsPreview", key: "handleClickProductPermutationVariationsPreview",
value: function handleClickProductPermutationVariationsPreview(event, element) { value: function handleClickProductPermutationVariationsPreview(event, element) {
var _this21 = this; var _this23 = this;
var tblVariations = element.querySelector('table.' + flagProductVariations); var tblVariations = element.querySelector('table.' + flagProductVariations);
if (!validation_Validation.isEmpty(tblVariations)) return; if (!validation_Validation.isEmpty(tblVariations)) return;
this.toggleColumnCollapsed(flagProductVariations, false); this.toggleColumnCollapsed(flagProductVariations, false);
@@ -2862,7 +2886,7 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
var tbody = document.createElement("tbody"); var tbody = document.createElement("tbody");
if (!validation_Validation.isEmpty(permutationVariations)) { if (!validation_Validation.isEmpty(permutationVariations)) {
permutationVariations.forEach(function (permutationVariation, index) { permutationVariations.forEach(function (permutationVariation, index) {
_this21.addProductPermutationVariationRow(tbody, permutationVariation); _this23.addProductPermutationVariationRow(tbody, permutationVariation);
}); });
} }
tblVariations.appendChild(tbody); tblVariations.appendChild(tbody);
@@ -2993,8 +3017,10 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
var tdDelete = document.createElement("td"); var tdDelete = document.createElement("td");
tdDelete.classList.add(flagDelete); tdDelete.classList.add(flagDelete);
var buttonDelete = document.createElement("button"); var buttonDelete = document.createElement("button");
buttonDelete.classList.add(flagActive);
buttonDelete.classList.add(flagDelete); buttonDelete.classList.add(flagDelete);
buttonDelete.textContent = 'x'; buttonDelete.textContent = 'x';
DOM.setElementAttributesValuesCurrentAndPrevious(buttonDelete, true);
var tr = document.createElement("tr"); var tr = document.createElement("tr");
tr.classList.add(flagProductVariation); tr.classList.add(flagProductVariation);
tdVariationType.appendChild(ddlVariationType); tdVariationType.appendChild(ddlVariationType);
@@ -3008,9 +3034,9 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, { }, {
key: "hookupDdlsProductPermutationVariationType", key: "hookupDdlsProductPermutationVariationType",
value: function hookupDdlsProductPermutationVariationType() { value: function hookupDdlsProductPermutationVariationType() {
var _this22 = this; var _this24 = this;
this.hookupTableCellDdls(idTableMain + ' td.' + flagProductVariations + ' td.' + flagProductVariationType + ' select', function (event, ddlVariationType) { this.hookupTableCellDdls(idTableMain + ' td.' + flagProductVariations + ' td.' + flagProductVariationType + ' select', function (event, ddlVariationType) {
_this22.handleChangeDdlProductVariationOrVariationType(event, ddlVariationType); _this24.handleChangeProductVariationInput(event, ddlVariationType);
var idVariationTypeSelected = DOM.getElementValueCurrent(ddlVariationType); var idVariationTypeSelected = DOM.getElementValueCurrent(ddlVariationType);
var row = DOM.getRowFromElement(ddlVariationType); var row = DOM.getRowFromElement(ddlVariationType);
var tdVariation = row.querySelector('td.' + flagProductVariation); var tdVariation = row.querySelector('td.' + flagProductVariation);
@@ -3026,43 +3052,44 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
option = DOM.createOption(optionJson); option = DOM.createOption(optionJson);
ddlVariation.appendChild(option); ddlVariation.appendChild(option);
}); });
_this22.handleChangeDdlProductVariationOrVariationType(event, ddlVariation); _this24.handleChangeProductVariationInput(event, ddlVariation);
}); });
} }
}, { }, {
key: "handleChangeDdlProductVariationOrVariationType", key: "handleChangeProductVariationInput",
value: function handleChangeDdlProductVariationOrVariationType(event, element) { value: function handleChangeProductVariationInput(event, element) {
this.handleChangeNestedElementCellTable(event, element); this.handleChangeNestedElementCellTable(event, element);
this.updateProductPermutationVariations(element); this.updateProductPermutationVariations(element);
} }
}, { }, {
key: "hookupDdlsProductPermutationVariation", key: "hookupDdlsProductPermutationVariation",
value: function hookupDdlsProductPermutationVariation() { value: function hookupDdlsProductPermutationVariation() {
var _this23 = this; var _this25 = this;
this.hookupTableCellDdls(idTableMain + ' td.' + flagProductVariations + ' td.' + flagProductVariation + ' select', function (event, ddlVariation) { this.hookupTableCellDdls(idTableMain + ' td.' + flagProductVariations + ' td.' + flagProductVariation + ' select', function (event, ddlVariation) {
_this23.handleChangeDdlProductVariationOrVariationType(event, ddlVariation); _this25.handleChangeProductVariationInput(event, ddlVariation);
}); });
} }
}, { }, {
key: "hookupButtonsProductPermutationVariationAddDelete", key: "hookupButtonsProductPermutationVariationAddDelete",
value: function hookupButtonsProductPermutationVariationAddDelete() { value: function hookupButtonsProductPermutationVariationAddDelete() {
var _this24 = this; var _this26 = this;
var selectorButton = idTableMain + ' td.' + flagProductVariations + ' tr.' + flagProductVariation + ' button'; var selectorButton = idTableMain + ' td.' + flagProductVariations + ' tr.' + flagProductVariation + ' button';
var selectorButtonDelete = selectorButton + '.' + flagDelete; var selectorButtonDelete = selectorButton + '.' + flagDelete;
var selectorButtonUndelete = selectorButton + '.' + flagAdd; var selectorButtonUndelete = selectorButton + '.' + flagAdd;
this.hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete, function (event, element) { this.hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete, function (event, element) {
_this24.handleClickButtonRowDelete(event, element); _this26.handleChangeProductVariationInput(event, element);
_this24.updateProductPermutationVariations(element); });
this.hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete, function (event, element) {
_this26.handleChangeProductVariationInput(event, element);
}); });
this.hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete);
this.hookupButtonsProductPermutationVariationAdd(); this.hookupButtonsProductPermutationVariationAdd();
} }
}, { }, {
key: "hookupButtonsProductPermutationVariationAdd", key: "hookupButtonsProductPermutationVariationAdd",
value: function hookupButtonsProductPermutationVariationAdd() { value: function hookupButtonsProductPermutationVariationAdd() {
var _this25 = this; var _this27 = this;
this.hookupEventHandler("click", idTableMain + ' td.' + flagProductVariations + ' button.' + flagAdd, function (event, element) { this.hookupEventHandler("click", idTableMain + ' td.' + flagProductVariations + ' button.' + flagAdd, function (event, element) {
_this25.handleClickButtonProductPermutationVariationAdd(event, element); _this27.handleClickButtonProductPermutationVariationAdd(event, element);
}); });
} }
}, { }, {
@@ -3085,7 +3112,7 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, { }, {
key: "getProductPermutationVariationsText", key: "getProductPermutationVariationsText",
value: function getProductPermutationVariationsText(variationsTd) { value: function getProductPermutationVariationsText(variationsTd) {
var rows = variationsTd.querySelectorAll(':scope tbody tr'); var rows = variationsTd.querySelectorAll(':scope tbody tr:has(button.' + flagDelete + ')');
var variationPairsString = ''; var variationPairsString = '';
var ddlVariationType, ddlVariation, idVariationType, idVariation; var ddlVariationType, ddlVariation, idVariationType, idVariation;
rows.forEach(function (row, index) { rows.forEach(function (row, index) {

View File

@@ -484,45 +484,40 @@ export default class TableBasePage extends BasePage {
, (event, button) => { handleClickRowNew(event, button); } , (event, button) => { handleClickRowNew(event, button); }
); );
} }
hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete) { hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete, changeHandler = (event, element) => { this.handleChangeNestedElementCellTable(event, element); }) {
this.hookupEventHandler("click", selectorButtonDelete, (event, element) => { this.hookupEventHandler("click", selectorButtonDelete, (event, element) => {
this.handleClickButtonRowDelete(event, element, selectorButtonDelete, selectorButtonUndelete); this.handleClickButtonRowDelete(event, element, selectorButtonDelete, selectorButtonUndelete, (changeEvent, changeElement) => { changeHandler(changeEvent, changeElement); });
}); });
} }
handleClickButtonRowDelete(event, element, selectorButtonDelete, selectorButtonUndelete) { handleClickButtonRowDelete(event, element, selectorButtonDelete, selectorButtonUndelete, changeHandler = (event, element) => { this.handleChangeNestedElementCellTable(event, element); }) {
let row = DOM.getRowFromElement(element); let row = DOM.getRowFromElement(element);
// row.classList.add(flagDelete);
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); // document.createElement("button"); let buttonAdd = element.cloneNode(false);
buttonAdd.classList.remove(flagInitialised); buttonAdd.classList.remove(flagInitialised);
buttonAdd.classList.remove(flagDelete); buttonAdd.classList.remove(flagDelete);
buttonAdd.classList.add(flagAdd); buttonAdd.classList.add(flagAdd);
buttonAdd.textContent = '+'; buttonAdd.textContent = '+';
// DOM.setElementAttributeValueCurrent(buttonAdd, false);
element.replaceWith(buttonAdd); element.replaceWith(buttonAdd);
this.handleChangeNestedElementCellTable(null, buttonAdd); changeHandler(null, buttonAdd);
this.hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete); this.hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete, (changeEvent, changeElement) => { changeHandler(changeEvent, changeElement); });
this.updateAndToggleShowButtonsSaveCancel(); this.updateAndToggleShowButtonsSaveCancel();
} }
hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete) { hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete, changeHandler = (event, element) => { this.handleChangeNestedElementCellTable(event, element); }) {
this.hookupEventHandler("click", selectorButtonUndelete, (event, element) => { this.hookupEventHandler("click", selectorButtonUndelete, (event, element) => {
this.handleClickButtonRowUndelete(event, element, selectorButtonDelete, selectorButtonUndelete); this.handleClickButtonRowUndelete(event, element, selectorButtonDelete, selectorButtonUndelete, (changeEvent, changeElement) => { changeHandler(changeEvent, changeElement); });
}); });
} }
handleClickButtonRowUndelete(event, element, selectorButtonDelete, selectorButtonUndelete) { handleClickButtonRowUndelete(event, element, selectorButtonDelete, selectorButtonUndelete, changeHandler = (event, element) => { this.handleChangeNestedElementCellTable(event, element); }) {
// let row = DOM.getRowFromElement(element); let buttonDelete = element.cloneNode(false);
// row.classList.remove(flagDelete);
let buttonDelete = element.cloneNode(false); // document.createElement("button");
buttonDelete.classList.remove(flagInitialised); buttonDelete.classList.remove(flagInitialised);
buttonDelete.classList.remove(flagAdd); buttonDelete.classList.remove(flagAdd);
buttonDelete.classList.add(flagDelete); buttonDelete.classList.add(flagDelete);
buttonDelete.textContent = 'x'; buttonDelete.textContent = 'x';
// DOM.setElementAttributeValueCurrent(buttonDelete, true);
element.replaceWith(buttonDelete); element.replaceWith(buttonDelete);
this.handleChangeNestedElementCellTable(null, buttonDelete); changeHandler(null, buttonDelete);
this.hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete); this.hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete, (changeEvent, changeElement) => { changeHandler(changeEvent, changeElement); });
this.updateAndToggleShowButtonsSaveCancel(); this.updateAndToggleShowButtonsSaveCancel();
} }
hookupTdsAccessLevel() { hookupTdsAccessLevel() {
@@ -810,8 +805,10 @@ export default class TableBasePage extends BasePage {
tdDelete.classList.add(flagDelete); tdDelete.classList.add(flagDelete);
let buttonDelete = document.createElement("button"); let buttonDelete = document.createElement("button");
buttonDelete.classList.add(flagActive);
buttonDelete.classList.add(flagDelete); buttonDelete.classList.add(flagDelete);
buttonDelete.textContent = 'x'; buttonDelete.textContent = 'x';
DOM.setElementAttributesValuesCurrentAndPrevious(buttonDelete, true);
let tr = document.createElement("tr"); let tr = document.createElement("tr");
tr.classList.add(flagProductVariation); tr.classList.add(flagProductVariation);
@@ -827,7 +824,7 @@ export default class TableBasePage extends BasePage {
this.hookupTableCellDdls( this.hookupTableCellDdls(
idTableMain + ' td.' + flagProductVariations + ' td.' + flagProductVariationType + ' select' idTableMain + ' td.' + flagProductVariations + ' td.' + flagProductVariationType + ' select'
, (event, ddlVariationType) => { , (event, ddlVariationType) => {
this.handleChangeDdlProductVariationOrVariationType(event, ddlVariationType); this.handleChangeProductVariationInput(event, ddlVariationType);
let idVariationTypeSelected = DOM.getElementValueCurrent(ddlVariationType); let idVariationTypeSelected = DOM.getElementValueCurrent(ddlVariationType);
let row = DOM.getRowFromElement(ddlVariationType); let row = DOM.getRowFromElement(ddlVariationType);
let tdVariation = row.querySelector('td.' + flagProductVariation); let tdVariation = row.querySelector('td.' + flagProductVariation);
@@ -845,26 +842,23 @@ export default class TableBasePage extends BasePage {
option = DOM.createOption(optionJson); option = DOM.createOption(optionJson);
ddlVariation.appendChild(option); ddlVariation.appendChild(option);
}); });
this.handleChangeDdlProductVariationOrVariationType(event, ddlVariation); this.handleChangeProductVariationInput(event, ddlVariation);
} }
); );
} }
handleChangeDdlProductVariationOrVariationType(event, element) { handleChangeProductVariationInput(event, element) {
this.handleChangeNestedElementCellTable(event, element); this.handleChangeNestedElementCellTable(event, element);
this.updateProductPermutationVariations(element); this.updateProductPermutationVariations(element);
} }
hookupDdlsProductPermutationVariation() { hookupDdlsProductPermutationVariation() {
this.hookupTableCellDdls(idTableMain + ' td.' + flagProductVariations + ' td.' + flagProductVariation + ' select', (event, ddlVariation) => { this.handleChangeDdlProductVariationOrVariationType(event, ddlVariation); }); this.hookupTableCellDdls(idTableMain + ' td.' + flagProductVariations + ' td.' + flagProductVariation + ' select', (event, ddlVariation) => { this.handleChangeProductVariationInput(event, ddlVariation); });
} }
hookupButtonsProductPermutationVariationAddDelete() { hookupButtonsProductPermutationVariationAddDelete() {
let selectorButton = idTableMain + ' td.' + flagProductVariations + ' tr.' + flagProductVariation + ' button'; let selectorButton = idTableMain + ' td.' + flagProductVariations + ' tr.' + flagProductVariation + ' button';
let selectorButtonDelete = selectorButton + '.' + flagDelete; let selectorButtonDelete = selectorButton + '.' + flagDelete;
let selectorButtonUndelete = selectorButton + '.' + flagAdd; let selectorButtonUndelete = selectorButton + '.' + flagAdd;
this.hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete, (event, element) => { this.hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete, (event, element) => { this.handleChangeProductVariationInput(event, element); });
this.handleClickButtonRowDelete(event, element); this.hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete, (event, element) => { this.handleChangeProductVariationInput(event, element); });
this.updateProductPermutationVariations(element);
});
this.hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete);
this.hookupButtonsProductPermutationVariationAdd(); this.hookupButtonsProductPermutationVariationAdd();
} }
hookupButtonsProductPermutationVariationAdd() { hookupButtonsProductPermutationVariationAdd() {
@@ -888,7 +882,7 @@ export default class TableBasePage extends BasePage {
this.handleChangeNestedElementCellTable(null, variationsCell); this.handleChangeNestedElementCellTable(null, variationsCell);
} }
getProductPermutationVariationsText(variationsTd) { getProductPermutationVariationsText(variationsTd) {
let rows = variationsTd.querySelectorAll(':scope tbody tr'); let rows = variationsTd.querySelectorAll(':scope tbody tr:has(button.' + flagDelete + ')');
let variationPairsString = ''; let variationPairsString = '';
let ddlVariationType, ddlVariation, idVariationType, idVariation; let ddlVariationType, ddlVariation, idVariationType, idVariation;
rows.forEach((row, index) => { rows.forEach((row, index) => {