From db15a7f8fc7a3e2a7b72705a4c3e2b6b0be32de8 Mon Sep 17 00:00:00 2001 From: teddy Date: Mon, 11 Nov 2024 10:49:55 +0000 Subject: [PATCH] Feat: Active column changed to add / delete / undelete buttons column on all table pages. \n Fix(UI): Product Permutations page preview Variations now shows when appropriate. --- app.log.1 | 78 ++++---- app.log.2 | 169 +++++------------- app.log.3 | 61 +++---- .../store/__pycache__/product.cpython-312.pyc | Bin 29329 -> 29296 bytes .../product_category.cpython-312.pyc | Bin 30716 -> 30916 bytes .../product_permutation.cpython-312.pyc | Bin 40787 -> 40857 bytes .../product_variation_tree.cpython-312.pyc | Bin 8990 -> 9128 bytes .../product_variation_type.cpython-312.pyc | Bin 10054 -> 10054 bytes business_objects/store/product.py | 6 + business_objects/store/product_category.py | 17 +- business_objects/store/product_permutation.py | 15 +- .../store/product_variation_tree.py | 8 +- .../store/product_variation_type.py | 2 +- .../datastore_store_base.cpython-312.pyc | Bin 14352 -> 14359 bytes datastores/datastore_store_base.py | 4 +- static/css/pages/store/product_categories.css | 34 ---- .../css/pages/store/product_permutations.css | 7 - static/css/pages/store/products.css | 19 -- .../css/store_product_categories.bundle.css | 34 ---- .../css/store_product_permutations.bundle.css | 7 - static/dist/js/main.bundle.js | 82 ++++----- static/js/pages/base_table.js | 9 +- .../common/buttons/_buttons_save_cancel.html | 12 +- .../_row_manufacturing_purchase_order.html | 10 +- templates/components/store/_row_product.html | 10 +- .../store/_row_product_category.html | 10 +- .../store/_row_product_permutation.html | 10 +- .../store/_row_product_variation_type.html | 22 +-- .../components/store/_row_stock_item.html | 10 +- templates/components/store/_row_supplier.html | 10 +- .../store/_row_supplier_purchase_order.html | 10 +- templates/components/store/_td_active.html | 13 ++ .../store/_manufacturing_purchase_orders.html | 5 +- .../pages/store/_product_categories.html | 39 +--- .../pages/store/_product_permutations.html | 5 +- .../pages/store/_product_variations.html | 9 +- templates/pages/store/_products.html | 5 +- templates/pages/store/_stock_items.html | 5 +- .../store/_supplier_purchase_orders.html | 5 +- templates/pages/store/_suppliers.html | 5 +- 40 files changed, 274 insertions(+), 473 deletions(-) create mode 100644 templates/components/store/_td_active.html diff --git a/app.log.1 b/app.log.1 index 0bd63758..bdcc17d9 100644 --- a/app.log.1 +++ b/app.log.1 @@ -1,12 +1,12 @@ -Server Error: name 'Parameters_Product' is not defined -Request: 127.0.0.1 GET http /store/categories? Host: 127.0.0.1:5000 +Server Error: 'Product_Variation_Type' object has no attribute 'name' +Request: 127.0.0.1 GET http /store/permutations? Host: 127.0.0.1:5000 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:131.0) Gecko/20100101 Firefox/131.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8 Accept-Language: en-GB,en;q=0.5 Accept-Encoding: gzip, deflate, br, zstd +Referer: http://127.0.0.1:5000/store/permutations Dnt: 1 Connection: keep-alive -Referer: http://127.0.0.1:5000/store/categories Cookie: session=.eJytVlnzokgS_yoTRsw8tTY3-I_omPUCRUFB5HohCgqkuOUQcba_-xba090PM3tErKFYVZlk_rLy_GMCujYua9SE8NKE9eTjj0kACg_AHBVe05Z1OPlo6y789NNx92J8n4Y5QNnkYxLCHtRwliMIs7AtiyZHbfyP60idBWU--TSJUN20BcixwIkRQjjgMwS9oKvrsAgGD4YR6LJ28lF0WfYi1eEVlcVfEN4AyO9rbzSCwHJf___kWIHy52wgzFlIzAFP-IAkojAaFTbeC7F3D2sUoRBOPiKQNeGLgoog62AIPXNh_ND6thOTm67Cqn42vunqbwYpf9o9PY-GT77i-2rqyGvLNCwwXRB4GvoszUOf8Sma4aM5iCDPBYAGfsBAjgwYBkQjxO6bG0AQhE3zXUI4yLEvBeiI5BTYO3RYyZmfK-N-qSQXSidUdYd6BGz1uUtKBLY6EWwV7jDMU9d2Wr-AMXjuejVxMzdxy6OUMT5iyWBgY2jrpbJiE58i7ruCmM2yYR07BymE20hQltPHzAY9BQ5hOOzkRxAuTpDfXPcBf1k5WqwkR7Pzbmia7hQa3oZpxisnehCEqiwqLNObAzdvJG9nZ-fl9rjyjuyFcKfF5tjXTqG5BwJJ0cUs_eXtcSMYLQMFeZUOmmYe2cUmhsxG7rWkCfa5LW7OMbewDZgF5Wmf7kuFAVAMH1YfXwGFhFt89_VrMqUV0hC0Y5prvM3Ep6FYnWMPLabZahk3tkPvXdJJ85vqhY7DlGtIOf0wn9bLpa4_uav0kM3W8LeOH9JFGCy1WFRvuju9IQSyA9_4oi2ea49doPVD3YBeXhUaH2e6mapphD8VEDtVX9erjXNMTnpJ80fBuSnlNmF4Mr1uzQXTi8fDvCr4mamrZsoB1ScEw7rtnXK7aOMrDoPwUaE6bDyAQ5DkaYKlBZ4hfpwjHBQCxxDEKwv-IkrOl-eOVNGu2RU6G6x23C6tbHOF93lbueO-MO-h7V70lGH8RL672ytppuJBEWNSH-T5DAvrgKXWfi627hm_kJsppMTBXbEtsPTUl0zCp9inb2UEeAlmY9-6jMozdwvjINc6TEtd6ZFBad4FFFlBKV64FBkDq-8cat6OIRtIWQK35vDWERNwu3wekXDHoVkEuUg5th4H6B2eju3GUBKHw_PydNdqriQaoaxhqhrYWMphVMkZVEqNlXXAqE8duWuHONHKXF1fe7nYzQMpyN01WcKt3gfD5amdL4OO8C9XU5wOP6dCpqRYVy4Sji0_ZUOWXEvrAoktRszQXqYYV-aK8xiOl5nseoylVYxNq6zFi7JOOcXYcUqy6NRkR1ijI3KzdaysGdPTtXQay00POVm5kt64tn73C7UFWL8mwRffIVfv_vnHezbtZkGe5cAy011S5Y71eLrn_0PKY3sce5SJcRHwFtr6w0hJW6NiA9jxw3jim8pEzkxjW7PE7JxW3CVPxxJUObaGjsmGVp4LAvvgqa43I15mDDjFCJ7KWmOOa4VQMM6ANtGoA-siwHopqMmFUfIdq1oKczTMVFlnsfpcIsfY9G5u5q_YoLIXLjiQB42a67CQGWDLJyeraJcUKD3TCTNnVZDN-3Mi5gYOfoyrw3GZvOIpc4twuzyqWUUGhTzArfwEKXwopk6PpY5Y0ftSbp4N78ie3YpSRjuNtKF2REzu-ao-S_paR5vBH7RtqnJSdMYu4pfirlxCkzUXIHxKp1ogqelq6kVRcjuTlFzsiUQPs3XkWNJpfbBbfi8AckvkLmE0XlFFmtXpzVEn6bO5BzVdbC3y0TgU0THzm8F14uZeMqIBVHqeeO5GmhtHK6UYQyCHRcI30y6trekuue0HizkfdG5FMEkxZzyRmMY6cuim5S7DihrurFwXSb8ZiL1U-CIuyYfFpRZYjznQvtCtuRNvIunsOewRy3oKnV4fUL9cZXsqOxfafNke79Hl_mgAjFJyoWngXq7tYR-ZnPpQROoiOMF0X516m1tSJojP7F0HvGSO9asJymrsjPhZIPhLVZcRysJf3vPCp8mrYHnt8OJZhqDGTe_d-1ARla_-1-HmPLlKydDeVMVaxWf0uB15Stee5tbCFy_LOL8n_8sI8jetH5fUd41lBIFmxrHiz6LLsNT7oGmwgrhtq-bj82cY3qdFD1KK4Lgw4mIBPYpZ18xe08eo6jPW9W0w-M-gChSk_455ZCmLYKSb10elci6emOq2bhLpRho9JlcoaLtxUPuOsJlda3AHLahfcN7LzywN6YhiGIKHLMXykcBEFB8AgsedxYcc83vzhRGI3-ov1fU3-OUl61d68Ssl4m8Aix_24f1bZINXIZxVxcvjaHRYP92vSu1eP1B99N3-6nGi0ZqFkniVTEaHF2Pn_zezWldB0OJpbHTGhCIoZkqSU4I0iPkHSX1QxIyjGHfy9evXfwErYp4O.ZySbdA.IOzQ4B0k8HNh-01pbYKqF3sN8jI Upgrade-Insecure-Requests: 1 Sec-Fetch-Dest: document @@ -25,23 +25,50 @@ Traceback: Traceback (most recent call last): File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\app.py", line 865, in dispatch_request return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\controllers\store\product_category.py", line 56, in categories - model = Model_View_Store_Product_Category(form_filters) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\models\model_view_store_product_category.py", line 48, in __init__ - filters_product = Parameters_Product.from_filters_product_category(self.form_filters) - ^^^^^^^^^^^^^^^^^^ -NameError: name 'Parameters_Product' is not defined + File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\controllers\store\product_permutation.py", line 47, in permutations + return render_template('pages/store/_product_permutations.html', model = model) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\templating.py", line 150, in render_template + return _render(app, template, context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\templating.py", line 131, in _render + rv = template.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\jinja2\environment.py", line 1304, in render + self.environment.handle_exception() + File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\jinja2\environment.py", line 939, in handle_exception + raise rewrite_traceback_stack(source=source) + File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\pages\store\_product_permutations.html", line 1, in top-level template code + {% extends 'layouts/layout.html' %} + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\layouts\layout.html", line 354, in top-level template code + {% block page_body %}{% endblock %} + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\pages\store\_product_permutations.html", line 131, in block 'page_body' + {% include 'components/store/_row_product_permutation.html' %} + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\components\store\_row_product_permutation.html", line 94, in top-level template code + {% include 'components/store/_preview_product_permutation_variations.html' %} + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\components\store\_preview_product_permutation_variations.html", line 5, in top-level template code + {% set str_variations = variation_tree.to_preview_str() %} + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\business_objects\store\product_variation_tree.py", line 145, in to_preview_str + preview_str += f'{variation_type.name}: {variation_type.variations[0].name}' + ^^^^^^^^^^^^^^^^^^^ +AttributeError: 'Product_Variation_Type' object has no attribute 'name' -Server Error: 1 -Request: 127.0.0.1 GET http /store/stock_items? Host: 127.0.0.1:5000 +config_env: development +config_env: development +Server Error: 'variation_type' is undefined +Request: 127.0.0.1 GET http /store/permutations? Host: 127.0.0.1:5000 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:131.0) Gecko/20100101 Firefox/131.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8 Accept-Language: en-GB,en;q=0.5 Accept-Encoding: gzip, deflate, br, zstd +Referer: http://127.0.0.1:5000/store/permutations Dnt: 1 Connection: keep-alive -Referer: http://127.0.0.1:5000/store/stock_items Cookie: session=.eJytVlnzokgS_yoTRsw8tTY3-I_omPUCRUFB5HohCgqkuOUQcba_-xba090PM3tErKFYVZlk_rLy_GMCujYua9SE8NKE9eTjj0kACg_AHBVe05Z1OPlo6y789NNx92J8n4Y5QNnkYxLCHtRwliMIs7AtiyZHbfyP60idBWU--TSJUN20BcixwIkRQjjgMwS9oKvrsAgGD4YR6LJ28lF0WfYi1eEVlcVfEN4AyO9rbzSCwHJf___kWIHy52wgzFlIzAFP-IAkojAaFTbeC7F3D2sUoRBOPiKQNeGLgoog62AIPXNh_ND6thOTm67Cqn42vunqbwYpf9o9PY-GT77i-2rqyGvLNCwwXRB4GvoszUOf8Sma4aM5iCDPBYAGfsBAjgwYBkQjxO6bG0AQhE3zXUI4yLEvBeiI5BTYO3RYyZmfK-N-qSQXSidUdYd6BGz1uUtKBLY6EWwV7jDMU9d2Wr-AMXjuejVxMzdxy6OUMT5iyWBgY2jrpbJiE58i7ruCmM2yYR07BymE20hQltPHzAY9BQ5hOOzkRxAuTpDfXPcBf1k5WqwkR7Pzbmia7hQa3oZpxisnehCEqiwqLNObAzdvJG9nZ-fl9rjyjuyFcKfF5tjXTqG5BwJJ0cUs_eXtcSMYLQMFeZUOmmYe2cUmhsxG7rWkCfa5LW7OMbewDZgF5Wmf7kuFAVAMH1YfXwGFhFt89_VrMqUV0hC0Y5prvM3Ep6FYnWMPLabZahk3tkPvXdJJ85vqhY7DlGtIOf0wn9bLpa4_uav0kM3W8LeOH9JFGCy1WFRvuju9IQSyA9_4oi2ea49doPVD3YBeXhUaH2e6mapphD8VEDtVX9erjXNMTnpJ80fBuSnlNmF4Mr1uzQXTi8fDvCr4mamrZsoB1ScEw7rtnXK7aOMrDoPwUaE6bDyAQ5DkaYKlBZ4hfpwjHBQCxxDEKwv-IkrOl-eOVNGu2RU6G6x23C6tbHOF93lbueO-MO-h7V70lGH8RL672ytppuJBEWNSH-T5DAvrgKXWfi627hm_kJsppMTBXbEtsPTUl0zCp9inb2UEeAlmY9-6jMozdwvjINc6TEtd6ZFBad4FFFlBKV64FBkDq-8cat6OIRtIWQK35vDWERNwu3wekXDHoVkEuUg5th4H6B2eju3GUBKHw_PydNdqriQaoaxhqhrYWMphVMkZVEqNlXXAqE8duWuHONHKXF1fe7nYzQMpyN01WcKt3gfD5amdL4OO8C9XU5wOP6dCpqRYVy4Sji0_ZUOWXEvrAoktRszQXqYYV-aK8xiOl5nseoylVYxNq6zFi7JOOcXYcUqy6NRkR1ijI3KzdaysGdPTtXQay00POVm5kt64tn73C7UFWL8mwRffIVfv_vnHezbtZkGe5cAy011S5Y71eLrn_0PKY3sce5SJcRHwFtr6w0hJW6NiA9jxw3jim8pEzkxjW7PE7JxW3CVPxxJUObaGjsmGVp4LAvvgqa43I15mDDjFCJ7KWmOOa4VQMM6ANtGoA-siwHopqMmFUfIdq1oKczTMVFlnsfpcIsfY9G5u5q_YoLIXLjiQB42a67CQGWDLJyeraJcUKD3TCTNnVZDN-3Mi5gYOfoyrw3GZvOIpc4twuzyqWUUGhTzArfwEKXwopk6PpY5Y0ftSbp4N78ie3YpSRjuNtKF2REzu-ao-S_paR5vBH7RtqnJSdMYu4pfirlxCkzUXIHxKp1ogqelq6kVRcjuTlFzsiUQPs3XkWNJpfbBbfi8AckvkLmE0XlFFmtXpzVEn6bO5BzVdbC3y0TgU0THzm8F14uZeMqIBVHqeeO5GmhtHK6UYQyCHRcI30y6trekuue0HizkfdG5FMEkxZzyRmMY6cuim5S7DihrurFwXSb8ZiL1U-CIuyYfFpRZYjznQvtCtuRNvIunsOewRy3oKnV4fUL9cZXsqOxfafNke79Hl_mgAjFJyoWngXq7tYR-ZnPpQROoiOMF0X516m1tSJojP7F0HvGSO9asJymrsjPhZIPhLVZcRysJf3vPCp8mrYHnt8OJZhqDGTe_d-1ARla_-1-HmPLlKydDeVMVaxWf0uB15Stee5tbCFy_LOL8n_8sI8jetH5fUd41lBIFmxrHiz6LLsNT7oGmwgrhtq-bj82cY3qdFD1KK4Lgw4mIBPYpZ18xe08eo6jPW9W0w-M-gChSk_455ZCmLYKSb10elci6emOq2bhLpRho9JlcoaLtxUPuOsJlda3AHLahfcN7LzywN6YhiGIKHLMXykcBEFB8AgsedxYcc83vzhRGI3-ov1fU3-OUl61d68Ssl4m8Aix_24f1bZINXIZxVxcvjaHRYP92vSu1eP1B99N3-6nGi0ZqFkniVTEaHF2Pn_zezWldB0OJpbHTGhCIoZkqSU4I0iPkHSX1QxIyjGHfy9evXfwErYp4O.ZySbdA.IOzQ4B0k8HNh-01pbYKqF3sN8jI Upgrade-Insecure-Requests: 1 Sec-Fetch-Dest: document @@ -53,28 +80,3 @@ Priority: u=0, i Request data: b'' -Traceback: Traceback (most recent call last): - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\app.py", line 880, in full_dispatch_request - rv = self.dispatch_request() - ^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\app.py", line 865, in dispatch_request - return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return] - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\controllers\store\stock_item.py", line 40, in stock_items - model = Model_View_Store_Stock_Item(form_filters) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\models\model_view_store_stock_item.py", line 54, in __init__ - self.category_list_filters, errors_filters = datastore_store.get_many_product(Parameters_Product.get_default()) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\datastores\datastore_store_base.py", line 133, in get_many_product - category_list.add_product_image(new_image) - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\business_objects\store\product_category.py", line 366, in add_product_image - self.categories[index_category].add_product_image(image) - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\business_objects\store\product_category.py", line 129, in add_product_image - self.products[index_product].add_product_image(image) - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\business_objects\store\product.py", line 286, in add_product_image - index_permutation = self.permutation_index[image.id_permutation] # self.get_index_permutation_from_id(image.id_permutation) - ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ -KeyError: 1 - -Server Error: 1 diff --git a/app.log.2 b/app.log.2 index f5c479ad..a350eac3 100644 --- a/app.log.2 +++ b/app.log.2 @@ -5,9 +5,9 @@ Traceback: Traceback (most recent call last): File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\app.py", line 865, in dispatch_request return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\controllers\store\product_variation.py", line 45, in product_variations - return render_template('pages/store/_product_variations.html', model = model) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\controllers\store\product_permutation.py", line 47, in permutations + return render_template('pages/store/_product_permutations.html', model = model) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\templating.py", line 150, in render_template return _render(app, template, context) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -18,31 +18,40 @@ Traceback: Traceback (most recent call last): self.environment.handle_exception() File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\jinja2\environment.py", line 939, in handle_exception raise rewrite_traceback_stack(source=source) - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\pages\store\_product_variations.html", line 1, in top-level template code + File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\pages\store\_product_permutations.html", line 1, in top-level template code {% extends 'layouts/layout.html' %} ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\layouts\layout.html", line 353, in top-level template code + File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\layouts\layout.html", line 354, in top-level template code {% block page_body %}{% endblock %} ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\pages\store\_product_variations.html", line 51, in block 'page_body' - {% include 'components/store/_row_product_variation_type.html' %} + File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\pages\store\_product_permutations.html", line 149, in block 'page_body' + var products = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.category_list.get_list_products()) | tojson | safe }}; ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\components\store\_row_product_variation_type.html", line 50, in top-level template code - - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\jinja2\environment.py", line 487, in getattr - return getattr(obj, attribute) - ^^^^^^^^^^^^^^^^^^^^^^^ -jinja2.exceptions.UndefinedError: 'product' is undefined + File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\models\model_view_base.py", line 358, in convert_list_objects_to_dict_json_by_attribute_key_default + return Model_View_Base.convert_list_objects_to_dict_json_by_attribute_key(list_objects, getattr(obj_class, obj_class.FLAG_NAME_ATTR_OPTION_VALUE)) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\models\model_view_base.py", line 346, in convert_list_objects_to_dict_json_by_attribute_key + return {getattr(obj, key): obj.to_json() for obj in list_objects} + ^^^^^^^^^^^^^ + File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\business_objects\store\product.py", line 347, in to_json + self.ATTR_ID_PRODUCT_PERMUTATION: [permutation.to_json() for permutation in self.permutations], + ^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\business_objects\store\product_permutation.py", line 305, in to_json + self.FLAG_PRODUCT_VARIATIONS: [variation_type.to_json() for variation_type in self.variation_tree.get_product_variation_types()], + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'get_product_variation_types' config_env: development -Server Error: 'models.model_view_store_product_variation.Model_View_Store_Product_Variation object' has no attribute 'category_list_filters' -Request: 127.0.0.1 GET http /store/variations? Host: 127.0.0.1:5000 +config_env: development +config_env: development +config_env: development +Server Error: 'Product_Variation_Tree' object has no attribute 'get_product_variations' +Request: 127.0.0.1 GET http /store/permutations? Host: 127.0.0.1:5000 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:131.0) Gecko/20100101 Firefox/131.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8 Accept-Language: en-GB,en;q=0.5 Accept-Encoding: gzip, deflate, br, zstd -Referer: http://127.0.0.1:5000/store/variations +Referer: http://127.0.0.1:5000/store/permutations Dnt: 1 Connection: keep-alive Cookie: session=.eJytVlnzokgS_yoTRsw8tTY3-I_omPUCRUFB5HohCgqkuOUQcba_-xba090PM3tErKFYVZlk_rLy_GMCujYua9SE8NKE9eTjj0kACg_AHBVe05Z1OPlo6y789NNx92J8n4Y5QNnkYxLCHtRwliMIs7AtiyZHbfyP60idBWU--TSJUN20BcixwIkRQjjgMwS9oKvrsAgGD4YR6LJ28lF0WfYi1eEVlcVfEN4AyO9rbzSCwHJf___kWIHy52wgzFlIzAFP-IAkojAaFTbeC7F3D2sUoRBOPiKQNeGLgoog62AIPXNh_ND6thOTm67Cqn42vunqbwYpf9o9PY-GT77i-2rqyGvLNCwwXRB4GvoszUOf8Sma4aM5iCDPBYAGfsBAjgwYBkQjxO6bG0AQhE3zXUI4yLEvBeiI5BTYO3RYyZmfK-N-qSQXSidUdYd6BGz1uUtKBLY6EWwV7jDMU9d2Wr-AMXjuejVxMzdxy6OUMT5iyWBgY2jrpbJiE58i7ruCmM2yYR07BymE20hQltPHzAY9BQ5hOOzkRxAuTpDfXPcBf1k5WqwkR7Pzbmia7hQa3oZpxisnehCEqiwqLNObAzdvJG9nZ-fl9rjyjuyFcKfF5tjXTqG5BwJJ0cUs_eXtcSMYLQMFeZUOmmYe2cUmhsxG7rWkCfa5LW7OMbewDZgF5Wmf7kuFAVAMH1YfXwGFhFt89_VrMqUV0hC0Y5prvM3Ep6FYnWMPLabZahk3tkPvXdJJ85vqhY7DlGtIOf0wn9bLpa4_uav0kM3W8LeOH9JFGCy1WFRvuju9IQSyA9_4oi2ea49doPVD3YBeXhUaH2e6mapphD8VEDtVX9erjXNMTnpJ80fBuSnlNmF4Mr1uzQXTi8fDvCr4mamrZsoB1ScEw7rtnXK7aOMrDoPwUaE6bDyAQ5DkaYKlBZ4hfpwjHBQCxxDEKwv-IkrOl-eOVNGu2RU6G6x23C6tbHOF93lbueO-MO-h7V70lGH8RL672ytppuJBEWNSH-T5DAvrgKXWfi627hm_kJsppMTBXbEtsPTUl0zCp9inb2UEeAlmY9-6jMozdwvjINc6TEtd6ZFBad4FFFlBKV64FBkDq-8cat6OIRtIWQK35vDWERNwu3wekXDHoVkEuUg5th4H6B2eju3GUBKHw_PydNdqriQaoaxhqhrYWMphVMkZVEqNlXXAqE8duWuHONHKXF1fe7nYzQMpyN01WcKt3gfD5amdL4OO8C9XU5wOP6dCpqRYVy4Sji0_ZUOWXEvrAoktRszQXqYYV-aK8xiOl5nseoylVYxNq6zFi7JOOcXYcUqy6NRkR1ijI3KzdaysGdPTtXQay00POVm5kt64tn73C7UFWL8mwRffIVfv_vnHezbtZkGe5cAy011S5Y71eLrn_0PKY3sce5SJcRHwFtr6w0hJW6NiA9jxw3jim8pEzkxjW7PE7JxW3CVPxxJUObaGjsmGVp4LAvvgqa43I15mDDjFCJ7KWmOOa4VQMM6ANtGoA-siwHopqMmFUfIdq1oKczTMVFlnsfpcIsfY9G5u5q_YoLIXLjiQB42a67CQGWDLJyeraJcUKD3TCTNnVZDN-3Mi5gYOfoyrw3GZvOIpc4twuzyqWUUGhTzArfwEKXwopk6PpY5Y0ftSbp4N78ie3YpSRjuNtKF2REzu-ao-S_paR5vBH7RtqnJSdMYu4pfirlxCkzUXIHxKp1ogqelq6kVRcjuTlFzsiUQPs3XkWNJpfbBbfi8AckvkLmE0XlFFmtXpzVEn6bO5BzVdbC3y0TgU0THzm8F14uZeMqIBVHqeeO5GmhtHK6UYQyCHRcI30y6trekuue0HizkfdG5FMEkxZzyRmMY6cuim5S7DihrurFwXSb8ZiL1U-CIuyYfFpRZYjznQvtCtuRNvIunsOewRy3oKnV4fUL9cZXsqOxfafNke79Hl_mgAjFJyoWngXq7tYR-ZnPpQROoiOMF0X516m1tSJojP7F0HvGSO9asJymrsjPhZIPhLVZcRysJf3vPCp8mrYHnt8OJZhqDGTe_d-1ARla_-1-HmPLlKydDeVMVaxWf0uB15Stee5tbCFy_LOL8n_8sI8jetH5fUd41lBIFmxrHiz6LLsNT7oGmwgrhtq-bj82cY3qdFD1KK4Lgw4mIBPYpZ18xe08eo6jPW9W0w-M-gChSk_455ZCmLYKSb10elci6emOq2bhLpRho9JlcoaLtxUPuOsJlda3AHLahfcN7LzywN6YhiGIKHLMXykcBEFB8AgsedxYcc83vzhRGI3-ov1fU3-OUl61d68Ssl4m8Aix_24f1bZINXIZxVxcvjaHRYP92vSu1eP1B99N3-6nGi0ZqFkniVTEaHF2Pn_zezWldB0OJpbHTGhCIoZkqSU4I0iPkHSX1QxIyjGHfy9evXfwErYp4O.ZySbdA.IOzQ4B0k8HNh-01pbYKqF3sN8jI @@ -63,114 +72,26 @@ Traceback: Traceback (most recent call last): File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\app.py", line 865, in dispatch_request return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\controllers\store\product_variation.py", line 45, in product_variations - return render_template('pages/store/_product_variations.html', model = model) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\templating.py", line 150, in render_template - return _render(app, template, context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\templating.py", line 131, in _render - rv = template.render(context) - ^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\jinja2\environment.py", line 1304, in render - self.environment.handle_exception() - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\jinja2\environment.py", line 939, in handle_exception - raise rewrite_traceback_stack(source=source) - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\pages\store\_product_variations.html", line 1, in top-level template code - {% extends 'layouts/layout.html' %} - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\layouts\layout.html", line 353, in top-level template code - {% block page_body %}{% endblock %} - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\pages\store\_product_variations.html", line 69, in block 'page_body' - var productCategories = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.category_list_filters.categories) | tojson | safe }}; - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\jinja2\environment.py", line 487, in getattr - return getattr(obj, attribute) - ^^^^^^^^^^^^^^^^^^^^^^^ -jinja2.exceptions.UndefinedError: 'models.model_view_store_product_variation.Model_View_Store_Product_Variation object' has no attribute 'category_list_filters' + File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\controllers\store\product_permutation.py", line 43, in permutations + model = Model_View_Store_Product_Permutation(form_filters) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\models\model_view_store_product_permutation.py", line 51, in __init__ + self.category_list, errors = datastore_store.get_many_product(filters_product) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\datastores\datastore_store_base.py", line 145, in get_many_product + category_list.get_all_product_variation_trees() + File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\business_objects\store\product_category.py", line 396, in get_all_product_variation_trees + category.get_all_product_variation_trees() + File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\business_objects\store\product_category.py", line 154, in get_all_product_variation_trees + product.get_variation_trees() + File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\business_objects\store\product.py", line 176, in get_variation_trees + if self.variation_trees[index_tree].is_equal(variation_tree): + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\business_objects\store\product_variation_tree.py", line 52, in is_equal + my_type_list = self.get_product_variations() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'Product_Variation_Tree' object has no attribute 'get_product_variations'. Did you mean: 'get_product_variation_types'? config_env: development config_env: development config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development -config_env: development diff --git a/app.log.3 b/app.log.3 index dcb68d7c..76228d2a 100644 --- a/app.log.3 +++ b/app.log.3 @@ -1,11 +1,11 @@ -Request: 127.0.0.1 GET http /store/variations? Host: 127.0.0.1:5000 +Request: 127.0.0.1 GET http /store/stock_items? Host: 127.0.0.1:5000 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:131.0) Gecko/20100101 Firefox/131.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8 Accept-Language: en-GB,en;q=0.5 Accept-Encoding: gzip, deflate, br, zstd -Referer: http://127.0.0.1:5000/store/variations Dnt: 1 Connection: keep-alive +Referer: http://127.0.0.1:5000/store/stock_items Cookie: session=.eJytVlnzokgS_yoTRsw8tTY3-I_omPUCRUFB5HohCgqkuOUQcba_-xba090PM3tErKFYVZlk_rLy_GMCujYua9SE8NKE9eTjj0kACg_AHBVe05Z1OPlo6y789NNx92J8n4Y5QNnkYxLCHtRwliMIs7AtiyZHbfyP60idBWU--TSJUN20BcixwIkRQjjgMwS9oKvrsAgGD4YR6LJ28lF0WfYi1eEVlcVfEN4AyO9rbzSCwHJf___kWIHy52wgzFlIzAFP-IAkojAaFTbeC7F3D2sUoRBOPiKQNeGLgoog62AIPXNh_ND6thOTm67Cqn42vunqbwYpf9o9PY-GT77i-2rqyGvLNCwwXRB4GvoszUOf8Sma4aM5iCDPBYAGfsBAjgwYBkQjxO6bG0AQhE3zXUI4yLEvBeiI5BTYO3RYyZmfK-N-qSQXSidUdYd6BGz1uUtKBLY6EWwV7jDMU9d2Wr-AMXjuejVxMzdxy6OUMT5iyWBgY2jrpbJiE58i7ruCmM2yYR07BymE20hQltPHzAY9BQ5hOOzkRxAuTpDfXPcBf1k5WqwkR7Pzbmia7hQa3oZpxisnehCEqiwqLNObAzdvJG9nZ-fl9rjyjuyFcKfF5tjXTqG5BwJJ0cUs_eXtcSMYLQMFeZUOmmYe2cUmhsxG7rWkCfa5LW7OMbewDZgF5Wmf7kuFAVAMH1YfXwGFhFt89_VrMqUV0hC0Y5prvM3Ep6FYnWMPLabZahk3tkPvXdJJ85vqhY7DlGtIOf0wn9bLpa4_uav0kM3W8LeOH9JFGCy1WFRvuju9IQSyA9_4oi2ea49doPVD3YBeXhUaH2e6mapphD8VEDtVX9erjXNMTnpJ80fBuSnlNmF4Mr1uzQXTi8fDvCr4mamrZsoB1ScEw7rtnXK7aOMrDoPwUaE6bDyAQ5DkaYKlBZ4hfpwjHBQCxxDEKwv-IkrOl-eOVNGu2RU6G6x23C6tbHOF93lbueO-MO-h7V70lGH8RL672ytppuJBEWNSH-T5DAvrgKXWfi627hm_kJsppMTBXbEtsPTUl0zCp9inb2UEeAlmY9-6jMozdwvjINc6TEtd6ZFBad4FFFlBKV64FBkDq-8cat6OIRtIWQK35vDWERNwu3wekXDHoVkEuUg5th4H6B2eju3GUBKHw_PydNdqriQaoaxhqhrYWMphVMkZVEqNlXXAqE8duWuHONHKXF1fe7nYzQMpyN01WcKt3gfD5amdL4OO8C9XU5wOP6dCpqRYVy4Sji0_ZUOWXEvrAoktRszQXqYYV-aK8xiOl5nseoylVYxNq6zFi7JOOcXYcUqy6NRkR1ijI3KzdaysGdPTtXQay00POVm5kt64tn73C7UFWL8mwRffIVfv_vnHezbtZkGe5cAy011S5Y71eLrn_0PKY3sce5SJcRHwFtr6w0hJW6NiA9jxw3jim8pEzkxjW7PE7JxW3CVPxxJUObaGjsmGVp4LAvvgqa43I15mDDjFCJ7KWmOOa4VQMM6ANtGoA-siwHopqMmFUfIdq1oKczTMVFlnsfpcIsfY9G5u5q_YoLIXLjiQB42a67CQGWDLJyeraJcUKD3TCTNnVZDN-3Mi5gYOfoyrw3GZvOIpc4twuzyqWUUGhTzArfwEKXwopk6PpY5Y0ftSbp4N78ie3YpSRjuNtKF2REzu-ao-S_paR5vBH7RtqnJSdMYu4pfirlxCkzUXIHxKp1ogqelq6kVRcjuTlFzsiUQPs3XkWNJpfbBbfi8AckvkLmE0XlFFmtXpzVEn6bO5BzVdbC3y0TgU0THzm8F14uZeMqIBVHqeeO5GmhtHK6UYQyCHRcI30y6trekuue0HizkfdG5FMEkxZzyRmMY6cuim5S7DihrurFwXSb8ZiL1U-CIuyYfFpRZYjznQvtCtuRNvIunsOewRy3oKnV4fUL9cZXsqOxfafNke79Hl_mgAjFJyoWngXq7tYR-ZnPpQROoiOMF0X516m1tSJojP7F0HvGSO9asJymrsjPhZIPhLVZcRysJf3vPCp8mrYHnt8OJZhqDGTe_d-1ARla_-1-HmPLlKydDeVMVaxWf0uB15Stee5tbCFy_LOL8n_8sI8jetH5fUd41lBIFmxrHiz6LLsNT7oGmwgrhtq-bj82cY3qdFD1KK4Lgw4mIBPYpZ18xe08eo6jPW9W0w-M-gChSk_455ZCmLYKSb10elci6emOq2bhLpRho9JlcoaLtxUPuOsJlda3AHLahfcN7LzywN6YhiGIKHLMXykcBEFB8AgsedxYcc83vzhRGI3-ov1fU3-OUl61d68Ssl4m8Aix_24f1bZINXIZxVxcvjaHRYP92vSu1eP1B99N3-6nGi0ZqFkniVTEaHF2Pn_zezWldB0OJpbHTGhCIoZkqSU4I0iPkHSX1QxIyjGHfy9evXfwErYp4O.ZySbdA.IOzQ4B0k8HNh-01pbYKqF3sN8jI Upgrade-Insecure-Requests: 1 Sec-Fetch-Dest: document @@ -24,47 +24,34 @@ Traceback: Traceback (most recent call last): File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\app.py", line 865, in dispatch_request return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\controllers\store\product_variation.py", line 45, in product_variations - return render_template('pages/store/_product_variations.html', model = model) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\templating.py", line 150, in render_template - return _render(app, template, context) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\flask\templating.py", line 131, in _render - rv = template.render(context) - ^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\jinja2\environment.py", line 1304, in render - self.environment.handle_exception() - File "C:\Users\edwar\AppData\Local\Programs\Python\Python312\Lib\site-packages\jinja2\environment.py", line 939, in handle_exception - raise rewrite_traceback_stack(source=source) - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\pages\store\_product_variations.html", line 1, in top-level template code - {% extends 'layouts/layout.html' %} - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\layouts\layout.html", line 353, in top-level template code - {% block page_body %}{% endblock %} - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\pages\store\_product_variations.html", line 51, in block 'page_body' - {% include 'components/store/_row_product_variation_type.html' %} - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\components\store\_row_product_variation_type.html", line 47, in top-level template code - {% include 'components/store/_preview_product_variation_type_variations.html' %} - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\templates\components\store\_preview_product_variation_type_variations.html", line 5, in top-level template code - {{ variation_type.get_preview_variations() }} - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\business_objects\store\product_variation_type.py", line 112, in get_preview_variations - preview = '\n'.join([variation.name_singular for variation in self.variations]) - ^^^^^^^^^^^^^^^^^^^^^^^ -AttributeError: 'Product_Variation' object has no attribute 'name_singular' + File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\controllers\store\stock_item.py", line 40, in stock_items + model = Model_View_Store_Stock_Item(form_filters) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\models\model_view_store_stock_item.py", line 54, in __init__ + self.category_list_filters, errors_filters = datastore_store.get_many_product(Parameters_Product.get_default()) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\datastores\datastore_store_base.py", line 133, in get_many_product + category_list.add_product_image(new_image) + File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\business_objects\store\product_category.py", line 366, in add_product_image + self.categories[index_category].add_product_image(image) + File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\business_objects\store\product_category.py", line 129, in add_product_image + self.products[index_product].add_product_image(image) + File "C:\Users\edwar\OneDrive\Documents\Programming\Visual Studio 2022\PARTS_Web\app\business_objects\store\product.py", line 286, in add_product_image + index_permutation = self.permutation_index[image.id_permutation] # self.get_index_permutation_from_id(image.id_permutation) + ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ +KeyError: 1 config_env: development -Server Error: 'product' is undefined -Request: 127.0.0.1 GET http /store/variations? Host: 127.0.0.1:5000 +config_env: development +config_env: development +config_env: development +Server Error: 'NoneType' object has no attribute 'get_product_variation_types' +Request: 127.0.0.1 GET http /store/permutations? Host: 127.0.0.1:5000 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:131.0) Gecko/20100101 Firefox/131.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8 Accept-Language: en-GB,en;q=0.5 Accept-Encoding: gzip, deflate, br, zstd -Referer: http://127.0.0.1:5000/store/variations +Referer: http://127.0.0.1:5000/store/permutations Dnt: 1 Connection: keep-alive Cookie: session=.eJytVlnzokgS_yoTRsw8tTY3-I_omPUCRUFB5HohCgqkuOUQcba_-xba090PM3tErKFYVZlk_rLy_GMCujYua9SE8NKE9eTjj0kACg_AHBVe05Z1OPlo6y789NNx92J8n4Y5QNnkYxLCHtRwliMIs7AtiyZHbfyP60idBWU--TSJUN20BcixwIkRQjjgMwS9oKvrsAgGD4YR6LJ28lF0WfYi1eEVlcVfEN4AyO9rbzSCwHJf___kWIHy52wgzFlIzAFP-IAkojAaFTbeC7F3D2sUoRBOPiKQNeGLgoog62AIPXNh_ND6thOTm67Cqn42vunqbwYpf9o9PY-GT77i-2rqyGvLNCwwXRB4GvoszUOf8Sma4aM5iCDPBYAGfsBAjgwYBkQjxO6bG0AQhE3zXUI4yLEvBeiI5BTYO3RYyZmfK-N-qSQXSidUdYd6BGz1uUtKBLY6EWwV7jDMU9d2Wr-AMXjuejVxMzdxy6OUMT5iyWBgY2jrpbJiE58i7ruCmM2yYR07BymE20hQltPHzAY9BQ5hOOzkRxAuTpDfXPcBf1k5WqwkR7Pzbmia7hQa3oZpxisnehCEqiwqLNObAzdvJG9nZ-fl9rjyjuyFcKfF5tjXTqG5BwJJ0cUs_eXtcSMYLQMFeZUOmmYe2cUmhsxG7rWkCfa5LW7OMbewDZgF5Wmf7kuFAVAMH1YfXwGFhFt89_VrMqUV0hC0Y5prvM3Ep6FYnWMPLabZahk3tkPvXdJJ85vqhY7DlGtIOf0wn9bLpa4_uav0kM3W8LeOH9JFGCy1WFRvuju9IQSyA9_4oi2ea49doPVD3YBeXhUaH2e6mapphD8VEDtVX9erjXNMTnpJ80fBuSnlNmF4Mr1uzQXTi8fDvCr4mamrZsoB1ScEw7rtnXK7aOMrDoPwUaE6bDyAQ5DkaYKlBZ4hfpwjHBQCxxDEKwv-IkrOl-eOVNGu2RU6G6x23C6tbHOF93lbueO-MO-h7V70lGH8RL672ytppuJBEWNSH-T5DAvrgKXWfi627hm_kJsppMTBXbEtsPTUl0zCp9inb2UEeAlmY9-6jMozdwvjINc6TEtd6ZFBad4FFFlBKV64FBkDq-8cat6OIRtIWQK35vDWERNwu3wekXDHoVkEuUg5th4H6B2eju3GUBKHw_PydNdqriQaoaxhqhrYWMphVMkZVEqNlXXAqE8duWuHONHKXF1fe7nYzQMpyN01WcKt3gfD5amdL4OO8C9XU5wOP6dCpqRYVy4Sji0_ZUOWXEvrAoktRszQXqYYV-aK8xiOl5nseoylVYxNq6zFi7JOOcXYcUqy6NRkR1ijI3KzdaysGdPTtXQay00POVm5kt64tn73C7UFWL8mwRffIVfv_vnHezbtZkGe5cAy011S5Y71eLrn_0PKY3sce5SJcRHwFtr6w0hJW6NiA9jxw3jim8pEzkxjW7PE7JxW3CVPxxJUObaGjsmGVp4LAvvgqa43I15mDDjFCJ7KWmOOa4VQMM6ANtGoA-siwHopqMmFUfIdq1oKczTMVFlnsfpcIsfY9G5u5q_YoLIXLjiQB42a67CQGWDLJyeraJcUKD3TCTNnVZDN-3Mi5gYOfoyrw3GZvOIpc4twuzyqWUUGhTzArfwEKXwopk6PpY5Y0ftSbp4N78ie3YpSRjuNtKF2REzu-ao-S_paR5vBH7RtqnJSdMYu4pfirlxCkzUXIHxKp1ogqelq6kVRcjuTlFzsiUQPs3XkWNJpfbBbfi8AckvkLmE0XlFFmtXpzVEn6bO5BzVdbC3y0TgU0THzm8F14uZeMqIBVHqeeO5GmhtHK6UYQyCHRcI30y6trekuue0HizkfdG5FMEkxZzyRmMY6cuim5S7DihrurFwXSb8ZiL1U-CIuyYfFpRZYjznQvtCtuRNvIunsOewRy3oKnV4fUL9cZXsqOxfafNke79Hl_mgAjFJyoWngXq7tYR-ZnPpQROoiOMF0X516m1tSJojP7F0HvGSO9asJymrsjPhZIPhLVZcRysJf3vPCp8mrYHnt8OJZhqDGTe_d-1ARla_-1-HmPLlKydDeVMVaxWf0uB15Stee5tbCFy_LOL8n_8sI8jetH5fUd41lBIFmxrHiz6LLsNT7oGmwgrhtq-bj82cY3qdFD1KK4Lgw4mIBPYpZ18xe08eo6jPW9W0w-M-gChSk_455ZCmLYKSb10elci6emOq2bhLpRho9JlcoaLtxUPuOsJlda3AHLahfcN7LzywN6YhiGIKHLMXykcBEFB8AgsedxYcc83vzhRGI3-ov1fU3-OUl61d68Ssl4m8Aix_24f1bZINXIZxVxcvjaHRYP92vSu1eP1B99N3-6nGi0ZqFkniVTEaHF2Pn_zezWldB0OJpbHTGhCIoZkqSU4I0iPkHSX1QxIyjGHfy9evXfwErYp4O.ZySbdA.IOzQ4B0k8HNh-01pbYKqF3sN8jI diff --git a/business_objects/store/__pycache__/product.cpython-312.pyc b/business_objects/store/__pycache__/product.cpython-312.pyc index bb53bb78551117f7a73ef7f22a39b70034d386cc..1cc13db5b628eef52537180285ae94e7f94f46a2 100644 GIT binary patch delta 1260 zcmZ9Le@t6d6vumBe^3}LV?3Y~B&G}*7%1&vg>5E`U)?`L>c$X;dwbBbwU$1(EyI!N zh=~z@#GohY{?fn5#A%$liHnQ4#3-5&<4VwBb&wF3xIdf>h#C^7_q-~JzT|!0x#xWE zIrqGK@2j_A?I*C$+iY0|@%%OEKCQj~p?%#5&u}o68~N^x@jbal5u$fvO5jbydB8xv zjCX?;`dU6Xhj735h$wak5#$Oy(-03x4n2|b|B;1weRMuIQ zh1En@i^bV);bM;x$^=qQH5gQenHC%!NGRJfC2?*zRB2+>B(eY3oyy!EvlAj7Hwio_ z9_AJXn-Lgybu#?ix2tMfsV8)TP`8Nqgkec`-IS}7a`iiEQm&oMT*6{cMW#P#^?zmm z*4m9PyT3+3RbK)R z@xpzt0DOci^#yPhXMGh=#c%t@06r#{>6)mH*^LgU!Kuc#?d*~mS4!-t_^>h@DUs{PSW9mfM*00;P;gL6ih!z)cPbn!2mt^)+| zx#lhS5+_=^ALPqY*e>{5_b0H%XS+AR zMn#yO4A?5p_8f#lzSZNFa_@;iJ6osl24MkP`)V`TpSm7L`r4p@U+p^vd6c0&okB`C zX2Q~w=b#5Ko_rm$u}0A#f^R8R;hQvfNg!qF*R&}6p2mv=+J{tjJRxq$fcTSVv>>xk z1KETe!V1Yo33)UuAlM1DH z(!4RDjtj%^&&`>`nn)2m#ScgJNl=a#qHcH|KZs6S(yPYap*;;hP=y}}hXhi_a4eB- zLf?j46rc;1?rE8<3PK@X8!GndRrNN?sJ?#mrYZctHt3!*LNCvV$pB7XqFs@8QFkfx m5iJ;s>QQFLbT1%t{LObreO;>z3TQXN}Bk`wzYbJM;T zRw`Yg4J0Y%5$he&9i#bM>(|zUrlU(oovmYD|Clk5#A#=-$^D1XebF^;Y{smbYxqxj z5BxxBPEi^=4p-YDkMF4%0`yjtqqEWg4!*eZE5J949O$odKp~&1+6%x%5S+)u)x|KM zU#b@RUDXckaLtAijJSpkC*>9v;MD(tI9x3jkfaPx(fiksJLIkW$bR~f&f3)&<(H^Esfv6b$+PP z3fd^xDLmOUH|L^A!zdTKO8A{HhWDEm$uq#`cus?HGFxwGfk`v}bA`oV`ilgA3*ba^ zP5F>8Vq%z5AuA(?wy8O*easi>i}$gZ^3MK_@ii@vWEjO-uLoY?m);^9h;Zhj;G{sQ zp8YG~h&K-a$Gr+%=2dHE>kA|jjS7FlDkh>1#uc?+iN)2x2KGk6P^W9zD+)FG zLm;8|t7@3tr1fI+HZKA-0!rJ zM_xiZe-OzAaq(uNXXFo(LYgo%tHHjo=4I*l^Ts@=!y6kv&GZ<+wkLXUU`irusvYZD F*?$|yPmllr diff --git a/business_objects/store/__pycache__/product_category.cpython-312.pyc b/business_objects/store/__pycache__/product_category.cpython-312.pyc index b0ba31d733477501c686b31c9e86ddb22358d27d..aeefa5fa3c75ee3fc2987ce08912245b0e275d95 100644 GIT binary patch delta 2967 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 SNbXqqA_u#LUJVJ2X8s094-OLm diff --git a/business_objects/store/__pycache__/product_variation_tree.cpython-312.pyc b/business_objects/store/__pycache__/product_variation_tree.cpython-312.pyc index 9181d1ab14a2eaa0d39cebb5433a4da5ca46d06a..caf47456fb1b9b45e0f030705a75aaaeb89192ee 100644 GIT binary patch delta 2036 zcmZ8hUu;uV7{8~zxBt7Y?Mi!l*R|__wF6w4z;M6>Aq;~I<^*K^Db3okV%L^)I|e-H z9(wgRUU)De8lUvRHK3a}VqApbiklVfA^g4obUhd zJ0I@6+~fYGd3IO#|_r^XkcBjB4Zu{y?_@TTb-rouM!@CG-kCC%K1A8scgrzm*1HsoR{ zo72rGj>TfU9=}El#N-w*$=jF)JLClO!HB$bg)n8RnG#k^!WeHr6`dj^b(oX4vluig zG1SU9R5+kK+rFsjB-@ruxtuFzlP2z=t%JO$2Z!^8>?0fBD(l&DxUWRfM%a?}k|M7| z&=~@GdDpU*t%R>E&3NNiOB<8HZq?eobT2>RJ!%Hb+k06GQjQe! zO=lca3>z{T)=az!oUW9GD#%yCHrK~ak=iEQpNc}JG1!^c)45}#nZi00=|3TiOLIYO zHrQDWcHRg+GvWHB-aq-mjr!&ZWiH$_8}6!xyKaOx!xr~dboH0JldWk&EyMG8kb13r zBA2J}oQs4kybbz2%Og}cK?g(0=E{{}-GTyS75=bi=RCcv2Y&Z_jy=QTxT!e&DFmcr z8#ujSrQUOgSENfi?cSk?u$f4 zMARxlcwNEOVmP=m8qsf^lxRmw&QuyZYX-Wkgsqm1(yk^o}7k- zZy;Dtpc3pwNLp*1wH?*5sd|O;9q>jV#_Vt=ps{+m9N5TSf%(8E=xIb&;nK3xO%c*F zi@po4aw0nlL~k2lcQA~KL&1$K4;O>aFD7pajkO4}%KSBQZX*y)A_PFVwZshgEfi*D_%F0cBkB**L_PRXUi82F5A>;D!?=AJe5pqFv3`k*FqI`?iloIW zA_A_tG!$a8E;ztnMN2vrjVfN7y$;-+>JVWdjV%?rk%z0{10j3eS=T$R$(LpWiE1Em z)0Uj`G)%Z~jNICv%mM#umslTs&=?)Ea3YoA94r;}QX!Wvl#XyRYq*P9V|w$NCr07df=DtJ>5x z6WMgF<63dH`(U;E;LOX1s@(&#-RWv~dS=Vv87)(FW#ETM2X@HRbZ)okj#)$|_+eNp zr8LpvL32bj4T307ju?ftq;N3blwj|HBf1A|yEPS#MbGc=!#lj6fL>nyA_7{bLewZK zh)EQE%%8oS!Au|KzQhUMG*p<3sW2AnU>D%i*w9-(6!s?lJceK1Ob{m!WNX0{HldKw z^^sg6$Iq7#+6nx2^1CiYQEM7>tvBg3tm$;NG?-2s2{;^2C}L9K^?1rhJTx4+ z6O~+1#}`-U3Vaj~<%vtRgvi1ZA>6lZ9w}u<3%PDShNmdx;Z_sS6UJi12@QO1wb; delta 2028 zcmZuyUu;uV7{8~z_x8`)wO!Y>x82sR9c-Pmp^3ymK3>#BLo@*b4NqGjgf}LEmwHp!T3663;`4M`_3J65bwk9o_o&s zedqgr=l7j^dFLlP{6G5rUJ0Lv)t(vsykBE`&-e6ia!5O+qVk?pRIfT{Rg$J$V$Owg z?zK7hNl(^${_M&EuqMX5@Tub)7K4M%*%2SQWS!iFFYYGr*b{4GOD)o0Ld(|BwGUa{>$|xwtys8ee4RA;8 zLaTq&KIVizS7IPYcC7?$1aX2+gewvc(U{7yvn2*vq2?M<#e!>L-j!iJA~VK&a53w& zoYN&!j4ipwjdi5JL-%N^4~@(S!WrpqpymCeb$Llk*X6U#OM!5`iHG2BNQ0k)uWJ}q=VCn9i05v_x4^XjItwjCnzyk24)n4DYy0T6lU2jC`4fc<(T1WL6{|TJ z=uT5L;`A-0XjE&nriv3NBz$Zw#b7xQgT=rg+X0^7H7stGCO^@{`w>u|Sr`np{|_|@ z=n5y`ozO7LBQ+8DHk1$%en^dxqp~hHN{fpE;)P;ShriQp9yG|}v=ybVcKd8OoulXl zQ^C<{s?Z*uWP892m+cG}{tCayPQQc(S&yZd)zVx|1n1N!oG7+JHzHfv6g-Gr z!b~r=eZH-oc5w>b3hi@h9-I*BpvJU(g_>S63WxN^TOHnwZe_FZW%Ol?#A4?%q8nuX z7W%9smYOOn+u_{sMJ#QLZ5P~*jj#%YwP(>C8<*XHIqmEGYZ4b3DeE#4Y=|pI;gy*-BB|34DOoMhSKjyh1=Nz^4d=s&>&x)|#wjvRVWd8+! C0?1|n diff --git a/business_objects/store/__pycache__/product_variation_type.cpython-312.pyc b/business_objects/store/__pycache__/product_variation_type.cpython-312.pyc index 9826dda20ad789ddd61dc06dacec36e7cb1fac76..e41f32dde27e5e0ba8413d7bff8a8f31860a72b2 100644 GIT binary patch delta 38 scmX@+cg&CXG%qg~0}vFn=%@2+ZOZrk#~&dhnOKS3d5mDColFEYA%~wQZm?mfGD{ST# z=VxT(+$=2-#H6NZeqAx@qGHsA=(x*@@fUdHJ}@!!x-;Goki9NoaZ$kHf~EIW0iVqi xrEZ9*7Zrev input, td > select, td > textarea, .container-input > input, .container-input > select, .container-input > textarea { border: 2px solid var(--c_purple); border-radius: 0.5vh; } -#tableMain tbody tr td button { - padding: 0; - border: 0; - margin: 0; - text-decoration: none; -} - #tableMain tbody tr td table thead tr th.id_variation_type, #tableMain tbody tr td table tbody tr td.id_variation_type, #tableMain tbody tr td table thead tr th.id_variation, #tableMain tbody tr td table tbody tr td.id_variation { width: 47.5%; } - -/* -select.id_variation, select.id_variation_type { - max-width: 40% !important; -} -*/ diff --git a/static/css/pages/store/product_permutations.css b/static/css/pages/store/product_permutations.css index ed9fcd28..2be740e6 100644 --- a/static/css/pages/store/product_permutations.css +++ b/static/css/pages/store/product_permutations.css @@ -114,13 +114,6 @@ td > input, td > select, td > textarea, .container-input > input, .container-inp border-radius: 0.5vh; } -#tableMain tbody tr td button { - padding: 0; - border: 0; - margin: 0; - text-decoration: none; -} - #tableMain tbody tr td table thead tr th.id_variation_type, #tableMain tbody tr td table tbody tr td.id_variation_type, #tableMain tbody tr td table thead tr th.id_variation, #tableMain tbody tr td table tbody tr td.id_variation { width: 47.5%; } diff --git a/static/css/pages/store/products.css b/static/css/pages/store/products.css index fcdadac8..2a0c688e 100644 --- a/static/css/pages/store/products.css +++ b/static/css/pages/store/products.css @@ -46,30 +46,11 @@ min-width: 5vh; } -textarea { - width: 95%; -} - -select { - width: 100%; -} - -input { - width: 90%; -} - td > input, td > select, td > textarea, .container-input > input, .container-input > select, .container-input > textarea { border: 2px solid var(--c_purple); border-radius: 0.5vh; } -#tableMain tbody tr td button { - padding: 0; - border: 0; - margin: 0; - text-decoration: none; -} - #tableMain tbody tr td table thead tr th.id_variation_type, #tableMain tbody tr td table tbody tr td.id_variation_type, #tableMain tbody tr td table thead tr th.id_variation, #tableMain tbody tr td table tbody tr td.id_variation { width: 47.5%; } diff --git a/static/dist/css/store_product_categories.bundle.css b/static/dist/css/store_product_categories.bundle.css index de1b2157..4ace60b7 100644 --- a/static/dist/css/store_product_categories.bundle.css +++ b/static/dist/css/store_product_categories.bundle.css @@ -107,50 +107,16 @@ width: 5vh; min-width: 5vh; } -/* -nips -*/ - -/* -.row-new { - visibility: hidden; -} -*/ - -textarea { - width: 95%; -} - -select { - width: 100%; -} - -input { - width: 90%; -} td > input, td > select, td > textarea, .container-input > input, .container-input > select, .container-input > textarea { border: 2px solid var(--c_purple); border-radius: 0.5vh; } -#tableMain tbody tr td button { - padding: 0; - border: 0; - margin: 0; - text-decoration: none; -} - #tableMain tbody tr td table thead tr th.id_variation_type, #tableMain tbody tr td table tbody tr td.id_variation_type, #tableMain tbody tr td table thead tr th.id_variation, #tableMain tbody tr td table tbody tr td.id_variation { width: 47.5%; } -/* -select.id_variation, select.id_variation_type { - max-width: 40% !important; -} -*/ - /*# sourceMappingURL=store_product_categories.bundle.css.map*/ \ No newline at end of file diff --git a/static/dist/css/store_product_permutations.bundle.css b/static/dist/css/store_product_permutations.bundle.css index 6eeae342..3aa1b12e 100644 --- a/static/dist/css/store_product_permutations.bundle.css +++ b/static/dist/css/store_product_permutations.bundle.css @@ -171,13 +171,6 @@ td > input, td > select, td > textarea, .container-input > input, .container-inp border-radius: 0.5vh; } -#tableMain tbody tr td button { - padding: 0; - border: 0; - margin: 0; - text-decoration: none; -} - #tableMain tbody tr td table thead tr th.id_variation_type, #tableMain tbody tr td table tbody tr td.id_variation_type, #tableMain tbody tr td table thead tr th.id_variation, #tableMain tbody tr td table tbody tr td.id_variation { width: 47.5%; } diff --git a/static/dist/js/main.bundle.js b/static/dist/js/main.bundle.js index 62315d28..53962296 100644 --- a/static/dist/js/main.bundle.js +++ b/static/dist/js/main.bundle.js @@ -2463,7 +2463,6 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) { }, { key: "hookupButtonsAddSaveCancel", value: function hookupButtonsAddSaveCancel() { - this.hookupButtonAddRowTable(); this.hookupButtonSave(); this.hookupButtonCancel(); this.toggleShowButtonsSaveCancel(false); @@ -2555,14 +2554,6 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) { button.classList.add(flagCollapsed); }); } - }, { - key: "hookupButtonAddRowTable", - value: function hookupButtonAddRowTable() { - var _this8 = this; - this.hookupEventHandler("click", idFormFilters + ' button.' + flagAdd, function (event, button) { - _this8.handleClickAddRowTable(event, button); - }); - } }, { key: "handleClickAddRowTable", value: function handleClickAddRowTable(event, button) { @@ -2591,14 +2582,14 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) { }, { key: "hookupTableMain", value: function hookupTableMain() { - var _this9 = this; + var _this8 = this; if (this.constructor === TableBasePage) { throw new Error("Must implement hookupTableMain() method."); } if (true) { // _rowBlank == null) { Events.initialiseEventHandler(idTableMain, flagInitialised, function (table) { - _this9.cacheRowBlank(); + _this8.cacheRowBlank(); }); } } @@ -2643,9 +2634,9 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) { }, { key: "hookupChangeHandlerTableCells", value: function hookupChangeHandlerTableCells(inputSelector) { - var _this10 = this; + var _this9 = this; var handler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (event, element) { - _this10.handleChangeNestedElementCellTable(event, element); + _this9.handleChangeNestedElementCellTable(event, element); }; Events.initialiseEventHandler(inputSelector, flagInitialised, function (input) { input.addEventListener("change", function (event) { @@ -2789,9 +2780,9 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) { }, { key: "hookupChangeHandlerTableCellsWhenNotCollapsed", value: function hookupChangeHandlerTableCellsWhenNotCollapsed(inputSelector) { - var _this11 = this; + var _this10 = this; var handler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (event, element) { - if (!element.classList.contains(flagCollapsed)) _this11.handleChangeNestedElementCellTable(event, element); + if (!element.classList.contains(flagCollapsed)) _this10.handleChangeNestedElementCellTable(event, element); }; this.hookupEventHandler("change", inputSelector, handler); } @@ -2871,10 +2862,10 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) { }, { key: "hookupFieldsActive", value: function hookupFieldsActive() { - var _this12 = this; + var _this11 = this; var flagTable = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; var handleClickRowNew = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (event, element) { - _this12.handleClickAddRowTable(event, element); + _this11.handleClickAddRowTable(event, element); }; var selectorButton = 'table' + (Validation.isEmpty(flagTable) ? '' : '.' + flagTable) + ' > tbody > tr > td.' + flagActive + ' button'; var selectorButtonDelete = selectorButton + '.' + flagDelete; @@ -2889,16 +2880,19 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) { }, { key: "hookupButtonsRowDelete", value: function hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete) { - var _this13 = this; + var _this12 = this; this.hookupEventHandler("click", selectorButtonDelete, function (event, element) { - _this13.handleClickButtonRowDelete(event, element, selectorButtonDelete, selectorButtonUndelete); + _this12.handleClickButtonRowDelete(event, element, selectorButtonDelete, selectorButtonUndelete); }); } }, { key: "handleClickButtonRowDelete", value: function handleClickButtonRowDelete(event, element, selectorButtonDelete, selectorButtonUndelete) { - // let row = DOM.getRowFromElement(element); + var row = DOM.getRowFromElement(element); // row.classList.add(flagDelete); + if (row.classList.contains(flagRowNew) && !DOM.hasDirtyChildrenContainer(row)) { + row.parentNode.removeChild(row); + } var buttonAdd = element.cloneNode(false); // document.createElement("button"); buttonAdd.classList.remove(flagInitialised); buttonAdd.classList.remove(flagDelete); @@ -2913,9 +2907,9 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) { }, { key: "hookupButtonsRowUndelete", value: function hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete) { - var _this14 = this; + var _this13 = this; this.hookupEventHandler("click", selectorButtonUndelete, function (event, element) { - _this14.handleClickButtonRowUndelete(event, element, selectorButtonDelete, selectorButtonUndelete); + _this13.handleClickButtonRowUndelete(event, element, selectorButtonDelete, selectorButtonUndelete); }); } }, { @@ -2943,15 +2937,15 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) { }, { key: "hookupTableCellDdlPreviews", value: function hookupTableCellDdlPreviews(cellSelector, optionList) { - var _this15 = this; + var _this14 = this; var ddlHookup = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (cellSelector) { - _this15.hookupTableCellDdls(cellSelector); + _this14.hookupTableCellDdls(cellSelector); }; var changeHandler = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function (event, element) { - _this15.handleChangeNestedElementCellTable(event, element); + _this14.handleChangeNestedElementCellTable(event, element); }; this.hookupEventHandler("click", cellSelector, function (event, td) { - _this15.handleClickTableCellDdlPreview(event, td, optionList, cellSelector, function (cellSelector) { + _this14.handleClickTableCellDdlPreview(event, td, optionList, cellSelector, function (cellSelector) { ddlHookup(cellSelector, function (event, element) { changeHandler(event, element); }); @@ -2962,9 +2956,9 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) { }, { key: "hookupTableCellDdls", value: function hookupTableCellDdls(ddlSelector) { - var _this16 = this; + var _this15 = this; var changeHandler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (event, element) { - _this16.handleChangeNestedElementCellTable(event, element); + _this15.handleChangeNestedElementCellTable(event, element); }; this.hookupEventHandler("change", ddlSelector, function (event, element) { changeHandler(event, element); @@ -2973,9 +2967,9 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) { }, { key: "handleClickTableCellDdlPreview", value: function handleClickTableCellDdlPreview(event, td, optionObjectList, cellSelector) { - var _this17 = this; + var _this16 = this; var ddlHookup = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : function (cellSelector) { - _this17.hookupTableCellDdls(cellSelector); + _this16.hookupTableCellDdls(cellSelector); }; if (td.querySelector('select')) return; // td.removeEventListener("click", ddlHookup); @@ -3036,14 +3030,14 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) { }, { key: "hookupTableCellDDlPreviewsWhenNotCollapsed", value: function hookupTableCellDDlPreviewsWhenNotCollapsed(cellSelector, optionList) { - var _this18 = this; + var _this17 = this; var ddlHookup = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (event, element) { - _this18.hookupTableCellDdls(event, element); + _this17.hookupTableCellDdls(event, element); }; this.hookupEventHandler("click", cellSelector, function (event, td) { var div = td.querySelector('div'); if (!div || div.classList.contains(flagCollapsed)) return; - _this18.handleClickTableCellDdlPreview(event, td, optionList, cellSelector, function (event, element) { + _this17.handleClickTableCellDdlPreview(event, td, optionList, cellSelector, function (event, element) { ddlHookup(event, element); }); }); @@ -3051,9 +3045,9 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) { }, { key: "hookupProductCategoryDdls", value: function hookupProductCategoryDdls(ddlSelector) { - var _this19 = this; + var _this18 = this; this.hookupChangeHandlerTableCells(ddlSelector, function (event, element) { - _this19.handleChangeProductCategoryDdl(event, element); + _this18.handleChangeProductCategoryDdl(event, element); }); } }, { @@ -3087,15 +3081,15 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) { }, { key: "hookupPreviewsProductPermutationVariation", value: function hookupPreviewsProductPermutationVariation() { - var _this20 = this; + var _this19 = this; this.hookupEventHandler("click", idTableMain + ' td.' + flagProductVariations, function (event, element) { - return _this20.handleClickProductPermutationVariationsPreview(event, element); + return _this19.handleClickProductPermutationVariationsPreview(event, element); }); } }, { key: "handleClickProductPermutationVariationsPreview", value: function handleClickProductPermutationVariationsPreview(event, element) { - var _this21 = this; + var _this20 = this; var tblVariations = element.querySelector('table.' + flagProductVariations); if (!Validation.isEmpty(tblVariations)) return; this.toggleColumnCollapsed(flagProductVariations, false); @@ -3124,7 +3118,7 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) { var tbody = document.createElement("tbody"); if (!Validation.isEmpty(permutationVariations)) { permutationVariations.forEach(function (permutationVariation, index) { - _this21.addProductPermutationVariationRow(tbody, permutationVariation); + _this20.addProductPermutationVariationRow(tbody, permutationVariation); }); } tblVariations.appendChild(tbody); @@ -3280,13 +3274,13 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) { }, { key: "hookupButtonsProductPermutationVariationAddDelete", value: function hookupButtonsProductPermutationVariationAddDelete() { - var _this22 = this; + var _this21 = this; var selectorButton = idTableMain + ' td.' + flagProductVariations + ' tr.' + flagProductVariation + ' button'; var selectorButtonDelete = selectorButton + '.' + flagDelete; var selectorButtonUndelete = selectorButton + '.' + flagAdd; this.hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete, function (event, element) { - _this22.handleClickButtonRowDelete(event, element); - _this22.updateProductPermutationVariations(element); + _this21.handleClickButtonRowDelete(event, element); + _this21.updateProductPermutationVariations(element); }); this.hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete); this.hookupButtonsProductPermutationVariationAdd(); @@ -3294,9 +3288,9 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) { }, { key: "hookupButtonsProductPermutationVariationAdd", value: function hookupButtonsProductPermutationVariationAdd() { - var _this23 = this; + var _this22 = this; this.hookupEventHandler("click", idTableMain + ' td.' + flagProductVariations + ' button.' + flagAdd, function (event, element) { - _this23.handleClickButtonProductPermutationVariationAdd(event, element); + _this22.handleClickButtonProductPermutationVariationAdd(event, element); }); } }, { diff --git a/static/js/pages/base_table.js b/static/js/pages/base_table.js index 01f89518..3cbcfacd 100644 --- a/static/js/pages/base_table.js +++ b/static/js/pages/base_table.js @@ -140,7 +140,6 @@ export default class TableBasePage extends BasePage { .catch(error => console.error('Error:', error)); } hookupButtonsAddSaveCancel() { - this.hookupButtonAddRowTable(); this.hookupButtonSave(); this.hookupButtonCancel(); this.toggleShowButtonsSaveCancel(false); @@ -216,9 +215,6 @@ export default class TableBasePage extends BasePage { button.classList.add(flagCollapsed); }); } - hookupButtonAddRowTable() { - this.hookupEventHandler("click", idFormFilters + ' button.' + flagAdd, (event, button) => { this.handleClickAddRowTable(event, button); }); - } handleClickAddRowTable(event, button) { event.stopPropagation(); _rowBlank.setAttribute(this.constructor.attrIdRowObject, -1 - _rowBlank.getAttribute(this.constructor.attrIdRowObject)); @@ -496,8 +492,11 @@ export default class TableBasePage extends BasePage { }); } handleClickButtonRowDelete(event, element, selectorButtonDelete, selectorButtonUndelete) { - // let row = DOM.getRowFromElement(element); + let row = DOM.getRowFromElement(element); // row.classList.add(flagDelete); + if (row.classList.contains(flagRowNew) && !DOM.hasDirtyChildrenContainer(row)) { + row.parentNode.removeChild(row); + } let buttonAdd = element.cloneNode(false); // document.createElement("button"); buttonAdd.classList.remove(flagInitialised); buttonAdd.classList.remove(flagDelete); diff --git a/templates/components/common/buttons/_buttons_save_cancel.html b/templates/components/common/buttons/_buttons_save_cancel.html index aa1383ab..512d65bb 100644 --- a/templates/components/common/buttons/_buttons_save_cancel.html +++ b/templates/components/common/buttons/_buttons_save_cancel.html @@ -3,7 +3,7 @@ {% elif block_id == 'button_cancel' %} {% elif block_id == 'button_add' %} - + {% elif block_id == 'button_confirm' %} {% elif block_id == 'button_get_in_touch' %} @@ -18,10 +18,12 @@ {% set block_id = 'button_apply_filters' %} {% include 'components/common/buttons/_buttons_save_cancel.html' %} -
- {% set block_id = 'button_add' %} - {% include 'components/common/buttons/_buttons_save_cancel.html' %} -
+ {# +
+ {% set block_id = 'button_add' %} + {% include 'components/common/buttons/_buttons_save_cancel.html' %} +
+ #}
{% set block_id = 'button_save' %} diff --git a/templates/components/store/_row_manufacturing_purchase_order.html b/templates/components/store/_row_manufacturing_purchase_order.html index 85c72e21..15dfdf19 100644 --- a/templates/components/store/_row_manufacturing_purchase_order.html +++ b/templates/components/store/_row_manufacturing_purchase_order.html @@ -33,9 +33,8 @@ {{ model.ATTR_VALUE_CURRENT }}="" {{ model.ATTR_VALUE_PREVIOUS }}="" >
- - - + {% set active = true %} + {% include 'components/store/_td_active.html' %} {% else %} @@ -79,8 +78,7 @@ {{ model.ATTR_VALUE_PREVIOUS }}="{{ order.price_total_local_VAT_incl }}" >
- - - + {% set active = order.active %} + {% include 'components/store/_td_active.html' %} {% endif %} \ No newline at end of file diff --git a/templates/components/store/_row_product.html b/templates/components/store/_row_product.html index 5778b449..12baad08 100644 --- a/templates/components/store/_row_product.html +++ b/templates/components/store/_row_product.html @@ -23,9 +23,8 @@ >
View
- - - + {% set active = true %} + {% include 'components/store/_td_active.html' %} {% else %} @@ -55,8 +54,7 @@ >
{{ product.name_access_level_required }}
- - - + {% set active = product.active %} + {% include 'components/store/_td_active.html' %} {% endif %} diff --git a/templates/components/store/_row_product_category.html b/templates/components/store/_row_product_category.html index fe3782f5..2ca036d5 100644 --- a/templates/components/store/_row_product_category.html +++ b/templates/components/store/_row_product_category.html @@ -15,9 +15,8 @@
View
- - - + {% set active = true %} + {% include 'components/store/_td_active.html' %} {% else %} @@ -37,8 +36,7 @@
{{ category.name_access_level_required }}
- - - + {% set active = category.active %} + {% include 'components/store/_td_active.html' %} {% endif %} \ No newline at end of file diff --git a/templates/components/store/_row_product_permutation.html b/templates/components/store/_row_product_permutation.html index 04697f09..a24619dd 100644 --- a/templates/components/store/_row_product_permutation.html +++ b/templates/components/store/_row_product_permutation.html @@ -75,9 +75,8 @@ - - - + {% set active = true %} + {% include 'components/store/_td_active.html' %} {% else %} @@ -166,8 +165,7 @@ - - - + {% set active = permutation.active %} + {% include 'components/store/_td_active.html' %} {% endif %} diff --git a/templates/components/store/_row_product_variation_type.html b/templates/components/store/_row_product_variation_type.html index e946844b..9017e0cb 100644 --- a/templates/components/store/_row_product_variation_type.html +++ b/templates/components/store/_row_product_variation_type.html @@ -15,15 +15,8 @@ {% include 'components/store/_preview_product_variation_type_variations.html' %} - - {# - - #} - - + {% set active = true %} + {% include 'components/store/_td_active.html' %} {% else %} @@ -52,14 +45,7 @@ {% include 'components/store/_preview_product_variation_type_variations.html' %} - - {# - - #} - - + {% set active = variation_type.active %} + {% include 'components/store/_td_active.html' %} {% endif %} diff --git a/templates/components/store/_row_stock_item.html b/templates/components/store/_row_stock_item.html index 56314b21..80eab421 100644 --- a/templates/components/store/_row_stock_item.html +++ b/templates/components/store/_row_stock_item.html @@ -54,9 +54,8 @@ {{ model.ATTR_VALUE_PREVIOUS }} /> - - - + {% set active = true %} + {% include 'components/store/_td_active.html' %} {% else %} @@ -142,8 +141,7 @@ {{ model.ATTR_VALUE_PREVIOUS }}="{{ model.format_datetime(stock_item.date_consumed) }}" /> - - - + {% set active = stock_item.active %} + {% include 'components/store/_td_active.html' %} {% endif %} \ No newline at end of file diff --git a/templates/components/store/_row_supplier.html b/templates/components/store/_row_supplier.html index 540106d8..0653c8fb 100644 --- a/templates/components/store/_row_supplier.html +++ b/templates/components/store/_row_supplier.html @@ -27,9 +27,8 @@ {% include 'components/store/_preview_DDL_currency.html' %} - - - + {% set active = true %} + {% include 'components/store/_td_active.html' %} {% else %} @@ -62,8 +61,7 @@ {% include 'components/store/_preview_DDL_currency.html' %} - - - + {% set active = supplier.active %} + {% include 'components/store/_td_active.html' %} {% endif %} \ No newline at end of file diff --git a/templates/components/store/_row_supplier_purchase_order.html b/templates/components/store/_row_supplier_purchase_order.html index 62bb729a..f540fa20 100644 --- a/templates/components/store/_row_supplier_purchase_order.html +++ b/templates/components/store/_row_supplier_purchase_order.html @@ -22,9 +22,8 @@ {{ model.ATTR_VALUE_CURRENT }}="" {{ model.ATTR_VALUE_PREVIOUS }}="" > - - - + {% set active = true %} + {% include 'components/store/_td_active.html' %} {% else %} @@ -61,8 +60,7 @@ {{ model.ATTR_VALUE_PREVIOUS }}="{{ order.cost_total_local_VAT_incl }}" > - - - + {% set active = order.active %} + {% include 'components/store/_td_active.html' %} {% endif %} \ No newline at end of file diff --git a/templates/components/store/_td_active.html b/templates/components/store/_td_active.html new file mode 100644 index 00000000..9f72e3e2 --- /dev/null +++ b/templates/components/store/_td_active.html @@ -0,0 +1,13 @@ + + +{% with _active = (active is not defined or active or active is none) %} + + {# + + #} + + +{% endwith %} \ No newline at end of file diff --git a/templates/pages/store/_manufacturing_purchase_orders.html b/templates/pages/store/_manufacturing_purchase_orders.html index bac476e7..3282634a 100644 --- a/templates/pages/store/_manufacturing_purchase_orders.html +++ b/templates/pages/store/_manufacturing_purchase_orders.html @@ -50,7 +50,10 @@ Cost Total VAT Incl. Price Total VAT Excl. Price Total VAT Incl. - Active + + {% set block_id = 'button_add' %} + {% include 'components/common/buttons/_buttons_save_cancel.html' %} + diff --git a/templates/pages/store/_product_categories.html b/templates/pages/store/_product_categories.html index 450c8b4c..81aa4c17 100644 --- a/templates/pages/store/_product_categories.html +++ b/templates/pages/store/_product_categories.html @@ -27,40 +27,6 @@ {% endfor %} - {# -
-
- {% set block_id = 'button_apply_filters' %} - {% include 'components/common/buttons/_buttons_save_cancel.html' %} -
-
- -
-
- {% set block_id = 'button_add' %} - {% include 'components/common/buttons/_buttons_save_cancel.html' %} -
-
-
-
- {% set block_id = 'button_save' %} - {% include 'components/common/buttons/_buttons_save_cancel.html' %} -
-
-
-
- {% set block_id = 'button_cancel' %} - {% include 'components/common/buttons/_buttons_save_cancel.html' %} -
-
- - #} {% set block_id = 'buttons_table_default' %} {% include 'components/common/buttons/_buttons_save_cancel.html' %} @@ -74,7 +40,10 @@ Name Description Access Level Required - Active + + {% set block_id = 'button_add' %} + {% include 'components/common/buttons/_buttons_save_cancel.html' %} + diff --git a/templates/pages/store/_product_permutations.html b/templates/pages/store/_product_permutations.html index 83beaa54..4e25432f 100644 --- a/templates/pages/store/_product_permutations.html +++ b/templates/pages/store/_product_permutations.html @@ -117,7 +117,10 @@ Cost Currency Profit Local Min Manufacturing Latency - Active + + {% set block_id = 'button_add' %} + {% include 'components/common/buttons/_buttons_save_cancel.html' %} + diff --git a/templates/pages/store/_product_variations.html b/templates/pages/store/_product_variations.html index 40c1df15..8f725446 100644 --- a/templates/pages/store/_product_variations.html +++ b/templates/pages/store/_product_variations.html @@ -23,12 +23,6 @@ {% endfor %} -
-
- {% set block_id = 'button_apply_filters' %} - {% include 'components/common/buttons/_buttons_save_cancel.html' %} -
-
{% set block_id = 'buttons_table_default' %} {% include 'components/common/buttons/_buttons_save_cancel.html' %} @@ -43,7 +37,8 @@ Name Plural Variations - + {% set block_id = 'button_add' %} + {% include 'components/common/buttons/_buttons_save_cancel.html' %} diff --git a/templates/pages/store/_products.html b/templates/pages/store/_products.html index c61ede1d..9987e357 100644 --- a/templates/pages/store/_products.html +++ b/templates/pages/store/_products.html @@ -63,7 +63,10 @@ Name Has Variations? Access Level Required - Active + + {% set block_id = 'button_add' %} + {% include 'components/common/buttons/_buttons_save_cancel.html' %} + diff --git a/templates/pages/store/_stock_items.html b/templates/pages/store/_stock_items.html index 017fbb9f..7ff12aa4 100644 --- a/templates/pages/store/_stock_items.html +++ b/templates/pages/store/_stock_items.html @@ -76,7 +76,10 @@ Date Expiration Is Consumed Date Consumed - Active + + {% set block_id = 'button_add' %} + {% include 'components/common/buttons/_buttons_save_cancel.html' %} + diff --git a/templates/pages/store/_supplier_purchase_orders.html b/templates/pages/store/_supplier_purchase_orders.html index c85a3e3f..962279f4 100644 --- a/templates/pages/store/_supplier_purchase_orders.html +++ b/templates/pages/store/_supplier_purchase_orders.html @@ -46,7 +46,10 @@ Currency Cost Total VAT Excl. Cost Total VAT Incl. - Active + + {% set block_id = 'button_add' %} + {% include 'components/common/buttons/_buttons_save_cancel.html' %} + diff --git a/templates/pages/store/_suppliers.html b/templates/pages/store/_suppliers.html index 984fe58b..16fd0ffd 100644 --- a/templates/pages/store/_suppliers.html +++ b/templates/pages/store/_suppliers.html @@ -32,7 +32,10 @@ Email Website Currency - Active + + {% set block_id = 'button_add' %} + {% include 'components/common/buttons/_buttons_save_cancel.html' %} +