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

539
app.log.3
View File

@@ -1,153 +1,125 @@
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 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
get many category_list: categories: [
id: 1
code: ASS
name: Assistive Devices
description: Braille product line and other assistive devices
access_level: View
display_order: 1
active: True
products: []
category-loaded category_list: categories: [
id: 4
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
active: False
products: [Product
id_product: 1
id_category: 1
name: Braille Keyboard Translator
display_order: 1
can_view: False
can_edit: False
can_admin: False
has_variations: True
permutations: []
variation trees: []
active: True
permutations: [Product_Permutation
id_permutation: 1
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: ()
product with id:6 has variations
new result set: ()
get many category_list: categories: [
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 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
code: CHOCOLATE
name: Chocolates and sweets
@@ -168,21 +140,270 @@ get many category_list: categories: [
variation trees: []
active: True
]
]
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
,
id: 3
code: TECH
name: Technology
description: Technological devices
access_level: View
display_order: 2
active: False
products: [Product
id_product: 3
id_category: 3
name: Phone
display_order: 2
can_view: False
can_edit: False
can_admin: False
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
]
]