diff --git a/.gitignore b/.gitignore
index 3242ec7e..861528f2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -55,7 +55,7 @@ secrets.yaml
TODO.md
# Ignore all files in a directory
-temp_files/
+tmp/
# Ignore all .txt files in the doc/ directory
doc/*.txt
diff --git a/app.py b/app.py
index b2c2cbb2..f284f80e 100644
--- a/app.py
+++ b/app.py
@@ -18,7 +18,6 @@ Initializes the Flask application, sets the configuration based on the environme
# internal
from config import app_config, Config
# from routes import bp_home
-from extensions import db, csrf, cors, mail, oauth
"""
from forms import Form_Contact, Form_Supplier, Form_Filters_Permutation, Filters_Stock_Item
from models.model_view_base import Model_View_Base
@@ -48,6 +47,8 @@ from controllers.store.stock_item import routes_store_stock_item
from controllers.store.supplier import routes_store_supplier
from controllers.store.supplier_purchase_order import routes_store_supplier_purchase_order
from controllers.user import routes_user
+from extensions import db, csrf, cors, mail, oauth
+from helpers.helper_app import Helper_App
# external
from flask import Flask, render_template, jsonify, request, render_template_string, send_from_directory, redirect, url_for, session
# from flask_appconfig import AppConfig
@@ -74,10 +75,10 @@ app.config.from_object(app_config) # for db init with required keys
# logging
handler = RotatingFileHandler('app.log', maxBytes=10000, backupCount=3)
-handler.setLevel(logging.ERROR)
+handler.setLevel(logging.DEBUG)
app.logger.addHandler(handler)
-@app.errorhandler(500)
+@app.errorhandler(Exception)
def internal_server_error(error):
app.logger.error('Server Error: %s', (error))
app.logger.error('Request: %s %s %s %s %s',
@@ -88,7 +89,7 @@ def internal_server_error(error):
request.headers)
app.logger.error('Request data: %s', request.get_data())
app.logger.error('Traceback: %s', traceback.format_exc())
- return "500 Internal Server Error", 500
+ return "Internal Server Error", 500
"""
@@ -140,5 +141,5 @@ app.register_blueprint(routes_user)
@app.template_filter('console_log')
def console_log(value):
- print(value)
+ Helper_App.console_log(value)
return value
\ No newline at end of file
diff --git a/business_objects/__pycache__/unit_measurement.cpython-312.pyc b/business_objects/__pycache__/unit_measurement.cpython-312.pyc
index 1ac57a37..67f8f6df 100644
Binary files a/business_objects/__pycache__/unit_measurement.cpython-312.pyc and b/business_objects/__pycache__/unit_measurement.cpython-312.pyc differ
diff --git a/business_objects/__pycache__/user.cpython-312.pyc b/business_objects/__pycache__/user.cpython-312.pyc
index 9ca0afc6..cca3d118 100644
Binary files a/business_objects/__pycache__/user.cpython-312.pyc and b/business_objects/__pycache__/user.cpython-312.pyc differ
diff --git a/business_objects/address.py b/business_objects/address.py
index 364beea4..feda3839 100644
--- a/business_objects/address.py
+++ b/business_objects/address.py
@@ -15,6 +15,7 @@ import lib.argument_validation as av
from business_objects.base import Base
from business_objects.region import Region
from extensions import db
+from helpers.helper_app import Helper_App
# external
from typing import ClassVar
from flask import jsonify
@@ -92,7 +93,7 @@ class Address(db.Model, Base):
return jsonify(self.to_json())
@classmethod
def from_json(cls, json):
- print(f'{cls.__name__}.from_json: {json}')
+ Helper_App.console_log(f'{cls.__name__}.from_json: {json}')
address = cls()
address.id_address = json[cls.ATTR_ID_ADDRESS],
address.region = Region.from_json(json[cls.FLAG_REGION]),
diff --git a/business_objects/region.py b/business_objects/region.py
index 8f3e744e..b5029e06 100644
--- a/business_objects/region.py
+++ b/business_objects/region.py
@@ -14,6 +14,7 @@ Business object for address region
import lib.argument_validation as av
from business_objects.base import Base
from extensions import db
+from helpers.helper_app import Helper_App
# external
from typing import ClassVar
@@ -61,7 +62,7 @@ class Region(db.Model, Base):
}
@classmethod
def from_json(cls, json):
- print(f'{cls.__name__}.from_json: {json}')
+ Helper_App.console_log(f'{cls.__name__}.from_json: {json}')
plant = cls()
plant.id_region = json[cls.ATTR_ID_REGION]
plant.code = json[cls.FLAG_CODE]
diff --git a/business_objects/store/__pycache__/access_level.cpython-312.pyc b/business_objects/store/__pycache__/access_level.cpython-312.pyc
index 3ab5f776..afffc926 100644
Binary files a/business_objects/store/__pycache__/access_level.cpython-312.pyc and b/business_objects/store/__pycache__/access_level.cpython-312.pyc differ
diff --git a/business_objects/store/__pycache__/basket.cpython-312.pyc b/business_objects/store/__pycache__/basket.cpython-312.pyc
index af53b5b5..30df352b 100644
Binary files a/business_objects/store/__pycache__/basket.cpython-312.pyc and b/business_objects/store/__pycache__/basket.cpython-312.pyc differ
diff --git a/business_objects/store/__pycache__/image.cpython-312.pyc b/business_objects/store/__pycache__/image.cpython-312.pyc
index 0dfe173d..d934ebbd 100644
Binary files a/business_objects/store/__pycache__/image.cpython-312.pyc and b/business_objects/store/__pycache__/image.cpython-312.pyc differ
diff --git a/business_objects/store/__pycache__/product.cpython-312.pyc b/business_objects/store/__pycache__/product.cpython-312.pyc
index b4aa8f7b..b9f6b536 100644
Binary files a/business_objects/store/__pycache__/product.cpython-312.pyc and b/business_objects/store/__pycache__/product.cpython-312.pyc differ
diff --git a/business_objects/store/__pycache__/product_category.cpython-312.pyc b/business_objects/store/__pycache__/product_category.cpython-312.pyc
index e13292a4..004d5450 100644
Binary files a/business_objects/store/__pycache__/product_category.cpython-312.pyc and b/business_objects/store/__pycache__/product_category.cpython-312.pyc differ
diff --git a/business_objects/store/__pycache__/product_permutation.cpython-312.pyc b/business_objects/store/__pycache__/product_permutation.cpython-312.pyc
index f6ef51e8..7b030a17 100644
Binary files a/business_objects/store/__pycache__/product_permutation.cpython-312.pyc and b/business_objects/store/__pycache__/product_permutation.cpython-312.pyc differ
diff --git a/business_objects/store/__pycache__/product_variation.cpython-312.pyc b/business_objects/store/__pycache__/product_variation.cpython-312.pyc
index 84edbaa3..87211531 100644
Binary files a/business_objects/store/__pycache__/product_variation.cpython-312.pyc and b/business_objects/store/__pycache__/product_variation.cpython-312.pyc differ
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 ccd19133..a71bfcfd 100644
Binary files a/business_objects/store/__pycache__/product_variation_tree.cpython-312.pyc and b/business_objects/store/__pycache__/product_variation_tree.cpython-312.pyc differ
diff --git a/business_objects/store/__pycache__/stock_item.cpython-312.pyc b/business_objects/store/__pycache__/stock_item.cpython-312.pyc
index 973a93f3..fb27826c 100644
Binary files a/business_objects/store/__pycache__/stock_item.cpython-312.pyc and b/business_objects/store/__pycache__/stock_item.cpython-312.pyc differ
diff --git a/business_objects/store/access_level.py b/business_objects/store/access_level.py
index 3cb269b1..12def267 100644
--- a/business_objects/store/access_level.py
+++ b/business_objects/store/access_level.py
@@ -14,6 +14,7 @@ Business object for product
import lib.argument_validation as av
from business_objects.store.store_base import Store_Base
from extensions import db
+from helpers.helper_app import Helper_App
# external
from pydantic import BaseModel
from typing import ClassVar
@@ -73,7 +74,7 @@ class Access_Level(db.Model, Store_Base):
}
@classmethod
def from_json(cls, json):
- print(f'Access Level.from_json: {json}')
+ Helper_App.console_log(f'Access Level.from_json: {json}')
access_level = cls()
access_level.id_access_level = json[cls.ATTR_ID_ACCESS_LEVEL],
access_level.code = json[cls.FLAG_CODE],
diff --git a/business_objects/store/basket.py b/business_objects/store/basket.py
index 40dce177..574033d4 100644
--- a/business_objects/store/basket.py
+++ b/business_objects/store/basket.py
@@ -27,6 +27,7 @@ from business_objects.store.store_base import Store_Base
# from models.model_view_store import Model_View_Store # circular
# from datastores.datastore_store import DataStore_Store # circular
# from forms import Form_Basket_Add, Form_Basket_Edit # possibly circular
+from helpers.helper_app import Helper_App
# external
# from enum import Enum
from flask import jsonify
@@ -138,8 +139,8 @@ class Basket(Store_Base):
quantities_permutation += ','
ids_permutation += str(product.get_id_permutation())
quantities_permutation += str(basket_item.quantity)
- print(f'ids_permutation_basket = {ids_permutation}')
- print(f'quantities_permutation_basket = {quantities_permutation}')
+ Helper_App.console_log(f'ids_permutation_basket = {ids_permutation}')
+ Helper_App.console_log(f'quantities_permutation_basket = {quantities_permutation}')
return ids_permutation, quantities_permutation
def to_json_list(self):
json_list = []
@@ -170,7 +171,7 @@ class Basket(Store_Base):
def __repr__(self):
repr = f'Basket:'
for basket_item in self.items:
- print(f'{basket_item}')
+ Helper_App.console_log(f'{basket_item}')
repr = f'{repr}\n{basket_item}'
return repr
diff --git a/business_objects/store/image.py b/business_objects/store/image.py
index 376c052a..8b4d301c 100644
--- a/business_objects/store/image.py
+++ b/business_objects/store/image.py
@@ -13,6 +13,7 @@ Business object for product image
# internal
from business_objects.store.store_base import Store_Base
from extensions import db
+from helpers.helper_app import Helper_App
import lib.argument_validation as av
# external
from enum import Enum
@@ -79,7 +80,7 @@ class Image(db.Model, Store_Base):
"""
def from_DB_get_many_product_catalogue(query_row):
_m = 'Image.from_DB_get_many_product_catalogue'
- # print(f'image: {query_row}')
+ # Helper_App.console_log(f'image: {query_row}')
image = Image()
image.id_image = query_row[0]
image.id_product = query_row[1]
diff --git a/business_objects/store/manufacturing_purchase_order.py b/business_objects/store/manufacturing_purchase_order.py
index 25b0775b..8e5c0e8e 100644
--- a/business_objects/store/manufacturing_purchase_order.py
+++ b/business_objects/store/manufacturing_purchase_order.py
@@ -16,6 +16,7 @@ from business_objects.currency import Currency
from business_objects.db_base import Get_Many_Parameters_Base
from business_objects.store.store_base import Store_Base
from extensions import db
+from helpers.helper_app import Helper_App
# external
from pydantic import BaseModel
from typing import ClassVar, Optional
@@ -89,7 +90,7 @@ class Manufacturing_Purchase_Order(db.Model, Store_Base):
}
@classmethod
def from_json(cls, json):
- print(f'{cls.__name__}.from_json: {json}')
+ Helper_App.console_log(f'{cls.__name__}.from_json: {json}')
manufacturing_purchase_order = cls()
manufacturing_purchase_order.id_order = json[cls.ATTR_ID_MANUFACTURING_PURCHASE_ORDER]
manufacturing_purchase_order.id_currency = json[cls.ATTR_ID_CURRENCY]
@@ -199,7 +200,7 @@ class Manufacturing_Purchase_Order_Product_Link(db.Model, Store_Base):
}
@classmethod
def from_json(cls, json):
- print(f'{cls.__name__}.from_json: {json}')
+ Helper_App.console_log(f'{cls.__name__}.from_json: {json}')
link = cls()
link.id_link = json[cls.ATTR_ID_MANUFACTURING_PURCHASE_ORDER_PRODUCT_LINK]
link.id_order = json[cls.ATTR_ID_MANUFACTURING_PURCHASE_ORDER]
diff --git a/business_objects/store/plant.py b/business_objects/store/plant.py
index ec4d6c8a..d48cd297 100644
--- a/business_objects/store/plant.py
+++ b/business_objects/store/plant.py
@@ -15,6 +15,7 @@ import lib.argument_validation as av
from business_objects.address import Address
from business_objects.store.store_base import Store_Base
from extensions import db
+from helpers.helper_app import Helper_App
# external
from typing import ClassVar
@@ -81,7 +82,7 @@ class Plant(db.Model, Store_Base):
}
@classmethod
def from_json(cls, json):
- print(f'{cls.__name__}.from_json: {json}')
+ Helper_App.console_log(f'{cls.__name__}.from_json: {json}')
plant = cls()
plant.id_plant = json[cls.ATTR_ID_PLANT],
plant.code = json[cls.FLAG_CODE],
diff --git a/business_objects/store/product.py b/business_objects/store/product.py
index 96b87743..8543788f 100644
--- a/business_objects/store/product.py
+++ b/business_objects/store/product.py
@@ -28,6 +28,7 @@ from business_objects.store.product_variation_tree import Product_Variation_Tree
from extensions import db
from forms.base import Form_Base
from forms.store.product import Filters_Product
+from helpers.helper_app import Helper_App
# external
from dataclasses import dataclass
from typing import ClassVar, List
@@ -141,7 +142,7 @@ class Product(SQLAlchemy_ABC, Store_Base):
"""
if self.index_permutation_selected is None:
self.index_permutation_selected = self.permutation_index[permutation.id_permutation]
- print(f'setting selected permutation for product {self.id_product} to {self.index_permutation_selected}') # :\n{self.permutations[self.index_permutation_selected]}
+ Helper_App.console_log(f'setting selected permutation for product {self.id_product} to {self.index_permutation_selected}') # :\n{self.permutations[self.index_permutation_selected]}
"""
def from_permutations(permutations):
_m = 'Product.from_permutations'
@@ -273,7 +274,7 @@ class Product(SQLAlchemy_ABC, Store_Base):
"""
def add_product_variation(self, variation):
av.val_instance(variation, 'variation', 'Product.add_product_variation', Product_Variation)
- # print(f'variation: {variation}')
+ # Helper_App.console_log(f'variation: {variation}')
index_permutation = self.permutation_index[variation.id_permutation] # self.get_index_permutation_from_id(variation.id_permutation)
self.permutations[index_permutation].add_product_variation(variation)
def add_product_price(self, price):
@@ -493,7 +494,7 @@ class Parameters_Product(Get_Many_Parameters_Base):
has_category_filter = not (form.id_category.data == '0' or form.id_category.data == '' or form.id_category.data is None)
has_product_filter = not (form.id_product.data == '0' or form.id_product.data == '' or form.id_product.data is None)
get_permutations_stock_below_min = av.input_bool(form.is_out_of_stock.data, "is_out_of_stock", "Parameters_Product.from_form")
- print(f'form question: {type(form.is_out_of_stock)}\nbool interpretted: {get_permutations_stock_below_min}\ntype form: {type(form)}')
+ Helper_App.console_log(f'form question: {type(form.is_out_of_stock)}\nbool interpretted: {get_permutations_stock_below_min}\ntype form: {type(form)}')
return Parameters_Product(
get_all_product_category = not has_category_filter,
get_inactive_product_category = False,
@@ -727,7 +728,7 @@ class Parameters_Product(Get_Many_Parameters_Base):
has_category_filter = not (form.id_category.data is None or form.id_category.data == '0' or form.id_category.data == '')
has_product_filter = not (form.id_product.data is None or form.id_product.data == '0' or form.id_product.data == '')
get_permutations_stock_below_min = av.input_bool(form.is_out_of_stock.data, "is_out_of_stock", "Parameters_Product.from_form")
- print(f'form question: {type(form.is_out_of_stock)}\nbool interpretted: {get_permutations_stock_below_min}\type form: {type(form)}')
+ Helper_App.console_log(f'form question: {type(form.is_out_of_stock)}\nbool interpretted: {get_permutations_stock_below_min}\type form: {type(form)}')
return Parameters_Product(
get_all_product_category = not has_category_filter,
get_inactive_product_category = False,
diff --git a/business_objects/store/product_category.py b/business_objects/store/product_category.py
index fc2d5cb7..cd7ca84a 100644
--- a/business_objects/store/product_category.py
+++ b/business_objects/store/product_category.py
@@ -21,6 +21,7 @@ from business_objects.store.discount import Discount
from business_objects.store.stock_item import Stock_Item
from business_objects.store.store_base import Store_Base
from extensions import db
+from helpers.helper_app import Helper_App
# external
from pydantic import BaseModel
from typing import ClassVar
@@ -101,7 +102,7 @@ class Product_Category(SQLAlchemy_ABC, Store_Base):
# self.product_index[Category.key_product_index_from_ids_product_permutation(product.id_product, product.id_permutation)] = len(self.products)
try:
self.get_index_product(product)
- print(f'category: {self}')
+ Helper_App.console_log(f'category: {self}')
raise ValueError(f"{av.error_msg_str(product, 'product', _m, Product)}\nProduct already in category.")
except KeyError:
self.product_index[product.id_product] = len(self.products)
@@ -141,13 +142,13 @@ class Product_Category(SQLAlchemy_ABC, Store_Base):
def get_all_product_variation_trees(self):
for product in self.products:
if product.has_variations:
- print(f'product with id:{product.id_product} has variations')
+ Helper_App.console_log(f'product with id:{product.id_product} has variations')
product.get_variation_trees()
"""
def index_product_from_ids_product_permutation(self, id_product, id_permutation):
key = Category.key_product_index_from_ids_product_permutation(id_product, id_permutation)
- print(f'product_index: {self.product_index}')
- print(f'Key Error: {key}')
+ Helper_App.console_log(f'product_index: {self.product_index}')
+ Helper_App.console_log(f'Key Error: {key}')
try:
return self.product_index[key]
except KeyError:
@@ -167,7 +168,7 @@ class Product_Category(SQLAlchemy_ABC, Store_Base):
"""
def get_permutation_first(self):
if not (len(self.products) == 0):
- print(f'getting first permutation from product')
+ Helper_App.console_log(f'getting first permutation from product')
return None if len(self.products) == 0 else self.products[0].get_permutation_selected()
"""
def is_available(self):
@@ -204,7 +205,7 @@ class Product_Category(SQLAlchemy_ABC, Store_Base):
}
@classmethod
def from_json(cls, json):
- print(f' Category.from_json: {json}')
+ Helper_App.console_log(f' Category.from_json: {json}')
category = cls()
category.id_category = json[cls.ATTR_ID_PRODUCT_CATEGORY]
category.code = json[cls.FLAG_CODE]
@@ -382,9 +383,9 @@ class Product_Category_Container(Store_Base):
return f'categories: {self.categories}'
"""
def get_permutation_first(self):
- print(f'getting first permutation from category list')
+ Helper_App.console_log(f'getting first permutation from category list')
if not (len(self.categories) == 0):
- print(f'getting first permutation from category')
+ Helper_App.console_log(f'getting first permutation from category')
return None if len(self.categories) == 0 else self.categories[0].get_permutation_first()
"""
def get_category_count(self):
diff --git a/business_objects/store/product_permutation.py b/business_objects/store/product_permutation.py
index 36e6307c..2fda84b6 100644
--- a/business_objects/store/product_permutation.py
+++ b/business_objects/store/product_permutation.py
@@ -25,6 +25,7 @@ from business_objects.store.product_variation import Product_Variation
from business_objects.store.product_variation_tree import Product_Variation_Tree
from business_objects.unit_measurement import Unit_Measurement
from extensions import db
+from helpers.helper_app import Helper_App
# external
from datetime import datetime, timedelta
import locale
@@ -142,7 +143,7 @@ class Product_Permutation(db.Model, Store_Base):
def from_DB_get_many_product_catalogue(cls, query_row):
_m = f'{cls.__name__}.from_DB_get_many_product_catalogue'
v_arg_type = 'class attribute'
- print(f'query_row: {query_row}')
+ Helper_App.console_log(f'query_row: {query_row}')
permutation = cls()
permutation.id_permutation = query_row[0]
permutation.id_product = query_row[1]
@@ -469,7 +470,7 @@ class Product_Permutation(db.Model, Store_Base):
Product_Permutation.FLAG_QUANTITY_MAX: self.quantity_max,
Product_Permutation.FLAG_COST_LOCAL: f"{self.symbol_currency_cost}{self.cost_local}"
}
- print('permutation row: ', a)
+ Helper_App.console_log('permutation row: ', a)
return a
diff --git a/business_objects/store/product_variation.py b/business_objects/store/product_variation.py
index 63f1e2a6..3d92f5c2 100644
--- a/business_objects/store/product_variation.py
+++ b/business_objects/store/product_variation.py
@@ -21,6 +21,7 @@ import lib.argument_validation as av
from business_objects.store.store_base import Store_Base
from business_objects.store.product_variation_type import Product_Variation_Type
from extensions import db
+from helpers.helper_app import Helper_App
# external
from dataclasses import dataclass
from typing import ClassVar
@@ -201,7 +202,7 @@ class Product_Variation_Container(BaseModel):
list_variations = []
for variation in self.variations:
list_variations.append(variation.to_json_option())
- print(f'list_variations: {list_variations}')
+ Helper_App.console_log(f'list_variations: {list_variations}')
return list_variations
def to_list_variation_type_options(self):
list_variation_types = []
diff --git a/business_objects/store/product_variation_tree.py b/business_objects/store/product_variation_tree.py
index c434b746..cc340ccc 100644
--- a/business_objects/store/product_variation_tree.py
+++ b/business_objects/store/product_variation_tree.py
@@ -13,6 +13,7 @@ Business object for product
# internal
from business_objects.store.product_variation import Product_Variation
from extensions import db
+from helpers.helper_app import Helper_App
# external
@@ -133,16 +134,16 @@ class Product_Variation_Tree():
variations.append(node.variation)
return variations
def to_preview_str(self):
- print(f'Product_Variation_Tree.to_preview_str')
+ Helper_App.console_log(f'Product_Variation_Tree.to_preview_str')
variations = self.get_product_variations()
- print(f'variations: {variations}')
+ Helper_App.console_log(f'variations: {variations}')
preview_str = ''
for variation in variations:
is_first = (preview_str == '')
preview_str += f'{variation.variation_type.name_singular}: {variation.name}'
if is_first:
preview_str += '\n'
- print(f'preview_str: {preview_str}')
+ Helper_App.console_log(f'preview_str: {preview_str}')
return preview_str
def to_json(self):
variations = self.get_product_variations()
@@ -179,7 +180,7 @@ class Product_Variation_Container(BaseModel):
list_variations = []
for variation in self.variations:
list_variations.append(variation.to_json_option())
- print(f'list_variations: {list_variations}')
+ Helper_App.console_log(f'list_variations: {list_variations}')
return list_variations
def to_list_variation_type_options(self):
list_variation_types = []
diff --git a/business_objects/store/stock_item.py b/business_objects/store/stock_item.py
index 20ebebfb..77fabadc 100644
--- a/business_objects/store/stock_item.py
+++ b/business_objects/store/stock_item.py
@@ -19,6 +19,7 @@ from business_objects.store.product_variation_tree import Product_Variation_Tree
from business_objects.store.storage_location import Storage_Location
from business_objects.store.store_base import Store_Base
from extensions import db
+from helpers.helper_app import Helper_App
# external
from dataclasses import dataclass
from typing import ClassVar, Optional
@@ -106,7 +107,7 @@ class Stock_Item(db.Model, Store_Base):
stock_item.id_permutation = json.get(cls.ATTR_ID_PRODUCT_PERMUTATION, 0)
stock_item.id_product = json[cls.ATTR_ID_PRODUCT]
stock_item.id_category = json[cls.ATTR_ID_PRODUCT_CATEGORY]
- print(f'json: {json}\nhalf stock item: {stock_item}')
+ Helper_App.console_log(f'json: {json}\nhalf stock item: {stock_item}')
stock_item.variation_tree = Product_Variation_Tree.from_json_str(json[cls.FLAG_PRODUCT_VARIATIONS])
stock_item.date_purchased = json[cls.FLAG_DATE_PURCHASED]
stock_item.date_received = json[cls.FLAG_DATE_RECEIVED]
diff --git a/business_objects/store/storage_location.py b/business_objects/store/storage_location.py
index 170291b0..d1831f4e 100644
--- a/business_objects/store/storage_location.py
+++ b/business_objects/store/storage_location.py
@@ -15,6 +15,7 @@ import lib.argument_validation as av
from business_objects.store.plant import Plant
from business_objects.store.store_base import Store_Base
from extensions import db
+from helpers.helper_app import Helper_App
# external
from typing import ClassVar
@@ -74,7 +75,7 @@ class Storage_Location(db.Model, Store_Base):
}
@classmethod
def from_json(cls, json):
- print(f'{cls.__name__}.from_json: {json}')
+ Helper_App.console_log(f'{cls.__name__}.from_json: {json}')
location = cls()
location.id_location = json[cls.ATTR_ID_STORAGE_LOCATION],
location.id_plant = json[cls.ATTR_ID_PLANT],
diff --git a/business_objects/store/stripe.py b/business_objects/store/stripe.py
index 4dc17f7b..3ed8c54d 100644
--- a/business_objects/store/stripe.py
+++ b/business_objects/store/stripe.py
@@ -15,7 +15,7 @@ import lib.argument_validation as av
from lib import data_types
from forms.forms import Form_Basket_Add, Form_Basket_Edit # Form_Product
from extensions import db
-
+from helpers.helper_app import Helper_App
# external
from datetime import datetime, timedelta
import locale
@@ -61,7 +61,7 @@ class Stripe_Product(db.Model):
av.val_str(id_stripe_product, 'id_stripe_product', _m, max_len=100, v_arg_type=v_arg_type)
av.val_str(id_stripe_price, 'id_stripe_price', _m, max_len=100, v_arg_type=v_arg_type)
av.full_val_bool(is_subscription, 'is_subscription', _m, v_arg_type=v_arg_type)
- print(f'is_subscription: {is_subscription}, {av.input_bool(is_subscription, "is_subscription", _m, v_arg_type=v_arg_type)}')
+ Helper_App.console_log(f'is_subscription: {is_subscription}, {av.input_bool(is_subscription, "is_subscription", _m, v_arg_type=v_arg_type)}')
is_subscription = av.input_bool(is_subscription, "is_subscription", _m, v_arg_type=v_arg_type)
if is_subscription:
av.val_str(name_recurring_interval, 'name_recurring_interval', _m, max_len=255, v_arg_type=v_arg_type)
diff --git a/business_objects/store/supplier.py b/business_objects/store/supplier.py
index b4f1481c..4fd39215 100644
--- a/business_objects/store/supplier.py
+++ b/business_objects/store/supplier.py
@@ -17,6 +17,7 @@ from business_objects.currency import Currency
from business_objects.db_base import Get_Many_Parameters_Base
from business_objects.store.store_base import Store_Base
from extensions import db
+from helpers.helper_app import Helper_App
# external
from pydantic import BaseModel
from typing import ClassVar
@@ -106,7 +107,7 @@ addresses: {self.addresses}
}
@classmethod
def from_json(cls, json):
- print(f'{cls.__name__}.from_json: {json}')
+ Helper_App.console_log(f'{cls.__name__}.from_json: {json}')
supplier = cls()
supplier.id_supplier = json[cls.ATTR_ID_SUPPLIER]
supplier.id_currency = json[cls.ATTR_ID_CURRENCY]
diff --git a/business_objects/store/supplier_address.py b/business_objects/store/supplier_address.py
index ddb4013f..8c73f914 100644
--- a/business_objects/store/supplier_address.py
+++ b/business_objects/store/supplier_address.py
@@ -15,6 +15,7 @@ import lib.argument_validation as av
from business_objects.store.store_base import Store_Base
from business_objects.region import Region
from extensions import db
+from helpers.helper_app import Helper_App
# external
from typing import ClassVar
from flask import jsonify
@@ -71,7 +72,7 @@ class Supplier_Address(db.Model, Store_Base):
{self.FLAG_ACTIVE}: {self.active}
'''
def to_json(self):
- print(f'{self.__class__.__name__}.to_json\n{self.__dict__}\n{self}')
+ Helper_App.console_log(f'{self.__class__.__name__}.to_json\n{self.__dict__}\n{self}')
return {
**self.get_shared_json_attributes(self),
self.ATTR_ID_ADDRESS: self.id_address,
@@ -88,7 +89,7 @@ class Supplier_Address(db.Model, Store_Base):
return jsonify(self.to_json())
@classmethod
def from_json(cls, json):
- print(f'{cls.__name__}.from_json: {json}')
+ Helper_App.console_log(f'{cls.__name__}.from_json: {json}')
address = cls()
address.id_address = json[cls.ATTR_ID_ADDRESS]
address.id_supplier = json[cls.ATTR_ID_SUPPLIER]
diff --git a/business_objects/store/supplier_purchase_order.py b/business_objects/store/supplier_purchase_order.py
index 2c399d8f..4345ccf0 100644
--- a/business_objects/store/supplier_purchase_order.py
+++ b/business_objects/store/supplier_purchase_order.py
@@ -17,6 +17,7 @@ from business_objects.db_base import Get_Many_Parameters_Base
from business_objects.store.store_base import Store_Base
from business_objects.store.supplier import Supplier
from extensions import db
+from helpers.helper_app import Helper_App
# external
from pydantic import BaseModel
from typing import ClassVar, Optional
@@ -92,7 +93,7 @@ class Supplier_Purchase_Order(db.Model, Store_Base):
}
@classmethod
def from_json(cls, json):
- print(f'{cls.__name__}.from_json: {json}')
+ Helper_App.console_log(f'{cls.__name__}.from_json: {json}')
supplier_purchase_order = cls()
supplier_purchase_order.id_order = json[cls.ATTR_ID_SUPPLIER_PURCHASE_ORDER]
supplier_purchase_order.id_supplier = json[cls.ATTR_ID_SUPPLIER]
@@ -197,7 +198,7 @@ class Supplier_Purchase_Order_Product_Link(db.Model, Store_Base):
}
@classmethod
def from_json(cls, json):
- print(f'{cls.__name__}.from_json: {json}')
+ Helper_App.console_log(f'{cls.__name__}.from_json: {json}')
link = cls()
link.id_link = json[cls.ATTR_ID_SUPPLIER_PURCHASE_ORDER_PRODUCT_LINK]
link.id_order = json[cls.ATTR_ID_SUPPLIER_PURCHASE_ORDER]
diff --git a/business_objects/unit_measurement.py b/business_objects/unit_measurement.py
index ffa91077..a0b10b11 100644
--- a/business_objects/unit_measurement.py
+++ b/business_objects/unit_measurement.py
@@ -12,6 +12,7 @@ from business_objects.base import Base
from business_objects.db_base import SQLAlchemy_ABC, Get_Many_Parameters_Base
from extensions import db
# from forms.forms import Form_Filters_User
+from helpers.helper_app import Helper_App
import lib.argument_validation as av
# external
from dataclasses import dataclass
@@ -78,7 +79,7 @@ class Unit_Measurement(SQLAlchemy_ABC, Base):
}
@classmethod
def from_json(cls, json):
- print(f' Unit_Measurement.from_json: {json}')
+ Helper_App.console_log(f' Unit_Measurement.from_json: {json}')
unit = cls()
unit.id_unit_measurement = json[cls.ATTR_ID_UNIT_MEASUREMENT]
unit.name_singular = json[cls.FLAG_NAME_SINGULAR]
diff --git a/business_objects/user.py b/business_objects/user.py
index 3674c476..6364fda1 100644
--- a/business_objects/user.py
+++ b/business_objects/user.py
@@ -12,6 +12,7 @@ from business_objects.base import Base
import lib.argument_validation as av
from forms.forms import Form_Filters_User
from extensions import db
+from helpers.helper_app import Helper_App
# external
from dataclasses import dataclass
from typing import ClassVar
@@ -64,7 +65,7 @@ class User(db.Model, Base):
_m = 'User.from_json'
user = User()
if json is None: return user
- print(f'{_m}\njson: {json}')
+ Helper_App.console_log(f'{_m}\njson: {json}')
user.id_user = json['id_user']
user.id_user_auth0 = json['id_user_auth0']
user.firstname = json['firstname']
@@ -78,16 +79,16 @@ class User(db.Model, Base):
user.can_admin_store = av.input_bool(json['can_admin_store'], 'can_admin_store', _m)
user.can_admin_user = av.input_bool(json['can_admin_user'], 'can_admin_user', _m)
user.is_logged_in = (user.id_user_auth0 is not None)
- print(f'user: {user}')
+ Helper_App.console_log(f'user: {user}')
return user
- # print(f'user: {user}')
+ # Helper_App.console_log(f'user: {user}')
@staticmethod
def from_json_auth0(json):
_m = 'User.from_json_auth0'
user = User()
if json is None: return user
- print(f'{_m}\njson: {json}')
+ Helper_App.console_log(f'{_m}\njson: {json}')
user_info = json['userinfo']
user.id_user = None
user.id_user_auth0 = user_info['sub']
@@ -102,7 +103,7 @@ class User(db.Model, Base):
user.can_admin_store = None
user.can_admin_user = None
user.is_logged_in = (user.id_user_auth0 is not None and user.id_user_auth0 != '')
- print(f'user: {user}')
+ Helper_App.console_log(f'user: {user}')
return user
def to_json(self):
@@ -120,7 +121,7 @@ class User(db.Model, Base):
'can_admin_store': self.can_admin_store,
'can_admin_user': self.can_admin_user
}
- print(f'as_json: {as_json}')
+ Helper_App.console_log(f'as_json: {as_json}')
return as_json
def __repr__(self):
diff --git a/config.py b/config.py
index cd2a4c35..338a5fb5 100644
--- a/config.py
+++ b/config.py
@@ -11,6 +11,7 @@ Configuration variables
"""
# IMPORTS
+from lib import argument_validation as av
import os
from dotenv import load_dotenv, find_dotenv
@@ -19,7 +20,7 @@ load_dotenv(find_dotenv())
# CLASSES
class Config:
# Miscellaneous
- DEBUG = False
+ DEBUG = av.input_bool(os.getenv('DEBUG'), 'DEBUG', 'Config')
TESTING = False
URL_HOST = os.getenv('URL_HOST')
SECRET_KEY = os.getenv('KEY_SECRET_FLASK') # gen cmd: openssl rand -hex 32
@@ -52,7 +53,7 @@ class Config:
# id_currency = 1
# id_region_delivery = 1
# Mail
- MAIL_DEBUG = True
+ MAIL_DEBUG = av.input_bool(os.getenv('DEBUG'), 'DEBUG', 'Config')
MAIL_SERVER = 'mail.partsltd.co.uk' # 'smtp.gmail.com'
MAIL_PORT = 465 # 587
MAIL_USE_TLS = False
@@ -83,7 +84,6 @@ elif config_env == 'production':
else:
raise ValueError("Invalid configuration environment")
-# print(f'config: {app_config}\nid auth0 client: {app_config.ID_AUTH0_CLIENT}')
# environment variables
"""
diff --git a/controllers/__pycache__/core.cpython-312.pyc b/controllers/__pycache__/core.cpython-312.pyc
index c17381f0..d8b344d0 100644
Binary files a/controllers/__pycache__/core.cpython-312.pyc and b/controllers/__pycache__/core.cpython-312.pyc differ
diff --git a/controllers/__pycache__/user.cpython-312.pyc b/controllers/__pycache__/user.cpython-312.pyc
index 68f571e2..0f09b25d 100644
Binary files a/controllers/__pycache__/user.cpython-312.pyc and b/controllers/__pycache__/user.cpython-312.pyc differ
diff --git a/controllers/core.py b/controllers/core.py
index f20b4390..a654d981 100644
--- a/controllers/core.py
+++ b/controllers/core.py
@@ -47,7 +47,7 @@ def contact():
user = DataStore_Base.get_user_session()
form = Form_Contact()
form.email.data = user.email
- form.name.data = user.firstname + (' ' if user.firstname and user.surname else '') + user.surname
+ form.name.data = (user.firstname if user.firstname else '') + (' ' if user.firstname and user.surname else '') + (user.surname if user.surname else '')
model = Model_View_Contact(form)
html_body = render_template('pages/core/_contact.html', model = model)
except Exception as e:
diff --git a/controllers/store/__pycache__/product.cpython-312.pyc b/controllers/store/__pycache__/product.cpython-312.pyc
index 4424096f..91790748 100644
Binary files a/controllers/store/__pycache__/product.cpython-312.pyc and b/controllers/store/__pycache__/product.cpython-312.pyc differ
diff --git a/controllers/store/__pycache__/product_category.cpython-312.pyc b/controllers/store/__pycache__/product_category.cpython-312.pyc
index a807b8c2..e6c48d09 100644
Binary files a/controllers/store/__pycache__/product_category.cpython-312.pyc and b/controllers/store/__pycache__/product_category.cpython-312.pyc differ
diff --git a/controllers/store/__pycache__/product_permutation.cpython-312.pyc b/controllers/store/__pycache__/product_permutation.cpython-312.pyc
index a212c572..d0073f6c 100644
Binary files a/controllers/store/__pycache__/product_permutation.cpython-312.pyc and b/controllers/store/__pycache__/product_permutation.cpython-312.pyc differ
diff --git a/controllers/store/__pycache__/stock_item.cpython-312.pyc b/controllers/store/__pycache__/stock_item.cpython-312.pyc
index 1528b16a..18e90aaa 100644
Binary files a/controllers/store/__pycache__/stock_item.cpython-312.pyc and b/controllers/store/__pycache__/stock_item.cpython-312.pyc differ
diff --git a/controllers/store/__pycache__/supplier.cpython-312.pyc b/controllers/store/__pycache__/supplier.cpython-312.pyc
index 035e3c37..e2481089 100644
Binary files a/controllers/store/__pycache__/supplier.cpython-312.pyc and b/controllers/store/__pycache__/supplier.cpython-312.pyc differ
diff --git a/controllers/store/manufacturing_purchase_order.py b/controllers/store/manufacturing_purchase_order.py
index 189d1d20..6445ebd8 100644
--- a/controllers/store/manufacturing_purchase_order.py
+++ b/controllers/store/manufacturing_purchase_order.py
@@ -30,13 +30,13 @@ routes_store_manufacturing_purchase_order = Blueprint('routes_store_manufacturin
@routes_store_manufacturing_purchase_order.route(Model_View_Store_Manufacturing_Purchase_Order.HASH_PAGE_STORE_MANUFACTURING_PURCHASE_ORDERS, methods=['GET'])
def manufacturing_purchase_orders():
- print('manufacturing_purchase_orders')
+ Helper_App.console_log('manufacturing_purchase_orders')
try:
form_filters = Filters_Manufacturing_Purchase_Order.from_json(request.args)
except Exception as e:
- print(f'Error: {e}')
+ Helper_App.console_log(f'Error: {e}')
form_filters = Filters_Manufacturing_Purchase_Order()
- print(f'form_filters={form_filters}')
+ Helper_App.console_log(f'form_filters={form_filters}')
model = Model_View_Store_Manufacturing_Purchase_Order(form_filters)
if not model.is_user_logged_in:
return redirect(url_for('routes_core.home'))
@@ -80,7 +80,7 @@ def save_manufacturing_purchase_order():
data = Helper_App.get_request_data(request)
try:
form_filters = Filters_Manufacturing_Purchase_Order.from_json(data[Model_View_Store_Manufacturing_Purchase_Order.FLAG_FORM_FILTERS])
- print(f'form_filters: {form_filters}')
+ Helper_App.console_log(f'form_filters: {form_filters}')
manufacturing_purchase_orders = data[Model_View_Store_Manufacturing_Purchase_Order.FLAG_MANUFACTURING_PURCHASE_ORDER]
if len(manufacturing_purchase_orders) == 0:
@@ -88,11 +88,11 @@ def save_manufacturing_purchase_order():
Model_View_Store_Manufacturing_Purchase_Order.FLAG_STATUS: Model_View_Store_Manufacturing_Purchase_Order.FLAG_FAILURE,
Model_View_Store_Manufacturing_Purchase_Order.FLAG_MESSAGE: f'No stock items.'
})
- print(f'manufacturing_purchase_orders={manufacturing_purchase_orders}')
+ Helper_App.console_log(f'manufacturing_purchase_orders={manufacturing_purchase_orders}')
objs_manufacturing_purchase_order = []
for manufacturing_purchase_order in manufacturing_purchase_orders:
objs_manufacturing_purchase_order.append(Manufacturing_Purchase_Order.from_json(manufacturing_purchase_order))
- print(f'objs_manufacturing_purchase_order={objs_manufacturing_purchase_order}')
+ Helper_App.console_log(f'objs_manufacturing_purchase_order={objs_manufacturing_purchase_order}')
save_errors = Model_View_Store_Manufacturing_Purchase_Order.save_manufacturing_purchase_orders(data.get('comment', 'No comment'), objs_manufacturing_purchase_order)
if len(save_errors) > 0:
return jsonify({
diff --git a/controllers/store/pay_stripe.py b/controllers/store/pay_stripe.py
index 2a020f7f..9ae08d65 100644
--- a/controllers/store/pay_stripe.py
+++ b/controllers/store/pay_stripe.py
@@ -11,10 +11,7 @@ Initializes the Flask application, sets the configuration based on the environme
"""
# IMPORTS
-# VARIABLE INSTANTIATION
-# METHODS
-
-# IMPORTS
+from helpers.helper_app import Helper_App
import os
import stripe
import json
@@ -28,7 +25,7 @@ key_public = os.environ.get("KEY_PUBLIC_STRIPE") # 'pk_test_51OGrxlL7BuLKjoMpfpf
# METHODS
def create_product_price():
- print(f'stripe.api_key = {stripe.api_key}')
+ Helper_App.console_log(f'stripe.api_key = {stripe.api_key}')
starter_subscription = stripe.Product.create(
name="Starter Subscription",
description="$12/Month subscription",
@@ -42,8 +39,8 @@ def create_product_price():
)
# Save these identifiers
- print(f"Success! Here is your starter subscription product id: {starter_subscription.id}")
- print(f"Success! Here is your starter subscription price id: {starter_subscription_price.id}")
+ Helper_App.console_log(f"Success! Here is your starter subscription product id: {starter_subscription.id}")
+ Helper_App.console_log(f"Success! Here is your starter subscription price id: {starter_subscription_price.id}")
return starter_subscription_price.id
@@ -54,7 +51,7 @@ def get_file_str(f_address):
# Ensure environment variables are set.
price = os.getenv('PRICE')
if price is None or price == 'price_12345' or price == '':
- print('You must set a Price ID in .env. Please see the README.')
+ Helper_App.console_log('You must set a Price ID in .env. Please see the README.')
exit(0)
# For sample support and debugging, not required for production:
@@ -152,10 +149,10 @@ def webhook_received():
event_type = request_data['type']
data_object = data['object']
- print('event ' + event_type)
+ Helper_App.console_log('event ' + event_type)
if event_type == 'checkout.session.completed':
- print('🔔 Payment succeeded!')
+ Helper_App.console_log('🔔 Payment succeeded!')
return jsonify({Model_View_Base.FLAG_STATUS: Model_View_Base.FLAG_SUCCESS})
diff --git a/controllers/store/product.py b/controllers/store/product.py
index 9c51ebf0..be96ecdf 100644
--- a/controllers/store/product.py
+++ b/controllers/store/product.py
@@ -31,21 +31,21 @@ routes_store_product = Blueprint('routes_store_product', __name__)
"""
@routes_store_product.route(Model_View_Store_Product.HASH_PAGE_STORE_PRODUCTS, methods=['GET'])
def products():
- print('products')
- print(f'request.args={request.args}')
+ Helper_App.console_log('products')
+ Helper_App.console_log(f'request.args={request.args}')
user = DataStore_Store_Product.get_user_session()
filters = Parameters_Product.get_default(user.id_user)
have_changed_filters = False
arg_filter_is_not_empty = request.args.get(Model_View_Store_Product.FLAG_IS_NOT_EMPTY, None)
have_changed_filters = have_changed_filters or arg_filter_is_not_empty is None
- print(f'arg_filter_is_not_empty={arg_filter_is_not_empty}')
+ Helper_App.console_log(f'arg_filter_is_not_empty={arg_filter_is_not_empty}')
filters.is_not_empty = filters.is_not_empty if arg_filter_is_not_empty is None else av.input_bool(arg_filter_is_not_empty, 'is_not_empty', 'filter')
arg_filter_active = request.args.get(Model_View_Store_Product.FLAG_ACTIVE, None)
have_changed_filters = have_changed_filters or arg_filter_active is None
- print(f'arg_filter_active={arg_filter_active}')
+ Helper_App.console_log(f'arg_filter_active={arg_filter_active}')
filters.active = filters.active if arg_filter_active is None else av.input_bool(arg_filter_active, 'active', 'filter')
if have_changed_filters:
- print('redirecting')
+ Helper_App.console_log('redirecting')
return redirect(url_for('routes_store_product.products', **filters.to_json()))
model = Model_View_Store_Product(filters)
return render_template('pages/store/_products.html', model = model)
@@ -76,7 +76,7 @@ def get_Filters_Product(data_request):
def save():
data = Helper_App.get_request_data(request)
# form_filters = None
- print(f'data={data}')
+ Helper_App.console_log(f'data={data}')
try:
form_filters = get_Filters_Product(data)
if not form_filters.validate_on_submit():
@@ -90,11 +90,11 @@ def save():
for category in categories:
objsCategory.append(Product.from_json(category))
# model_save = Model_View_Store_Product() # filters_product=filters_form)
- print(f'objsCategory={objsCategory}')
+ Helper_App.console_log(f'objsCategory={objsCategory}')
Model_View_Store_Product.save_categories(data.get('comment', 'No comment'), objsCategory)
model_return = Model_View_Store_Product(filters=filters_form)
- print('nips')
+ Helper_App.console_log('nips')
return jsonify({Model_View_Store_Product.FLAG_STATUS: Model_View_Store_Product.FLAG_SUCCESS, 'Success': True, Model_View_Store_Product.FLAG_DATA: model_return.category_list.to_json()})
except Exception as e:
return jsonify({Model_View_Store_Product.FLAG_STATUS: Model_View_Store_Product.FLAG_FAILURE, Model_View_Store_Product.FLAG_MESSAGE: f'Bad data received by controller.\n{e}'})
@@ -103,13 +103,13 @@ def save():
@routes_store_product.route(Model_View_Store_Product.HASH_PAGE_STORE_PRODUCTS, methods=['GET'])
def products():
- print('products')
+ Helper_App.console_log('products')
try:
form_filters = Filters_Product.from_json(request.args)
except Exception as e:
- print(f'Error: {e}')
+ Helper_App.console_log(f'Error: {e}')
form_filters = Filters_Product()
- print(f'form_filters={form_filters}')
+ Helper_App.console_log(f'form_filters={form_filters}')
model = Model_View_Store_Product(form_filters)
if not model.is_user_logged_in:
# return redirect(url_for('routes_user.login', data = jsonify({ Model_View_Store_Product.FLAG_CALLBACK: Model_View_Store_Product.HASH_PAGE_STORE_PRODUCTS })))
@@ -150,7 +150,7 @@ def save_product():
Model_View_Store_Product.FLAG_MESSAGE: f'Filters form invalid.\n{form_filters.errors}'
})
# filters_form = Filters_Product.from_form(form_filters)
- print(f'form_filters: {form_filters}')
+ Helper_App.console_log(f'form_filters: {form_filters}')
products = data[Model_View_Store_Product.FLAG_PRODUCT]
if len(products) == 0:
@@ -162,13 +162,13 @@ def save_product():
for product in products:
objsProduct.append(Product.from_json(product))
# model_save = Model_View_Store_Product() # filters_product=filters_form)
- print(f'objsProduct={objsProduct}')
+ Helper_App.console_log(f'objsProduct={objsProduct}')
save_errors = Model_View_Store_Product.save_products(data.get('comment', 'No comment'), objsProduct)
model_return = Model_View_Store_Product(form_filters=form_filters)
if not model_return.is_user_logged_in:
raise Exception('User not logged in')
- print('nips')
+ Helper_App.console_log('nips')
return jsonify({
Model_View_Store_Product.FLAG_STATUS: Model_View_Store_Product.FLAG_SUCCESS,
Model_View_Store_Product.FLAG_DATA: model_return.category_list.to_json()
diff --git a/controllers/store/product_category.py b/controllers/store/product_category.py
index 9579999a..9f071102 100644
--- a/controllers/store/product_category.py
+++ b/controllers/store/product_category.py
@@ -30,27 +30,27 @@ routes_store_product_category = Blueprint('routes_store_product_category', __nam
@routes_store_product_category.route(Model_View_Store_Product_Category.HASH_PAGE_STORE_PRODUCT_CATEGORIES, methods=['GET'])
def categories():
- print('categories')
+ Helper_App.console_log('categories')
# data = Helper_App.get_request_data(request)
try:
form_filters = Filters_Product_Category.from_json(request.args)
except Exception as e:
- print(f'Error: {e}')
+ Helper_App.console_log(f'Error: {e}')
form_filters = Filters_Product_Category()
- print(f'form_filters={form_filters}')
+ Helper_App.console_log(f'form_filters={form_filters}')
"""
filters = Filters_Product_Category.get_default()
have_changed_filters = False
arg_filter_is_not_empty = request.args.get(Model_View_Store_Product_Category.FLAG_IS_NOT_EMPTY, None)
have_changed_filters = have_changed_filters or arg_filter_is_not_empty is None
- print(f'arg_filter_is_not_empty={arg_filter_is_not_empty}')
+ Helper_App.console_log(f'arg_filter_is_not_empty={arg_filter_is_not_empty}')
filters.is_not_empty = filters.is_not_empty if arg_filter_is_not_empty is None else av.input_bool(arg_filter_is_not_empty, 'is_not_empty', 'filter_category')
arg_filter_active = request.args.get(Model_View_Store_Product_Category.FLAG_ACTIVE, None)
have_changed_filters = have_changed_filters or arg_filter_active is None
- print(f'arg_filter_active={arg_filter_active}')
+ Helper_App.console_log(f'arg_filter_active={arg_filter_active}')
filters.active = filters.active if arg_filter_active is None else av.input_bool(arg_filter_active, 'active', 'filter_category')
if have_changed_filters:
- print('redirecting')
+ Helper_App.console_log('redirecting')
return redirect(url_for('routes_store_product_category.categories', **filters.to_json()))
"""
model = Model_View_Store_Product_Category(form_filters)
@@ -107,7 +107,7 @@ def save_category():
for category in categories:
objsCategory.append(Product_Category.from_json(category))
# model_save = Model_View_Store_Product_Category() # filters_product=filters_form)
- print(f'objsCategory={objsCategory}')
+ Helper_App.console_log(f'objsCategory={objsCategory}')
Model_View_Store_Product_Category.save_categories(data.get('comment', 'No comment'), objsCategory)
model_return = Model_View_Store_Product_Category(form_filters=form_filters)
diff --git a/controllers/store/product_permutation.py b/controllers/store/product_permutation.py
index 3b0a9195..87e70084 100644
--- a/controllers/store/product_permutation.py
+++ b/controllers/store/product_permutation.py
@@ -88,13 +88,13 @@ def permutation_save():
@routes_store_product_permutation.route(Model_View_Store_Product_Permutation.HASH_PAGE_STORE_PRODUCT_PERMUTATIONS, methods=['GET'])
def permutations():
- print('permutations')
+ Helper_App.console_log('permutations')
try:
form_filters = Filters_Product_Permutation.from_json(request.args)
except Exception as e:
- print(f'Error: {e}')
+ Helper_App.console_log(f'Error: {e}')
form_filters = Filters_Product_Permutation()
- print(f'form_filters={form_filters}')
+ Helper_App.console_log(f'form_filters={form_filters}')
model = Model_View_Store_Product_Permutation(form_filters)
if not model.is_user_logged_in:
# return redirect(url_for('routes_user.login', data = jsonify({ Model_View_Store_Product_Permutation.FLAG_CALLBACK: Model_View_Store_Product_Permutation.HASH_PAGE_STORE_PRODUCT_PERMUTATIONS })))
@@ -135,7 +135,7 @@ def save_permutation():
Model_View_Store_Product_Permutation.FLAG_MESSAGE: f'Filters form invalid.\n{form_filters.errors}'
})
# filters_form = Filters_Product_Permutation.from_form(form_filters)
- print(f'form_filters: {form_filters}')
+ Helper_App.console_log(f'form_filters: {form_filters}')
permutations = data[Model_View_Store_Product_Permutation.FLAG_PRODUCT_PERMUTATION]
if len(permutations) == 0:
@@ -147,13 +147,13 @@ def save_permutation():
for permutation in permutations:
objsPermutation.append(Product_Permutation.from_json(permutation))
# model_save = Model_View_Store_Product_Permutation() # filters_product=filters_form)
- print(f'objsPermutation={objsPermutation}')
+ Helper_App.console_log(f'objsPermutation={objsPermutation}')
Model_View_Store_Product_Permutation.save_permutations(data.get('comment', 'No comment'), objsPermutation)
model_return = Model_View_Store_Product_Permutation(form_filters=form_filters)
if not model_return.is_user_logged_in:
raise Exception('User not logged in')
- print('nips')
+ Helper_App.console_log('nips')
return jsonify({
Model_View_Store_Product_Permutation.FLAG_STATUS: Model_View_Store_Product_Permutation.FLAG_SUCCESS,
Model_View_Store_Product_Permutation.FLAG_DATA: model_return.category_list.to_json()
diff --git a/controllers/store/stock_item.py b/controllers/store/stock_item.py
index b39a2c84..e71142c7 100644
--- a/controllers/store/stock_item.py
+++ b/controllers/store/stock_item.py
@@ -30,13 +30,13 @@ routes_store_stock_item = Blueprint('routes_store_stock_item', __name__)
@routes_store_stock_item.route(Model_View_Store_Stock_Item.HASH_PAGE_STORE_STOCK_ITEMS, methods=['GET'])
def stock_items():
- print('stock_items')
+ Helper_App.console_log('stock_items')
try:
form_filters = Filters_Stock_Item.from_json(request.args)
except Exception as e:
- print(f'Error: {e}')
+ Helper_App.console_log(f'Error: {e}')
form_filters = Filters_Stock_Item()
- print(f'form_filters={form_filters}')
+ Helper_App.console_log(f'form_filters={form_filters}')
model = Model_View_Store_Stock_Item(form_filters)
if not model.is_user_logged_in:
# return redirect(url_for('routes_user.login', data = jsonify({ Model_View_Store_Stock_Item.FLAG_CALLBACK: Model_View_Store_Stock_Item.HASH_PAGE_STORE_STOCK_ITEMS })))
@@ -108,7 +108,7 @@ def save_stock_item():
})
"""
# filters_form = Filters_Stock_Item.from_form(form_filters)
- print(f'form_filters: {form_filters}')
+ Helper_App.console_log(f'form_filters: {form_filters}')
stock_items = data[Model_View_Store_Stock_Item.FLAG_STOCK_ITEM]
if len(stock_items) == 0:
@@ -116,12 +116,12 @@ def save_stock_item():
Model_View_Store_Stock_Item.FLAG_STATUS: Model_View_Store_Stock_Item.FLAG_FAILURE,
Model_View_Store_Stock_Item.FLAG_MESSAGE: f'No stock items.'
})
- print(f'stock_items={stock_items}')
+ Helper_App.console_log(f'stock_items={stock_items}')
objs_stock_item = []
for stock_item in stock_items:
objs_stock_item.append(Stock_Item.from_json(stock_item))
# model_save = Model_View_Store_Stock_Item() # filters_product=filters_form)
- print(f'objs_stock_item={objs_stock_item}')
+ Helper_App.console_log(f'objs_stock_item={objs_stock_item}')
save_errors = Model_View_Store_Stock_Item.save_stock_items(data.get('comment', 'No comment'), objs_stock_item)
if len(save_errors) > 0:
return jsonify({
diff --git a/controllers/store/supplier.py b/controllers/store/supplier.py
index 2242ab57..e546ad64 100644
--- a/controllers/store/supplier.py
+++ b/controllers/store/supplier.py
@@ -30,13 +30,13 @@ routes_store_supplier = Blueprint('routes_store_supplier', __name__)
@routes_store_supplier.route(Model_View_Store_Supplier.HASH_PAGE_STORE_SUPPLIERS, methods=['GET'])
def suppliers():
- print('suppliers')
+ Helper_App.console_log('suppliers')
try:
form_filters = Filters_Supplier.from_json(request.args)
except Exception as e:
- print(f'Error: {e}')
+ Helper_App.console_log(f'Error: {e}')
form_filters = Filters_Supplier()
- print(f'form_filters={form_filters}')
+ Helper_App.console_log(f'form_filters={form_filters}')
model = Model_View_Store_Supplier(form_filters)
if not model.is_user_logged_in:
return redirect(url_for('routes_core.home'))
@@ -80,7 +80,7 @@ def save_supplier():
data = Helper_App.get_request_data(request)
try:
form_filters = Filters_Supplier.from_json(data[Model_View_Store_Supplier.FLAG_FORM_FILTERS])
- print(f'form_filters: {form_filters}')
+ Helper_App.console_log(f'form_filters: {form_filters}')
suppliers = data[Model_View_Store_Supplier.FLAG_SUPPLIER]
if len(suppliers) == 0:
@@ -88,11 +88,11 @@ def save_supplier():
Model_View_Store_Supplier.FLAG_STATUS: Model_View_Store_Supplier.FLAG_FAILURE,
Model_View_Store_Supplier.FLAG_MESSAGE: f'No stock items.'
})
- print(f'suppliers={suppliers}')
+ Helper_App.console_log(f'suppliers={suppliers}')
objs_supplier = []
for supplier in suppliers:
objs_supplier.append(Supplier.from_json(supplier))
- print(f'objs_supplier={objs_supplier}')
+ Helper_App.console_log(f'objs_supplier={objs_supplier}')
save_errors = Model_View_Store_Supplier.save_suppliers(data.get('comment', 'No comment'), objs_supplier)
if len(save_errors) > 0:
diff --git a/controllers/store/supplier_purchase_order.py b/controllers/store/supplier_purchase_order.py
index 2c0dfaae..feadad88 100644
--- a/controllers/store/supplier_purchase_order.py
+++ b/controllers/store/supplier_purchase_order.py
@@ -30,13 +30,13 @@ routes_store_supplier_purchase_order = Blueprint('routes_store_supplier_purchase
@routes_store_supplier_purchase_order.route(Model_View_Store_Supplier_Purchase_Order.HASH_PAGE_STORE_SUPPLIER_PURCHASE_ORDERS, methods=['GET'])
def supplier_purchase_orders():
- print('supplier_purchase_orders')
+ Helper_App.console_log('supplier_purchase_orders')
try:
form_filters = Filters_Supplier_Purchase_Order.from_json(request.args)
except Exception as e:
- print(f'Error: {e}')
+ Helper_App.console_log(f'Error: {e}')
form_filters = Filters_Supplier_Purchase_Order()
- print(f'form_filters={form_filters}')
+ Helper_App.console_log(f'form_filters={form_filters}')
model = Model_View_Store_Supplier_Purchase_Order(form_filters)
if not model.is_user_logged_in:
return redirect(url_for('routes_core.home'))
@@ -80,7 +80,7 @@ def save_supplier_purchase_order():
data = Helper_App.get_request_data(request)
try:
form_filters = Filters_Supplier_Purchase_Order.from_json(data[Model_View_Store_Supplier_Purchase_Order.FLAG_FORM_FILTERS])
- print(f'form_filters: {form_filters}')
+ Helper_App.console_log(f'form_filters: {form_filters}')
supplier_purchase_orders = data[Model_View_Store_Supplier_Purchase_Order.FLAG_SUPPLIER_PURCHASE_ORDER]
if len(supplier_purchase_orders) == 0:
@@ -88,11 +88,11 @@ def save_supplier_purchase_order():
Model_View_Store_Supplier_Purchase_Order.FLAG_STATUS: Model_View_Store_Supplier_Purchase_Order.FLAG_FAILURE,
Model_View_Store_Supplier_Purchase_Order.FLAG_MESSAGE: f'No stock items.'
})
- print(f'supplier_purchase_orders={supplier_purchase_orders}')
+ Helper_App.console_log(f'supplier_purchase_orders={supplier_purchase_orders}')
objs_supplier_purchase_order = []
for supplier_purchase_order in supplier_purchase_orders:
objs_supplier_purchase_order.append(Supplier_Purchase_Order.from_json(supplier_purchase_order))
- print(f'objs_supplier_purchase_order={objs_supplier_purchase_order}')
+ Helper_App.console_log(f'objs_supplier_purchase_order={objs_supplier_purchase_order}')
save_errors, save_warnings = Model_View_Store_Supplier_Purchase_Order.save_supplier_purchase_orders(data.get('comment', 'No comment'), objs_supplier_purchase_order)
if len(save_errors) > 0:
return jsonify({
diff --git a/controllers/user.py b/controllers/user.py
index 027d5cc4..862d6ac3 100644
--- a/controllers/user.py
+++ b/controllers/user.py
@@ -38,27 +38,27 @@ def login():
data = request.json
except:
data = {}
- print(f'data={data}')
+ Helper_App.console_log(f'data={data}')
# callback_login = F'{Model_View_Base.HASH_CALLBACK_LOGIN}{data.get(Model_View_Base.FLAG_CALLBACK, Model_View_Base.HASH_PAGE_HOME)}'
# encoded_path = quote(data.get(Model_View_Base.FLAG_CALLBACK, Model_View_Base.HASH_PAGE_HOME))
uri_redirect = url_for('routes_user.login_callback', _external=True) # , subpath=encoded_path
# uri_redirect = f'{current_app.URL_HOST}/login_callback?subpath={data.get(Model_View_Base.FLAG_CALLBACK, Model_View_Base.HASH_PAGE_HOME)}'
- print(f'redirect uri: {uri_redirect}')
+ Helper_App.console_log(f'redirect uri: {uri_redirect}')
hash_callback = data.get(Model_View_Base.FLAG_CALLBACK, Model_View_Base.HASH_PAGE_HOME)
- print(f'hash_callback: {hash_callback}')
+ Helper_App.console_log(f'hash_callback: {hash_callback}')
red = oauth.auth0.authorize_redirect(
redirect_uri = uri_redirect,
state = quote(hash_callback)
)
- print(f'redirect: {red}')
+ Helper_App.console_log(f'redirect: {red}')
headers = red.headers['Location']
- print(f'headers: {headers}')
+ Helper_App.console_log(f'headers: {headers}')
parsed_url = urlparse(headers)
query_params = parse_qs(parsed_url.query)
- print(f"""
+ Helper_App.console_log(f"""
OAuth Authorize Redirect URL:
Base URL: {parsed_url.scheme}://{parsed_url.netloc}{parsed_url.path}
@@ -76,25 +76,25 @@ def login_callback():
if has_error:
error_description = request.args.get(Model_View_User.FLAG_ERROR_DESCRIPTION_OAUTH)
error_text = f'Error: {error_state}: {error_description}'
- print(error_text)
+ Helper_App.console_log(error_text)
return login()
- # print(f'code: {code}')
+ # Helper_App.console_log(f'code: {code}')
token = None
try:
token = oauth.auth0.authorize_access_token()
except Exception as e:
# Log the error for debugging
- print(f"Error: {str(e)}")
+ Helper_App.console_log(f"Error: {str(e)}")
session[current_app.config['ID_TOKEN_USER']] = token
# import user id
"""
- print(f'str(type(token)) = {str(type(token))}')
- print(f'token = {token}')
+ Helper_App.console_log(f'str(type(token)) = {str(type(token))}')
+ Helper_App.console_log(f'token = {token}')
userinfo = token.get('userinfo')
- print(f'user info: {userinfo}')
+ Helper_App.console_log(f'user info: {userinfo}')
# id_user = token.get('sub')
id_user = userinfo.get('sub')
- print(f'user ID: {id_user}')
+ Helper_App.console_log(f'user ID: {id_user}')
"""
user = User.from_json_auth0(token) # datastore_user.get_user_auth0()
user_filters = User_Filters.from_user(user)
@@ -102,30 +102,30 @@ def login_callback():
users, errors = datastore_user.get_many_user(user_filters, user)
try:
user = users[0]
- print('User logged in')
- print(f'user ({str(type(user))}): {user}')
- print(f'user key: {Model_View_Base.FLAG_USER}')
+ Helper_App.console_log('User logged in')
+ Helper_App.console_log(f'user ({str(type(user))}): {user}')
+ Helper_App.console_log(f'user key: {Model_View_Base.FLAG_USER}')
user_json = user.to_json()
session[Model_View_Base.FLAG_USER] = user_json
- print(f'user stored on session')
+ Helper_App.console_log(f'user stored on session')
except:
- print(f'User not found: {user_filters}\nDatabase query error: {errors}')
+ Helper_App.console_log(f'User not found: {user_filters}\nDatabase query error: {errors}')
try:
hash_callback = token.get('hash_callback')
if hash_callback is None:
- print('hash is none')
+ Helper_App.console_log('hash is none')
state = request.args.get('state')
- print(f'state: {state}')
+ Helper_App.console_log(f'state: {state}')
hash_callback = state # .get('hash_callback')
- print(f'hash_callback: {hash_callback}')
+ Helper_App.console_log(f'hash_callback: {hash_callback}')
except:
- print("get hash callback failed")
+ Helper_App.console_log("get hash callback failed")
# id_user = get_id_user()
# add user to database
# DataStore_Store().add_new_user(id_user) # this is part of get basket - should occur on page load
- print(f'user session: {session[Model_View_Base.FLAG_USER]}')
+ Helper_App.console_log(f'user session: {session[Model_View_Base.FLAG_USER]}')
return redirect(f"{current_app.config['URL_HOST']}{hash_callback}")
except Exception as e:
return jsonify({Model_View_Base.FLAG_STATUS: Model_View_Base.FLAG_FAILURE, Model_View_Base.FLAG_MESSAGE: f'Controller error.\n{e}'})
@@ -141,7 +141,7 @@ def logout():
# quote_via=quote_plus,
)
current_app.logger.debug(f"Redirecting to {url_logout}")
- print(f"Redirecting to {url_logout}")
+ Helper_App.console_log(f"Redirecting to {url_logout}")
return redirect(url_logout)
@routes_user.route("/logout_callback") # /
@@ -153,18 +153,18 @@ def logout_callback():
try:
hash_callback = token.get('hash_callback')
if hash_callback is None:
- print('hash is none')
+ Helper_App.console_log('hash is none')
state = request.args.get('state')
- print(f'state: {state}')
+ Helper_App.console_log(f'state: {state}')
hash_callback = state # .get('hash_callback')
- print(f'hash_callback: {hash_callback}')
+ Helper_App.console_log(f'hash_callback: {hash_callback}')
except:
- print("get hash callback failed")
+ Helper_App.console_log("get hash callback failed")
# id_user = get_id_user()
# add user to database
# DataStore_Store().add_new_user(id_user) # this is part of get basket - should occur on page load
- print(f'user session: {session[Model_View_Base.FLAG_USER]}')
+ Helper_App.console_log(f'user session: {session[Model_View_Base.FLAG_USER]}')
return redirect(f'{current_app.URL_HOST}{hash_callback}')
except Exception as e:
return jsonify({Model_View_Base.FLAG_STATUS: Model_View_Base.FLAG_FAILURE, Model_View_Base.FLAG_MESSAGE: f'Controller error.\n{e}'})
diff --git a/datastores/__pycache__/datastore_base.cpython-312.pyc b/datastores/__pycache__/datastore_base.cpython-312.pyc
index bd525007..ba38235c 100644
Binary files a/datastores/__pycache__/datastore_base.cpython-312.pyc and b/datastores/__pycache__/datastore_base.cpython-312.pyc differ
diff --git a/datastores/__pycache__/datastore_store_base.cpython-312.pyc b/datastores/__pycache__/datastore_store_base.cpython-312.pyc
index 8e01e1fb..ee74182a 100644
Binary files a/datastores/__pycache__/datastore_store_base.cpython-312.pyc and b/datastores/__pycache__/datastore_store_base.cpython-312.pyc differ
diff --git a/datastores/__pycache__/datastore_store_basket.cpython-312.pyc b/datastores/__pycache__/datastore_store_basket.cpython-312.pyc
index 6dd49865..d5c5b561 100644
Binary files a/datastores/__pycache__/datastore_store_basket.cpython-312.pyc and b/datastores/__pycache__/datastore_store_basket.cpython-312.pyc differ
diff --git a/datastores/__pycache__/datastore_store_product_category.cpython-312.pyc b/datastores/__pycache__/datastore_store_product_category.cpython-312.pyc
index 3869955d..802be6c8 100644
Binary files a/datastores/__pycache__/datastore_store_product_category.cpython-312.pyc and b/datastores/__pycache__/datastore_store_product_category.cpython-312.pyc differ
diff --git a/datastores/__pycache__/datastore_store_product_permutation.cpython-312.pyc b/datastores/__pycache__/datastore_store_product_permutation.cpython-312.pyc
index b1837090..91742da2 100644
Binary files a/datastores/__pycache__/datastore_store_product_permutation.cpython-312.pyc and b/datastores/__pycache__/datastore_store_product_permutation.cpython-312.pyc differ
diff --git a/datastores/__pycache__/datastore_store_stock_item.cpython-312.pyc b/datastores/__pycache__/datastore_store_stock_item.cpython-312.pyc
index 4f7aca6a..56e9a0ef 100644
Binary files a/datastores/__pycache__/datastore_store_stock_item.cpython-312.pyc and b/datastores/__pycache__/datastore_store_stock_item.cpython-312.pyc differ
diff --git a/datastores/__pycache__/datastore_user.cpython-312.pyc b/datastores/__pycache__/datastore_user.cpython-312.pyc
index 841398e0..2d12bcc0 100644
Binary files a/datastores/__pycache__/datastore_user.cpython-312.pyc and b/datastores/__pycache__/datastore_user.cpython-312.pyc differ
diff --git a/datastores/datastore_base.py b/datastores/datastore_base.py
index ea45fddd..fad8f9e4 100644
--- a/datastores/datastore_base.py
+++ b/datastores/datastore_base.py
@@ -35,6 +35,7 @@ from business_objects.user import User, User_Filters, User_Permission_Evaluation
from extensions import db
from forms.access_level import Filters_Access_Level
from forms.unit_measurement import Filters_Unit_Measurement
+from helpers.helper_app import Helper_App
# external
# from abc import ABC, abstractmethod, abstractproperty
from flask_sqlalchemy import SQLAlchemy
@@ -86,7 +87,7 @@ class DataStore_Base(BaseModel):
proc_string += f'{"" if i == 0 else ", "}:{arg_keys[i]}'
proc_string += ')'
proc_string = text(proc_string)
- print(f'{_m}\nproc_string: {proc_string}\nargs: {argument_dict_list}')
+ Helper_App.console_log(f'{_m}\nproc_string: {proc_string}\nargs: {argument_dict_list}')
# with self.db.session.begin() as session:
# conn = Helper_DB_MySQL(self.app).get_db_connection()
@@ -95,20 +96,20 @@ class DataStore_Base(BaseModel):
result = db.session.execute(proc_string, argument_dict_list)
else:
result = db.session.execute(proc_string)
- print(f'result: {result}')
+ Helper_App.console_log(f'result: {result}')
# conn.session.remove()
return result
cursor = result.cursor
result_set_1 = cursor.fetchall()
- print(f'categories: {result_set_1}')
+ Helper_App.console_log(f'categories: {result_set_1}')
cursor.nextset()
result_set_2 = cursor.fetchall()
- print(f'products: {result_set_2}')
+ Helper_App.console_log(f'products: {result_set_2}')
@staticmethod
def db_cursor_clear(cursor):
while cursor.nextset():
- print(f'new result set: {cursor.fetchall()}')
+ Helper_App.console_log(f'new result set: {cursor.fetchall()}')
@classmethod
def get_many_region_and_currency(cls):
_m = 'DataStore_Base.get_many_region_and_currency'
@@ -122,10 +123,10 @@ class DataStore_Base(BaseModel):
'a_get_inactive_currency': 0
}
- print(f'executing {_m_db_currency}')
+ Helper_App.console_log(f'executing {_m_db_currency}')
result = cls.db_procedure_execute(_m_db_currency, argument_dict_list_currency)
cursor = result.cursor
- print('data received')
+ Helper_App.console_log('data received')
# cursor.nextset()
result_set_1 = cursor.fetchall()
@@ -133,13 +134,13 @@ class DataStore_Base(BaseModel):
for row in result_set_1:
currency = Currency.make_from_DB_currency(row)
currencies.append(currency)
- print(f'currencies: {currencies}')
+ Helper_App.console_log(f'currencies: {currencies}')
DataStore_Base.db_cursor_clear(cursor)
- print(f'executing {_m_db_region}')
+ Helper_App.console_log(f'executing {_m_db_region}')
result = cls.db_procedure_execute(_m_db_region, argument_dict_list_region)
cursor = result.cursor
- print('data received')
+ Helper_App.console_log('data received')
# cursor.nextset()
result_set_1 = cursor.fetchall()
@@ -147,25 +148,25 @@ class DataStore_Base(BaseModel):
for row in result_set_1:
region = Region.make_from_DB_region(row)
regions.append(region)
- print(f'regions: {regions}')
+ Helper_App.console_log(f'regions: {regions}')
DataStore_Base.db_cursor_clear(cursor)
cursor.close()
return regions, currencies
@staticmethod
def get_user_session():
- print('DataStore_Base.get_user_session')
+ Helper_App.console_log('DataStore_Base.get_user_session')
return User.from_json(session.get(User.FLAG_USER))
user = User.get_default()
try:
- print(f'user session: {session[self.app.ID_TOKEN_USER]}')
+ Helper_App.console_log(f'user session: {session[self.app.ID_TOKEN_USER]}')
info_user = session[self.app.ID_TOKEN_USER].get('userinfo')
- print(f'info_user: {info_user}')
+ Helper_App.console_log(f'info_user: {info_user}')
user.is_logged_in = ('sub' in list(info_user.keys()) and not info_user['sub'] == '' and not str(type(info_user['sub'])) == " 0:
errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # (row[0], row[1])
for error in errors:
- print(f"Error [{error.code}]: {error.msg}")
+ Helper_App.console_log(f"Error [{error.code}]: {error.msg}")
DataStore_Base.db_cursor_clear(cursor)
cursor.close()
@@ -256,15 +257,15 @@ class DataStore_Base(BaseModel):
argument_dict = filters.to_json()
# user = cls.get_user_session()
# argument_dict['a_id_user'] = 1 # 'auth0|6582b95c895d09a70ba10fef' # id_user
- print(f'argument_dict: {argument_dict}')
- print('executing p_shop_get_many_unit_measurement')
+ Helper_App.console_log(f'argument_dict: {argument_dict}')
+ Helper_App.console_log('executing p_shop_get_many_unit_measurement')
result = cls.db_procedure_execute('p_shop_get_many_unit_measurement', argument_dict)
cursor = result.cursor
- print('data received')
+ Helper_App.console_log('data received')
# units of measurement
result_set_1 = cursor.fetchall()
- print(f'raw units of measurement: {result_set_1}')
+ Helper_App.console_log(f'raw units of measurement: {result_set_1}')
units = []
for row in result_set_1:
new_unit = Unit_Measurement.from_DB_unit_measurement(row)
@@ -273,12 +274,12 @@ class DataStore_Base(BaseModel):
# Errors
cursor.nextset()
result_set_e = cursor.fetchall()
- print(f'raw errors: {result_set_e}')
+ Helper_App.console_log(f'raw errors: {result_set_e}')
errors = []
if len(result_set_e) > 0:
errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # (row[0], row[1])
for error in errors:
- print(f"Error [{error.code}]: {error.msg}")
+ Helper_App.console_log(f"Error [{error.code}]: {error.msg}")
DataStore_Base.db_cursor_clear(cursor)
cursor.close()
diff --git a/datastores/datastore_store_base.py b/datastores/datastore_store_base.py
index 764e77d7..e7802e6d 100644
--- a/datastores/datastore_store_base.py
+++ b/datastores/datastore_store_base.py
@@ -27,6 +27,7 @@ from business_objects.user import User, User_Filters, User_Permission_Evaluation
from business_objects.store.product_variation import Product_Variation_Type, Product_Variation, Product_Variation_Filters, Product_Variation_Container
from datastores.datastore_base import DataStore_Base
from extensions import db
+from helpers.helper_app import Helper_App
from helpers.helper_db_mysql import Helper_DB_MySQL
import lib.argument_validation as av
# from models.model_view_store_checkout import Model_View_Store_Checkout # circular!
@@ -70,38 +71,38 @@ class DataStore_Store_Base(DataStore_Base):
, **argument_dict
, 'a_debug': 0
}
- print(f'argument_dict: {argument_dict}')
- print('executing p_shop_get_many_product')
+ Helper_App.console_log(f'argument_dict: {argument_dict}')
+ Helper_App.console_log('executing p_shop_get_many_product')
result = cls.db_procedure_execute('p_shop_get_many_product', argument_dict)
cursor = result.cursor
- print('data received')
+ Helper_App.console_log('data received')
category_list = Product_Category_Container()
- print(f'initial category_list: {category_list}')
+ Helper_App.console_log(f'initial category_list: {category_list}')
# Categories
result_set_1 = cursor.fetchall()
- print(f'raw categories: {result_set_1}')
+ Helper_App.console_log(f'raw categories: {result_set_1}')
for row in result_set_1:
new_category = Product_Category.from_DB_get_many_product_catalogue(row)
- print(f'new_category: {new_category}')
+ Helper_App.console_log(f'new_category: {new_category}')
category_list.add_product_category(new_category)
- print(f'category-loaded category_list: {category_list}')
+ Helper_App.console_log(f'category-loaded category_list: {category_list}')
# Products
cursor.nextset()
result_set_2 = cursor.fetchall()
- print(f'raw products: {result_set_2}')
+ Helper_App.console_log(f'raw products: {result_set_2}')
for row in result_set_2:
- print(f'row: {row}')
+ Helper_App.console_log(f'row: {row}')
new_product = Product.from_DB_get_many_product_catalogue(row)
- print(f'new_product: {new_product}')
+ Helper_App.console_log(f'new_product: {new_product}')
try:
category_list.add_product(new_product)
except Exception as e:
- print(f'Error adding product: {e}')
+ Helper_App.console_log(f'Error adding product: {e}')
# Permutations
cursor.nextset()
@@ -111,7 +112,7 @@ class DataStore_Store_Base(DataStore_Base):
try:
category_list.add_product_permutation(new_permutation)
except Exception as e:
- print(f'Error adding permutation: {e}')
+ Helper_App.console_log(f'Error adding permutation: {e}')
# Product_Variations
cursor.nextset()
@@ -121,7 +122,7 @@ class DataStore_Store_Base(DataStore_Base):
try:
category_list.add_product_variation(new_variation)
except Exception as e:
- print(f'Error adding variation: {e}')
+ Helper_App.console_log(f'Error adding variation: {e}')
# Images
cursor.nextset()
@@ -133,20 +134,20 @@ class DataStore_Store_Base(DataStore_Base):
# Errors
cursor.nextset()
result_set_e = cursor.fetchall()
- print(f'raw errors: {result_set_e}')
+ Helper_App.console_log(f'raw errors: {result_set_e}')
errors = []
if len(result_set_e) > 0:
errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # (row[0], row[1])
for error in errors:
- print(f"Error [{error.code}]: {error.msg}")
+ Helper_App.console_log(f"Error [{error.code}]: {error.msg}")
category_list.get_all_product_variation_trees()
"""
for category in category_list.categories:
- print(f'category: {category.name}')
+ Helper_App.console_log(f'category: {category.name}')
for product in category.products:
permutation = product.get_permutation_selected()
- print(f'product: {product.name}\nselected permutation: {permutation}')
+ Helper_App.console_log(f'product: {product.name}\nselected permutation: {permutation}')
"""
if len(errors) > 0:
@@ -168,7 +169,7 @@ class DataStore_Store_Base(DataStore_Base):
DataStore_Store_Base.db_cursor_clear(cursor)
cursor.close()
- print(f'get many category_list: {category_list}')
+ Helper_App.console_log(f'get many category_list: {category_list}')
return category_list, errors # categories, category_index
"""
@@ -201,10 +202,10 @@ class DataStore_Store_Base(DataStore_Base):
'a_get_inactive_currency': 0
}
- print(f'executing {_m_db_currency}')
+ Helper_App.console_log(f'executing {_m_db_currency}')
result = cls.db_procedure_execute(_m_db_currency, argument_dict_list_currency)
cursor = result.cursor
- print('data received')
+ Helper_App.console_log('data received')
# cursor.nextset()
result_set_1 = cursor.fetchall()
@@ -212,7 +213,7 @@ class DataStore_Store_Base(DataStore_Base):
for row in result_set_1:
currency = Currency.from_DB_currency(row)
currencies.append(currency)
- print(f'currencies: {currencies}')
+ Helper_App.console_log(f'currencies: {currencies}')
DataStore_Store_Base.db_cursor_clear(cursor)
return currencies
@@ -226,10 +227,10 @@ class DataStore_Store_Base(DataStore_Base):
'a_get_inactive_currency': 0
}
- print(f'executing {_m_db_region}')
+ Helper_App.console_log(f'executing {_m_db_region}')
result = cls.db_procedure_execute(_m_db_region, argument_dict_list_region)
cursor = result.cursor
- print('data received')
+ Helper_App.console_log('data received')
# cursor.nextset()
result_set_1 = cursor.fetchall()
@@ -237,7 +238,7 @@ class DataStore_Store_Base(DataStore_Base):
for row in result_set_1:
region = Region.from_DB_region(row)
regions.append(region)
- print(f'regions: {regions}')
+ Helper_App.console_log(f'regions: {regions}')
DataStore_Store_Base.db_cursor_clear(cursor)
cursor.close()
@@ -253,7 +254,7 @@ class DataStore_Store_Base(DataStore_Base):
@classmethod
def get_many_product_variation(cls, variation_filters):
_m = 'DataStore_Store_Base.get_many_product_variation'
- print(_m)
+ Helper_App.console_log(_m)
av.val_instance(variation_filters, 'variation_filters', _m, Product_Variation_Filters)
guid = Helper_DB_MySQL.create_guid()
@@ -290,7 +291,7 @@ class DataStore_Store_Base(DataStore_Base):
variation_types.append(new_variation_type)
variation_types_dict[new_variation_type.id_type] = new_variation_type
- print(f'variation_types_dict: {variation_types_dict}')
+ Helper_App.console_log(f'variation_types_dict: {variation_types_dict}')
# Product_Variations
cursor.nextset()
@@ -306,11 +307,11 @@ class DataStore_Store_Base(DataStore_Base):
errors = []
cursor.nextset()
result_set_e = cursor.fetchall()
- print(f'raw errors: {result_set_e}')
+ Helper_App.console_log(f'raw errors: {result_set_e}')
if len(result_set_e) > 0:
errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # [SQL_Error(row[0], row[1]) for row in result_set_e]
for error in errors:
- print(f"Error [{error.code}]: {error.msg}")
+ Helper_App.console_log(f"Error [{error.code}]: {error.msg}")
DataStore_Store_Base.db_cursor_clear(cursor)
diff --git a/datastores/datastore_store_basket.py b/datastores/datastore_store_basket.py
index 184636bf..1b07a576 100644
--- a/datastores/datastore_store_basket.py
+++ b/datastores/datastore_store_basket.py
@@ -27,6 +27,7 @@ from business_objects.store.stock_item import Stock_Item
from business_objects.user import User, User_Filters, User_Permission_Evaluation
from business_objects.store.product_variation import Product_Variation, Product_Variation_Filters, Product_Variation_Container
from datastores.datastore_store_base import DataStore_Store_Base
+from helpers.helper_app import Helper_App
# from helpers.helper_db_mysql import Helper_DB_MySQL
# from models.model_view_store_checkout import Model_View_Store_Checkout # circular!
from extensions import db
@@ -65,7 +66,7 @@ class DataStore_Store_Basket(DataStore_Store_Base):
def edit_basket(self, ids_permutation_basket, quantities_permutation_basket, id_permutation_edit, quantity_permutation_edit, sum_not_edit, id_currency, id_region_delivery, is_included_VAT):
# redundant argument validation?
_m = 'DataStore_Store_Base.edit_basket'
- print(f'{_m}\nstarting...')
+ Helper_App.console_log(f'{_m}\nstarting...')
# av.val_instance(filters, 'filters', _m, Parameters_Product_Category)
# av.val_str(ids_product_basket, 'ids_product_basket', _m)
av.val_str(ids_permutation_basket, 'ids_permutation_basket', _m)
@@ -75,24 +76,24 @@ class DataStore_Store_Basket(DataStore_Store_Base):
if id_product_edit == 'None':
id_product_edit = None
else:
- print(f'id_product_edit: {id_product_edit}')
+ Helper_App.console_log(f'id_product_edit: {id_product_edit}')
av.val_int(id_product_edit, 'id_product_edit', _m)
"""
if id_permutation_edit == 'None' or str(type(id_permutation_edit)) =="":
id_permutation_edit = None
else:
- print(f'id_permutation_edit: {id_permutation_edit}')
- print(str(type(id_permutation_edit)))
+ Helper_App.console_log(f'id_permutation_edit: {id_permutation_edit}')
+ Helper_App.console_log(str(type(id_permutation_edit)))
av.val_int(id_permutation_edit, 'id_permutation_edit', _m)
if quantity_permutation_edit == 'None' or str(type(quantity_permutation_edit)) =="":
quantity_permutation_edit = None
else:
- print(f'quantity_permutation_edit: {quantity_permutation_edit}')
+ Helper_App.console_log(f'quantity_permutation_edit: {quantity_permutation_edit}')
av.val_int(quantity_permutation_edit, 'quantity_permutation_edit', _m)
if sum_not_edit == 'None':
sum_not_edit = None
else:
- print(f'sum_not_edit: {sum_not_edit}')
+ Helper_App.console_log(f'sum_not_edit: {sum_not_edit}')
av.val_bool(sum_not_edit, 'sum_not_edit', _m)
argument_dict_list = {
@@ -110,21 +111,21 @@ class DataStore_Store_Basket(DataStore_Store_Base):
}
result = self.db_procedure_execute('p_shop_edit_user_basket', argument_dict_list)
- print('data received')
+ Helper_App.console_log('data received')
cursor = result.cursor
# categories, category_index = DataStore_Store_Base.input_many_product(cursor)
category_list, errors = DataStore_Store_Base.input_many_product(cursor)
- print(f'cursor: {str(cursor)}')
+ Helper_App.console_log(f'cursor: {str(cursor)}')
# Basket
if not cursor.nextset():
raise Exception("No more query results! Cannot open basket contents")
result_set = cursor.fetchall()
- print(f'raw basket: {result_set}')
- # print(f'variations: {result_set_3}')
+ Helper_App.console_log(f'raw basket: {result_set}')
+ # Helper_App.console_log(f'variations: {result_set_3}')
# variations = [Product_Variation(**row) for row in result_set_3]
basket = Basket(is_included_VAT, id_currency, id_region_delivery)
for row in result_set:
@@ -133,20 +134,20 @@ class DataStore_Store_Basket(DataStore_Store_Base):
index_product = category.get_index_product_from_id(row[1])
product = category.products[index_product]
basket_item = Basket_Item.from_product_and_quantity_and_VAT_included(product, row[7], self.app.is_included_VAT)
- print(f'adding basket item: {row}')
- print(f'basket item: {basket_item}')
+ Helper_App.console_log(f'adding basket item: {row}')
+ Helper_App.console_log(f'basket item: {basket_item}')
basket.add_item(basket_item) # basket.append(basket_item) # Basket_Item(category.name, product, row[4]))
- print(f'basket: {basket}')
+ Helper_App.console_log(f'basket: {basket}')
# Errors
cursor.nextset()
result_set_e = cursor.fetchall()
- print(f'raw errors: {result_set_e}')
+ Helper_App.console_log(f'raw errors: {result_set_e}')
if len(result_set_e) > 0:
errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # [SQL_Error(row[0], row[1]) for row in result_set_2]
for error in errors:
- print(f"Error [{error.code}]: {error.msg}")
+ Helper_App.console_log(f"Error [{error.code}]: {error.msg}")
DataStore_Store_Base.db_cursor_clear(cursor)
diff --git a/datastores/datastore_store_manufacturing_purchase_order.py b/datastores/datastore_store_manufacturing_purchase_order.py
index 791ee525..f0840480 100644
--- a/datastores/datastore_store_manufacturing_purchase_order.py
+++ b/datastores/datastore_store_manufacturing_purchase_order.py
@@ -16,6 +16,7 @@ import lib.argument_validation as av
from business_objects.sql_error import SQL_Error
from business_objects.store.manufacturing_purchase_order import Manufacturing_Purchase_Order, Manufacturing_Purchase_Order_Product_Link, Parameters_Manufacturing_Purchase_Order, Manufacturing_Purchase_Order_Temp, Manufacturing_Purchase_Order_Product_Link_Temp
from datastores.datastore_store_base import DataStore_Store_Base
+from helpers.helper_app import Helper_App
from helpers.helper_db_mysql import Helper_DB_MySQL
from extensions import db
# external
@@ -45,15 +46,15 @@ class DataStore_Store_Manufacturing_Purchase_Order(DataStore_Store_Base):
, **argument_dict
, 'a_debug': 0
}
- print(f'argument_dict: {argument_dict}')
- print('executing p_shop_get_many_manufacturing_purchase_order')
+ Helper_App.console_log(f'argument_dict: {argument_dict}')
+ Helper_App.console_log('executing p_shop_get_many_manufacturing_purchase_order')
result = self.db_procedure_execute('p_shop_get_many_manufacturing_purchase_order', argument_dict)
cursor = result.cursor
- print('data received')
+ Helper_App.console_log('data received')
# Manufacturing_Purchase_Orders
result_set_1 = cursor.fetchall()
- print(f'raw manufacturing_purchase_orders: {result_set_1}')
+ Helper_App.console_log(f'raw manufacturing_purchase_orders: {result_set_1}')
manufacturing_purchase_orders = []
indices_manufacturing_purchase_order = {}
for row in result_set_1:
@@ -64,7 +65,7 @@ class DataStore_Store_Manufacturing_Purchase_Order(DataStore_Store_Base):
# Manufacturing_Purchase_Orders Items
cursor.nextset()
result_set_1 = cursor.fetchall()
- print(f'raw manufacturing_purchase_order_product_links: {result_set_1}')
+ Helper_App.console_log(f'raw manufacturing_purchase_order_product_links: {result_set_1}')
order_product_links = []
for row in result_set_1:
new_link = Manufacturing_Purchase_Order_Product_Link.from_DB_manufacturing_purchase_order(row)
@@ -74,12 +75,12 @@ class DataStore_Store_Manufacturing_Purchase_Order(DataStore_Store_Base):
# Errors
cursor.nextset()
result_set_e = cursor.fetchall()
- print(f'raw errors: {result_set_e}')
+ Helper_App.console_log(f'raw errors: {result_set_e}')
errors = []
if len(result_set_e) > 0:
errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # (row[0], row[1])
for error in errors:
- print(f"Error [{error.code}]: {error.msg}")
+ Helper_App.console_log(f"Error [{error.code}]: {error.msg}")
DataStore_Store_Manufacturing_Purchase_Order.db_cursor_clear(cursor)
@@ -98,9 +99,9 @@ class DataStore_Store_Manufacturing_Purchase_Order(DataStore_Store_Base):
row = Manufacturing_Purchase_Order_Temp.from_manufacturing_purchase_order(manufacturing_purchase_order)
row.guid = guid
rows_order.append(row)
- print(f'order rows: {rows_order}')
+ Helper_App.console_log(f'order rows: {rows_order}')
DataStore_Store_Base.upload_bulk(Manufacturing_Purchase_Order_Temp.__tablename__, rows_order, 1000)
- print('bulk uploaded orders')
+ Helper_App.console_log('bulk uploaded orders')
rows_link = []
for manufacturing_purchase_order in manufacturing_purchase_orders:
@@ -108,9 +109,9 @@ class DataStore_Store_Manufacturing_Purchase_Order(DataStore_Store_Base):
row = Manufacturing_Purchase_Order_Product_Link_Temp.from_manufacturing_purchase_order_product_link(link)
row.guid = guid
rows_link.append(row)
- print(f'link rows: {rows_link}')
+ Helper_App.console_log(f'link rows: {rows_link}')
DataStore_Store_Base.upload_bulk(Manufacturing_Purchase_Order_Product_Link_Temp.__tablename__, rows_link, 1000)
- print('bulk uploaded links')
+ Helper_App.console_log('bulk uploaded links')
argument_dict_list = {
'a_comment': comment,
@@ -119,18 +120,18 @@ class DataStore_Store_Manufacturing_Purchase_Order(DataStore_Store_Base):
'a_debug': 0
}
result = cls.db_procedure_execute('p_shop_save_manufacturing_purchase_order', argument_dict_list)
- print('saved manufacturing purchase orders')
+ Helper_App.console_log('saved manufacturing purchase orders')
# Errors
cursor = result.cursor
cursor.nextset()
result_set_e = cursor.fetchall()
- print(f'raw errors: {result_set_e}')
+ Helper_App.console_log(f'raw errors: {result_set_e}')
errors = []
if len(result_set_e) > 0:
errors = [SQL_Error.from_DB_record(row) for row in result_set_e]
for error in errors:
- print(f"Error [{error.code}]: {error.msg}")
+ Helper_App.console_log(f"Error [{error.code}]: {error.msg}")
DataStore_Store_Manufacturing_Purchase_Order.db_cursor_clear(cursor)
return errors
diff --git a/datastores/datastore_store_product.py b/datastores/datastore_store_product.py
index 6fcc8dc5..7dea7b47 100644
--- a/datastores/datastore_store_product.py
+++ b/datastores/datastore_store_product.py
@@ -15,6 +15,7 @@ import lib.argument_validation as av
from business_objects.sql_error import SQL_Error
from business_objects.store.product import Product, Product_Permutation, Product_Price, Parameters_Product, Product_Temp
from datastores.datastore_store_base import DataStore_Store_Base
+from helpers.helper_app import Helper_App
from helpers.helper_db_mysql import Helper_DB_MySQL
# from models.model_view_store_checkout import Model_View_Store_Checkout # circular!
from extensions import db
@@ -86,8 +87,8 @@ class DataStore_Store_Product(DataStore_Store_Base):
@classmethod
def save_products(cls, comment, products):
_m = 'DataStore_Store_Product.save_products'
- print(f'{_m}\nstarting...')
- print(f'comment: {comment}\nproducts: {products}')
+ Helper_App.console_log(f'{_m}\nstarting...')
+ Helper_App.console_log(f'comment: {comment}\nproducts: {products}')
guid = Helper_DB_MySQL.create_guid()
user = cls.get_user_session()
@@ -99,11 +100,11 @@ class DataStore_Store_Product(DataStore_Store_Base):
id_product_new -= 1
row.id_product = id_product_new
else:
- print(f'row.id_product: {row.id_product}')
+ Helper_App.console_log(f'row.id_product: {row.id_product}')
row.guid = guid
rows.append(row)
- print(f'rows: {rows}')
+ Helper_App.console_log(f'rows: {rows}')
DataStore_Store_Base.upload_bulk(Product_Temp.__tablename__, rows, 1000)
argument_dict_list = {
@@ -115,24 +116,24 @@ class DataStore_Store_Product(DataStore_Store_Base):
save_result = cls.db_procedure_execute('p_shop_save_product', argument_dict_list)
cursor = save_result # .cursor
- print('data received')
+ Helper_App.console_log('data received')
# Errors
# cursor.nextset()
result_set_e = cursor.fetchall()
- print(f'raw errors: {result_set_e}')
+ Helper_App.console_log(f'raw errors: {result_set_e}')
errors = []
if len(result_set_e) > 0:
errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # (row[0], row[1])
for error in errors:
- print(f"Error [{error.code}]: {error.msg}")
+ Helper_App.console_log(f"Error [{error.code}]: {error.msg}")
try:
DataStore_Store_Base.db_cursor_clear(cursor)
except Exception as e:
- print(f'Error clearing cursor: {e}')
+ Helper_App.console_log(f'Error clearing cursor: {e}')
cursor.close()
save_result.close()
- print('save procedure executed')
+ Helper_App.console_log('save procedure executed')
return errors
diff --git a/datastores/datastore_store_product_category.py b/datastores/datastore_store_product_category.py
index ba0794c6..f72ee7d5 100644
--- a/datastores/datastore_store_product_category.py
+++ b/datastores/datastore_store_product_category.py
@@ -27,6 +27,7 @@ from business_objects.user import User, User_Filters, User_Permission_Evaluation
from business_objects.store.product_variation import Product_Variation, Product_Variation_Filters, Product_Variation_Container
# from datastores.datastore_base import Table_Shop_Product_Category, Table_Shop_Product_Category_Temp
from datastores.datastore_store_base import DataStore_Store_Base
+from helpers.helper_app import Helper_App
from helpers.helper_db_mysql import Helper_DB_MySQL
# from models.model_view_store_checkout import Model_View_Store_Checkout # circular!
from extensions import db
@@ -48,8 +49,8 @@ class DataStore_Store_Product_Category(DataStore_Store_Base):
@classmethod
def save_categories(cls, comment, categories):
_m = 'DataStore_Store_Product_Category.save_categories'
- print(f'{_m}\nstarting...')
- print(f'comment: {comment}\ncategories: {categories}')
+ Helper_App.console_log(f'{_m}\nstarting...')
+ Helper_App.console_log(f'comment: {comment}\ncategories: {categories}')
# av.val_str(comment, 'comment', _m)
# av.val_list_instances(categories, 'categories', _m, Product_Category, 1)
@@ -66,25 +67,25 @@ class DataStore_Store_Product_Category(DataStore_Store_Base):
id_category_new -= 1
row.id_category = id_category_new
else:
- print(f'row.id_category: {row.id_category}')
+ Helper_App.console_log(f'row.id_category: {row.id_category}')
row.guid = guid
# row.created_on = now
# row.created_by = user.id_user
rows.append(row)
- print(f'rows: {rows}')
+ Helper_App.console_log(f'rows: {rows}')
"""
cursor = db.cursor()
- print('cursor created')
+ Helper_App.console_log('cursor created')
cursor.executemany(
'INSERT INTO Shop_Product_Category_Temp (id_category, code, name, description, active, display_order, guid, created_on, created_by) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)',
categories
)
- print('bulk upload executed')
+ Helper_App.console_log('bulk upload executed')
db.commit()
- print('bulk upload committed')
+ Helper_App.console_log('bulk upload committed')
cursor.close()
- print('cursor closed')
+ Helper_App.console_log('cursor closed')
"""
DataStore_Store_Base.upload_bulk(Product_Category_Temp.__tablename__, rows, 1000)
@@ -95,5 +96,5 @@ class DataStore_Store_Product_Category(DataStore_Store_Base):
}
save_result = cls.db_procedure_execute('p_shop_save_product_category', argument_dict_list)
save_result.close()
- print('save procedure executed')
+ Helper_App.console_log('save procedure executed')
diff --git a/datastores/datastore_store_product_permutation.py b/datastores/datastore_store_product_permutation.py
index 0d279cb9..c5c345a6 100644
--- a/datastores/datastore_store_product_permutation.py
+++ b/datastores/datastore_store_product_permutation.py
@@ -15,6 +15,7 @@ import lib.argument_validation as av
from business_objects.store.store_base import Store_Base
from business_objects.store.product_permutation import Product_Permutation, Product_Permutation_Temp
from datastores.datastore_store_base import DataStore_Store_Base
+from helpers.helper_app import Helper_App
from helpers.helper_db_mysql import Helper_DB_MySQL
# from models.model_view_store_checkout import Model_View_Store_Checkout # circular!
from extensions import db
@@ -53,11 +54,11 @@ class DataStore_Store_Product_Permutation(DataStore_Store_Base):
row.guid = guid
rows.append(row)
- print(f'rows: {rows}')
+ Helper_App.console_log(f'rows: {rows}')
"""
cursor = db.cursor()
- print('cursor created')
+ Helper_App.console_log('cursor created')
cursor.executemany(
'''INSERT INTO Shop_Product_Permutation_Temp (
id_permutation,
@@ -85,14 +86,14 @@ class DataStore_Store_Product_Permutation(DataStore_Store_Base):
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)''',
rows
)
- print('cursor executed')
+ Helper_App.console_log('cursor executed')
db.commit()
- print('cursor committed')
+ Helper_App.console_log('cursor committed')
cursor.close()
- print('cursor closed')
+ Helper_App.console_log('cursor closed')
"""
DataStore_Store_Base.upload_bulk(Product_Permutation_Temp.__tablename__, rows, 1000)
- print('bulk uploaded')
+ Helper_App.console_log('bulk uploaded')
argument_dict_list = {
'a_comment': comment,
@@ -100,4 +101,4 @@ class DataStore_Store_Product_Permutation(DataStore_Store_Base):
'a_id_user': user.id_user,
}
cls.db_procedure_execute('p_shop_save_product_permutation', argument_dict_list)
- print('saved product permutations')
+ Helper_App.console_log('saved product permutations')
diff --git a/datastores/datastore_store_stock_item.py b/datastores/datastore_store_stock_item.py
index a629b7aa..fbc933e4 100644
--- a/datastores/datastore_store_stock_item.py
+++ b/datastores/datastore_store_stock_item.py
@@ -16,6 +16,7 @@ import lib.argument_validation as av
from business_objects.sql_error import SQL_Error
from business_objects.store.stock_item import Stock_Item, Parameters_Stock_Item, Stock_Item_Temp
from datastores.datastore_store_base import DataStore_Store_Base
+from helpers.helper_app import Helper_App
from helpers.helper_db_mysql import Helper_DB_MySQL
# from models.model_view_store_checkout import Model_View_Store_Checkout # circular!
from extensions import db
@@ -53,13 +54,13 @@ class DataStore_Store_Stock_Item(DataStore_Store_Base):
, 'a_debug': 0
}
ids_permutation = category_list.get_csv_ids_permutation()
- print(f'ids_permutation: {ids_permutation}')
+ Helper_App.console_log(f'ids_permutation: {ids_permutation}')
argument_dict['a_ids_product_permutation'] = ids_permutation
- print(f'argument_dict: {argument_dict}')
- print('executing p_shop_get_many_stock_item')
+ Helper_App.console_log(f'argument_dict: {argument_dict}')
+ Helper_App.console_log('executing p_shop_get_many_stock_item')
result = self.db_procedure_execute('p_shop_get_many_stock_item', argument_dict)
cursor = result.cursor
- print('data received')
+ Helper_App.console_log('data received')
category_list, errors = DataStore_Store_Stock_Item.input_many_stock_item(cursor, category_list)
DataStore_Store_Stock_Item.db_cursor_clear(cursor)
@@ -69,7 +70,7 @@ class DataStore_Store_Stock_Item(DataStore_Store_Base):
def input_many_stock_item(cursor, category_list):
_m = 'DataStore_Store_Stock_Item.input_many_stock_item'
result_set_1 = cursor.fetchall()
- print(f'raw categories: {result_set_1}')
+ Helper_App.console_log(f'raw categories: {result_set_1}')
for row in result_set_1:
new_stock_item = Stock_Item.from_DB_stock_item(row)
category_list.add_stock_item(new_stock_item) # , row)
@@ -77,12 +78,12 @@ class DataStore_Store_Stock_Item(DataStore_Store_Base):
# Errors
cursor.nextset()
result_set_e = cursor.fetchall()
- print(f'raw errors: {result_set_e}')
+ Helper_App.console_log(f'raw errors: {result_set_e}')
errors = []
if len(result_set_e) > 0:
errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # (row[0], row[1])
for error in errors:
- print(f"Error [{error.code}]: {error.msg}")
+ Helper_App.console_log(f"Error [{error.code}]: {error.msg}")
"""
if len(errors) > 0:
for error in errors:
@@ -117,10 +118,10 @@ class DataStore_Store_Stock_Item(DataStore_Store_Base):
row.guid = guid
rows.append(row)
- print(f'rows: {rows}')
+ Helper_App.console_log(f'rows: {rows}')
DataStore_Store_Base.upload_bulk(Stock_Item_Temp.__tablename__, rows, 1000)
- print('bulk uploaded')
+ Helper_App.console_log('bulk uploaded')
argument_dict_list = {
'a_comment': comment,
@@ -129,17 +130,17 @@ class DataStore_Store_Stock_Item(DataStore_Store_Base):
'a_debug': 0
}
result = cls.db_procedure_execute('p_shop_save_stock_item', argument_dict_list)
- print('saved product permutations')
+ Helper_App.console_log('saved product permutations')
# Errors
cursor = result.cursor
cursor.nextset()
result_set_e = cursor.fetchall()
- print(f'raw errors: {result_set_e}')
+ Helper_App.console_log(f'raw errors: {result_set_e}')
errors = []
if len(result_set_e) > 0:
errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # (row[0], row[1])
for error in errors:
- print(f"Error [{error.code}]: {error.msg}")
+ Helper_App.console_log(f"Error [{error.code}]: {error.msg}")
DataStore_Store_Stock_Item.db_cursor_clear(cursor)
return errors
diff --git a/datastores/datastore_store_stripe.py b/datastores/datastore_store_stripe.py
index 4cae7b7f..c86b3b16 100644
--- a/datastores/datastore_store_stripe.py
+++ b/datastores/datastore_store_stripe.py
@@ -30,6 +30,7 @@ from datastores.datastore_store_base import DataStore_Store_Base
# from helpers.helper_db_mysql import Helper_DB_MySQL
# from models.model_view_store_checkout import Model_View_Store_Checkout # circular!
from extensions import db
+from helpers.helper_app import Helper_App
# external
# from abc import ABC, abstractmethod, abstractproperty
from flask_sqlalchemy import SQLAlchemy
@@ -72,10 +73,10 @@ class DataStore_Store_Stripe(DataStore_Store_Base):
'a_id_user': self.info_user
}
- print(f'executing {_m_db}')
+ Helper_App.console_log(f'executing {_m_db}')
result = self.db_procedure_execute(_m_db, argument_dict_list)
cursor = result.cursor
- print('data received')
+ Helper_App.console_log('data received')
# Products
@@ -85,16 +86,16 @@ class DataStore_Store_Stripe(DataStore_Store_Base):
for row in result_set_1:
new_product = Product.from_DB_Stripe_product(row) # Product(row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10], row[11], row[12], row[13], row[14], row[15], row[16], row[17], row[18], row[19])
products.append(new_product)
- print(f'products: {products}')
+ Helper_App.console_log(f'products: {products}')
# Errors
cursor.nextset()
result_set_e = cursor.fetchall()
- print(f'raw errors: {result_set_e}')
+ Helper_App.console_log(f'raw errors: {result_set_e}')
if len(result_set_e) > 0:
errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # [SQL_Error(row[0], row[1]) for row in result_set_e]
for error in errors:
- print(f"Error [{error.code}]: {error.msg}")
+ Helper_App.console_log(f"Error [{error.code}]: {error.msg}")
DataStore_Store_Stripe.db_cursor_clear(cursor)
@@ -110,10 +111,10 @@ class DataStore_Store_Stripe(DataStore_Store_Base):
'a_id_user': self.info_user
}
- print(f'executing {_m_db}')
+ Helper_App.console_log(f'executing {_m_db}')
result = self.db_procedure_execute(_m_db, argument_dict_list)
cursor = result.cursor
- print('data received')
+ Helper_App.console_log('data received')
# Products
@@ -123,16 +124,16 @@ class DataStore_Store_Stripe(DataStore_Store_Base):
for row in result_set_1:
new_product = Product.from_DB_Stripe_price(row) # Product(row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10], row[11], row[12], row[13], row[14], row[15], row[16], row[17], row[18], row[19])
products.append(new_product)
- print(f'products: {products}')
+ Helper_App.console_log(f'products: {products}')
# Errors
cursor.nextset()
result_set_e = cursor.fetchall()
- print(f'raw errors: {result_set_e}')
+ Helper_App.console_log(f'raw errors: {result_set_e}')
if len(result_set_e) > 0:
errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # [SQL_Error(row[0], row[1]) for row in result_set_e]
for error in errors:
- print(f"Error [{error.code}]: {error.msg}")
+ Helper_App.console_log(f"Error [{error.code}]: {error.msg}")
DataStore_Store_Stripe.db_cursor_clear(cursor)
@@ -161,14 +162,14 @@ class DataStore_Store_Stripe(DataStore_Store_Base):
# av.val_str(product_description, 'product_description', _m)
av.val_instance(product, 'product', _m, Product)
- print(f'stripe.api_key = {stripe.api_key}')
+ Helper_App.console_log(f'stripe.api_key = {stripe.api_key}')
new_product = stripe.Product.create(
name = product.name,
description = product.description,
)
# Save these identifiers
- print(f"Success! Here is your new Stripe product id: {new_product.id}")
+ Helper_App.console_log(f"Success! Here is your new Stripe product id: {new_product.id}")
return new_product.id
@@ -188,7 +189,7 @@ class DataStore_Store_Stripe(DataStore_Store_Base):
av.val_instance(product, 'product', _m, Product)
av.val_str(currency, 'currency', _m)
- print(f'stripe.api_key = {stripe.api_key}')
+ Helper_App.console_log(f'stripe.api_key = {stripe.api_key}')
new_product_price = stripe.Price.create(
unit_amount = product.unit_price,
@@ -198,7 +199,7 @@ class DataStore_Store_Stripe(DataStore_Store_Base):
)
# Save these identifiers
- print(f"Success! Here is your Stripe product price id: {new_product_price.id} for {product.name}")
+ Helper_App.console_log(f"Success! Here is your Stripe product price id: {new_product_price.id} for {product.name}")
return new_product_price.id
\ No newline at end of file
diff --git a/datastores/datastore_store_supplier.py b/datastores/datastore_store_supplier.py
index 56cfa9ff..1a9538ea 100644
--- a/datastores/datastore_store_supplier.py
+++ b/datastores/datastore_store_supplier.py
@@ -17,6 +17,7 @@ from business_objects.sql_error import SQL_Error
from business_objects.store.supplier_address import Supplier_Address, Supplier_Address_Temp
from business_objects.store.supplier import Supplier, Parameters_Supplier, Supplier_Temp
from datastores.datastore_store_base import DataStore_Store_Base
+from helpers.helper_app import Helper_App
from helpers.helper_db_mysql import Helper_DB_MySQL
from extensions import db
# external
@@ -47,15 +48,15 @@ class DataStore_Store_Supplier(DataStore_Store_Base):
, **argument_dict
, 'a_debug': 0
}
- print(f'argument_dict: {argument_dict}')
- print('executing p_shop_get_many_supplier')
+ Helper_App.console_log(f'argument_dict: {argument_dict}')
+ Helper_App.console_log('executing p_shop_get_many_supplier')
result = cls.db_procedure_execute('p_shop_get_many_supplier', argument_dict)
cursor = result.cursor
- print('data received')
+ Helper_App.console_log('data received')
# Suppliers
result_set_1 = cursor.fetchall()
- print(f'raw suppliers: {result_set_1}')
+ Helper_App.console_log(f'raw suppliers: {result_set_1}')
suppliers = []
supplier_indexes = {}
for row in result_set_1:
@@ -66,7 +67,7 @@ class DataStore_Store_Supplier(DataStore_Store_Base):
# Supplier Addresses
cursor.nextset()
result_set_1 = cursor.fetchall()
- print(f'raw supplier addresses: {result_set_1}')
+ Helper_App.console_log(f'raw supplier addresses: {result_set_1}')
for row in result_set_1:
new_address = Supplier_Address.from_DB_supplier(row)
index_supplier = supplier_indexes[new_address.id_supplier]
@@ -75,12 +76,12 @@ class DataStore_Store_Supplier(DataStore_Store_Base):
# Errors
cursor.nextset()
result_set_e = cursor.fetchall()
- print(f'raw errors: {result_set_e}')
+ Helper_App.console_log(f'raw errors: {result_set_e}')
errors = []
if len(result_set_e) > 0:
errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # (row[0], row[1])
for error in errors:
- print(f"Error [{error.code}]: {error.msg}")
+ Helper_App.console_log(f"Error [{error.code}]: {error.msg}")
DataStore_Store_Supplier.db_cursor_clear(cursor)
@@ -89,7 +90,7 @@ class DataStore_Store_Supplier(DataStore_Store_Base):
@classmethod
def save_suppliers(cls, comment, suppliers):
_m = 'DataStore_Store_Supplier.save_suppliers'
- print(f'{_m}\n{suppliers}')
+ Helper_App.console_log(f'{_m}\n{suppliers}')
av.val_str(comment, 'comment', _m)
guid = Helper_DB_MySQL.create_guid_str()
@@ -101,22 +102,22 @@ class DataStore_Store_Supplier(DataStore_Store_Base):
row = Supplier_Temp.from_supplier(supplier)
row.guid = guid
rows.append(row)
- print(f'rows: {rows}')
+ Helper_App.console_log(f'rows: {rows}')
DataStore_Store_Base.upload_bulk(Supplier_Temp.__tablename__, rows, 1000)
- print('bulk uploaded suppliers')
+ Helper_App.console_log('bulk uploaded suppliers')
rows = []
for supplier in suppliers:
- print(f'supplier: {supplier}')
+ Helper_App.console_log(f'supplier: {supplier}')
for supplier_address in supplier.addresses:
row = Supplier_Address_Temp.from_supplier_address(supplier_address)
row.guid = guid
rows.append(row)
- print(f'rows: {rows}')
+ Helper_App.console_log(f'rows: {rows}')
DataStore_Store_Base.upload_bulk(Supplier_Address_Temp.__tablename__, rows, 1000)
- print('bulk uploaded supplier addresses')
+ Helper_App.console_log('bulk uploaded supplier addresses')
argument_dict_list = {
'a_comment': comment,
@@ -125,18 +126,18 @@ class DataStore_Store_Supplier(DataStore_Store_Base):
'a_debug': 0
}
result = cls.db_procedure_execute('p_shop_save_supplier', argument_dict_list)
- print('saved suppliers')
+ Helper_App.console_log('saved suppliers')
# Errors
cursor = result.cursor
cursor.nextset()
result_set_e = cursor.fetchall()
- print(f'raw errors: {result_set_e}')
+ Helper_App.console_log(f'raw errors: {result_set_e}')
errors = []
if len(result_set_e) > 0:
errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # (row[0], row[1])
for error in errors:
- print(f"Error [{error.code}]: {error.msg}")
+ Helper_App.console_log(f"Error [{error.code}]: {error.msg}")
DataStore_Store_Supplier.db_cursor_clear(cursor)
return errors
diff --git a/datastores/datastore_store_supplier_purchase_order.py b/datastores/datastore_store_supplier_purchase_order.py
index 4c128e87..03e2854b 100644
--- a/datastores/datastore_store_supplier_purchase_order.py
+++ b/datastores/datastore_store_supplier_purchase_order.py
@@ -16,6 +16,7 @@ import lib.argument_validation as av
from business_objects.sql_error import SQL_Error
from business_objects.store.supplier_purchase_order import Supplier_Purchase_Order, Supplier_Purchase_Order_Product_Link, Parameters_Supplier_Purchase_Order, Supplier_Purchase_Order_Temp, Supplier_Purchase_Order_Product_Link_Temp
from datastores.datastore_store_base import DataStore_Store_Base
+from helpers.helper_app import Helper_App
from helpers.helper_db_mysql import Helper_DB_MySQL
from extensions import db
# external
@@ -45,15 +46,15 @@ class DataStore_Store_Supplier_Purchase_Order(DataStore_Store_Base):
, **argument_dict
, 'a_debug': 0
}
- print(f'argument_dict: {argument_dict}')
- print('executing p_shop_get_many_supplier_purchase_order')
+ Helper_App.console_log(f'argument_dict: {argument_dict}')
+ Helper_App.console_log('executing p_shop_get_many_supplier_purchase_order')
result = self.db_procedure_execute('p_shop_get_many_supplier_purchase_order', argument_dict)
cursor = result.cursor
- print('data received')
+ Helper_App.console_log('data received')
# Supplier_Purchase_Orders
result_set_1 = cursor.fetchall()
- print(f'raw supplier_purchase_orders: {result_set_1}')
+ Helper_App.console_log(f'raw supplier_purchase_orders: {result_set_1}')
supplier_purchase_orders = []
indices_supplier_purchase_order = {}
for row in result_set_1:
@@ -64,7 +65,7 @@ class DataStore_Store_Supplier_Purchase_Order(DataStore_Store_Base):
# Supplier_Purchase_Orders Items
cursor.nextset()
result_set_2 = cursor.fetchall()
- print(f'raw supplier_purchase_order_product_links: {result_set_2}')
+ Helper_App.console_log(f'raw supplier_purchase_order_product_links: {result_set_2}')
order_product_links = []
for row in result_set_2:
new_link = Supplier_Purchase_Order_Product_Link.from_DB_supplier_purchase_order(row)
@@ -75,12 +76,12 @@ class DataStore_Store_Supplier_Purchase_Order(DataStore_Store_Base):
# Errors
cursor.nextset()
result_set_e = cursor.fetchall()
- print(f'raw errors: {result_set_e}')
+ Helper_App.console_log(f'raw errors: {result_set_e}')
errors = []
if len(result_set_e) > 0:
errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # (row[0], row[1])
for error in errors:
- print(f"Error [{error.code}]: {error.msg}")
+ Helper_App.console_log(f"Error [{error.code}]: {error.msg}")
DataStore_Store_Supplier_Purchase_Order.db_cursor_clear(cursor)
@@ -99,9 +100,9 @@ class DataStore_Store_Supplier_Purchase_Order(DataStore_Store_Base):
row = Supplier_Purchase_Order_Temp.from_supplier_purchase_order(supplier_purchase_order)
row.guid = guid
rows_order.append(row)
- print(f'order rows: {rows_order}')
+ Helper_App.console_log(f'order rows: {rows_order}')
DataStore_Store_Base.upload_bulk(Supplier_Purchase_Order_Temp.__tablename__, rows_order, 1000)
- print('bulk uploaded orders')
+ Helper_App.console_log('bulk uploaded orders')
rows_link = []
for supplier_purchase_order in supplier_purchase_orders:
@@ -109,9 +110,9 @@ class DataStore_Store_Supplier_Purchase_Order(DataStore_Store_Base):
row = Supplier_Purchase_Order_Product_Link_Temp.from_supplier_purchase_order_product_link(link)
row.guid = guid
rows_link.append(row)
- print(f'link rows: {rows_link}')
+ Helper_App.console_log(f'link rows: {rows_link}')
DataStore_Store_Base.upload_bulk(Supplier_Purchase_Order_Product_Link_Temp.__tablename__, rows_link, 1000)
- print('bulk uploaded links')
+ Helper_App.console_log('bulk uploaded links')
argument_dict_list = {
'a_comment': comment,
@@ -120,13 +121,13 @@ class DataStore_Store_Supplier_Purchase_Order(DataStore_Store_Base):
'a_debug': 0
}
result = cls.db_procedure_execute('p_shop_save_supplier_purchase_order', argument_dict_list)
- print('saved supplier purchase orders')
+ Helper_App.console_log('saved supplier purchase orders')
# Errors
cursor = result.cursor
cursor.nextset()
result_set_e = cursor.fetchall()
- print(f'raw errors: {result_set_e}')
+ Helper_App.console_log(f'raw errors: {result_set_e}')
errors = []
warnings = []
if len(result_set_e) > 0:
@@ -136,7 +137,7 @@ class DataStore_Store_Supplier_Purchase_Order(DataStore_Store_Base):
warnings.append(new_error)
else:
errors.append(new_error)
- print(f"Error [{new_error.code}]: {new_error.msg}")
+ Helper_App.console_log(f"Error [{new_error.code}]: {new_error.msg}")
cls.db_cursor_clear(cursor)
return errors, warnings
diff --git a/datastores/datastore_user.py b/datastores/datastore_user.py
index b8c65261..a96fcd53 100644
--- a/datastores/datastore_user.py
+++ b/datastores/datastore_user.py
@@ -17,6 +17,7 @@ from business_objects.sql_error import SQL_Error
from business_objects.store.stock_item import Stock_Item
from business_objects.user import User, User_Filters, User_Permission_Evaluation
from datastores.datastore_base import DataStore_Base
+from helpers.helper_app import Helper_App
from helpers.helper_db_mysql import Helper_DB_MySQL
# from models.model_view_store_checkout import Model_View_Store_Checkout # circular!
from extensions import db
@@ -57,16 +58,16 @@ class DataStore_User(DataStore_Base):
cursor = result.cursor
result_set_1 = cursor.fetchall()
- print(f'raw user data: {result_set_1}')
+ Helper_App.console_log(f'raw user data: {result_set_1}')
# Errors
cursor.nextset()
result_set_e = cursor.fetchall()
- print(f'raw errors: {result_set_e}')
+ Helper_App.console_log(f'raw errors: {result_set_e}')
if len(result_set_e) > 0:
errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # [SQL_Error(row[0], row[1]) for row in result_set_2]
for error in errors:
- print(f"Error [{error.code}]: {error.msg}")
+ Helper_App.console_log(f"Error [{error.code}]: {error.msg}")
DataStore_User.db_cursor_clear(cursor)
@@ -85,10 +86,10 @@ class DataStore_User(DataStore_Base):
'a_id_checkout_session': id_checkout_session
}
- print('executing p_shop_get_many_user_order')
+ Helper_App.console_log('executing p_shop_get_many_user_order')
result = self.db_procedure_execute('p_shop_get_many_user_order', argument_dict_list)
cursor = result.cursor
- print('data received')
+ Helper_App.console_log('data received')
# Discount Delivery Regions
@@ -98,16 +99,16 @@ class DataStore_User(DataStore_Base):
for row in result_set_1:
new_order = Order(row[0], row[1], row[2], row[3], row[4], row[5], row[6])
orders.append(new_order)
- print(f'orders: {orders}')
+ Helper_App.console_log(f'orders: {orders}')
# Errors
cursor.nextset()
result_set_e = cursor.fetchall()
- print(f'raw errors: {result_set_e}')
+ Helper_App.console_log(f'raw errors: {result_set_e}')
if len(result_set_e) > 0:
errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # [SQL_Error(row[0], row[1]) for row in result_set_e]
for error in errors:
- print(f"Error [{error.code}]: {error.msg}")
+ Helper_App.console_log(f"Error [{error.code}]: {error.msg}")
DataStore_User.db_cursor_clear(cursor)
@@ -116,7 +117,7 @@ class DataStore_User(DataStore_Base):
def get_many_user(self, user_filters, user=None):
_m = 'DataStore_User.get_many_user'
- print(_m)
+ Helper_App.console_log(_m)
# av.val_str(user_filters, 'user_filters', _m)
# av.val_list(permutations, 'list_permutations', _m, Product_Permutation, 1)
av.val_instance(user_filters, 'user_filters', _m, User_Filters)
@@ -150,33 +151,33 @@ class DataStore_User(DataStore_Base):
"""
cursor = result.cursor
result_set = cursor.fetchall()
- print(f'raw users: {result_set}')
- print(f'type result set: {str(type(result_set))}')
- print(f'len result set: {len(result_set)}')
+ Helper_App.console_log(f'raw users: {result_set}')
+ Helper_App.console_log(f'type result set: {str(type(result_set))}')
+ Helper_App.console_log(f'len result set: {len(result_set)}')
"""
user_permission_evals = []
for row in result_set:
user_permission_eval = User_Permission_Evaluation.from_DB_user_eval(row)
user_permission_evals.append(user_permission_eval)
- print(f'user_permission_evals: {user_permission_evals}')
+ Helper_App.console_log(f'user_permission_evals: {user_permission_evals}')
"""
users = []
if len(result_set) > 0:
for row in result_set:
- print(f'row: {row}')
+ Helper_App.console_log(f'row: {row}')
user = User.from_DB_user(row)
users.append(user)
- print(f'user {str(type(user))}: {user}')
- print(f'type users: {str(type(users))}\n type user 0: {str(type(None if len(users) == 0 else users[0]))}')
+ Helper_App.console_log(f'user {str(type(user))}: {user}')
+ Helper_App.console_log(f'type users: {str(type(users))}\n type user 0: {str(type(None if len(users) == 0 else users[0]))}')
# error_list, cursor = self.get_error_list_from_cursor(cursor)
errors = []
cursor.nextset()
result_set_e = cursor.fetchall()
- print(f'raw errors: {result_set_e}')
+ Helper_App.console_log(f'raw errors: {result_set_e}')
if len(result_set_e) > 0:
errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # [SQL_Error(row[0], row[1]) for row in result_set_e]
for error in errors:
- print(f"Error [{error.code}]: {error.msg}")
+ Helper_App.console_log(f"Error [{error.code}]: {error.msg}")
DataStore_User.db_cursor_clear(cursor)
@@ -184,7 +185,7 @@ class DataStore_User(DataStore_Base):
def get_many_user(self, user_filters, user=None):
_m = 'DataStore_User.get_many_user'
- print(_m)
+ Helper_App.console_log(_m)
# av.val_str(user_filters, 'user_filters', _m)
# av.val_list(permutations, 'list_permutations', _m, Product_Permutation, 1)
av.val_instance(user_filters, 'user_filters', _m, User_Filters)
@@ -218,33 +219,33 @@ class DataStore_User(DataStore_Base):
"""
cursor = result.cursor
result_set = cursor.fetchall()
- print(f'raw users: {result_set}')
- print(f'type result set: {str(type(result_set))}')
- print(f'len result set: {len(result_set)}')
+ Helper_App.console_log(f'raw users: {result_set}')
+ Helper_App.console_log(f'type result set: {str(type(result_set))}')
+ Helper_App.console_log(f'len result set: {len(result_set)}')
"""
user_permission_evals = []
for row in result_set:
user_permission_eval = User_Permission_Evaluation.from_DB_user_eval(row)
user_permission_evals.append(user_permission_eval)
- print(f'user_permission_evals: {user_permission_evals}')
+ Helper_App.console_log(f'user_permission_evals: {user_permission_evals}')
"""
users = []
if len(result_set) > 0:
for row in result_set:
- print(f'row: {row}')
+ Helper_App.console_log(f'row: {row}')
user = User.from_DB_user(row)
users.append(user)
- print(f'user {str(type(user))}: {user}')
- print(f'type users: {str(type(users))}\n type user 0: {str(type(None if len(users) == 0 else users[0]))}')
+ Helper_App.console_log(f'user {str(type(user))}: {user}')
+ Helper_App.console_log(f'type users: {str(type(users))}\n type user 0: {str(type(None if len(users) == 0 else users[0]))}')
# error_list, cursor = self.get_error_list_from_cursor(cursor)
errors = []
cursor.nextset()
result_set_e = cursor.fetchall()
- print(f'raw errors: {result_set_e}')
+ Helper_App.console_log(f'raw errors: {result_set_e}')
if len(result_set_e) > 0:
errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # [SQL_Error(row[0], row[1]) for row in result_set_e]
for error in errors:
- print(f"Error [{error.code}]: {error.msg}")
+ Helper_App.console_log(f"Error [{error.code}]: {error.msg}")
DataStore_User.db_cursor_clear(cursor)
diff --git a/helpers/__pycache__/helper_app.cpython-312.pyc b/helpers/__pycache__/helper_app.cpython-312.pyc
index 13087f28..9213c9d4 100644
Binary files a/helpers/__pycache__/helper_app.cpython-312.pyc and b/helpers/__pycache__/helper_app.cpython-312.pyc differ
diff --git a/helpers/helper_app.py b/helpers/helper_app.py
index db5a461b..ad0fd36e 100644
--- a/helpers/helper_app.py
+++ b/helpers/helper_app.py
@@ -11,7 +11,7 @@ Feature: App Helper
# external
from pydantic import BaseModel, ConfigDict
-# from flask import Flask, render_template, jsonify, request, render_template_string, send_from_directory, redirect, url_for, session
+from flask import current_app
# from flask_sqlalchemy import SQLAlchemy
@@ -19,7 +19,7 @@ class Helper_App(BaseModel):
@staticmethod
def get_request_data(request):
- print(f'request={request}')
+ Helper_App.console_log(f'request={request}')
data = {}
try:
data = request.json
@@ -31,5 +31,10 @@ class Helper_App(BaseModel):
data = request.form
except:
pass
- print(f'data={data}')
- return data
\ No newline at end of file
+ Helper_App.console_log(f'data={data}')
+ return data
+
+ @staticmethod
+ def console_log(message):
+ if current_app.config["DEBUG"]:
+ print(message)
\ No newline at end of file
diff --git a/lib/__pycache__/argument_validation.cpython-312.pyc b/lib/__pycache__/argument_validation.cpython-312.pyc
index 826d786d..dd476cef 100644
Binary files a/lib/__pycache__/argument_validation.cpython-312.pyc and b/lib/__pycache__/argument_validation.cpython-312.pyc differ
diff --git a/lib/argument_validation.py b/lib/argument_validation.py
index aa25e46c..dc1746ba 100644
--- a/lib/argument_validation.py
+++ b/lib/argument_validation.py
@@ -7,24 +7,7 @@ Created on Thu Apr 27 12:33:59 2023
Argument Validation
"""
-# CLASSES
-# ATTRIBUTE DECLARATION
-# METHODS
- # FUNCTION
- # ARGUMENTS
- # ARGUMENT VALIDATION
- # ATTRIBUTE + VARIABLE INSTANTIATION
- # METHODS
- # RETURNS
-
-# NORMAL METHODS
-# FUNCTION
-# ARGUMENTS
-# ARGUMENT VALIDATION
-# VARIABLE INSTANTIATION
-# METHODS
-# RETURNS
-
+from helpers.helper_app import Helper_App
from typing import Optional
def error_msg_str(v, v_name, method, v_type, suppress_errors = False, suppress_console_outputs = False, v_arg_type = 'argument'):
@@ -454,7 +437,7 @@ def input_bool(v_input, v_name, method, suppress_errors = False, suppress_consol
val_bool(suppress_errors, 'suppress_errors', my_f)
# suppress_console_outputs
if not val_bool(suppress_console_outputs, 'suppress_console_outputs', my_f, suppress_errors):
- print(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, "", suppress_errors))
+ Helper_App.console_log(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, "", suppress_errors))
return None
# v_name
if not val_str(v_name, 'v_name', my_f, 1, -1, suppress_errors, suppress_console_outputs): return None
@@ -510,7 +493,7 @@ def full_val_bool(v_input, v_name, method, suppress_errors = False, suppress_con
my_f = 'full_val_bool'
val_bool(suppress_errors, 'suppress_errors', my_f)
if not val_bool(suppress_console_outputs, 'suppress_console_outputs', my_f, suppress_errors):
- print(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, "", suppress_errors))
+ Helper_App.console_log(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, "", suppress_errors))
return False
# method
if not val_str(method, 'method', my_f, 1, -1, suppress_errors, suppress_console_outputs): return False
@@ -539,7 +522,7 @@ def input_int(v_input, v_name, method, v_min = None, v_max = None, suppress_erro
my_f = 'input_int'
val_bool(suppress_errors, 'suppress_errors', my_f)
if not val_bool(suppress_console_outputs, 'suppress_console_outputs', my_f, suppress_errors):
- print(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, "", suppress_errors))
+ Helper_App.console_log(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, "", suppress_errors))
return None
# method
if not val_str(method, 'method', my_f, 1, -1, suppress_errors, suppress_console_outputs): return None
@@ -564,20 +547,20 @@ def input_int(v_input, v_name, method, v_min = None, v_max = None, suppress_erro
except:
if suppress_errors:
if not suppress_console_outputs:
- print(error_msg)
+ Helper_App.console_log(error_msg)
return None
int(v_input)
if not str(type(v_min)) == "":
if my_int < v_min:
if suppress_errors:
if not suppress_console_outputs:
- print(f"{error_msg}\nInt input less than minimum value. Value = {v_input}, minimum = {v_min}.")
+ Helper_App.console_log(f"{error_msg}\nInt input less than minimum value. Value = {v_input}, minimum = {v_min}.")
return None
if not str(type(v_max)) == "":
if my_int > v_max:
if suppress_errors:
if not suppress_console_outputs:
- print(f"{error_msg}\nInt input greater than maximum value. Value = {v_input}, maximum = {v_max}.")
+ Helper_App.console_log(f"{error_msg}\nInt input greater than maximum value. Value = {v_input}, maximum = {v_max}.")
return None
# RETURNS
return my_int
@@ -599,7 +582,7 @@ def full_val_int(v_input, v_name, method, v_min = None, v_max = None, suppress_e
my_f = 'full_val_int'
val_bool(suppress_errors, 'suppress_errors', my_f)
if not val_bool(suppress_console_outputs, 'suppress_console_outputs', my_f, suppress_errors):
- print(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, "", suppress_errors))
+ Helper_App.console_log(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, "", suppress_errors))
return False
# v_name
if not val_str(v_name, 'v_name', my_f, 1, -1, suppress_errors, suppress_console_outputs): return False
@@ -633,7 +616,7 @@ def input_float(v_input, v_name, method, v_min = None, v_max = None, suppress_er
my_f = 'input_float'
val_bool(suppress_errors, 'suppress_errors', my_f)
if not val_bool(suppress_console_outputs, 'suppress_console_outputs', my_f, suppress_errors):
- print(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, "", suppress_errors))
+ Helper_App.console_log(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, "", suppress_errors))
return None
# method
if not val_str(method, 'method', my_f, 1, -1, suppress_errors, suppress_console_outputs): return None
@@ -658,20 +641,20 @@ def input_float(v_input, v_name, method, v_min = None, v_max = None, suppress_er
except:
if suppress_errors:
if not suppress_console_outputs:
- print(error_msg)
+ Helper_App.console_log(error_msg)
return None
float(v_input)
if not str(type(v_min)) == "":
if v_input < v_min:
if suppress_errors:
if not suppress_console_outputs:
- print(f"{error_msg}\nInt input less than minimum value. Value = {v_input}, minimum = {v_min}.")
+ Helper_App.console_log(f"{error_msg}\nInt input less than minimum value. Value = {v_input}, minimum = {v_min}.")
return None
if not str(type(v_max)) == "":
if v_input > v_max:
if suppress_errors:
if not suppress_console_outputs:
- print(f"{error_msg}\nInt input greater than maximum value. Value = {v_input}, maximum = {v_max}.")
+ Helper_App.console_log(f"{error_msg}\nInt input greater than maximum value. Value = {v_input}, maximum = {v_max}.")
return None
# RETURNS
return my_float
@@ -692,7 +675,7 @@ def full_val_float(v_input, v_name, method, v_min = None, v_max = None, suppress
my_f = 'full_val_float'
val_bool(suppress_errors, 'suppress_errors', my_f)
if not val_bool(suppress_console_outputs, 'suppress_console_outputs', my_f, suppress_errors):
- print(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, "", suppress_errors))
+ Helper_App.console_log(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, "", suppress_errors))
return False
# method
if not val_str(method, 'method', my_f, 1, -1, suppress_errors, suppress_console_outputs): return False
@@ -746,7 +729,7 @@ def val_type(v_input, v_name, method, v_type, suppress_errors = False, suppress_
my_f = 'val_type'
val_bool(suppress_errors, 'suppress_errors', my_f)
if not val_bool(suppress_console_outputs, 'suppress_console_outputs', my_f, suppress_errors):
- print(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, "", suppress_errors))
+ Helper_App.console_log(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, "", suppress_errors))
return False
# method
if not val_str(method, 'method', my_f, 1, -1, suppress_errors, suppress_console_outputs): return False
@@ -765,7 +748,7 @@ def val_type(v_input, v_name, method, v_type, suppress_errors = False, suppress_
if not mytype == v_type: # f"":
if suppress_errors:
if not suppress_console_outputs:
- print(error_message)
+ Helper_App.console_log(error_message)
return False
raise ValueError(error_message)
# RETURNS
@@ -787,7 +770,7 @@ def val_instance(v_input, v_name, method, v_type, suppress_errors = False, suppr
my_f = 'val_type'
val_bool(suppress_errors, 'suppress_errors', my_f)
if not val_bool(suppress_console_outputs, 'suppress_console_outputs', my_f, suppress_errors):
- print(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, "", suppress_errors))
+ Helper_App.console_log(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, "", suppress_errors))
return False
# method
if not val_str(method, 'method', my_f, 1, -1, suppress_errors, suppress_console_outputs): return False
@@ -801,7 +784,7 @@ def val_instance(v_input, v_name, method, v_type, suppress_errors = False, suppr
if not isinstance(v_type, type): # mytype == v_type: # f"":
if suppress_errors:
if not suppress_console_outputs:
- print(error_message)
+ Helper_App.console_log(error_message)
return False
raise ValueError(error_message) # val_str(v_type, 'v_type', my_f, 6, -1, suppress_errors, suppress_console_outputs): return False
# v_input
@@ -811,7 +794,7 @@ def val_instance(v_input, v_name, method, v_type, suppress_errors = False, suppr
if not isinstance(v_input, v_type): # mytype == v_type: # f"":
if suppress_errors:
if not suppress_console_outputs:
- print(error_message)
+ Helper_App.console_log(error_message)
return False
raise ValueError(error_message)
# RETURNS
@@ -836,7 +819,7 @@ def val_list(v_input, v_name, method, v_type = '', min_len = -1, max_len = -1, s
my_f = 'val_list'
val_bool(suppress_errors, 'suppress_errors', my_f)
if not val_bool(suppress_console_outputs, 'suppress_console_outputs', my_f, suppress_errors):
- print(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, "", suppress_errors))
+ Helper_App.console_log(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, "", suppress_errors))
return False
# method
if not val_str(method, 'method', my_f, 1, -1, suppress_errors, suppress_console_outputs): return False
@@ -865,20 +848,20 @@ def val_list(v_input, v_name, method, v_type = '', min_len = -1, max_len = -1, s
if not str(type(v_input)) == "":
if suppress_errors:
if not suppress_console_outputs:
- print(error_msg)
+ Helper_App.console_log(error_msg)
return False
raise ValueError(error_msg)
L = len(v_input)
if max_len > -1 and L > max_len:
if suppress_errors:
if not suppress_console_outputs:
- print(error_msg + f'\nInvalid list length. Maximum = {max_len}, length = {L}')
+ Helper_App.console_log(error_msg + f'\nInvalid list length. Maximum = {max_len}, length = {L}')
return False
raise ValueError(error_msg + f'\nInvalid list length. Maximum = {max_len}, length = {L}')
if L < min_len:
if suppress_errors:
if not suppress_console_outputs:
- print(error_msg + f"Invalid list length. Minimum = {min_len}, length = {L}")
+ Helper_App.console_log(error_msg + f"Invalid list length. Minimum = {min_len}, length = {L}")
return False
raise ValueError(error_msg + f'\nInvalid list length. Minimum = {min_len}, length = {L}')
if v_type != '' and L > 0:
@@ -888,7 +871,7 @@ def val_list(v_input, v_name, method, v_type = '', min_len = -1, max_len = -1, s
error_msg = error_msg + '\n' + error_msg_str(v_input[i], f'{v_name}[{i}]', my_f, v_type, False, False, 'list element')
if suppress_errors:
if not suppress_console_outputs:
- print(error_msg)
+ Helper_App.console_log(error_msg)
return False
raise ValueError(error_msg)
# RETURNS
@@ -913,7 +896,7 @@ def val_list_instances(v_input, v_name, method, v_type = None, min_len = -1, max
my_f = 'val_list_instances'
val_bool(suppress_errors, 'suppress_errors', my_f)
if not val_bool(suppress_console_outputs, 'suppress_console_outputs', my_f, suppress_errors):
- print(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, "", suppress_errors))
+ Helper_App.console_log(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, "", suppress_errors))
return False
# method
if not val_str(method, 'method', my_f, 1, -1, suppress_errors, suppress_console_outputs): return False
@@ -942,20 +925,20 @@ def val_list_instances(v_input, v_name, method, v_type = None, min_len = -1, max
if not str(type(v_input)) == "":
if suppress_errors:
if not suppress_console_outputs:
- print(error_msg)
+ Helper_App.console_log(error_msg)
return False
raise ValueError(error_msg)
L = len(v_input)
if max_len > -1 and L > max_len:
if suppress_errors:
if not suppress_console_outputs:
- print(error_msg + f'\nInvalid list length. Maximum = {max_len}, length = {L}')
+ Helper_App.console_log(error_msg + f'\nInvalid list length. Maximum = {max_len}, length = {L}')
return False
raise ValueError(error_msg + f'\nInvalid list length. Maximum = {max_len}, length = {L}')
if L < min_len:
if suppress_errors:
if not suppress_console_outputs:
- print(error_msg + f"Invalid list length. Minimum = {min_len}, length = {L}")
+ Helper_App.console_log(error_msg + f"Invalid list length. Minimum = {min_len}, length = {L}")
return False
raise ValueError(error_msg + f'\nInvalid list length. Minimum = {min_len}, length = {L}')
if v_type != '' and L > 0:
@@ -965,7 +948,7 @@ def val_list_instances(v_input, v_name, method, v_type = None, min_len = -1, max
error_msg = error_msg + '\n' + error_msg_str(v_input[i], f'{v_name}[{i}]', my_f, v_type, False, False, 'list element')
if suppress_errors:
if not suppress_console_outputs:
- print(error_msg)
+ Helper_App.console_log(error_msg)
return False
raise ValueError(error_msg)
# RETURNS
@@ -995,7 +978,7 @@ def val_nested_list(v_input, v_name, method, depth_i, depth_max, v_type = '', v_
my_f = 'val_nested_list'
val_bool(suppress_errors, 'suppress_errors', my_f)
if not val_bool(suppress_console_outputs, 'suppress_console_outputs', my_f, suppress_errors):
- print(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, ""))
+ Helper_App.console_log(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, ""))
return False
# method
if not val_str(method, 'method', my_f, 1, -1, suppress_errors, suppress_console_outputs): return False
@@ -1015,14 +998,14 @@ def val_nested_list(v_input, v_name, method, depth_i, depth_max, v_type = '', v_
if not (val_list(v_mins, 'v_mins', my_f, "", depth_max + 1, depth_max + 1, True, True) or v_mins == []):
error_msg = error_msg_str(v_mins, 'v_mins', my_f, "")
if not suppress_console_outputs:
- print(error_msg)
+ Helper_App.console_log(error_msg)
return False
raise ValueError(error_msg)
# v_maxs
if not (val_list(v_maxs, 'v_maxs', my_f, "", depth_max + 1, depth_max + 1, True, True) or v_maxs == []):
error_msg = error_msg_str(v_maxs, 'v_maxs', my_f, "")
if not suppress_console_outputs:
- print(error_msg)
+ Helper_App.console_log(error_msg)
return False
raise ValueError(error_msg)
# allow_nuns
@@ -1032,7 +1015,7 @@ def val_nested_list(v_input, v_name, method, depth_i, depth_max, v_type = '', v_
error_msg = error_msg_str(v_input, v_name, method, mytype, suppress_errors, suppress_console_outputs, v_arg_type)
if not val_list(v_input, v_name, method, mytype, v_min, v_max, suppress_errors, suppress_console_outputs, allow_nuns, v_arg_type):
if not suppress_console_outputs:
- print(error_msg)
+ Helper_App.console_log(error_msg)
return False
# METHODS
L = len(v_input)
@@ -1040,7 +1023,7 @@ def val_nested_list(v_input, v_name, method, depth_i, depth_max, v_type = '', v_
if v_min > -1:
if suppress_errors:
if not suppress_console_outputs:
- print(error_msg + f'\nMinimum length {v_min} not met.')
+ Helper_App.console_log(error_msg + f'\nMinimum length {v_min} not met.')
return False
raise ValueError(error_msg + f'\nMinimum length {v_min} not met.')
elif depth_i < depth_max:
@@ -1048,22 +1031,22 @@ def val_nested_list(v_input, v_name, method, depth_i, depth_max, v_type = '', v_
if not (v_mins == [] or v_maxs == []):
if not val_nested_list(v_input[i], v_name, method, depth_i + 1, depth_max, v_type, v_mins[depth_i + 1], v_mins, v_maxs[depth_i + 1], v_maxs, suppress_errors, suppress_console_outputs, v_arg_type):
if not suppress_console_outputs:
- print(error_msg)
+ Helper_App.console_log(error_msg)
return False
elif not v_mins == []:
if not val_nested_list(v_input[i], v_name, method, depth_i + 1, depth_max, v_type, v_mins[depth_i + 1], v_mins, -1, v_maxs, suppress_errors, suppress_console_outputs, v_arg_type):
if not suppress_console_outputs:
- print(error_msg)
+ Helper_App.console_log(error_msg)
return False
elif not v_maxs == []:
if not val_nested_list(v_input[i], v_name, method, depth_i + 1, depth_max, v_type, -1, v_mins, v_maxs[depth_i + 1], v_maxs, suppress_errors, suppress_console_outputs, v_arg_type):
if not suppress_console_outputs:
- print(error_msg)
+ Helper_App.console_log(error_msg)
return False
else:
if not val_nested_list(v_input[i], v_name, method, depth_i + 1, depth_max, v_type, -1, v_mins, -1, v_maxs, suppress_errors, suppress_console_outputs, v_arg_type):
if not suppress_console_outputs:
- print(error_msg)
+ Helper_App.console_log(error_msg)
return False
# RETURNS
return True
@@ -1092,7 +1075,7 @@ def val_nested_list_instances(v_input, v_name, method, depth_i, depth_max, v_typ
my_f = 'val_nested_list'
val_bool(suppress_errors, 'suppress_errors', my_f)
if not val_bool(suppress_console_outputs, 'suppress_console_outputs', my_f, suppress_errors):
- print(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, ""))
+ Helper_App.console_log(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, ""))
return False
# method
if not val_str(method, 'method', my_f, 1, -1, suppress_errors, suppress_console_outputs): return False
@@ -1112,14 +1095,14 @@ def val_nested_list_instances(v_input, v_name, method, depth_i, depth_max, v_typ
if not (val_list(v_mins, 'v_mins', my_f, "", depth_max + 1, depth_max + 1, True, True) or v_mins == []):
error_msg = error_msg_str(v_mins, 'v_mins', my_f, "")
if not suppress_console_outputs:
- print(error_msg)
+ Helper_App.console_log(error_msg)
return False
raise ValueError(error_msg)
# v_maxs
if not (val_list(v_maxs, 'v_maxs', my_f, "", depth_max + 1, depth_max + 1, True, True) or v_maxs == []):
error_msg = error_msg_str(v_maxs, 'v_maxs', my_f, "")
if not suppress_console_outputs:
- print(error_msg)
+ Helper_App.console_log(error_msg)
return False
raise ValueError(error_msg)
# allow_nuns
@@ -1129,7 +1112,7 @@ def val_nested_list_instances(v_input, v_name, method, depth_i, depth_max, v_typ
error_msg = error_msg_str(v_input, v_name, method, mytype, suppress_errors, suppress_console_outputs, v_arg_type)
if not val_list_instances(v_input, v_name, method, mytype, v_min, v_max, suppress_errors, suppress_console_outputs, allow_nuns, v_arg_type):
if not suppress_console_outputs:
- print(error_msg)
+ Helper_App.console_log(error_msg)
return False
# METHODS
L = len(v_input)
@@ -1137,7 +1120,7 @@ def val_nested_list_instances(v_input, v_name, method, depth_i, depth_max, v_typ
if v_min > -1:
if suppress_errors:
if not suppress_console_outputs:
- print(error_msg + f'\nMinimum length {v_min} not met.')
+ Helper_App.console_log(error_msg + f'\nMinimum length {v_min} not met.')
return False
raise ValueError(error_msg + f'\nMinimum length {v_min} not met.')
elif depth_i < depth_max:
@@ -1145,22 +1128,22 @@ def val_nested_list_instances(v_input, v_name, method, depth_i, depth_max, v_typ
if not (v_mins == [] or v_maxs == []):
if not val_nested_list(v_input[i], v_name, method, depth_i + 1, depth_max, v_type, v_mins[depth_i + 1], v_mins, v_maxs[depth_i + 1], v_maxs, suppress_errors, suppress_console_outputs, allow_nuns, v_arg_type):
if not suppress_console_outputs:
- print(error_msg)
+ Helper_App.console_log(error_msg)
return False
elif not v_mins == []:
if not val_nested_list(v_input[i], v_name, method, depth_i + 1, depth_max, v_type, v_mins[depth_i + 1], v_mins, -1, v_maxs, suppress_errors, suppress_console_outputs, allow_nuns, v_arg_type):
if not suppress_console_outputs:
- print(error_msg)
+ Helper_App.console_log(error_msg)
return False
elif not v_maxs == []:
if not val_nested_list(v_input[i], v_name, method, depth_i + 1, depth_max, v_type, -1, v_mins, v_maxs[depth_i + 1], v_maxs, suppress_errors, suppress_console_outputs, allow_nuns, v_arg_type):
if not suppress_console_outputs:
- print(error_msg)
+ Helper_App.console_log(error_msg)
return False
else:
if not val_nested_list(v_input[i], v_name, method, depth_i + 1, depth_max, v_type, -1, v_mins, -1, v_maxs, suppress_errors, suppress_console_outputs, allow_nuns, v_arg_type):
if not suppress_console_outputs:
- print(error_msg)
+ Helper_App.console_log(error_msg)
return False
# RETURNS
return True
@@ -1183,7 +1166,7 @@ def val_url(v_input, v_name, method, min_len = 12, max_len = -1, suppress_errors
v_type = ""
val_bool(suppress_errors, 'suppress_errors', _m)
if not val_bool(suppress_console_outputs, 'suppress_console_outputs', _m, suppress_errors):
- print(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', _m, ""))
+ Helper_App.console_log(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', _m, ""))
return False
# method
if not val_str(method, 'method', _m, -1, -1, suppress_errors, suppress_console_outputs): return False
@@ -1203,7 +1186,7 @@ def val_url(v_input, v_name, method, min_len = 12, max_len = -1, suppress_errors
if not (v_input[:8] == r'https://' or v_input[:7] == r'http://'):
if suppress_errors:
if not suppress_console_outputs:
- print(error_msg)
+ Helper_App.console_log(error_msg)
return False
raise ValueError(error_msg)
# RETURNS
@@ -1243,7 +1226,7 @@ def val_DataFrame(v_input, v_name, method, v_types=[], min_col=-1, max_col=-1, c
my_f = 'val_DataFrame'
val_bool(suppress_errors, 'suppress_errors', my_f)
if not val_bool(suppress_console_outputs, 'suppress_console_outputs', my_f, suppress_errors):
- print(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, ""))
+ Helper_App.console_log(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, ""))
return False
# method
if not val_str(method, 'method', my_f, 1, -1, suppress_errors, suppress_console_outputs): return False
@@ -1264,14 +1247,14 @@ def val_DataFrame(v_input, v_name, method, v_types=[], min_col=-1, max_col=-1, c
if not (val_list(v_types, 'v_types', my_f, "", min_col, max_col, True, True, True) or v_types == []):
error_msg = error_msg_str(v_types, 'v_types', my_f, str)
if not suppress_console_outputs:
- print(error_msg)
+ Helper_App.console_log(error_msg)
return False
raise ValueError(error_msg)
# cols
if not (val_list(cols, 'cols', my_f, "", min_col, max_col, True, True) or cols == []):
error_msg = error_msg_str(cols, 'cols', my_f, "")
if not suppress_console_outputs:
- print(error_msg)
+ Helper_App.console_log(error_msg)
return False
raise ValueError(error_msg)
# v_input
@@ -1282,14 +1265,14 @@ def val_DataFrame(v_input, v_name, method, v_types=[], min_col=-1, max_col=-1, c
if (min_col > 0 and n_c < min_col) or (max_col > 0 and n_c > max_col):
if suppress_errors:
if not suppress_console_outputs:
- print(error_msg)
+ Helper_App.console_log(error_msg)
return False
raise ValueError(error_msg)
my_sz = len(v_input.index)
if (min_sz > 0 and my_sz < min_sz) or (max_sz > 0 and my_sz > max_sz):
if suppress_errors:
if not suppress_console_outputs:
- print(error_msg)
+ Helper_App.console_log(error_msg)
return False
raise ValueError(error_msg)
if not v_types == []:
@@ -1297,7 +1280,7 @@ def val_DataFrame(v_input, v_name, method, v_types=[], min_col=-1, max_col=-1, c
if not (v_types[col_i] == None or str(type(v_types[col_i])) == "" and val_type(v_input.at[0, v_input.columns[col_i]], 'v_input.at[0, v_input.columns[col_i]]', my_f, v_types[col_i], True, False) or val_instance(v_input.at[0, v_input.columns[col_i]], 'v_input.at[0, v_input.columns[col_i]]', my_f, v_types[col_i], True, False)): # str(type(v_input[v_input.columns[col_i]][0])) == v_types[col_i] or v_types[col_i] == '':
if suppress_errors:
if not suppress_console_outputs:
- print(error_msg + f'\nInvalid data type {str(type(v_input.at[0, v_input.columns[col_i]]))} in column {v_input.columns[col_i]}')
+ Helper_App.console_log(error_msg + f'\nInvalid data type {str(type(v_input.at[0, v_input.columns[col_i]]))} in column {v_input.columns[col_i]}')
return False
raise ValueError(error_msg + f'\nInvalid data type {str(type(v_input.at[0, v_input.columns[col_i]]))} in column {v_input.columns[col_i]}')
if not cols == []:
@@ -1305,7 +1288,7 @@ def val_DataFrame(v_input, v_name, method, v_types=[], min_col=-1, max_col=-1, c
if not v_input.columns[col_i] == cols[col_i] or cols[col_i] == '':
if suppress_errors:
if not suppress_console_outputs:
- print(error_msg + f'\nInvalid column heading for column {v_input.columns[col_i]}')
+ Helper_App.console_log(error_msg + f'\nInvalid column heading for column {v_input.columns[col_i]}')
return False
raise ValueError(error_msg + f'\nInvalid column heading for column {v_input.columns[col_i]}')
# RETURNS
@@ -1314,5 +1297,5 @@ def val_DataFrame(v_input, v_name, method, v_types=[], min_col=-1, max_col=-1, c
if __name__ == '__main__':
- print(input_bool('true', 'input_bool', 'test'))
- print(input_bool(None, 'input_bool', 'test'))
\ No newline at end of file
+ Helper_App.console_log(input_bool('true', 'input_bool', 'test'))
+ Helper_App.console_log(input_bool(None, 'input_bool', 'test'))
\ No newline at end of file
diff --git a/models/__pycache__/model_view_admin.cpython-312.pyc b/models/__pycache__/model_view_admin.cpython-312.pyc
index b3c78373..0fcbd85c 100644
Binary files a/models/__pycache__/model_view_admin.cpython-312.pyc and b/models/__pycache__/model_view_admin.cpython-312.pyc differ
diff --git a/models/__pycache__/model_view_base.cpython-312.pyc b/models/__pycache__/model_view_base.cpython-312.pyc
index 714e3dd8..3b0071b4 100644
Binary files a/models/__pycache__/model_view_base.cpython-312.pyc and b/models/__pycache__/model_view_base.cpython-312.pyc differ
diff --git a/models/__pycache__/model_view_store.cpython-312.pyc b/models/__pycache__/model_view_store.cpython-312.pyc
index fabac8d7..f9cb0397 100644
Binary files a/models/__pycache__/model_view_store.cpython-312.pyc and b/models/__pycache__/model_view_store.cpython-312.pyc differ
diff --git a/models/__pycache__/model_view_store_product.cpython-312.pyc b/models/__pycache__/model_view_store_product.cpython-312.pyc
index adf0be07..81c1885d 100644
Binary files a/models/__pycache__/model_view_store_product.cpython-312.pyc and b/models/__pycache__/model_view_store_product.cpython-312.pyc differ
diff --git a/models/__pycache__/model_view_store_product_category.cpython-312.pyc b/models/__pycache__/model_view_store_product_category.cpython-312.pyc
index 3fd6ccd4..365fc9e8 100644
Binary files a/models/__pycache__/model_view_store_product_category.cpython-312.pyc and b/models/__pycache__/model_view_store_product_category.cpython-312.pyc differ
diff --git a/models/__pycache__/model_view_store_product_permutation.cpython-312.pyc b/models/__pycache__/model_view_store_product_permutation.cpython-312.pyc
index ebeed7d2..e04f3cd9 100644
Binary files a/models/__pycache__/model_view_store_product_permutation.cpython-312.pyc and b/models/__pycache__/model_view_store_product_permutation.cpython-312.pyc differ
diff --git a/models/__pycache__/model_view_store_stock_item.cpython-312.pyc b/models/__pycache__/model_view_store_stock_item.cpython-312.pyc
index b3f29103..4d82ac2c 100644
Binary files a/models/__pycache__/model_view_store_stock_item.cpython-312.pyc and b/models/__pycache__/model_view_store_stock_item.cpython-312.pyc differ
diff --git a/models/__pycache__/model_view_store_supplier.cpython-312.pyc b/models/__pycache__/model_view_store_supplier.cpython-312.pyc
index c73b5cd9..2e6ea43a 100644
Binary files a/models/__pycache__/model_view_store_supplier.cpython-312.pyc and b/models/__pycache__/model_view_store_supplier.cpython-312.pyc differ
diff --git a/models/model_view_admin.py b/models/model_view_admin.py
index 59994d84..9e87f03d 100644
--- a/models/model_view_admin.py
+++ b/models/model_view_admin.py
@@ -11,6 +11,7 @@ Data model for store permutations view
"""
# internal
+from helpers.helper_app import Helper_App
from models.model_view_base import Model_View_Base
# external
@@ -21,5 +22,5 @@ class Model_View_Admin(Model_View_Base):
def __init__(self, hash_page_current, **kwargs):
_m = 'Model_View_Admin.__init__'
- print(f'{_m}\nstarting')
+ Helper_App.console_log(f'{_m}\nstarting')
super().__init__(hash_page_current=hash_page_current, **kwargs)
\ No newline at end of file
diff --git a/models/model_view_base.py b/models/model_view_base.py
index 75476cf3..7fd72e6f 100644
--- a/models/model_view_base.py
+++ b/models/model_view_base.py
@@ -17,15 +17,16 @@ Base data model for views
# IMPORTS
# internal
# from routes import bp_home
-import lib.argument_validation as av
-from forms.forms import Form_Is_Included_VAT, Form_Delivery_Region, Form_Currency
-from datastores.datastore_base import DataStore_Base
-from datastores.datastore_user import DataStore_User
from business_objects.base import Base
from business_objects.store.product_category import Product_Category
-from forms.access_level import Filters_Access_Level
-from forms.unit_measurement import Filters_Unit_Measurement
from business_objects.user import User, User_Filters
+from datastores.datastore_base import DataStore_Base
+from datastores.datastore_user import DataStore_User
+from forms.access_level import Filters_Access_Level
+from forms.forms import Form_Is_Included_VAT, Form_Delivery_Region, Form_Currency
+from forms.unit_measurement import Filters_Unit_Measurement
+from helpers.helper_app import Helper_App
+import lib.argument_validation as av
# external
from abc import ABC, abstractmethod
from flask_sqlalchemy import SQLAlchemy
@@ -243,7 +244,7 @@ class Model_View_Base(BaseModel, ABC):
# Initialiser - validation
_m = 'Model_View_Base.__new__'
v_arg_type = 'class attribute'
- print(f'{_m}\nstarting')
+ Helper_App.console_log(f'{_m}\nstarting')
# return super().__new__(cls, *args, **kwargs)
av.val_instance(db, 'db', _m, SQLAlchemy, v_arg_type=v_arg_type)
return super(Model_View_Base, cls).__new__(cls)
@@ -253,7 +254,7 @@ class Model_View_Base(BaseModel, ABC):
"""
_m = 'Model_View_Base.__init__'
v_arg_type = 'class attribute'
- print(f'{_m}\nstarting')
+ Helper_App.console_log(f'{_m}\nstarting')
av.val_instance(db, 'db', _m, SQLAlchemy, v_arg_type=v_arg_type)
"""
BaseModel.__init__(self, hash_page_current=hash_page_current, **kwargs)
@@ -261,9 +262,9 @@ class Model_View_Base(BaseModel, ABC):
self.db = db
self.session = session
info_user = self.get_info_user()
- print(f'info_user: {info_user}\ntype: {str(type(info_user))}')
+ Helper_App.console_log(f'info_user: {info_user}\ntype: {str(type(info_user))}')
self.is_user_logged_in = ('sub' in list(info_user.keys()) and not info_user['sub'] == '' and not str(type(info_user['sub'])) == " 0: # not (categories is None):
for category in category_list.categories:
@@ -404,8 +405,8 @@ class Model_View_Store(Model_View_Base):
if len(items) > 0:
for index_item in range(len(items)):
"""
- print(f'basket data: {json_data}')
- print(f'basket: {self.basket}')
+ Helper_App.console_log(f'basket data: {json_data}')
+ Helper_App.console_log(f'basket: {self.basket}')
# ids_permutation_unavailable_region_or_currency = []
# id_permutation_unavailable_otherwise = []
@@ -445,11 +446,11 @@ class Model_View_Store(Model_View_Base):
def import_JSON_basket_item(self, json_data, form_basket = None):
_m = 'Model_View_Store.import_JSON_basket_item'
- print(f'starting {_m}')
- # print('getting product id')
+ Helper_App.console_log(f'starting {_m}')
+ # Helper_App.console_log('getting product id')
# product_id = av.input_int(json_data[self.key_id_product], self.key_id_product, _m)
- # print(f'product id: {product_id}, type: {str(type(product_id))}')
+ # Helper_App.console_log(f'product id: {product_id}, type: {str(type(product_id))}')
try:
permutation_id = json_data[self.KEY_ID_PERMUTATION]
av.full_val_int(permutation_id, self.KEY_ID_PERMUTATION, _m)
@@ -457,21 +458,21 @@ class Model_View_Store(Model_View_Base):
except:
permutation_id = None
if not permutation_id == 'None':
- print(f'permutation_id invalid: {permutation_id}')
+ Helper_App.console_log(f'permutation_id invalid: {permutation_id}')
raise ValueError("Invalid permutation id")
- print(f'permutation_id: {permutation_id}')
+ Helper_App.console_log(f'permutation_id: {permutation_id}')
try:
- print(f'form_basket: {form_basket}')
- print('getting quantity')
- print(f'form_basket.quantity: {form_basket.quantity}')
- print(f'form_basket.quantity.data: {form_basket.quantity.data}')
+ Helper_App.console_log(f'form_basket: {form_basket}')
+ Helper_App.console_log('getting quantity')
+ Helper_App.console_log(f'form_basket.quantity: {form_basket.quantity}')
+ Helper_App.console_log(f'form_basket.quantity.data: {form_basket.quantity.data}')
quantity = int(form_basket.quantity.data)
except:
quantity = 0
- print(f'quantity: {quantity}')
+ Helper_App.console_log(f'quantity: {quantity}')
- print(f'permutation_id: {permutation_id}\nquantity: {quantity}')
+ Helper_App.console_log(f'permutation_id: {permutation_id}\nquantity: {quantity}')
return permutation_id, quantity
diff --git a/models/model_view_store_manufacturing_purchase_order.py b/models/model_view_store_manufacturing_purchase_order.py
index 92658044..0c5693a1 100644
--- a/models/model_view_store_manufacturing_purchase_order.py
+++ b/models/model_view_store_manufacturing_purchase_order.py
@@ -17,6 +17,7 @@ from business_objects.store.product import Product, Parameters_Product
from business_objects.store.product_category import Product_Category_Container
from business_objects.store.manufacturing_purchase_order import Manufacturing_Purchase_Order, Parameters_Manufacturing_Purchase_Order, Manufacturing_Purchase_Order_Product_Link
from forms.store.manufacturing_purchase_order import Filters_Manufacturing_Purchase_Order
+from helpers.helper_app import Helper_App
import lib.argument_validation as av
# external
from typing import ClassVar
@@ -41,7 +42,7 @@ class Model_View_Store_Manufacturing_Purchase_Order(Model_View_Store):
def __init__(self, form_filters_old, hash_page_current=Model_View_Store.HASH_PAGE_STORE_MANUFACTURING_PURCHASE_ORDERS):
_m = 'Model_View_Store_Manufacturing.__init__'
- print(f'{_m}\nstarting...')
+ Helper_App.console_log(f'{_m}\nstarting...')
super().__init__(hash_page_current = hash_page_current, form_filters_old = form_filters_old)
self.form_filters = form_filters_old # Filters_Manufacturing_Purchase_Order.from_json(form_filters_old.to_json())
parameters_manufacturing_purchase_order = Parameters_Manufacturing_Purchase_Order.from_filters_manufacturing_purchase_order(form_filters_old)
diff --git a/models/model_view_store_product.py b/models/model_view_store_product.py
index e5c42ed2..7f61251e 100644
--- a/models/model_view_store_product.py
+++ b/models/model_view_store_product.py
@@ -21,6 +21,7 @@ from business_objects.store.product_category import Product_Category_Container
from datastores.datastore_store_product import DataStore_Store_Product
from forms.access_level import Filters_Access_Level
from forms.store.product import Filters_Product
+from helpers.helper_app import Helper_App
from models.model_view_store import Model_View_Store
# from routes import bp_home
import lib.argument_validation as av
@@ -40,9 +41,9 @@ class Model_View_Store_Product(Model_View_Store):
def __init__(self, id_permutation, id_currency, id_region_delivery, is_included_VAT, hash_page_current=Model_View_Store.HASH_PAGE_STORE_PRODUCTS):
# Constructor
_m = 'Model_View_Store_Product.__init__'
- print(f'{_m}\nstarting...')
+ Helper_App.console_log(f'{_m}\nstarting...')
super().__init__(hash_page_current=hash_page_current, id_currency=id_currency, id_region_delivery=id_region_delivery, is_included_VAT=is_included_VAT)
- print('supered')
+ Helper_App.console_log('supered')
category_list = DataStore_Store_Base().get_many_product(Parameters_Product(
self.info_user['sub'],
@@ -54,7 +55,7 @@ class Model_View_Store_Product(Model_View_Store):
False, str(id_currency), False,
True, '', False
)) # product_ids=str(id_product), permutation_ids=str(id_permutation))
- print('connection to db successful')
+ Helper_App.console_log('connection to db successful')
# self.categories = categories
# self.category_index = category_index
""
@@ -62,7 +63,7 @@ class Model_View_Store_Product(Model_View_Store):
self.product = category_list.get_permutation_first()
else:
self.product = None
- print('selected permutation selected')
+ Helper_App.console_log('selected permutation selected')
""
"""
@@ -88,7 +89,7 @@ class Model_View_Store_Product(Model_View_Store):
def __init__(self, form_filters, hash_page_current=Model_View_Store.HASH_PAGE_STORE_PRODUCTS):
_m = 'Model_View_Store_Product.__init__'
- print(f'{_m}\nstarting...')
+ Helper_App.console_log(f'{_m}\nstarting...')
super().__init__(hash_page_current=hash_page_current, form_filters=form_filters)
self.access_levels = self.get_many_access_level(Filters_Access_Level())
parameters_product = Parameters_Product.from_form_filters_product(self.form_filters)
@@ -97,7 +98,7 @@ class Model_View_Store_Product(Model_View_Store):
countProducts = 0
for category in self.category_list.categories:
countProducts += len(category.products)
- print(f'category count: {len(self.category_list.categories)}\nproduct count: {countProducts}')
+ Helper_App.console_log(f'category count: {len(self.category_list.categories)}\nproduct count: {countProducts}')
self.category_list_filters, errors_filters = datastore_store.get_many_product(
Parameters_Product(
get_all_product_category = True,
@@ -115,16 +116,16 @@ class Model_View_Store_Product(Model_View_Store):
get_products_quantity_stock_below_min = parameters_product.get_products_quantity_stock_below_min
)
)
- print(f'category filters: {self.category_list_filters.categories}')
+ Helper_App.console_log(f'category filters: {self.category_list_filters.categories}')
self.form_filters.id_category.choices += [(str(category.id_category), category.name) for category in self.category_list_filters.categories]
- print(f'category options: {self.form_filters.id_category.choices}')
+ Helper_App.console_log(f'category options: {self.form_filters.id_category.choices}')
self.variation_types, self.variations, errors = self.get_many_product_variation()
self.units_measurement = self.get_many_unit_measurement()
self.units_measurement_time = [unit_measurement for unit_measurement in self.units_measurement if unit_measurement.is_unit_of_time]
self.currencies = self.get_many_currency()
self.currency_options = [currency.to_json_option() for currency in self.currencies]
- print(f'category count: {len(self.category_list.categories)}\nproduct count: {countProducts}')
+ Helper_App.console_log(f'category count: {len(self.category_list.categories)}\nproduct count: {countProducts}')
@staticmethod
def save_products(comment, list_products):
_m = 'Model_View_Store_Product.save_products'
diff --git a/models/model_view_store_product_category.py b/models/model_view_store_product_category.py
index 58d55f10..92a78ac8 100644
--- a/models/model_view_store_product_category.py
+++ b/models/model_view_store_product_category.py
@@ -21,6 +21,7 @@ from forms.store.product_category import Filters_Product_Category
# from routes import bp_home
from business_objects.store.product import Product, Parameters_Product, Product_Permutation
from business_objects.store.product_variation import Product_Variation_Container
+from helpers.helper_app import Helper_App
import lib.argument_validation as av
# external
@@ -40,7 +41,7 @@ class Model_View_Store_Product_Category(Model_View_Store):
def __init__(self, form_filters, hash_page_current=Model_View_Store.HASH_PAGE_STORE_PRODUCT_CATEGORIES):
_m = 'Model_View_Store_Product_Category.__init__'
- print(f'{_m}\nstarting...')
+ Helper_App.console_log(f'{_m}\nstarting...')
super().__init__(hash_page_current=hash_page_current, form_filters=form_filters) # filters_category=filters_category)
# BaseModel.__init__(self, app=app, filters_product=filters_product, **kwargs)
self.access_levels = self.get_many_access_level(Filters_Access_Level())
diff --git a/models/model_view_store_product_permutation.py b/models/model_view_store_product_permutation.py
index 70bfea99..d43724a4 100644
--- a/models/model_view_store_product_permutation.py
+++ b/models/model_view_store_product_permutation.py
@@ -18,6 +18,7 @@ from forms.store.product_permutation import Filters_Product_Permutation
# from routes import bp_home
from business_objects.store.product import Product, Parameters_Product, Product_Permutation
from business_objects.store.product_variation import Product_Variation_Container
+from helpers.helper_app import Helper_App
import lib.argument_validation as av
# external
@@ -44,7 +45,7 @@ class Model_View_Store_Product_Permutation(Model_View_Store):
def __init__(self, form_filters, hash_page_current=Model_View_Store.HASH_PAGE_STORE_PRODUCT_PERMUTATIONS):
_m = 'Model_View_Store_Permutation.__init__'
- print(f'{_m}\nstarting...')
+ Helper_App.console_log(f'{_m}\nstarting...')
super().__init__(hash_page_current=hash_page_current, form_filters=form_filters)
# self.form_filters = Filters_Product_Permutation()
filters_product = Parameters_Product.from_form_filters_product_permutation(self.form_filters)
@@ -67,11 +68,11 @@ class Model_View_Store_Product_Permutation(Model_View_Store):
get_products_quantity_stock_below_min = filters_product.get_products_quantity_stock_below_min
)
)
- print(f'category filters: {self.category_list_filters.categories}')
+ Helper_App.console_log(f'category filters: {self.category_list_filters.categories}')
self.form_filters.id_category.choices += [(str(category.id_category), category.name) for category in self.category_list_filters.categories]
- print(f'category options: {self.form_filters.id_category.choices}')
+ Helper_App.console_log(f'category options: {self.form_filters.id_category.choices}')
self.list_options_product = self.category_list_filters.to_product_option_list()
- print(f'product options: {self.list_options_product}')
+ Helper_App.console_log(f'product options: {self.list_options_product}')
self.form_filters.id_product.choices += [(str(product['value']), product['text']) for product in self.list_options_product]
self.variation_types, self.variations, errors = self.get_many_product_variation()
self.units_measurement = self.get_many_unit_measurement()
diff --git a/models/model_view_store_stock_item.py b/models/model_view_store_stock_item.py
index 0b6c726a..74b7b237 100644
--- a/models/model_view_store_stock_item.py
+++ b/models/model_view_store_stock_item.py
@@ -18,6 +18,7 @@ from business_objects.store.product_category import Product_Category_Container
from business_objects.store.product import Product, Parameters_Product, Product_Permutation
from business_objects.store.stock_item import Stock_Item, Parameters_Stock_Item
from forms.store.stock_item import Filters_Stock_Item
+from helpers.helper_app import Helper_App
import lib.argument_validation as av
# external
@@ -43,7 +44,7 @@ class Model_View_Store_Stock_Item(Model_View_Store):
def __init__(self, filters_stock_item, hash_page_current=Model_View_Store.HASH_PAGE_STORE_STOCK_ITEMS):
_m = 'Model_View_Store_Stock_Item.__init__'
- print(f'{_m}\nstarting...')
+ Helper_App.console_log(f'{_m}\nstarting...')
super().__init__(hash_page_current=hash_page_current, filters_stock_item=filters_stock_item)
# BaseModel.__init__(self, app=app, filters_stock_item=filters_stock_item, **kwargs)
self.form_filters = Filters_Stock_Item.from_json(filters_stock_item.to_json()) # .from_form_stock_item(filters_stock_item)
@@ -68,17 +69,17 @@ class Model_View_Store_Stock_Item(Model_View_Store):
)
"""
- print(f'category_list_filters: {self.category_list_filters.categories}')
+ Helper_App.console_log(f'category_list_filters: {self.category_list_filters.categories}')
self.form_filters.id_category.choices += [(str(category.id_category), category.name) for category in self.category_list_filters.categories] # [Filters_Stock_Item.get_choice_all()] +
- print(f'category options: {self.form_filters.id_category.choices}')
+ Helper_App.console_log(f'category options: {self.form_filters.id_category.choices}')
product_list = self.category_list_filters.to_product_option_list()
filtered_product_list = []
if product_list is not None:
for product in product_list:
- # print(f'product: {product}\n{product[Stock_Item.ATTR_ID_PRODUCT_CATEGORY]}\n{self.form_filters.id_category.data}\n{str(type(product[Stock_Item.ATTR_ID_PRODUCT_CATEGORY]))}\n{str(type(self.form_filters.id_category.data))}')
+ # Helper_App.console_log(f'product: {product}\n{product[Stock_Item.ATTR_ID_PRODUCT_CATEGORY]}\n{self.form_filters.id_category.data}\n{str(type(product[Stock_Item.ATTR_ID_PRODUCT_CATEGORY]))}\n{str(type(self.form_filters.id_category.data))}')
if (self.form_filters.id_category.data == '' or str(product[Stock_Item.ATTR_ID_PRODUCT_CATEGORY]) == self.form_filters.id_category.data):
filtered_product_list.append(product)
- print(f'product_list: {product_list}\nfiltered_product_list: {filtered_product_list}')
+ Helper_App.console_log(f'product_list: {product_list}\nfiltered_product_list: {filtered_product_list}')
self.form_filters.id_product.choices += [(str(product['value']), product['text']) for product in filtered_product_list] # [Filters_Stock_Item.get_choice_all()] +
# self.form_filters.import_values(filters_stock_item)
self.variation_types, self.variations, errors = self.get_many_product_variation()
diff --git a/models/model_view_store_supplier.py b/models/model_view_store_supplier.py
index d9bf074a..f44cae90 100644
--- a/models/model_view_store_supplier.py
+++ b/models/model_view_store_supplier.py
@@ -15,6 +15,7 @@ from models.model_view_store import Model_View_Store
from datastores.datastore_store_supplier import DataStore_Store_Supplier
from business_objects.store.supplier import Supplier, Parameters_Supplier
from forms.store.supplier import Filters_Supplier
+from helpers.helper_app import Helper_App
import lib.argument_validation as av
# external
from typing import ClassVar
@@ -39,7 +40,7 @@ class Model_View_Store_Supplier(Model_View_Store):
def __init__(self, form_filters_old, hash_page_current=Model_View_Store.HASH_PAGE_STORE_SUPPLIERS):
_m = 'Model_View_Store_Supplier.__init__'
- print(f'{_m}\nstarting...')
+ Helper_App.console_log(f'{_m}\nstarting...')
super().__init__(hash_page_current = hash_page_current, form_filters_old = form_filters_old)
self.form_filters = form_filters_old # Filters_Supplier.from_json(form_filters_old.to_json())
parameters_supplier = Parameters_Supplier.from_filters_supplier(self.form_filters)
diff --git a/models/model_view_store_supplier_purchase_order.py b/models/model_view_store_supplier_purchase_order.py
index 17ed23ef..86b0e3d1 100644
--- a/models/model_view_store_supplier_purchase_order.py
+++ b/models/model_view_store_supplier_purchase_order.py
@@ -19,6 +19,7 @@ from business_objects.store.product_category import Product_Category_Container
from business_objects.store.supplier import Supplier, Parameters_Supplier
from business_objects.store.supplier_purchase_order import Supplier_Purchase_Order, Parameters_Supplier_Purchase_Order
from forms.store.supplier_purchase_order import Filters_Supplier_Purchase_Order
+from helpers.helper_app import Helper_App
import lib.argument_validation as av
class Model_View_Store_Supplier_Purchase_Order(Model_View_Store):
@@ -40,7 +41,7 @@ class Model_View_Store_Supplier_Purchase_Order(Model_View_Store):
def __init__(self, form_filters_old, hash_page_current=Model_View_Store.HASH_PAGE_STORE_SUPPLIER_PURCHASE_ORDERS):
_m = 'Model_View_Store_Supplier.__init__'
- print(f'{_m}\nstarting...')
+ Helper_App.console_log(f'{_m}\nstarting...')
super().__init__(hash_page_current = hash_page_current, form_filters_old = form_filters_old)
self.form_filters = form_filters_old # Filters_Supplier_Purchase_Order.from_json(form_filters_old.to_json())
parameters_supplier_purchase_order = Parameters_Supplier_Purchase_Order.from_filters_supplier_purchase_order(self.form_filters)
diff --git a/static/MySQL/0000_combine.sql b/static/MySQL/0000_combine.sql
index 72546d6d..92f5ec7f 100644
--- a/static/MySQL/0000_combine.sql
+++ b/static/MySQL/0000_combine.sql
@@ -185,6 +185,7 @@ DROP TABLE IF EXISTS Shop_Interval_Recurrence;
DROP TABLE IF EXISTS Shop_Product_Audit;
DROP TABLE IF EXISTS Shop_Product;
+DROP TABLE IF EXISTS Shop_Product_Temp;
DROP TABLE IF EXISTS Shop_Product_Category_Temp;
DROP TABLE IF EXISTS Shop_Product_Category_Audit;
diff --git a/static/MySQL/0001_destroy.sql b/static/MySQL/0001_destroy.sql
index b6db35f0..09004599 100644
--- a/static/MySQL/0001_destroy.sql
+++ b/static/MySQL/0001_destroy.sql
@@ -185,6 +185,7 @@ DROP TABLE IF EXISTS Shop_Interval_Recurrence;
DROP TABLE IF EXISTS Shop_Product_Audit;
DROP TABLE IF EXISTS Shop_Product;
+DROP TABLE IF EXISTS Shop_Product_Temp;
DROP TABLE IF EXISTS Shop_Product_Category_Temp;
DROP TABLE IF EXISTS Shop_Product_Category_Audit;
diff --git a/static/MySQL/7204_p_shop_get_many_product.sql b/static/MySQL/7204_p_shop_get_many_product.sql
index 46308a04..3edba3cd 100644
--- a/static/MySQL/7204_p_shop_get_many_product.sql
+++ b/static/MySQL/7204_p_shop_get_many_product.sql
@@ -486,7 +486,7 @@ CALL partsltd_prod.p_shop_get_many_product (
, 0 # a_get_inactive_image
, '' # a_ids_image
, 0 # a_get_products_quantity_stock_below_minimum
- , 1 # a_debug
+ , 0 # a_debug
);
select * FROM partsltd_prod.Shop_Calc_User_Temp;
diff --git a/static/dist/js/core_admin_home.bundle.js b/static/dist/js/core_admin_home.bundle.js
index 0b10a0f4..00f64005 100644
--- a/static/dist/js/core_admin_home.bundle.js
+++ b/static/dist/js/core_admin_home.bundle.js
@@ -1 +1 @@
-(()=>{"use strict";var r,e={561:()=>{},711:()=>{}},o={};function t(r){var a=o[r];if(void 0!==a)return a.exports;var n=o[r]={exports:{}};return e[r](n,n.exports,t),n.exports}t.m=e,r=[],t.O=(e,o,a,n)=>{if(!o){var i=1/0;for(f=0;f=n)&&Object.keys(t.O).every((r=>t.O[r](o[v])))?o.splice(v--,1):(p=!1,n0&&r[f-1][2]>n;f--)r[f]=r[f-1];r[f]=[o,a,n]},t.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={780:0,466:0};t.O.j=e=>0===r[e];var e=(e,o)=>{var a,n,[i,p,v]=o,s=0;if(i.some((e=>0!==r[e]))){for(a in p)t.o(p,a)&&(t.m[a]=p[a]);if(v)var f=v(t)}for(e&&e(o);st(711)));var a=t.O(void 0,[466],(()=>t(561)));a=t.O(a)})();
\ No newline at end of file
+(()=>{"use strict";var r,e={497:()=>{},647:()=>{}},o={};function t(r){var a=o[r];if(void 0!==a)return a.exports;var n=o[r]={exports:{}};return e[r](n,n.exports,t),n.exports}t.m=e,r=[],t.O=(e,o,a,n)=>{if(!o){var i=1/0;for(f=0;f=n)&&Object.keys(t.O).every((r=>t.O[r](o[v])))?o.splice(v--,1):(p=!1,n0&&r[f-1][2]>n;f--)r[f]=r[f-1];r[f]=[o,a,n]},t.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={780:0,564:0};t.O.j=e=>0===r[e];var e=(e,o)=>{var a,n,[i,p,v]=o,s=0;if(i.some((e=>0!==r[e]))){for(a in p)t.o(p,a)&&(t.m[a]=p[a]);if(v)var f=v(t)}for(e&&e(o);st(647)));var a=t.O(void 0,[564],(()=>t(497)));a=t.O(a)})();
\ No newline at end of file
diff --git a/static/dist/js/core_contact.bundle.js b/static/dist/js/core_contact.bundle.js
index d4d47ca1..f21b4165 100644
--- a/static/dist/js/core_contact.bundle.js
+++ b/static/dist/js/core_contact.bundle.js
@@ -1 +1 @@
-(()=>{"use strict";var r,e={278:()=>{},711:()=>{}},o={};function t(r){var a=o[r];if(void 0!==a)return a.exports;var n=o[r]={exports:{}};return e[r](n,n.exports,t),n.exports}t.m=e,r=[],t.O=(e,o,a,n)=>{if(!o){var i=1/0;for(f=0;f=n)&&Object.keys(t.O).every((r=>t.O[r](o[v])))?o.splice(v--,1):(p=!1,n0&&r[f-1][2]>n;f--)r[f]=r[f-1];r[f]=[o,a,n]},t.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={775:0,466:0};t.O.j=e=>0===r[e];var e=(e,o)=>{var a,n,[i,p,v]=o,s=0;if(i.some((e=>0!==r[e]))){for(a in p)t.o(p,a)&&(t.m[a]=p[a]);if(v)var f=v(t)}for(e&&e(o);st(711)));var a=t.O(void 0,[466],(()=>t(278)));a=t.O(a)})();
\ No newline at end of file
+(()=>{"use strict";var r,e={206:()=>{},647:()=>{}},o={};function t(r){var a=o[r];if(void 0!==a)return a.exports;var n=o[r]={exports:{}};return e[r](n,n.exports,t),n.exports}t.m=e,r=[],t.O=(e,o,a,n)=>{if(!o){var i=1/0;for(f=0;f=n)&&Object.keys(t.O).every((r=>t.O[r](o[v])))?o.splice(v--,1):(p=!1,n0&&r[f-1][2]>n;f--)r[f]=r[f-1];r[f]=[o,a,n]},t.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={775:0,564:0};t.O.j=e=>0===r[e];var e=(e,o)=>{var a,n,[i,p,v]=o,s=0;if(i.some((e=>0!==r[e]))){for(a in p)t.o(p,a)&&(t.m[a]=p[a]);if(v)var f=v(t)}for(e&&e(o);st(647)));var a=t.O(void 0,[564],(()=>t(206)));a=t.O(a)})();
\ No newline at end of file
diff --git a/static/dist/js/core_home.bundle.js b/static/dist/js/core_home.bundle.js
index 332e8af7..d8e2bb30 100644
--- a/static/dist/js/core_home.bundle.js
+++ b/static/dist/js/core_home.bundle.js
@@ -1 +1 @@
-(()=>{"use strict";var r,e={805:()=>{},711:()=>{}},o={};function t(r){var a=o[r];if(void 0!==a)return a.exports;var n=o[r]={exports:{}};return e[r](n,n.exports,t),n.exports}t.m=e,r=[],t.O=(e,o,a,n)=>{if(!o){var i=1/0;for(f=0;f=n)&&Object.keys(t.O).every((r=>t.O[r](o[v])))?o.splice(v--,1):(p=!1,n0&&r[f-1][2]>n;f--)r[f]=r[f-1];r[f]=[o,a,n]},t.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={664:0,466:0};t.O.j=e=>0===r[e];var e=(e,o)=>{var a,n,[i,p,v]=o,s=0;if(i.some((e=>0!==r[e]))){for(a in p)t.o(p,a)&&(t.m[a]=p[a]);if(v)var f=v(t)}for(e&&e(o);st(711)));var a=t.O(void 0,[466],(()=>t(805)));a=t.O(a)})();
\ No newline at end of file
+(()=>{"use strict";var r,e={469:()=>{},647:()=>{}},o={};function t(r){var a=o[r];if(void 0!==a)return a.exports;var n=o[r]={exports:{}};return e[r](n,n.exports,t),n.exports}t.m=e,r=[],t.O=(e,o,a,n)=>{if(!o){var i=1/0;for(f=0;f=n)&&Object.keys(t.O).every((r=>t.O[r](o[v])))?o.splice(v--,1):(p=!1,n0&&r[f-1][2]>n;f--)r[f]=r[f-1];r[f]=[o,a,n]},t.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={664:0,564:0};t.O.j=e=>0===r[e];var e=(e,o)=>{var a,n,[i,p,v]=o,s=0;if(i.some((e=>0!==r[e]))){for(a in p)t.o(p,a)&&(t.m[a]=p[a]);if(v)var f=v(t)}for(e&&e(o);st(647)));var a=t.O(void 0,[564],(()=>t(469)));a=t.O(a)})();
\ No newline at end of file
diff --git a/static/dist/js/core_services.bundle.js b/static/dist/js/core_services.bundle.js
index ca86d769..392a8ef6 100644
--- a/static/dist/js/core_services.bundle.js
+++ b/static/dist/js/core_services.bundle.js
@@ -1 +1 @@
-(()=>{"use strict";var r,e={188:()=>{},711:()=>{}},o={};function t(r){var a=o[r];if(void 0!==a)return a.exports;var n=o[r]={exports:{}};return e[r](n,n.exports,t),n.exports}t.m=e,r=[],t.O=(e,o,a,n)=>{if(!o){var i=1/0;for(f=0;f=n)&&Object.keys(t.O).every((r=>t.O[r](o[v])))?o.splice(v--,1):(p=!1,n0&&r[f-1][2]>n;f--)r[f]=r[f-1];r[f]=[o,a,n]},t.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={405:0,466:0};t.O.j=e=>0===r[e];var e=(e,o)=>{var a,n,[i,p,v]=o,s=0;if(i.some((e=>0!==r[e]))){for(a in p)t.o(p,a)&&(t.m[a]=p[a]);if(v)var f=v(t)}for(e&&e(o);st(711)));var a=t.O(void 0,[466],(()=>t(188)));a=t.O(a)})();
\ No newline at end of file
+(()=>{"use strict";var r,e={396:()=>{},647:()=>{}},o={};function t(r){var a=o[r];if(void 0!==a)return a.exports;var n=o[r]={exports:{}};return e[r](n,n.exports,t),n.exports}t.m=e,r=[],t.O=(e,o,a,n)=>{if(!o){var i=1/0;for(f=0;f=n)&&Object.keys(t.O).every((r=>t.O[r](o[v])))?o.splice(v--,1):(p=!1,n0&&r[f-1][2]>n;f--)r[f]=r[f-1];r[f]=[o,a,n]},t.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={405:0,564:0};t.O.j=e=>0===r[e];var e=(e,o)=>{var a,n,[i,p,v]=o,s=0;if(i.some((e=>0!==r[e]))){for(a in p)t.o(p,a)&&(t.m[a]=p[a]);if(v)var f=v(t)}for(e&&e(o);st(647)));var a=t.O(void 0,[564],(()=>t(396)));a=t.O(a)})();
\ No newline at end of file
diff --git a/static/dist/js/legal_accessibility_statement.bundle.js b/static/dist/js/legal_accessibility_statement.bundle.js
index 7e20a39a..e053da60 100644
--- a/static/dist/js/legal_accessibility_statement.bundle.js
+++ b/static/dist/js/legal_accessibility_statement.bundle.js
@@ -1 +1 @@
-(()=>{"use strict";var r,e={780:()=>{},359:()=>{}},o={};function t(r){var a=o[r];if(void 0!==a)return a.exports;var n=o[r]={exports:{}};return e[r](n,n.exports,t),n.exports}t.m=e,r=[],t.O=(e,o,a,n)=>{if(!o){var i=1/0;for(f=0;f=n)&&Object.keys(t.O).every((r=>t.O[r](o[v])))?o.splice(v--,1):(p=!1,n0&&r[f-1][2]>n;f--)r[f]=r[f-1];r[f]=[o,a,n]},t.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={841:0,416:0};t.O.j=e=>0===r[e];var e=(e,o)=>{var a,n,[i,p,v]=o,s=0;if(i.some((e=>0!==r[e]))){for(a in p)t.o(p,a)&&(t.m[a]=p[a]);if(v)var f=v(t)}for(e&&e(o);st(359)));var a=t.O(void 0,[416],(()=>t(780)));a=t.O(a)})();
\ No newline at end of file
+(()=>{"use strict";var r,e={132:()=>{},807:()=>{}},o={};function t(r){var a=o[r];if(void 0!==a)return a.exports;var n=o[r]={exports:{}};return e[r](n,n.exports,t),n.exports}t.m=e,r=[],t.O=(e,o,a,n)=>{if(!o){var i=1/0;for(f=0;f=n)&&Object.keys(t.O).every((r=>t.O[r](o[v])))?o.splice(v--,1):(p=!1,n0&&r[f-1][2]>n;f--)r[f]=r[f-1];r[f]=[o,a,n]},t.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={841:0,830:0};t.O.j=e=>0===r[e];var e=(e,o)=>{var a,n,[i,p,v]=o,s=0;if(i.some((e=>0!==r[e]))){for(a in p)t.o(p,a)&&(t.m[a]=p[a]);if(v)var f=v(t)}for(e&&e(o);st(807)));var a=t.O(void 0,[830],(()=>t(132)));a=t.O(a)})();
\ No newline at end of file
diff --git a/static/dist/js/legal_license.bundle.js b/static/dist/js/legal_license.bundle.js
index 3ace2e9c..db4b3bc8 100644
--- a/static/dist/js/legal_license.bundle.js
+++ b/static/dist/js/legal_license.bundle.js
@@ -1 +1 @@
-(()=>{"use strict";var r,e={623:()=>{},359:()=>{}},o={};function t(r){var a=o[r];if(void 0!==a)return a.exports;var n=o[r]={exports:{}};return e[r](n,n.exports,t),n.exports}t.m=e,r=[],t.O=(e,o,a,n)=>{if(!o){var i=1/0;for(f=0;f=n)&&Object.keys(t.O).every((r=>t.O[r](o[v])))?o.splice(v--,1):(p=!1,n0&&r[f-1][2]>n;f--)r[f]=r[f-1];r[f]=[o,a,n]},t.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={690:0,416:0};t.O.j=e=>0===r[e];var e=(e,o)=>{var a,n,[i,p,v]=o,s=0;if(i.some((e=>0!==r[e]))){for(a in p)t.o(p,a)&&(t.m[a]=p[a]);if(v)var f=v(t)}for(e&&e(o);st(359)));var a=t.O(void 0,[416],(()=>t(623)));a=t.O(a)})();
\ No newline at end of file
+(()=>{"use strict";var r,e={527:()=>{},807:()=>{}},o={};function t(r){var a=o[r];if(void 0!==a)return a.exports;var n=o[r]={exports:{}};return e[r](n,n.exports,t),n.exports}t.m=e,r=[],t.O=(e,o,a,n)=>{if(!o){var i=1/0;for(f=0;f=n)&&Object.keys(t.O).every((r=>t.O[r](o[v])))?o.splice(v--,1):(p=!1,n0&&r[f-1][2]>n;f--)r[f]=r[f-1];r[f]=[o,a,n]},t.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={690:0,830:0};t.O.j=e=>0===r[e];var e=(e,o)=>{var a,n,[i,p,v]=o,s=0;if(i.some((e=>0!==r[e]))){for(a in p)t.o(p,a)&&(t.m[a]=p[a]);if(v)var f=v(t)}for(e&&e(o);st(807)));var a=t.O(void 0,[830],(()=>t(527)));a=t.O(a)})();
\ No newline at end of file
diff --git a/static/dist/js/legal_privacy_policy.bundle.js b/static/dist/js/legal_privacy_policy.bundle.js
index a1769ac5..f57bdd1c 100644
--- a/static/dist/js/legal_privacy_policy.bundle.js
+++ b/static/dist/js/legal_privacy_policy.bundle.js
@@ -1 +1 @@
-(()=>{"use strict";var r,e={713:()=>{},359:()=>{}},o={};function t(r){var a=o[r];if(void 0!==a)return a.exports;var n=o[r]={exports:{}};return e[r](n,n.exports,t),n.exports}t.m=e,r=[],t.O=(e,o,a,n)=>{if(!o){var i=1/0;for(f=0;f=n)&&Object.keys(t.O).every((r=>t.O[r](o[v])))?o.splice(v--,1):(p=!1,n0&&r[f-1][2]>n;f--)r[f]=r[f-1];r[f]=[o,a,n]},t.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={364:0,416:0};t.O.j=e=>0===r[e];var e=(e,o)=>{var a,n,[i,p,v]=o,s=0;if(i.some((e=>0!==r[e]))){for(a in p)t.o(p,a)&&(t.m[a]=p[a]);if(v)var f=v(t)}for(e&&e(o);st(359)));var a=t.O(void 0,[416],(()=>t(713)));a=t.O(a)})();
\ No newline at end of file
+(()=>{"use strict";var r,e={649:()=>{},807:()=>{}},o={};function t(r){var a=o[r];if(void 0!==a)return a.exports;var n=o[r]={exports:{}};return e[r](n,n.exports,t),n.exports}t.m=e,r=[],t.O=(e,o,a,n)=>{if(!o){var i=1/0;for(f=0;f=n)&&Object.keys(t.O).every((r=>t.O[r](o[v])))?o.splice(v--,1):(p=!1,n0&&r[f-1][2]>n;f--)r[f]=r[f-1];r[f]=[o,a,n]},t.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={364:0,830:0};t.O.j=e=>0===r[e];var e=(e,o)=>{var a,n,[i,p,v]=o,s=0;if(i.some((e=>0!==r[e]))){for(a in p)t.o(p,a)&&(t.m[a]=p[a]);if(v)var f=v(t)}for(e&&e(o);st(807)));var a=t.O(void 0,[830],(()=>t(649)));a=t.O(a)})();
\ No newline at end of file
diff --git a/static/dist/js/legal_retention_schedule.bundle.js b/static/dist/js/legal_retention_schedule.bundle.js
index db92da46..2aece662 100644
--- a/static/dist/js/legal_retention_schedule.bundle.js
+++ b/static/dist/js/legal_retention_schedule.bundle.js
@@ -1 +1 @@
-(()=>{"use strict";var r,e={930:()=>{},359:()=>{}},o={};function t(r){var a=o[r];if(void 0!==a)return a.exports;var n=o[r]={exports:{}};return e[r](n,n.exports,t),n.exports}t.m=e,r=[],t.O=(e,o,a,n)=>{if(!o){var i=1/0;for(f=0;f=n)&&Object.keys(t.O).every((r=>t.O[r](o[v])))?o.splice(v--,1):(p=!1,n0&&r[f-1][2]>n;f--)r[f]=r[f-1];r[f]=[o,a,n]},t.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={607:0,416:0};t.O.j=e=>0===r[e];var e=(e,o)=>{var a,n,[i,p,v]=o,s=0;if(i.some((e=>0!==r[e]))){for(a in p)t.o(p,a)&&(t.m[a]=p[a]);if(v)var f=v(t)}for(e&&e(o);st(359)));var a=t.O(void 0,[416],(()=>t(930)));a=t.O(a)})();
\ No newline at end of file
+(()=>{"use strict";var r,e={954:()=>{},807:()=>{}},o={};function t(r){var a=o[r];if(void 0!==a)return a.exports;var n=o[r]={exports:{}};return e[r](n,n.exports,t),n.exports}t.m=e,r=[],t.O=(e,o,a,n)=>{if(!o){var i=1/0;for(f=0;f=n)&&Object.keys(t.O).every((r=>t.O[r](o[v])))?o.splice(v--,1):(p=!1,n0&&r[f-1][2]>n;f--)r[f]=r[f-1];r[f]=[o,a,n]},t.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={607:0,830:0};t.O.j=e=>0===r[e];var e=(e,o)=>{var a,n,[i,p,v]=o,s=0;if(i.some((e=>0!==r[e]))){for(a in p)t.o(p,a)&&(t.m[a]=p[a]);if(v)var f=v(t)}for(e&&e(o);st(807)));var a=t.O(void 0,[830],(()=>t(954)));a=t.O(a)})();
\ No newline at end of file