Fix: Console outputs suppressed when not in debug mode to fix server errors caused by unnecessary outputs.

This commit is contained in:
2024-10-29 09:38:43 +00:00
parent 8621027567
commit 0d2479d82e
103 changed files with 527 additions and 498 deletions

2
.gitignore vendored
View File

@@ -55,7 +55,7 @@ secrets.yaml
TODO.md TODO.md
# Ignore all files in a directory # Ignore all files in a directory
temp_files/ tmp/
# Ignore all .txt files in the doc/ directory # Ignore all .txt files in the doc/ directory
doc/*.txt doc/*.txt

11
app.py
View File

@@ -18,7 +18,6 @@ Initializes the Flask application, sets the configuration based on the environme
# internal # internal
from config import app_config, Config from config import app_config, Config
# from routes import bp_home # 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 forms import Form_Contact, Form_Supplier, Form_Filters_Permutation, Filters_Stock_Item
from models.model_view_base import Model_View_Base 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 import routes_store_supplier
from controllers.store.supplier_purchase_order import routes_store_supplier_purchase_order from controllers.store.supplier_purchase_order import routes_store_supplier_purchase_order
from controllers.user import routes_user from controllers.user import routes_user
from extensions import db, csrf, cors, mail, oauth
from helpers.helper_app import Helper_App
# external # external
from flask import Flask, render_template, jsonify, request, render_template_string, send_from_directory, redirect, url_for, session from flask import Flask, render_template, jsonify, request, render_template_string, send_from_directory, redirect, url_for, session
# from flask_appconfig import AppConfig # from flask_appconfig import AppConfig
@@ -74,10 +75,10 @@ app.config.from_object(app_config) # for db init with required keys
# logging # logging
handler = RotatingFileHandler('app.log', maxBytes=10000, backupCount=3) handler = RotatingFileHandler('app.log', maxBytes=10000, backupCount=3)
handler.setLevel(logging.ERROR) handler.setLevel(logging.DEBUG)
app.logger.addHandler(handler) app.logger.addHandler(handler)
@app.errorhandler(500) @app.errorhandler(Exception)
def internal_server_error(error): def internal_server_error(error):
app.logger.error('Server Error: %s', (error)) app.logger.error('Server Error: %s', (error))
app.logger.error('Request: %s %s %s %s %s', app.logger.error('Request: %s %s %s %s %s',
@@ -88,7 +89,7 @@ def internal_server_error(error):
request.headers) request.headers)
app.logger.error('Request data: %s', request.get_data()) app.logger.error('Request data: %s', request.get_data())
app.logger.error('Traceback: %s', traceback.format_exc()) 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') @app.template_filter('console_log')
def console_log(value): def console_log(value):
print(value) Helper_App.console_log(value)
return value return value

View File

@@ -15,6 +15,7 @@ import lib.argument_validation as av
from business_objects.base import Base from business_objects.base import Base
from business_objects.region import Region from business_objects.region import Region
from extensions import db from extensions import db
from helpers.helper_app import Helper_App
# external # external
from typing import ClassVar from typing import ClassVar
from flask import jsonify from flask import jsonify
@@ -92,7 +93,7 @@ class Address(db.Model, Base):
return jsonify(self.to_json()) return jsonify(self.to_json())
@classmethod @classmethod
def from_json(cls, json): 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 = cls()
address.id_address = json[cls.ATTR_ID_ADDRESS], address.id_address = json[cls.ATTR_ID_ADDRESS],
address.region = Region.from_json(json[cls.FLAG_REGION]), address.region = Region.from_json(json[cls.FLAG_REGION]),

View File

@@ -14,6 +14,7 @@ Business object for address region
import lib.argument_validation as av import lib.argument_validation as av
from business_objects.base import Base from business_objects.base import Base
from extensions import db from extensions import db
from helpers.helper_app import Helper_App
# external # external
from typing import ClassVar from typing import ClassVar
@@ -61,7 +62,7 @@ class Region(db.Model, Base):
} }
@classmethod @classmethod
def from_json(cls, json): 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 = cls()
plant.id_region = json[cls.ATTR_ID_REGION] plant.id_region = json[cls.ATTR_ID_REGION]
plant.code = json[cls.FLAG_CODE] plant.code = json[cls.FLAG_CODE]

View File

@@ -14,6 +14,7 @@ Business object for product
import lib.argument_validation as av import lib.argument_validation as av
from business_objects.store.store_base import Store_Base from business_objects.store.store_base import Store_Base
from extensions import db from extensions import db
from helpers.helper_app import Helper_App
# external # external
from pydantic import BaseModel from pydantic import BaseModel
from typing import ClassVar from typing import ClassVar
@@ -73,7 +74,7 @@ class Access_Level(db.Model, Store_Base):
} }
@classmethod @classmethod
def from_json(cls, json): 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 = cls()
access_level.id_access_level = json[cls.ATTR_ID_ACCESS_LEVEL], access_level.id_access_level = json[cls.ATTR_ID_ACCESS_LEVEL],
access_level.code = json[cls.FLAG_CODE], access_level.code = json[cls.FLAG_CODE],

View File

@@ -27,6 +27,7 @@ from business_objects.store.store_base import Store_Base
# from models.model_view_store import Model_View_Store # circular # from models.model_view_store import Model_View_Store # circular
# from datastores.datastore_store import DataStore_Store # circular # from datastores.datastore_store import DataStore_Store # circular
# from forms import Form_Basket_Add, Form_Basket_Edit # possibly circular # from forms import Form_Basket_Add, Form_Basket_Edit # possibly circular
from helpers.helper_app import Helper_App
# external # external
# from enum import Enum # from enum import Enum
from flask import jsonify from flask import jsonify
@@ -138,8 +139,8 @@ class Basket(Store_Base):
quantities_permutation += ',' quantities_permutation += ','
ids_permutation += str(product.get_id_permutation()) ids_permutation += str(product.get_id_permutation())
quantities_permutation += str(basket_item.quantity) quantities_permutation += str(basket_item.quantity)
print(f'ids_permutation_basket = {ids_permutation}') Helper_App.console_log(f'ids_permutation_basket = {ids_permutation}')
print(f'quantities_permutation_basket = {quantities_permutation}') Helper_App.console_log(f'quantities_permutation_basket = {quantities_permutation}')
return ids_permutation, quantities_permutation return ids_permutation, quantities_permutation
def to_json_list(self): def to_json_list(self):
json_list = [] json_list = []
@@ -170,7 +171,7 @@ class Basket(Store_Base):
def __repr__(self): def __repr__(self):
repr = f'Basket:' repr = f'Basket:'
for basket_item in self.items: for basket_item in self.items:
print(f'{basket_item}') Helper_App.console_log(f'{basket_item}')
repr = f'{repr}\n{basket_item}' repr = f'{repr}\n{basket_item}'
return repr return repr

View File

@@ -13,6 +13,7 @@ Business object for product image
# internal # internal
from business_objects.store.store_base import Store_Base from business_objects.store.store_base import Store_Base
from extensions import db from extensions import db
from helpers.helper_app import Helper_App
import lib.argument_validation as av import lib.argument_validation as av
# external # external
from enum import Enum from enum import Enum
@@ -79,7 +80,7 @@ class Image(db.Model, Store_Base):
""" """
def from_DB_get_many_product_catalogue(query_row): def from_DB_get_many_product_catalogue(query_row):
_m = 'Image.from_DB_get_many_product_catalogue' _m = 'Image.from_DB_get_many_product_catalogue'
# print(f'image: {query_row}') # Helper_App.console_log(f'image: {query_row}')
image = Image() image = Image()
image.id_image = query_row[0] image.id_image = query_row[0]
image.id_product = query_row[1] image.id_product = query_row[1]

View File

@@ -16,6 +16,7 @@ from business_objects.currency import Currency
from business_objects.db_base import Get_Many_Parameters_Base from business_objects.db_base import Get_Many_Parameters_Base
from business_objects.store.store_base import Store_Base from business_objects.store.store_base import Store_Base
from extensions import db from extensions import db
from helpers.helper_app import Helper_App
# external # external
from pydantic import BaseModel from pydantic import BaseModel
from typing import ClassVar, Optional from typing import ClassVar, Optional
@@ -89,7 +90,7 @@ class Manufacturing_Purchase_Order(db.Model, Store_Base):
} }
@classmethod @classmethod
def from_json(cls, json): 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 = cls()
manufacturing_purchase_order.id_order = json[cls.ATTR_ID_MANUFACTURING_PURCHASE_ORDER] manufacturing_purchase_order.id_order = json[cls.ATTR_ID_MANUFACTURING_PURCHASE_ORDER]
manufacturing_purchase_order.id_currency = json[cls.ATTR_ID_CURRENCY] 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 @classmethod
def from_json(cls, json): 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 = cls()
link.id_link = json[cls.ATTR_ID_MANUFACTURING_PURCHASE_ORDER_PRODUCT_LINK] link.id_link = json[cls.ATTR_ID_MANUFACTURING_PURCHASE_ORDER_PRODUCT_LINK]
link.id_order = json[cls.ATTR_ID_MANUFACTURING_PURCHASE_ORDER] link.id_order = json[cls.ATTR_ID_MANUFACTURING_PURCHASE_ORDER]

View File

@@ -15,6 +15,7 @@ import lib.argument_validation as av
from business_objects.address import Address from business_objects.address import Address
from business_objects.store.store_base import Store_Base from business_objects.store.store_base import Store_Base
from extensions import db from extensions import db
from helpers.helper_app import Helper_App
# external # external
from typing import ClassVar from typing import ClassVar
@@ -81,7 +82,7 @@ class Plant(db.Model, Store_Base):
} }
@classmethod @classmethod
def from_json(cls, json): 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 = cls()
plant.id_plant = json[cls.ATTR_ID_PLANT], plant.id_plant = json[cls.ATTR_ID_PLANT],
plant.code = json[cls.FLAG_CODE], plant.code = json[cls.FLAG_CODE],

View File

@@ -28,6 +28,7 @@ from business_objects.store.product_variation_tree import Product_Variation_Tree
from extensions import db from extensions import db
from forms.base import Form_Base from forms.base import Form_Base
from forms.store.product import Filters_Product from forms.store.product import Filters_Product
from helpers.helper_app import Helper_App
# external # external
from dataclasses import dataclass from dataclasses import dataclass
from typing import ClassVar, List from typing import ClassVar, List
@@ -141,7 +142,7 @@ class Product(SQLAlchemy_ABC, Store_Base):
""" """
if self.index_permutation_selected is None: if self.index_permutation_selected is None:
self.index_permutation_selected = self.permutation_index[permutation.id_permutation] 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): def from_permutations(permutations):
_m = 'Product.from_permutations' _m = 'Product.from_permutations'
@@ -273,7 +274,7 @@ class Product(SQLAlchemy_ABC, Store_Base):
""" """
def add_product_variation(self, variation): def add_product_variation(self, variation):
av.val_instance(variation, 'variation', 'Product.add_product_variation', Product_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) 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) self.permutations[index_permutation].add_product_variation(variation)
def add_product_price(self, price): 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_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) 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") 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( return Parameters_Product(
get_all_product_category = not has_category_filter, get_all_product_category = not has_category_filter,
get_inactive_product_category = False, 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_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 == '') 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") 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( return Parameters_Product(
get_all_product_category = not has_category_filter, get_all_product_category = not has_category_filter,
get_inactive_product_category = False, get_inactive_product_category = False,

View File

@@ -21,6 +21,7 @@ from business_objects.store.discount import Discount
from business_objects.store.stock_item import Stock_Item from business_objects.store.stock_item import Stock_Item
from business_objects.store.store_base import Store_Base from business_objects.store.store_base import Store_Base
from extensions import db from extensions import db
from helpers.helper_app import Helper_App
# external # external
from pydantic import BaseModel from pydantic import BaseModel
from typing import ClassVar 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) # self.product_index[Category.key_product_index_from_ids_product_permutation(product.id_product, product.id_permutation)] = len(self.products)
try: try:
self.get_index_product(product) 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.") raise ValueError(f"{av.error_msg_str(product, 'product', _m, Product)}\nProduct already in category.")
except KeyError: except KeyError:
self.product_index[product.id_product] = len(self.products) 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): def get_all_product_variation_trees(self):
for product in self.products: for product in self.products:
if product.has_variations: 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() product.get_variation_trees()
""" """
def index_product_from_ids_product_permutation(self, id_product, id_permutation): 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) key = Category.key_product_index_from_ids_product_permutation(id_product, id_permutation)
print(f'product_index: {self.product_index}') Helper_App.console_log(f'product_index: {self.product_index}')
print(f'Key Error: {key}') Helper_App.console_log(f'Key Error: {key}')
try: try:
return self.product_index[key] return self.product_index[key]
except KeyError: except KeyError:
@@ -167,7 +168,7 @@ class Product_Category(SQLAlchemy_ABC, Store_Base):
""" """
def get_permutation_first(self): def get_permutation_first(self):
if not (len(self.products) == 0): 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() return None if len(self.products) == 0 else self.products[0].get_permutation_selected()
""" """
def is_available(self): def is_available(self):
@@ -204,7 +205,7 @@ class Product_Category(SQLAlchemy_ABC, Store_Base):
} }
@classmethod @classmethod
def from_json(cls, json): def from_json(cls, json):
print(f' Category.from_json: {json}') Helper_App.console_log(f' Category.from_json: {json}')
category = cls() category = cls()
category.id_category = json[cls.ATTR_ID_PRODUCT_CATEGORY] category.id_category = json[cls.ATTR_ID_PRODUCT_CATEGORY]
category.code = json[cls.FLAG_CODE] category.code = json[cls.FLAG_CODE]
@@ -382,9 +383,9 @@ class Product_Category_Container(Store_Base):
return f'categories: {self.categories}' return f'categories: {self.categories}'
""" """
def get_permutation_first(self): 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): 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() return None if len(self.categories) == 0 else self.categories[0].get_permutation_first()
""" """
def get_category_count(self): def get_category_count(self):

View File

@@ -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.store.product_variation_tree import Product_Variation_Tree
from business_objects.unit_measurement import Unit_Measurement from business_objects.unit_measurement import Unit_Measurement
from extensions import db from extensions import db
from helpers.helper_app import Helper_App
# external # external
from datetime import datetime, timedelta from datetime import datetime, timedelta
import locale import locale
@@ -142,7 +143,7 @@ class Product_Permutation(db.Model, Store_Base):
def from_DB_get_many_product_catalogue(cls, query_row): def from_DB_get_many_product_catalogue(cls, query_row):
_m = f'{cls.__name__}.from_DB_get_many_product_catalogue' _m = f'{cls.__name__}.from_DB_get_many_product_catalogue'
v_arg_type = 'class attribute' v_arg_type = 'class attribute'
print(f'query_row: {query_row}') Helper_App.console_log(f'query_row: {query_row}')
permutation = cls() permutation = cls()
permutation.id_permutation = query_row[0] permutation.id_permutation = query_row[0]
permutation.id_product = query_row[1] 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_QUANTITY_MAX: self.quantity_max,
Product_Permutation.FLAG_COST_LOCAL: f"<strong>{self.symbol_currency_cost}</strong>{self.cost_local}" Product_Permutation.FLAG_COST_LOCAL: f"<strong>{self.symbol_currency_cost}</strong>{self.cost_local}"
} }
print('permutation row: ', a) Helper_App.console_log('permutation row: ', a)
return a return a

View File

@@ -21,6 +21,7 @@ import lib.argument_validation as av
from business_objects.store.store_base import Store_Base from business_objects.store.store_base import Store_Base
from business_objects.store.product_variation_type import Product_Variation_Type from business_objects.store.product_variation_type import Product_Variation_Type
from extensions import db from extensions import db
from helpers.helper_app import Helper_App
# external # external
from dataclasses import dataclass from dataclasses import dataclass
from typing import ClassVar from typing import ClassVar
@@ -201,7 +202,7 @@ class Product_Variation_Container(BaseModel):
list_variations = [] list_variations = []
for variation in self.variations: for variation in self.variations:
list_variations.append(variation.to_json_option()) 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 return list_variations
def to_list_variation_type_options(self): def to_list_variation_type_options(self):
list_variation_types = [] list_variation_types = []

View File

@@ -13,6 +13,7 @@ Business object for product
# internal # internal
from business_objects.store.product_variation import Product_Variation from business_objects.store.product_variation import Product_Variation
from extensions import db from extensions import db
from helpers.helper_app import Helper_App
# external # external
@@ -133,16 +134,16 @@ class Product_Variation_Tree():
variations.append(node.variation) variations.append(node.variation)
return variations return variations
def to_preview_str(self): 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() variations = self.get_product_variations()
print(f'variations: {variations}') Helper_App.console_log(f'variations: {variations}')
preview_str = '' preview_str = ''
for variation in variations: for variation in variations:
is_first = (preview_str == '') is_first = (preview_str == '')
preview_str += f'{variation.variation_type.name_singular}: {variation.name}' preview_str += f'{variation.variation_type.name_singular}: {variation.name}'
if is_first: if is_first:
preview_str += '\n' preview_str += '\n'
print(f'preview_str: {preview_str}') Helper_App.console_log(f'preview_str: {preview_str}')
return preview_str return preview_str
def to_json(self): def to_json(self):
variations = self.get_product_variations() variations = self.get_product_variations()
@@ -179,7 +180,7 @@ class Product_Variation_Container(BaseModel):
list_variations = [] list_variations = []
for variation in self.variations: for variation in self.variations:
list_variations.append(variation.to_json_option()) 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 return list_variations
def to_list_variation_type_options(self): def to_list_variation_type_options(self):
list_variation_types = [] list_variation_types = []

View File

@@ -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.storage_location import Storage_Location
from business_objects.store.store_base import Store_Base from business_objects.store.store_base import Store_Base
from extensions import db from extensions import db
from helpers.helper_app import Helper_App
# external # external
from dataclasses import dataclass from dataclasses import dataclass
from typing import ClassVar, Optional 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_permutation = json.get(cls.ATTR_ID_PRODUCT_PERMUTATION, 0)
stock_item.id_product = json[cls.ATTR_ID_PRODUCT] stock_item.id_product = json[cls.ATTR_ID_PRODUCT]
stock_item.id_category = json[cls.ATTR_ID_PRODUCT_CATEGORY] 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.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_purchased = json[cls.FLAG_DATE_PURCHASED]
stock_item.date_received = json[cls.FLAG_DATE_RECEIVED] stock_item.date_received = json[cls.FLAG_DATE_RECEIVED]

View File

@@ -15,6 +15,7 @@ import lib.argument_validation as av
from business_objects.store.plant import Plant from business_objects.store.plant import Plant
from business_objects.store.store_base import Store_Base from business_objects.store.store_base import Store_Base
from extensions import db from extensions import db
from helpers.helper_app import Helper_App
# external # external
from typing import ClassVar from typing import ClassVar
@@ -74,7 +75,7 @@ class Storage_Location(db.Model, Store_Base):
} }
@classmethod @classmethod
def from_json(cls, json): 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 = cls()
location.id_location = json[cls.ATTR_ID_STORAGE_LOCATION], location.id_location = json[cls.ATTR_ID_STORAGE_LOCATION],
location.id_plant = json[cls.ATTR_ID_PLANT], location.id_plant = json[cls.ATTR_ID_PLANT],

View File

@@ -15,7 +15,7 @@ import lib.argument_validation as av
from lib import data_types from lib import data_types
from forms.forms import Form_Basket_Add, Form_Basket_Edit # Form_Product from forms.forms import Form_Basket_Add, Form_Basket_Edit # Form_Product
from extensions import db from extensions import db
from helpers.helper_app import Helper_App
# external # external
from datetime import datetime, timedelta from datetime import datetime, timedelta
import locale 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_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.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) 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) is_subscription = av.input_bool(is_subscription, "is_subscription", _m, v_arg_type=v_arg_type)
if is_subscription: if is_subscription:
av.val_str(name_recurring_interval, 'name_recurring_interval', _m, max_len=255, v_arg_type=v_arg_type) av.val_str(name_recurring_interval, 'name_recurring_interval', _m, max_len=255, v_arg_type=v_arg_type)

View File

@@ -17,6 +17,7 @@ from business_objects.currency import Currency
from business_objects.db_base import Get_Many_Parameters_Base from business_objects.db_base import Get_Many_Parameters_Base
from business_objects.store.store_base import Store_Base from business_objects.store.store_base import Store_Base
from extensions import db from extensions import db
from helpers.helper_app import Helper_App
# external # external
from pydantic import BaseModel from pydantic import BaseModel
from typing import ClassVar from typing import ClassVar
@@ -106,7 +107,7 @@ addresses: {self.addresses}
} }
@classmethod @classmethod
def from_json(cls, json): 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 = cls()
supplier.id_supplier = json[cls.ATTR_ID_SUPPLIER] supplier.id_supplier = json[cls.ATTR_ID_SUPPLIER]
supplier.id_currency = json[cls.ATTR_ID_CURRENCY] supplier.id_currency = json[cls.ATTR_ID_CURRENCY]

View File

@@ -15,6 +15,7 @@ import lib.argument_validation as av
from business_objects.store.store_base import Store_Base from business_objects.store.store_base import Store_Base
from business_objects.region import Region from business_objects.region import Region
from extensions import db from extensions import db
from helpers.helper_app import Helper_App
# external # external
from typing import ClassVar from typing import ClassVar
from flask import jsonify from flask import jsonify
@@ -71,7 +72,7 @@ class Supplier_Address(db.Model, Store_Base):
{self.FLAG_ACTIVE}: {self.active} {self.FLAG_ACTIVE}: {self.active}
''' '''
def to_json(self): 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 { return {
**self.get_shared_json_attributes(self), **self.get_shared_json_attributes(self),
self.ATTR_ID_ADDRESS: self.id_address, self.ATTR_ID_ADDRESS: self.id_address,
@@ -88,7 +89,7 @@ class Supplier_Address(db.Model, Store_Base):
return jsonify(self.to_json()) return jsonify(self.to_json())
@classmethod @classmethod
def from_json(cls, json): 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 = cls()
address.id_address = json[cls.ATTR_ID_ADDRESS] address.id_address = json[cls.ATTR_ID_ADDRESS]
address.id_supplier = json[cls.ATTR_ID_SUPPLIER] address.id_supplier = json[cls.ATTR_ID_SUPPLIER]

View File

@@ -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.store_base import Store_Base
from business_objects.store.supplier import Supplier from business_objects.store.supplier import Supplier
from extensions import db from extensions import db
from helpers.helper_app import Helper_App
# external # external
from pydantic import BaseModel from pydantic import BaseModel
from typing import ClassVar, Optional from typing import ClassVar, Optional
@@ -92,7 +93,7 @@ class Supplier_Purchase_Order(db.Model, Store_Base):
} }
@classmethod @classmethod
def from_json(cls, json): 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 = cls()
supplier_purchase_order.id_order = json[cls.ATTR_ID_SUPPLIER_PURCHASE_ORDER] supplier_purchase_order.id_order = json[cls.ATTR_ID_SUPPLIER_PURCHASE_ORDER]
supplier_purchase_order.id_supplier = json[cls.ATTR_ID_SUPPLIER] 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 @classmethod
def from_json(cls, json): 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 = cls()
link.id_link = json[cls.ATTR_ID_SUPPLIER_PURCHASE_ORDER_PRODUCT_LINK] link.id_link = json[cls.ATTR_ID_SUPPLIER_PURCHASE_ORDER_PRODUCT_LINK]
link.id_order = json[cls.ATTR_ID_SUPPLIER_PURCHASE_ORDER] link.id_order = json[cls.ATTR_ID_SUPPLIER_PURCHASE_ORDER]

View File

@@ -12,6 +12,7 @@ from business_objects.base import Base
from business_objects.db_base import SQLAlchemy_ABC, Get_Many_Parameters_Base from business_objects.db_base import SQLAlchemy_ABC, Get_Many_Parameters_Base
from extensions import db from extensions import db
# from forms.forms import Form_Filters_User # from forms.forms import Form_Filters_User
from helpers.helper_app import Helper_App
import lib.argument_validation as av import lib.argument_validation as av
# external # external
from dataclasses import dataclass from dataclasses import dataclass
@@ -78,7 +79,7 @@ class Unit_Measurement(SQLAlchemy_ABC, Base):
} }
@classmethod @classmethod
def from_json(cls, json): 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 = cls()
unit.id_unit_measurement = json[cls.ATTR_ID_UNIT_MEASUREMENT] unit.id_unit_measurement = json[cls.ATTR_ID_UNIT_MEASUREMENT]
unit.name_singular = json[cls.FLAG_NAME_SINGULAR] unit.name_singular = json[cls.FLAG_NAME_SINGULAR]

View File

@@ -12,6 +12,7 @@ from business_objects.base import Base
import lib.argument_validation as av import lib.argument_validation as av
from forms.forms import Form_Filters_User from forms.forms import Form_Filters_User
from extensions import db from extensions import db
from helpers.helper_app import Helper_App
# external # external
from dataclasses import dataclass from dataclasses import dataclass
from typing import ClassVar from typing import ClassVar
@@ -64,7 +65,7 @@ class User(db.Model, Base):
_m = 'User.from_json' _m = 'User.from_json'
user = User() user = User()
if json is None: return 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 = json['id_user']
user.id_user_auth0 = json['id_user_auth0'] user.id_user_auth0 = json['id_user_auth0']
user.firstname = json['firstname'] 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_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.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) user.is_logged_in = (user.id_user_auth0 is not None)
print(f'user: {user}') Helper_App.console_log(f'user: {user}')
return user return user
# print(f'user: {user}') # Helper_App.console_log(f'user: {user}')
@staticmethod @staticmethod
def from_json_auth0(json): def from_json_auth0(json):
_m = 'User.from_json_auth0' _m = 'User.from_json_auth0'
user = User() user = User()
if json is None: return 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_info = json['userinfo']
user.id_user = None user.id_user = None
user.id_user_auth0 = user_info['sub'] user.id_user_auth0 = user_info['sub']
@@ -102,7 +103,7 @@ class User(db.Model, Base):
user.can_admin_store = None user.can_admin_store = None
user.can_admin_user = None user.can_admin_user = None
user.is_logged_in = (user.id_user_auth0 is not None and user.id_user_auth0 != '') 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 return user
def to_json(self): def to_json(self):
@@ -120,7 +121,7 @@ class User(db.Model, Base):
'can_admin_store': self.can_admin_store, 'can_admin_store': self.can_admin_store,
'can_admin_user': self.can_admin_user '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 return as_json
def __repr__(self): def __repr__(self):

View File

@@ -11,6 +11,7 @@ Configuration variables
""" """
# IMPORTS # IMPORTS
from lib import argument_validation as av
import os import os
from dotenv import load_dotenv, find_dotenv from dotenv import load_dotenv, find_dotenv
@@ -19,7 +20,7 @@ load_dotenv(find_dotenv())
# CLASSES # CLASSES
class Config: class Config:
# Miscellaneous # Miscellaneous
DEBUG = False DEBUG = av.input_bool(os.getenv('DEBUG'), 'DEBUG', 'Config')
TESTING = False TESTING = False
URL_HOST = os.getenv('URL_HOST') URL_HOST = os.getenv('URL_HOST')
SECRET_KEY = os.getenv('KEY_SECRET_FLASK') # gen cmd: openssl rand -hex 32 SECRET_KEY = os.getenv('KEY_SECRET_FLASK') # gen cmd: openssl rand -hex 32
@@ -52,7 +53,7 @@ class Config:
# id_currency = 1 # id_currency = 1
# id_region_delivery = 1 # id_region_delivery = 1
# Mail # Mail
MAIL_DEBUG = True MAIL_DEBUG = av.input_bool(os.getenv('DEBUG'), 'DEBUG', 'Config')
MAIL_SERVER = 'mail.partsltd.co.uk' # 'smtp.gmail.com' MAIL_SERVER = 'mail.partsltd.co.uk' # 'smtp.gmail.com'
MAIL_PORT = 465 # 587 MAIL_PORT = 465 # 587
MAIL_USE_TLS = False MAIL_USE_TLS = False
@@ -83,7 +84,6 @@ elif config_env == 'production':
else: else:
raise ValueError("Invalid configuration environment") raise ValueError("Invalid configuration environment")
# print(f'config: {app_config}\nid auth0 client: {app_config.ID_AUTH0_CLIENT}')
# environment variables # environment variables
""" """

View File

@@ -47,7 +47,7 @@ def contact():
user = DataStore_Base.get_user_session() user = DataStore_Base.get_user_session()
form = Form_Contact() form = Form_Contact()
form.email.data = user.email 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) model = Model_View_Contact(form)
html_body = render_template('pages/core/_contact.html', model = model) html_body = render_template('pages/core/_contact.html', model = model)
except Exception as e: except Exception as e:

View File

@@ -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']) @routes_store_manufacturing_purchase_order.route(Model_View_Store_Manufacturing_Purchase_Order.HASH_PAGE_STORE_MANUFACTURING_PURCHASE_ORDERS, methods=['GET'])
def manufacturing_purchase_orders(): def manufacturing_purchase_orders():
print('manufacturing_purchase_orders') Helper_App.console_log('manufacturing_purchase_orders')
try: try:
form_filters = Filters_Manufacturing_Purchase_Order.from_json(request.args) form_filters = Filters_Manufacturing_Purchase_Order.from_json(request.args)
except Exception as e: except Exception as e:
print(f'Error: {e}') Helper_App.console_log(f'Error: {e}')
form_filters = Filters_Manufacturing_Purchase_Order() 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) model = Model_View_Store_Manufacturing_Purchase_Order(form_filters)
if not model.is_user_logged_in: if not model.is_user_logged_in:
return redirect(url_for('routes_core.home')) return redirect(url_for('routes_core.home'))
@@ -80,7 +80,7 @@ def save_manufacturing_purchase_order():
data = Helper_App.get_request_data(request) data = Helper_App.get_request_data(request)
try: try:
form_filters = Filters_Manufacturing_Purchase_Order.from_json(data[Model_View_Store_Manufacturing_Purchase_Order.FLAG_FORM_FILTERS]) 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] manufacturing_purchase_orders = data[Model_View_Store_Manufacturing_Purchase_Order.FLAG_MANUFACTURING_PURCHASE_ORDER]
if len(manufacturing_purchase_orders) == 0: 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_STATUS: Model_View_Store_Manufacturing_Purchase_Order.FLAG_FAILURE,
Model_View_Store_Manufacturing_Purchase_Order.FLAG_MESSAGE: f'No stock items.' 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 = [] objs_manufacturing_purchase_order = []
for manufacturing_purchase_order in manufacturing_purchase_orders: for manufacturing_purchase_order in manufacturing_purchase_orders:
objs_manufacturing_purchase_order.append(Manufacturing_Purchase_Order.from_json(manufacturing_purchase_order)) 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) 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: if len(save_errors) > 0:
return jsonify({ return jsonify({

View File

@@ -11,10 +11,7 @@ Initializes the Flask application, sets the configuration based on the environme
""" """
# IMPORTS # IMPORTS
# VARIABLE INSTANTIATION from helpers.helper_app import Helper_App
# METHODS
# IMPORTS
import os import os
import stripe import stripe
import json import json
@@ -28,7 +25,7 @@ key_public = os.environ.get("KEY_PUBLIC_STRIPE") # 'pk_test_51OGrxlL7BuLKjoMpfpf
# METHODS # METHODS
def create_product_price(): 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( starter_subscription = stripe.Product.create(
name="Starter Subscription", name="Starter Subscription",
description="$12/Month subscription", description="$12/Month subscription",
@@ -42,8 +39,8 @@ def create_product_price():
) )
# Save these identifiers # Save these identifiers
print(f"Success! Here is your starter subscription product id: {starter_subscription.id}") Helper_App.console_log(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 price id: {starter_subscription_price.id}")
return starter_subscription_price.id return starter_subscription_price.id
@@ -54,7 +51,7 @@ def get_file_str(f_address):
# Ensure environment variables are set. # Ensure environment variables are set.
price = os.getenv('PRICE') price = os.getenv('PRICE')
if price is None or price == 'price_12345' or 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) exit(0)
# For sample support and debugging, not required for production: # For sample support and debugging, not required for production:
@@ -152,10 +149,10 @@ def webhook_received():
event_type = request_data['type'] event_type = request_data['type']
data_object = data['object'] data_object = data['object']
print('event ' + event_type) Helper_App.console_log('event ' + event_type)
if event_type == 'checkout.session.completed': 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}) return jsonify({Model_View_Base.FLAG_STATUS: Model_View_Base.FLAG_SUCCESS})

View File

@@ -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']) @routes_store_product.route(Model_View_Store_Product.HASH_PAGE_STORE_PRODUCTS, methods=['GET'])
def products(): def products():
print('products') Helper_App.console_log('products')
print(f'request.args={request.args}') Helper_App.console_log(f'request.args={request.args}')
user = DataStore_Store_Product.get_user_session() user = DataStore_Store_Product.get_user_session()
filters = Parameters_Product.get_default(user.id_user) filters = Parameters_Product.get_default(user.id_user)
have_changed_filters = False have_changed_filters = False
arg_filter_is_not_empty = request.args.get(Model_View_Store_Product.FLAG_IS_NOT_EMPTY, None) 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 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') 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) 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 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') filters.active = filters.active if arg_filter_active is None else av.input_bool(arg_filter_active, 'active', 'filter')
if have_changed_filters: if have_changed_filters:
print('redirecting') Helper_App.console_log('redirecting')
return redirect(url_for('routes_store_product.products', **filters.to_json())) return redirect(url_for('routes_store_product.products', **filters.to_json()))
model = Model_View_Store_Product(filters) model = Model_View_Store_Product(filters)
return render_template('pages/store/_products.html', model = model) return render_template('pages/store/_products.html', model = model)
@@ -76,7 +76,7 @@ def get_Filters_Product(data_request):
def save(): def save():
data = Helper_App.get_request_data(request) data = Helper_App.get_request_data(request)
# form_filters = None # form_filters = None
print(f'data={data}') Helper_App.console_log(f'data={data}')
try: try:
form_filters = get_Filters_Product(data) form_filters = get_Filters_Product(data)
if not form_filters.validate_on_submit(): if not form_filters.validate_on_submit():
@@ -90,11 +90,11 @@ def save():
for category in categories: for category in categories:
objsCategory.append(Product.from_json(category)) objsCategory.append(Product.from_json(category))
# model_save = Model_View_Store_Product() # filters_product=filters_form) # 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_View_Store_Product.save_categories(data.get('comment', 'No comment'), objsCategory)
model_return = Model_View_Store_Product(filters=filters_form) 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()}) 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: 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}'}) 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']) @routes_store_product.route(Model_View_Store_Product.HASH_PAGE_STORE_PRODUCTS, methods=['GET'])
def products(): def products():
print('products') Helper_App.console_log('products')
try: try:
form_filters = Filters_Product.from_json(request.args) form_filters = Filters_Product.from_json(request.args)
except Exception as e: except Exception as e:
print(f'Error: {e}') Helper_App.console_log(f'Error: {e}')
form_filters = Filters_Product() 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) model = Model_View_Store_Product(form_filters)
if not model.is_user_logged_in: 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 }))) # 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}' Model_View_Store_Product.FLAG_MESSAGE: f'Filters form invalid.\n{form_filters.errors}'
}) })
# filters_form = Filters_Product.from_form(form_filters) # 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] products = data[Model_View_Store_Product.FLAG_PRODUCT]
if len(products) == 0: if len(products) == 0:
@@ -162,13 +162,13 @@ def save_product():
for product in products: for product in products:
objsProduct.append(Product.from_json(product)) objsProduct.append(Product.from_json(product))
# model_save = Model_View_Store_Product() # filters_product=filters_form) # 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) save_errors = Model_View_Store_Product.save_products(data.get('comment', 'No comment'), objsProduct)
model_return = Model_View_Store_Product(form_filters=form_filters) model_return = Model_View_Store_Product(form_filters=form_filters)
if not model_return.is_user_logged_in: if not model_return.is_user_logged_in:
raise Exception('User not logged in') raise Exception('User not logged in')
print('nips') Helper_App.console_log('nips')
return jsonify({ return jsonify({
Model_View_Store_Product.FLAG_STATUS: Model_View_Store_Product.FLAG_SUCCESS, Model_View_Store_Product.FLAG_STATUS: Model_View_Store_Product.FLAG_SUCCESS,
Model_View_Store_Product.FLAG_DATA: model_return.category_list.to_json() Model_View_Store_Product.FLAG_DATA: model_return.category_list.to_json()

View File

@@ -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']) @routes_store_product_category.route(Model_View_Store_Product_Category.HASH_PAGE_STORE_PRODUCT_CATEGORIES, methods=['GET'])
def categories(): def categories():
print('categories') Helper_App.console_log('categories')
# data = Helper_App.get_request_data(request) # data = Helper_App.get_request_data(request)
try: try:
form_filters = Filters_Product_Category.from_json(request.args) form_filters = Filters_Product_Category.from_json(request.args)
except Exception as e: except Exception as e:
print(f'Error: {e}') Helper_App.console_log(f'Error: {e}')
form_filters = Filters_Product_Category() 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() filters = Filters_Product_Category.get_default()
have_changed_filters = False have_changed_filters = False
arg_filter_is_not_empty = request.args.get(Model_View_Store_Product_Category.FLAG_IS_NOT_EMPTY, None) 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 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') 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) 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 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') filters.active = filters.active if arg_filter_active is None else av.input_bool(arg_filter_active, 'active', 'filter_category')
if have_changed_filters: if have_changed_filters:
print('redirecting') Helper_App.console_log('redirecting')
return redirect(url_for('routes_store_product_category.categories', **filters.to_json())) return redirect(url_for('routes_store_product_category.categories', **filters.to_json()))
""" """
model = Model_View_Store_Product_Category(form_filters) model = Model_View_Store_Product_Category(form_filters)
@@ -107,7 +107,7 @@ def save_category():
for category in categories: for category in categories:
objsCategory.append(Product_Category.from_json(category)) objsCategory.append(Product_Category.from_json(category))
# model_save = Model_View_Store_Product_Category() # filters_product=filters_form) # 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_View_Store_Product_Category.save_categories(data.get('comment', 'No comment'), objsCategory)
model_return = Model_View_Store_Product_Category(form_filters=form_filters) model_return = Model_View_Store_Product_Category(form_filters=form_filters)

View File

@@ -88,13 +88,13 @@ def permutation_save():
@routes_store_product_permutation.route(Model_View_Store_Product_Permutation.HASH_PAGE_STORE_PRODUCT_PERMUTATIONS, methods=['GET']) @routes_store_product_permutation.route(Model_View_Store_Product_Permutation.HASH_PAGE_STORE_PRODUCT_PERMUTATIONS, methods=['GET'])
def permutations(): def permutations():
print('permutations') Helper_App.console_log('permutations')
try: try:
form_filters = Filters_Product_Permutation.from_json(request.args) form_filters = Filters_Product_Permutation.from_json(request.args)
except Exception as e: except Exception as e:
print(f'Error: {e}') Helper_App.console_log(f'Error: {e}')
form_filters = Filters_Product_Permutation() 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) model = Model_View_Store_Product_Permutation(form_filters)
if not model.is_user_logged_in: 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 }))) # 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}' Model_View_Store_Product_Permutation.FLAG_MESSAGE: f'Filters form invalid.\n{form_filters.errors}'
}) })
# filters_form = Filters_Product_Permutation.from_form(form_filters) # 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] permutations = data[Model_View_Store_Product_Permutation.FLAG_PRODUCT_PERMUTATION]
if len(permutations) == 0: if len(permutations) == 0:
@@ -147,13 +147,13 @@ def save_permutation():
for permutation in permutations: for permutation in permutations:
objsPermutation.append(Product_Permutation.from_json(permutation)) objsPermutation.append(Product_Permutation.from_json(permutation))
# model_save = Model_View_Store_Product_Permutation() # filters_product=filters_form) # 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_View_Store_Product_Permutation.save_permutations(data.get('comment', 'No comment'), objsPermutation)
model_return = Model_View_Store_Product_Permutation(form_filters=form_filters) model_return = Model_View_Store_Product_Permutation(form_filters=form_filters)
if not model_return.is_user_logged_in: if not model_return.is_user_logged_in:
raise Exception('User not logged in') raise Exception('User not logged in')
print('nips') Helper_App.console_log('nips')
return jsonify({ return jsonify({
Model_View_Store_Product_Permutation.FLAG_STATUS: Model_View_Store_Product_Permutation.FLAG_SUCCESS, 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() Model_View_Store_Product_Permutation.FLAG_DATA: model_return.category_list.to_json()

View File

@@ -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']) @routes_store_stock_item.route(Model_View_Store_Stock_Item.HASH_PAGE_STORE_STOCK_ITEMS, methods=['GET'])
def stock_items(): def stock_items():
print('stock_items') Helper_App.console_log('stock_items')
try: try:
form_filters = Filters_Stock_Item.from_json(request.args) form_filters = Filters_Stock_Item.from_json(request.args)
except Exception as e: except Exception as e:
print(f'Error: {e}') Helper_App.console_log(f'Error: {e}')
form_filters = Filters_Stock_Item() 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) model = Model_View_Store_Stock_Item(form_filters)
if not model.is_user_logged_in: 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 }))) # 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) # 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] stock_items = data[Model_View_Store_Stock_Item.FLAG_STOCK_ITEM]
if len(stock_items) == 0: 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_STATUS: Model_View_Store_Stock_Item.FLAG_FAILURE,
Model_View_Store_Stock_Item.FLAG_MESSAGE: f'No stock items.' 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 = [] objs_stock_item = []
for stock_item in stock_items: for stock_item in stock_items:
objs_stock_item.append(Stock_Item.from_json(stock_item)) objs_stock_item.append(Stock_Item.from_json(stock_item))
# model_save = Model_View_Store_Stock_Item() # filters_product=filters_form) # 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) save_errors = Model_View_Store_Stock_Item.save_stock_items(data.get('comment', 'No comment'), objs_stock_item)
if len(save_errors) > 0: if len(save_errors) > 0:
return jsonify({ return jsonify({

View File

@@ -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']) @routes_store_supplier.route(Model_View_Store_Supplier.HASH_PAGE_STORE_SUPPLIERS, methods=['GET'])
def suppliers(): def suppliers():
print('suppliers') Helper_App.console_log('suppliers')
try: try:
form_filters = Filters_Supplier.from_json(request.args) form_filters = Filters_Supplier.from_json(request.args)
except Exception as e: except Exception as e:
print(f'Error: {e}') Helper_App.console_log(f'Error: {e}')
form_filters = Filters_Supplier() 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) model = Model_View_Store_Supplier(form_filters)
if not model.is_user_logged_in: if not model.is_user_logged_in:
return redirect(url_for('routes_core.home')) return redirect(url_for('routes_core.home'))
@@ -80,7 +80,7 @@ def save_supplier():
data = Helper_App.get_request_data(request) data = Helper_App.get_request_data(request)
try: try:
form_filters = Filters_Supplier.from_json(data[Model_View_Store_Supplier.FLAG_FORM_FILTERS]) 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] suppliers = data[Model_View_Store_Supplier.FLAG_SUPPLIER]
if len(suppliers) == 0: 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_STATUS: Model_View_Store_Supplier.FLAG_FAILURE,
Model_View_Store_Supplier.FLAG_MESSAGE: f'No stock items.' Model_View_Store_Supplier.FLAG_MESSAGE: f'No stock items.'
}) })
print(f'suppliers={suppliers}') Helper_App.console_log(f'suppliers={suppliers}')
objs_supplier = [] objs_supplier = []
for supplier in suppliers: for supplier in suppliers:
objs_supplier.append(Supplier.from_json(supplier)) 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) save_errors = Model_View_Store_Supplier.save_suppliers(data.get('comment', 'No comment'), objs_supplier)
if len(save_errors) > 0: if len(save_errors) > 0:

View File

@@ -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']) @routes_store_supplier_purchase_order.route(Model_View_Store_Supplier_Purchase_Order.HASH_PAGE_STORE_SUPPLIER_PURCHASE_ORDERS, methods=['GET'])
def supplier_purchase_orders(): def supplier_purchase_orders():
print('supplier_purchase_orders') Helper_App.console_log('supplier_purchase_orders')
try: try:
form_filters = Filters_Supplier_Purchase_Order.from_json(request.args) form_filters = Filters_Supplier_Purchase_Order.from_json(request.args)
except Exception as e: except Exception as e:
print(f'Error: {e}') Helper_App.console_log(f'Error: {e}')
form_filters = Filters_Supplier_Purchase_Order() 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) model = Model_View_Store_Supplier_Purchase_Order(form_filters)
if not model.is_user_logged_in: if not model.is_user_logged_in:
return redirect(url_for('routes_core.home')) return redirect(url_for('routes_core.home'))
@@ -80,7 +80,7 @@ def save_supplier_purchase_order():
data = Helper_App.get_request_data(request) data = Helper_App.get_request_data(request)
try: try:
form_filters = Filters_Supplier_Purchase_Order.from_json(data[Model_View_Store_Supplier_Purchase_Order.FLAG_FORM_FILTERS]) 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] supplier_purchase_orders = data[Model_View_Store_Supplier_Purchase_Order.FLAG_SUPPLIER_PURCHASE_ORDER]
if len(supplier_purchase_orders) == 0: 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_STATUS: Model_View_Store_Supplier_Purchase_Order.FLAG_FAILURE,
Model_View_Store_Supplier_Purchase_Order.FLAG_MESSAGE: f'No stock items.' 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 = [] objs_supplier_purchase_order = []
for supplier_purchase_order in supplier_purchase_orders: for supplier_purchase_order in supplier_purchase_orders:
objs_supplier_purchase_order.append(Supplier_Purchase_Order.from_json(supplier_purchase_order)) 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) 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: if len(save_errors) > 0:
return jsonify({ return jsonify({

View File

@@ -38,27 +38,27 @@ def login():
data = request.json data = request.json
except: except:
data = {} 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)}' # 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)) # 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 = 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)}' # 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) 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( red = oauth.auth0.authorize_redirect(
redirect_uri = uri_redirect, redirect_uri = uri_redirect,
state = quote(hash_callback) state = quote(hash_callback)
) )
print(f'redirect: {red}') Helper_App.console_log(f'redirect: {red}')
headers = red.headers['Location'] headers = red.headers['Location']
print(f'headers: {headers}') Helper_App.console_log(f'headers: {headers}')
parsed_url = urlparse(headers) parsed_url = urlparse(headers)
query_params = parse_qs(parsed_url.query) query_params = parse_qs(parsed_url.query)
print(f""" Helper_App.console_log(f"""
OAuth Authorize Redirect URL: OAuth Authorize Redirect URL:
Base URL: {parsed_url.scheme}://{parsed_url.netloc}{parsed_url.path} Base URL: {parsed_url.scheme}://{parsed_url.netloc}{parsed_url.path}
@@ -76,25 +76,25 @@ def login_callback():
if has_error: if has_error:
error_description = request.args.get(Model_View_User.FLAG_ERROR_DESCRIPTION_OAUTH) error_description = request.args.get(Model_View_User.FLAG_ERROR_DESCRIPTION_OAUTH)
error_text = f'Error: {error_state}: {error_description}' error_text = f'Error: {error_state}: {error_description}'
print(error_text) Helper_App.console_log(error_text)
return login() return login()
# print(f'code: {code}') # Helper_App.console_log(f'code: {code}')
token = None token = None
try: try:
token = oauth.auth0.authorize_access_token() token = oauth.auth0.authorize_access_token()
except Exception as e: except Exception as e:
# Log the error for debugging # 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 session[current_app.config['ID_TOKEN_USER']] = token
# import user id # import user id
""" """
print(f'str(type(token)) = {str(type(token))}') Helper_App.console_log(f'str(type(token)) = {str(type(token))}')
print(f'token = {token}') Helper_App.console_log(f'token = {token}')
userinfo = token.get('userinfo') userinfo = token.get('userinfo')
print(f'user info: {userinfo}') Helper_App.console_log(f'user info: {userinfo}')
# id_user = token.get('sub') # id_user = token.get('sub')
id_user = userinfo.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 = User.from_json_auth0(token) # datastore_user.get_user_auth0()
user_filters = User_Filters.from_user(user) user_filters = User_Filters.from_user(user)
@@ -102,30 +102,30 @@ def login_callback():
users, errors = datastore_user.get_many_user(user_filters, user) users, errors = datastore_user.get_many_user(user_filters, user)
try: try:
user = users[0] user = users[0]
print('User logged in') Helper_App.console_log('User logged in')
print(f'user ({str(type(user))}): {user}') Helper_App.console_log(f'user ({str(type(user))}): {user}')
print(f'user key: {Model_View_Base.FLAG_USER}') Helper_App.console_log(f'user key: {Model_View_Base.FLAG_USER}')
user_json = user.to_json() user_json = user.to_json()
session[Model_View_Base.FLAG_USER] = user_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: 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: try:
hash_callback = token.get('hash_callback') hash_callback = token.get('hash_callback')
if hash_callback is None: if hash_callback is None:
print('hash is none') Helper_App.console_log('hash is none')
state = request.args.get('state') state = request.args.get('state')
print(f'state: {state}') Helper_App.console_log(f'state: {state}')
hash_callback = state # .get('hash_callback') hash_callback = state # .get('hash_callback')
print(f'hash_callback: {hash_callback}') Helper_App.console_log(f'hash_callback: {hash_callback}')
except: except:
print("get hash callback failed") Helper_App.console_log("get hash callback failed")
# id_user = get_id_user() # id_user = get_id_user()
# add user to database # add user to database
# DataStore_Store().add_new_user(id_user) # this is part of get basket - should occur on page load # 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}") return redirect(f"{current_app.config['URL_HOST']}{hash_callback}")
except Exception as e: 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}'}) 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, # quote_via=quote_plus,
) )
current_app.logger.debug(f"Redirecting to {url_logout}") 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) return redirect(url_logout)
@routes_user.route("/logout_callback") # <path:subpath>/<code> @routes_user.route("/logout_callback") # <path:subpath>/<code>
@@ -153,18 +153,18 @@ def logout_callback():
try: try:
hash_callback = token.get('hash_callback') hash_callback = token.get('hash_callback')
if hash_callback is None: if hash_callback is None:
print('hash is none') Helper_App.console_log('hash is none')
state = request.args.get('state') state = request.args.get('state')
print(f'state: {state}') Helper_App.console_log(f'state: {state}')
hash_callback = state # .get('hash_callback') hash_callback = state # .get('hash_callback')
print(f'hash_callback: {hash_callback}') Helper_App.console_log(f'hash_callback: {hash_callback}')
except: except:
print("get hash callback failed") Helper_App.console_log("get hash callback failed")
# id_user = get_id_user() # id_user = get_id_user()
# add user to database # add user to database
# DataStore_Store().add_new_user(id_user) # this is part of get basket - should occur on page load # 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}') return redirect(f'{current_app.URL_HOST}{hash_callback}')
except Exception as e: 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}'}) return jsonify({Model_View_Base.FLAG_STATUS: Model_View_Base.FLAG_FAILURE, Model_View_Base.FLAG_MESSAGE: f'Controller error.\n{e}'})

View File

@@ -35,6 +35,7 @@ from business_objects.user import User, User_Filters, User_Permission_Evaluation
from extensions import db from extensions import db
from forms.access_level import Filters_Access_Level from forms.access_level import Filters_Access_Level
from forms.unit_measurement import Filters_Unit_Measurement from forms.unit_measurement import Filters_Unit_Measurement
from helpers.helper_app import Helper_App
# external # external
# from abc import ABC, abstractmethod, abstractproperty # from abc import ABC, abstractmethod, abstractproperty
from flask_sqlalchemy import SQLAlchemy 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 += f'{"" if i == 0 else ", "}:{arg_keys[i]}'
proc_string += ')' proc_string += ')'
proc_string = text(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: # with self.db.session.begin() as session:
# conn = Helper_DB_MySQL(self.app).get_db_connection() # 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) result = db.session.execute(proc_string, argument_dict_list)
else: else:
result = db.session.execute(proc_string) result = db.session.execute(proc_string)
print(f'result: {result}') Helper_App.console_log(f'result: {result}')
# conn.session.remove() # conn.session.remove()
return result return result
cursor = result.cursor cursor = result.cursor
result_set_1 = cursor.fetchall() result_set_1 = cursor.fetchall()
print(f'categories: {result_set_1}') Helper_App.console_log(f'categories: {result_set_1}')
cursor.nextset() cursor.nextset()
result_set_2 = cursor.fetchall() result_set_2 = cursor.fetchall()
print(f'products: {result_set_2}') Helper_App.console_log(f'products: {result_set_2}')
@staticmethod @staticmethod
def db_cursor_clear(cursor): def db_cursor_clear(cursor):
while cursor.nextset(): while cursor.nextset():
print(f'new result set: {cursor.fetchall()}') Helper_App.console_log(f'new result set: {cursor.fetchall()}')
@classmethod @classmethod
def get_many_region_and_currency(cls): def get_many_region_and_currency(cls):
_m = 'DataStore_Base.get_many_region_and_currency' _m = 'DataStore_Base.get_many_region_and_currency'
@@ -122,10 +123,10 @@ class DataStore_Base(BaseModel):
'a_get_inactive_currency': 0 '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) result = cls.db_procedure_execute(_m_db_currency, argument_dict_list_currency)
cursor = result.cursor cursor = result.cursor
print('data received') Helper_App.console_log('data received')
# cursor.nextset() # cursor.nextset()
result_set_1 = cursor.fetchall() result_set_1 = cursor.fetchall()
@@ -133,13 +134,13 @@ class DataStore_Base(BaseModel):
for row in result_set_1: for row in result_set_1:
currency = Currency.make_from_DB_currency(row) currency = Currency.make_from_DB_currency(row)
currencies.append(currency) currencies.append(currency)
print(f'currencies: {currencies}') Helper_App.console_log(f'currencies: {currencies}')
DataStore_Base.db_cursor_clear(cursor) 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) result = cls.db_procedure_execute(_m_db_region, argument_dict_list_region)
cursor = result.cursor cursor = result.cursor
print('data received') Helper_App.console_log('data received')
# cursor.nextset() # cursor.nextset()
result_set_1 = cursor.fetchall() result_set_1 = cursor.fetchall()
@@ -147,25 +148,25 @@ class DataStore_Base(BaseModel):
for row in result_set_1: for row in result_set_1:
region = Region.make_from_DB_region(row) region = Region.make_from_DB_region(row)
regions.append(region) regions.append(region)
print(f'regions: {regions}') Helper_App.console_log(f'regions: {regions}')
DataStore_Base.db_cursor_clear(cursor) DataStore_Base.db_cursor_clear(cursor)
cursor.close() cursor.close()
return regions, currencies return regions, currencies
@staticmethod @staticmethod
def get_user_session(): 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)) return User.from_json(session.get(User.FLAG_USER))
user = User.get_default() user = User.get_default()
try: 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') 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'])) == "<class 'NoneType'?") user.is_logged_in = ('sub' in list(info_user.keys()) and not info_user['sub'] == '' and not str(type(info_user['sub'])) == "<class 'NoneType'?")
user.id_user_auth0 = info_user['sub'] if user.is_logged_in else None user.id_user_auth0 = info_user['sub'] if user.is_logged_in else None
print(f'user.id_user_auth0: {user.id_user_auth0}') Helper_App.console_log(f'user.id_user_auth0: {user.id_user_auth0}')
except: except:
print('get user login failed') Helper_App.console_log('get user login failed')
return user return user
""" """
@staticmethod @staticmethod
@@ -175,39 +176,39 @@ class DataStore_Base(BaseModel):
@staticmethod @staticmethod
def upload_bulk(permanent_table_name, records, batch_size): def upload_bulk(permanent_table_name, records, batch_size):
_m = 'DataStore_Base.upload_bulk' _m = 'DataStore_Base.upload_bulk'
print(f'{_m}\nstarting...') Helper_App.console_log(f'{_m}\nstarting...')
print(f'permanent_table_name: {permanent_table_name}') Helper_App.console_log(f'permanent_table_name: {permanent_table_name}')
if db.session.dirty or db.session.new or db.session.deleted: if db.session.dirty or db.session.new or db.session.deleted:
print("Session is not clean") Helper_App.console_log("Session is not clean")
return return
# Assuming `permanent_table_name` is a string representing the table name # Assuming `permanent_table_name` is a string representing the table name
table_object = db.metadata.tables.get(permanent_table_name) table_object = db.metadata.tables.get(permanent_table_name)
if table_object is None: if table_object is None:
print(f"Table {permanent_table_name} not found in metadata.") Helper_App.console_log(f"Table {permanent_table_name} not found in metadata.")
return return
else: else:
expected_columns = set(column.name for column in db.inspect(table_object).columns) expected_columns = set(column.name for column in db.inspect(table_object).columns)
print(f'expected_columns: {expected_columns}') Helper_App.console_log(f'expected_columns: {expected_columns}')
try: try:
for i in range(0, len(records), batch_size): for i in range(0, len(records), batch_size):
batch = records[i:i+batch_size] batch = records[i:i+batch_size]
print(f'batch: {batch}') Helper_App.console_log(f'batch: {batch}')
db.session.bulk_save_objects(batch) db.session.bulk_save_objects(batch)
""" """
data = [object.to_json() for object in batch] data = [object.to_json() for object in batch]
print(f'data: {data}') Helper_App.console_log(f'data: {data}')
for row in data: for row in data:
row_keys = set(row.keys()) row_keys = set(row.keys())
if row_keys != expected_columns: if row_keys != expected_columns:
print(f"Column mismatch in row: {row}") Helper_App.console_log(f"Column mismatch in row: {row}")
print(f'missing columns: {expected_columns - row_keys}') Helper_App.console_log(f'missing columns: {expected_columns - row_keys}')
print(f'extra columns: {row_keys - expected_columns}') Helper_App.console_log(f'extra columns: {row_keys - expected_columns}')
# db.session.bulk_insert_mappings(permanent_table_name, data) # db.session.bulk_insert_mappings(permanent_table_name, data)
""" """
db.session.commit() db.session.commit()
except Exception as e: except Exception as e:
print(f'{_m}\n{e}') Helper_App.console_log(f'{_m}\n{e}')
db.session.rollback() db.session.rollback()
raise e raise e
@classmethod @classmethod
@@ -219,15 +220,15 @@ class DataStore_Base(BaseModel):
argument_dict = filters.to_json() argument_dict = filters.to_json()
# user = cls.get_user_session() # user = cls.get_user_session()
# argument_dict['a_id_user'] = 1 # 'auth0|6582b95c895d09a70ba10fef' # id_user # argument_dict['a_id_user'] = 1 # 'auth0|6582b95c895d09a70ba10fef' # id_user
print(f'argument_dict: {argument_dict}') Helper_App.console_log(f'argument_dict: {argument_dict}')
print('executing p_shop_get_many_access_level') Helper_App.console_log('executing p_shop_get_many_access_level')
result = cls.db_procedure_execute('p_shop_get_many_access_level', argument_dict) result = cls.db_procedure_execute('p_shop_get_many_access_level', argument_dict)
cursor = result.cursor cursor = result.cursor
print('data received') Helper_App.console_log('data received')
# access_levels # access_levels
result_set_1 = cursor.fetchall() result_set_1 = cursor.fetchall()
print(f'raw access levels: {result_set_1}') Helper_App.console_log(f'raw access levels: {result_set_1}')
access_levels = [] access_levels = []
for row in result_set_1: for row in result_set_1:
new_access_level = Access_Level.from_DB_access_level(row) new_access_level = Access_Level.from_DB_access_level(row)
@@ -236,12 +237,12 @@ class DataStore_Base(BaseModel):
# Errors # Errors
cursor.nextset() cursor.nextset()
result_set_e = cursor.fetchall() result_set_e = cursor.fetchall()
print(f'raw errors: {result_set_e}') Helper_App.console_log(f'raw errors: {result_set_e}')
errors = [] errors = []
if len(result_set_e) > 0: if len(result_set_e) > 0:
errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # (row[0], row[1]) errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # (row[0], row[1])
for error in errors: 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) DataStore_Base.db_cursor_clear(cursor)
cursor.close() cursor.close()
@@ -256,15 +257,15 @@ class DataStore_Base(BaseModel):
argument_dict = filters.to_json() argument_dict = filters.to_json()
# user = cls.get_user_session() # user = cls.get_user_session()
# argument_dict['a_id_user'] = 1 # 'auth0|6582b95c895d09a70ba10fef' # id_user # argument_dict['a_id_user'] = 1 # 'auth0|6582b95c895d09a70ba10fef' # id_user
print(f'argument_dict: {argument_dict}') Helper_App.console_log(f'argument_dict: {argument_dict}')
print('executing p_shop_get_many_unit_measurement') Helper_App.console_log('executing p_shop_get_many_unit_measurement')
result = cls.db_procedure_execute('p_shop_get_many_unit_measurement', argument_dict) result = cls.db_procedure_execute('p_shop_get_many_unit_measurement', argument_dict)
cursor = result.cursor cursor = result.cursor
print('data received') Helper_App.console_log('data received')
# units of measurement # units of measurement
result_set_1 = cursor.fetchall() 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 = [] units = []
for row in result_set_1: for row in result_set_1:
new_unit = Unit_Measurement.from_DB_unit_measurement(row) new_unit = Unit_Measurement.from_DB_unit_measurement(row)
@@ -273,12 +274,12 @@ class DataStore_Base(BaseModel):
# Errors # Errors
cursor.nextset() cursor.nextset()
result_set_e = cursor.fetchall() result_set_e = cursor.fetchall()
print(f'raw errors: {result_set_e}') Helper_App.console_log(f'raw errors: {result_set_e}')
errors = [] errors = []
if len(result_set_e) > 0: if len(result_set_e) > 0:
errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # (row[0], row[1]) errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # (row[0], row[1])
for error in errors: 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) DataStore_Base.db_cursor_clear(cursor)
cursor.close() cursor.close()

View File

@@ -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 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 datastores.datastore_base import DataStore_Base
from extensions import db from extensions import db
from helpers.helper_app import Helper_App
from helpers.helper_db_mysql import Helper_DB_MySQL from helpers.helper_db_mysql import Helper_DB_MySQL
import lib.argument_validation as av import lib.argument_validation as av
# from models.model_view_store_checkout import Model_View_Store_Checkout # circular! # from models.model_view_store_checkout import Model_View_Store_Checkout # circular!
@@ -70,38 +71,38 @@ class DataStore_Store_Base(DataStore_Base):
, **argument_dict , **argument_dict
, 'a_debug': 0 , 'a_debug': 0
} }
print(f'argument_dict: {argument_dict}') Helper_App.console_log(f'argument_dict: {argument_dict}')
print('executing p_shop_get_many_product') Helper_App.console_log('executing p_shop_get_many_product')
result = cls.db_procedure_execute('p_shop_get_many_product', argument_dict) result = cls.db_procedure_execute('p_shop_get_many_product', argument_dict)
cursor = result.cursor cursor = result.cursor
print('data received') Helper_App.console_log('data received')
category_list = Product_Category_Container() category_list = Product_Category_Container()
print(f'initial category_list: {category_list}') Helper_App.console_log(f'initial category_list: {category_list}')
# Categories # Categories
result_set_1 = cursor.fetchall() 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: for row in result_set_1:
new_category = Product_Category.from_DB_get_many_product_catalogue(row) 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) 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 # Products
cursor.nextset() cursor.nextset()
result_set_2 = cursor.fetchall() 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: 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) 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: try:
category_list.add_product(new_product) category_list.add_product(new_product)
except Exception as e: except Exception as e:
print(f'Error adding product: {e}') Helper_App.console_log(f'Error adding product: {e}')
# Permutations # Permutations
cursor.nextset() cursor.nextset()
@@ -111,7 +112,7 @@ class DataStore_Store_Base(DataStore_Base):
try: try:
category_list.add_product_permutation(new_permutation) category_list.add_product_permutation(new_permutation)
except Exception as e: except Exception as e:
print(f'Error adding permutation: {e}') Helper_App.console_log(f'Error adding permutation: {e}')
# Product_Variations # Product_Variations
cursor.nextset() cursor.nextset()
@@ -121,7 +122,7 @@ class DataStore_Store_Base(DataStore_Base):
try: try:
category_list.add_product_variation(new_variation) category_list.add_product_variation(new_variation)
except Exception as e: except Exception as e:
print(f'Error adding variation: {e}') Helper_App.console_log(f'Error adding variation: {e}')
# Images # Images
cursor.nextset() cursor.nextset()
@@ -133,20 +134,20 @@ class DataStore_Store_Base(DataStore_Base):
# Errors # Errors
cursor.nextset() cursor.nextset()
result_set_e = cursor.fetchall() result_set_e = cursor.fetchall()
print(f'raw errors: {result_set_e}') Helper_App.console_log(f'raw errors: {result_set_e}')
errors = [] errors = []
if len(result_set_e) > 0: if len(result_set_e) > 0:
errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # (row[0], row[1]) errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # (row[0], row[1])
for error in errors: 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() category_list.get_all_product_variation_trees()
""" """
for category in category_list.categories: for category in category_list.categories:
print(f'category: {category.name}') Helper_App.console_log(f'category: {category.name}')
for product in category.products: for product in category.products:
permutation = product.get_permutation_selected() 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: if len(errors) > 0:
@@ -168,7 +169,7 @@ class DataStore_Store_Base(DataStore_Base):
DataStore_Store_Base.db_cursor_clear(cursor) DataStore_Store_Base.db_cursor_clear(cursor)
cursor.close() 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 return category_list, errors # categories, category_index
""" """
@@ -201,10 +202,10 @@ class DataStore_Store_Base(DataStore_Base):
'a_get_inactive_currency': 0 '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) result = cls.db_procedure_execute(_m_db_currency, argument_dict_list_currency)
cursor = result.cursor cursor = result.cursor
print('data received') Helper_App.console_log('data received')
# cursor.nextset() # cursor.nextset()
result_set_1 = cursor.fetchall() result_set_1 = cursor.fetchall()
@@ -212,7 +213,7 @@ class DataStore_Store_Base(DataStore_Base):
for row in result_set_1: for row in result_set_1:
currency = Currency.from_DB_currency(row) currency = Currency.from_DB_currency(row)
currencies.append(currency) currencies.append(currency)
print(f'currencies: {currencies}') Helper_App.console_log(f'currencies: {currencies}')
DataStore_Store_Base.db_cursor_clear(cursor) DataStore_Store_Base.db_cursor_clear(cursor)
return currencies return currencies
@@ -226,10 +227,10 @@ class DataStore_Store_Base(DataStore_Base):
'a_get_inactive_currency': 0 '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) result = cls.db_procedure_execute(_m_db_region, argument_dict_list_region)
cursor = result.cursor cursor = result.cursor
print('data received') Helper_App.console_log('data received')
# cursor.nextset() # cursor.nextset()
result_set_1 = cursor.fetchall() result_set_1 = cursor.fetchall()
@@ -237,7 +238,7 @@ class DataStore_Store_Base(DataStore_Base):
for row in result_set_1: for row in result_set_1:
region = Region.from_DB_region(row) region = Region.from_DB_region(row)
regions.append(region) regions.append(region)
print(f'regions: {regions}') Helper_App.console_log(f'regions: {regions}')
DataStore_Store_Base.db_cursor_clear(cursor) DataStore_Store_Base.db_cursor_clear(cursor)
cursor.close() cursor.close()
@@ -253,7 +254,7 @@ class DataStore_Store_Base(DataStore_Base):
@classmethod @classmethod
def get_many_product_variation(cls, variation_filters): def get_many_product_variation(cls, variation_filters):
_m = 'DataStore_Store_Base.get_many_product_variation' _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) av.val_instance(variation_filters, 'variation_filters', _m, Product_Variation_Filters)
guid = Helper_DB_MySQL.create_guid() guid = Helper_DB_MySQL.create_guid()
@@ -290,7 +291,7 @@ class DataStore_Store_Base(DataStore_Base):
variation_types.append(new_variation_type) variation_types.append(new_variation_type)
variation_types_dict[new_variation_type.id_type] = 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 # Product_Variations
cursor.nextset() cursor.nextset()
@@ -306,11 +307,11 @@ class DataStore_Store_Base(DataStore_Base):
errors = [] errors = []
cursor.nextset() cursor.nextset()
result_set_e = cursor.fetchall() 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: 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] 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: 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) DataStore_Store_Base.db_cursor_clear(cursor)

View File

@@ -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.user import User, User_Filters, User_Permission_Evaluation
from business_objects.store.product_variation import Product_Variation, Product_Variation_Filters, Product_Variation_Container 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 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 helpers.helper_db_mysql import Helper_DB_MySQL
# from models.model_view_store_checkout import Model_View_Store_Checkout # circular! # from models.model_view_store_checkout import Model_View_Store_Checkout # circular!
from extensions import db 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): 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? # redundant argument validation?
_m = 'DataStore_Store_Base.edit_basket' _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_instance(filters, 'filters', _m, Parameters_Product_Category)
# av.val_str(ids_product_basket, 'ids_product_basket', _m) # av.val_str(ids_product_basket, 'ids_product_basket', _m)
av.val_str(ids_permutation_basket, 'ids_permutation_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': if id_product_edit == 'None':
id_product_edit = None id_product_edit = None
else: 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) av.val_int(id_product_edit, 'id_product_edit', _m)
""" """
if id_permutation_edit == 'None' or str(type(id_permutation_edit)) =="<class 'NoneType'>": if id_permutation_edit == 'None' or str(type(id_permutation_edit)) =="<class 'NoneType'>":
id_permutation_edit = None id_permutation_edit = None
else: else:
print(f'id_permutation_edit: {id_permutation_edit}') Helper_App.console_log(f'id_permutation_edit: {id_permutation_edit}')
print(str(type(id_permutation_edit))) Helper_App.console_log(str(type(id_permutation_edit)))
av.val_int(id_permutation_edit, 'id_permutation_edit', _m) av.val_int(id_permutation_edit, 'id_permutation_edit', _m)
if quantity_permutation_edit == 'None' or str(type(quantity_permutation_edit)) =="<class 'NoneType'>": if quantity_permutation_edit == 'None' or str(type(quantity_permutation_edit)) =="<class 'NoneType'>":
quantity_permutation_edit = None quantity_permutation_edit = None
else: 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) av.val_int(quantity_permutation_edit, 'quantity_permutation_edit', _m)
if sum_not_edit == 'None': if sum_not_edit == 'None':
sum_not_edit = None sum_not_edit = None
else: 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) av.val_bool(sum_not_edit, 'sum_not_edit', _m)
argument_dict_list = { 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) 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 cursor = result.cursor
# categories, category_index = DataStore_Store_Base.input_many_product(cursor) # categories, category_index = DataStore_Store_Base.input_many_product(cursor)
category_list, errors = 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 # Basket
if not cursor.nextset(): if not cursor.nextset():
raise Exception("No more query results! Cannot open basket contents") raise Exception("No more query results! Cannot open basket contents")
result_set = cursor.fetchall() result_set = cursor.fetchall()
print(f'raw basket: {result_set}') Helper_App.console_log(f'raw basket: {result_set}')
# print(f'variations: {result_set_3}') # Helper_App.console_log(f'variations: {result_set_3}')
# variations = [Product_Variation(**row) for row in result_set_3] # variations = [Product_Variation(**row) for row in result_set_3]
basket = Basket(is_included_VAT, id_currency, id_region_delivery) basket = Basket(is_included_VAT, id_currency, id_region_delivery)
for row in result_set: 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]) index_product = category.get_index_product_from_id(row[1])
product = category.products[index_product] product = category.products[index_product]
basket_item = Basket_Item.from_product_and_quantity_and_VAT_included(product, row[7], self.app.is_included_VAT) 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}') Helper_App.console_log(f'adding basket item: {row}')
print(f'basket item: {basket_item}') 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])) 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 # Errors
cursor.nextset() cursor.nextset()
result_set_e = cursor.fetchall() 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: 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] 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: 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) DataStore_Store_Base.db_cursor_clear(cursor)

View File

@@ -16,6 +16,7 @@ import lib.argument_validation as av
from business_objects.sql_error import SQL_Error 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 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 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 helpers.helper_db_mysql import Helper_DB_MySQL
from extensions import db from extensions import db
# external # external
@@ -45,15 +46,15 @@ class DataStore_Store_Manufacturing_Purchase_Order(DataStore_Store_Base):
, **argument_dict , **argument_dict
, 'a_debug': 0 , 'a_debug': 0
} }
print(f'argument_dict: {argument_dict}') Helper_App.console_log(f'argument_dict: {argument_dict}')
print('executing p_shop_get_many_manufacturing_purchase_order') 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) result = self.db_procedure_execute('p_shop_get_many_manufacturing_purchase_order', argument_dict)
cursor = result.cursor cursor = result.cursor
print('data received') Helper_App.console_log('data received')
# Manufacturing_Purchase_Orders # Manufacturing_Purchase_Orders
result_set_1 = cursor.fetchall() 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 = [] manufacturing_purchase_orders = []
indices_manufacturing_purchase_order = {} indices_manufacturing_purchase_order = {}
for row in result_set_1: for row in result_set_1:
@@ -64,7 +65,7 @@ class DataStore_Store_Manufacturing_Purchase_Order(DataStore_Store_Base):
# Manufacturing_Purchase_Orders Items # Manufacturing_Purchase_Orders Items
cursor.nextset() cursor.nextset()
result_set_1 = cursor.fetchall() 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 = [] order_product_links = []
for row in result_set_1: for row in result_set_1:
new_link = Manufacturing_Purchase_Order_Product_Link.from_DB_manufacturing_purchase_order(row) 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 # Errors
cursor.nextset() cursor.nextset()
result_set_e = cursor.fetchall() result_set_e = cursor.fetchall()
print(f'raw errors: {result_set_e}') Helper_App.console_log(f'raw errors: {result_set_e}')
errors = [] errors = []
if len(result_set_e) > 0: if len(result_set_e) > 0:
errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # (row[0], row[1]) errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # (row[0], row[1])
for error in errors: 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) 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 = Manufacturing_Purchase_Order_Temp.from_manufacturing_purchase_order(manufacturing_purchase_order)
row.guid = guid row.guid = guid
rows_order.append(row) 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) 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 = [] rows_link = []
for manufacturing_purchase_order in manufacturing_purchase_orders: 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 = Manufacturing_Purchase_Order_Product_Link_Temp.from_manufacturing_purchase_order_product_link(link)
row.guid = guid row.guid = guid
rows_link.append(row) 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) 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 = { argument_dict_list = {
'a_comment': comment, 'a_comment': comment,
@@ -119,18 +120,18 @@ class DataStore_Store_Manufacturing_Purchase_Order(DataStore_Store_Base):
'a_debug': 0 'a_debug': 0
} }
result = cls.db_procedure_execute('p_shop_save_manufacturing_purchase_order', argument_dict_list) 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 # Errors
cursor = result.cursor cursor = result.cursor
cursor.nextset() cursor.nextset()
result_set_e = cursor.fetchall() result_set_e = cursor.fetchall()
print(f'raw errors: {result_set_e}') Helper_App.console_log(f'raw errors: {result_set_e}')
errors = [] errors = []
if len(result_set_e) > 0: if len(result_set_e) > 0:
errors = [SQL_Error.from_DB_record(row) for row in result_set_e] errors = [SQL_Error.from_DB_record(row) for row in result_set_e]
for error in errors: 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) DataStore_Store_Manufacturing_Purchase_Order.db_cursor_clear(cursor)
return errors return errors

View File

@@ -15,6 +15,7 @@ import lib.argument_validation as av
from business_objects.sql_error import SQL_Error from business_objects.sql_error import SQL_Error
from business_objects.store.product import Product, Product_Permutation, Product_Price, Parameters_Product, Product_Temp 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 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 helpers.helper_db_mysql import Helper_DB_MySQL
# from models.model_view_store_checkout import Model_View_Store_Checkout # circular! # from models.model_view_store_checkout import Model_View_Store_Checkout # circular!
from extensions import db from extensions import db
@@ -86,8 +87,8 @@ class DataStore_Store_Product(DataStore_Store_Base):
@classmethod @classmethod
def save_products(cls, comment, products): def save_products(cls, comment, products):
_m = 'DataStore_Store_Product.save_products' _m = 'DataStore_Store_Product.save_products'
print(f'{_m}\nstarting...') Helper_App.console_log(f'{_m}\nstarting...')
print(f'comment: {comment}\nproducts: {products}') Helper_App.console_log(f'comment: {comment}\nproducts: {products}')
guid = Helper_DB_MySQL.create_guid() guid = Helper_DB_MySQL.create_guid()
user = cls.get_user_session() user = cls.get_user_session()
@@ -99,11 +100,11 @@ class DataStore_Store_Product(DataStore_Store_Base):
id_product_new -= 1 id_product_new -= 1
row.id_product = id_product_new row.id_product = id_product_new
else: else:
print(f'row.id_product: {row.id_product}') Helper_App.console_log(f'row.id_product: {row.id_product}')
row.guid = guid row.guid = guid
rows.append(row) rows.append(row)
print(f'rows: {rows}') Helper_App.console_log(f'rows: {rows}')
DataStore_Store_Base.upload_bulk(Product_Temp.__tablename__, rows, 1000) DataStore_Store_Base.upload_bulk(Product_Temp.__tablename__, rows, 1000)
argument_dict_list = { 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) save_result = cls.db_procedure_execute('p_shop_save_product', argument_dict_list)
cursor = save_result # .cursor cursor = save_result # .cursor
print('data received') Helper_App.console_log('data received')
# Errors # Errors
# cursor.nextset() # cursor.nextset()
result_set_e = cursor.fetchall() result_set_e = cursor.fetchall()
print(f'raw errors: {result_set_e}') Helper_App.console_log(f'raw errors: {result_set_e}')
errors = [] errors = []
if len(result_set_e) > 0: if len(result_set_e) > 0:
errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # (row[0], row[1]) errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # (row[0], row[1])
for error in errors: for error in errors:
print(f"Error [{error.code}]: {error.msg}") Helper_App.console_log(f"Error [{error.code}]: {error.msg}")
try: try:
DataStore_Store_Base.db_cursor_clear(cursor) DataStore_Store_Base.db_cursor_clear(cursor)
except Exception as e: except Exception as e:
print(f'Error clearing cursor: {e}') Helper_App.console_log(f'Error clearing cursor: {e}')
cursor.close() cursor.close()
save_result.close() save_result.close()
print('save procedure executed') Helper_App.console_log('save procedure executed')
return errors return errors

View File

@@ -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 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_base import Table_Shop_Product_Category, Table_Shop_Product_Category_Temp
from datastores.datastore_store_base import DataStore_Store_Base 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 helpers.helper_db_mysql import Helper_DB_MySQL
# from models.model_view_store_checkout import Model_View_Store_Checkout # circular! # from models.model_view_store_checkout import Model_View_Store_Checkout # circular!
from extensions import db from extensions import db
@@ -48,8 +49,8 @@ class DataStore_Store_Product_Category(DataStore_Store_Base):
@classmethod @classmethod
def save_categories(cls, comment, categories): def save_categories(cls, comment, categories):
_m = 'DataStore_Store_Product_Category.save_categories' _m = 'DataStore_Store_Product_Category.save_categories'
print(f'{_m}\nstarting...') Helper_App.console_log(f'{_m}\nstarting...')
print(f'comment: {comment}\ncategories: {categories}') Helper_App.console_log(f'comment: {comment}\ncategories: {categories}')
# av.val_str(comment, 'comment', _m) # av.val_str(comment, 'comment', _m)
# av.val_list_instances(categories, 'categories', _m, Product_Category, 1) # 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 id_category_new -= 1
row.id_category = id_category_new row.id_category = id_category_new
else: else:
print(f'row.id_category: {row.id_category}') Helper_App.console_log(f'row.id_category: {row.id_category}')
row.guid = guid row.guid = guid
# row.created_on = now # row.created_on = now
# row.created_by = user.id_user # row.created_by = user.id_user
rows.append(row) rows.append(row)
print(f'rows: {rows}') Helper_App.console_log(f'rows: {rows}')
""" """
cursor = db.cursor() cursor = db.cursor()
print('cursor created') Helper_App.console_log('cursor created')
cursor.executemany( 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)', '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 categories
) )
print('bulk upload executed') Helper_App.console_log('bulk upload executed')
db.commit() db.commit()
print('bulk upload committed') Helper_App.console_log('bulk upload committed')
cursor.close() cursor.close()
print('cursor closed') Helper_App.console_log('cursor closed')
""" """
DataStore_Store_Base.upload_bulk(Product_Category_Temp.__tablename__, rows, 1000) 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 = cls.db_procedure_execute('p_shop_save_product_category', argument_dict_list)
save_result.close() save_result.close()
print('save procedure executed') Helper_App.console_log('save procedure executed')

View File

@@ -15,6 +15,7 @@ import lib.argument_validation as av
from business_objects.store.store_base import Store_Base from business_objects.store.store_base import Store_Base
from business_objects.store.product_permutation import Product_Permutation, Product_Permutation_Temp from business_objects.store.product_permutation import Product_Permutation, Product_Permutation_Temp
from datastores.datastore_store_base import DataStore_Store_Base 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 helpers.helper_db_mysql import Helper_DB_MySQL
# from models.model_view_store_checkout import Model_View_Store_Checkout # circular! # from models.model_view_store_checkout import Model_View_Store_Checkout # circular!
from extensions import db from extensions import db
@@ -53,11 +54,11 @@ class DataStore_Store_Product_Permutation(DataStore_Store_Base):
row.guid = guid row.guid = guid
rows.append(row) rows.append(row)
print(f'rows: {rows}') Helper_App.console_log(f'rows: {rows}')
""" """
cursor = db.cursor() cursor = db.cursor()
print('cursor created') Helper_App.console_log('cursor created')
cursor.executemany( cursor.executemany(
'''INSERT INTO Shop_Product_Permutation_Temp ( '''INSERT INTO Shop_Product_Permutation_Temp (
id_permutation, 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)''', VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)''',
rows rows
) )
print('cursor executed') Helper_App.console_log('cursor executed')
db.commit() db.commit()
print('cursor committed') Helper_App.console_log('cursor committed')
cursor.close() cursor.close()
print('cursor closed') Helper_App.console_log('cursor closed')
""" """
DataStore_Store_Base.upload_bulk(Product_Permutation_Temp.__tablename__, rows, 1000) DataStore_Store_Base.upload_bulk(Product_Permutation_Temp.__tablename__, rows, 1000)
print('bulk uploaded') Helper_App.console_log('bulk uploaded')
argument_dict_list = { argument_dict_list = {
'a_comment': comment, 'a_comment': comment,
@@ -100,4 +101,4 @@ class DataStore_Store_Product_Permutation(DataStore_Store_Base):
'a_id_user': user.id_user, 'a_id_user': user.id_user,
} }
cls.db_procedure_execute('p_shop_save_product_permutation', argument_dict_list) cls.db_procedure_execute('p_shop_save_product_permutation', argument_dict_list)
print('saved product permutations') Helper_App.console_log('saved product permutations')

View File

@@ -16,6 +16,7 @@ import lib.argument_validation as av
from business_objects.sql_error import SQL_Error from business_objects.sql_error import SQL_Error
from business_objects.store.stock_item import Stock_Item, Parameters_Stock_Item, Stock_Item_Temp 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 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 helpers.helper_db_mysql import Helper_DB_MySQL
# from models.model_view_store_checkout import Model_View_Store_Checkout # circular! # from models.model_view_store_checkout import Model_View_Store_Checkout # circular!
from extensions import db from extensions import db
@@ -53,13 +54,13 @@ class DataStore_Store_Stock_Item(DataStore_Store_Base):
, 'a_debug': 0 , 'a_debug': 0
} }
ids_permutation = category_list.get_csv_ids_permutation() 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 argument_dict['a_ids_product_permutation'] = ids_permutation
print(f'argument_dict: {argument_dict}') Helper_App.console_log(f'argument_dict: {argument_dict}')
print('executing p_shop_get_many_stock_item') Helper_App.console_log('executing p_shop_get_many_stock_item')
result = self.db_procedure_execute('p_shop_get_many_stock_item', argument_dict) result = self.db_procedure_execute('p_shop_get_many_stock_item', argument_dict)
cursor = result.cursor 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) category_list, errors = DataStore_Store_Stock_Item.input_many_stock_item(cursor, category_list)
DataStore_Store_Stock_Item.db_cursor_clear(cursor) 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): def input_many_stock_item(cursor, category_list):
_m = 'DataStore_Store_Stock_Item.input_many_stock_item' _m = 'DataStore_Store_Stock_Item.input_many_stock_item'
result_set_1 = cursor.fetchall() 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: for row in result_set_1:
new_stock_item = Stock_Item.from_DB_stock_item(row) new_stock_item = Stock_Item.from_DB_stock_item(row)
category_list.add_stock_item(new_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 # Errors
cursor.nextset() cursor.nextset()
result_set_e = cursor.fetchall() result_set_e = cursor.fetchall()
print(f'raw errors: {result_set_e}') Helper_App.console_log(f'raw errors: {result_set_e}')
errors = [] errors = []
if len(result_set_e) > 0: if len(result_set_e) > 0:
errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # (row[0], row[1]) errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # (row[0], row[1])
for error in errors: 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: if len(errors) > 0:
for error in errors: for error in errors:
@@ -117,10 +118,10 @@ class DataStore_Store_Stock_Item(DataStore_Store_Base):
row.guid = guid row.guid = guid
rows.append(row) 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) DataStore_Store_Base.upload_bulk(Stock_Item_Temp.__tablename__, rows, 1000)
print('bulk uploaded') Helper_App.console_log('bulk uploaded')
argument_dict_list = { argument_dict_list = {
'a_comment': comment, 'a_comment': comment,
@@ -129,17 +130,17 @@ class DataStore_Store_Stock_Item(DataStore_Store_Base):
'a_debug': 0 'a_debug': 0
} }
result = cls.db_procedure_execute('p_shop_save_stock_item', argument_dict_list) 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 # Errors
cursor = result.cursor cursor = result.cursor
cursor.nextset() cursor.nextset()
result_set_e = cursor.fetchall() result_set_e = cursor.fetchall()
print(f'raw errors: {result_set_e}') Helper_App.console_log(f'raw errors: {result_set_e}')
errors = [] errors = []
if len(result_set_e) > 0: if len(result_set_e) > 0:
errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # (row[0], row[1]) errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # (row[0], row[1])
for error in errors: 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) DataStore_Store_Stock_Item.db_cursor_clear(cursor)
return errors return errors

View File

@@ -30,6 +30,7 @@ from datastores.datastore_store_base import DataStore_Store_Base
# from helpers.helper_db_mysql import Helper_DB_MySQL # from helpers.helper_db_mysql import Helper_DB_MySQL
# from models.model_view_store_checkout import Model_View_Store_Checkout # circular! # from models.model_view_store_checkout import Model_View_Store_Checkout # circular!
from extensions import db from extensions import db
from helpers.helper_app import Helper_App
# external # external
# from abc import ABC, abstractmethod, abstractproperty # from abc import ABC, abstractmethod, abstractproperty
from flask_sqlalchemy import SQLAlchemy from flask_sqlalchemy import SQLAlchemy
@@ -72,10 +73,10 @@ class DataStore_Store_Stripe(DataStore_Store_Base):
'a_id_user': self.info_user '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) result = self.db_procedure_execute(_m_db, argument_dict_list)
cursor = result.cursor cursor = result.cursor
print('data received') Helper_App.console_log('data received')
# Products # Products
@@ -85,16 +86,16 @@ class DataStore_Store_Stripe(DataStore_Store_Base):
for row in result_set_1: 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]) 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) products.append(new_product)
print(f'products: {products}') Helper_App.console_log(f'products: {products}')
# Errors # Errors
cursor.nextset() cursor.nextset()
result_set_e = cursor.fetchall() 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: 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] 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: 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) DataStore_Store_Stripe.db_cursor_clear(cursor)
@@ -110,10 +111,10 @@ class DataStore_Store_Stripe(DataStore_Store_Base):
'a_id_user': self.info_user '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) result = self.db_procedure_execute(_m_db, argument_dict_list)
cursor = result.cursor cursor = result.cursor
print('data received') Helper_App.console_log('data received')
# Products # Products
@@ -123,16 +124,16 @@ class DataStore_Store_Stripe(DataStore_Store_Base):
for row in result_set_1: 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]) 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) products.append(new_product)
print(f'products: {products}') Helper_App.console_log(f'products: {products}')
# Errors # Errors
cursor.nextset() cursor.nextset()
result_set_e = cursor.fetchall() 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: 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] 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: 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) 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_str(product_description, 'product_description', _m)
av.val_instance(product, 'product', _m, Product) 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( new_product = stripe.Product.create(
name = product.name, name = product.name,
description = product.description, description = product.description,
) )
# Save these identifiers # 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 return new_product.id
@@ -188,7 +189,7 @@ class DataStore_Store_Stripe(DataStore_Store_Base):
av.val_instance(product, 'product', _m, Product) av.val_instance(product, 'product', _m, Product)
av.val_str(currency, 'currency', _m) 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( new_product_price = stripe.Price.create(
unit_amount = product.unit_price, unit_amount = product.unit_price,
@@ -198,7 +199,7 @@ class DataStore_Store_Stripe(DataStore_Store_Base):
) )
# Save these identifiers # 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 return new_product_price.id

View File

@@ -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_address import Supplier_Address, Supplier_Address_Temp
from business_objects.store.supplier import Supplier, Parameters_Supplier, Supplier_Temp from business_objects.store.supplier import Supplier, Parameters_Supplier, Supplier_Temp
from datastores.datastore_store_base import DataStore_Store_Base 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 helpers.helper_db_mysql import Helper_DB_MySQL
from extensions import db from extensions import db
# external # external
@@ -47,15 +48,15 @@ class DataStore_Store_Supplier(DataStore_Store_Base):
, **argument_dict , **argument_dict
, 'a_debug': 0 , 'a_debug': 0
} }
print(f'argument_dict: {argument_dict}') Helper_App.console_log(f'argument_dict: {argument_dict}')
print('executing p_shop_get_many_supplier') Helper_App.console_log('executing p_shop_get_many_supplier')
result = cls.db_procedure_execute('p_shop_get_many_supplier', argument_dict) result = cls.db_procedure_execute('p_shop_get_many_supplier', argument_dict)
cursor = result.cursor cursor = result.cursor
print('data received') Helper_App.console_log('data received')
# Suppliers # Suppliers
result_set_1 = cursor.fetchall() result_set_1 = cursor.fetchall()
print(f'raw suppliers: {result_set_1}') Helper_App.console_log(f'raw suppliers: {result_set_1}')
suppliers = [] suppliers = []
supplier_indexes = {} supplier_indexes = {}
for row in result_set_1: for row in result_set_1:
@@ -66,7 +67,7 @@ class DataStore_Store_Supplier(DataStore_Store_Base):
# Supplier Addresses # Supplier Addresses
cursor.nextset() cursor.nextset()
result_set_1 = cursor.fetchall() 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: for row in result_set_1:
new_address = Supplier_Address.from_DB_supplier(row) new_address = Supplier_Address.from_DB_supplier(row)
index_supplier = supplier_indexes[new_address.id_supplier] index_supplier = supplier_indexes[new_address.id_supplier]
@@ -75,12 +76,12 @@ class DataStore_Store_Supplier(DataStore_Store_Base):
# Errors # Errors
cursor.nextset() cursor.nextset()
result_set_e = cursor.fetchall() result_set_e = cursor.fetchall()
print(f'raw errors: {result_set_e}') Helper_App.console_log(f'raw errors: {result_set_e}')
errors = [] errors = []
if len(result_set_e) > 0: if len(result_set_e) > 0:
errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # (row[0], row[1]) errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # (row[0], row[1])
for error in errors: 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) DataStore_Store_Supplier.db_cursor_clear(cursor)
@@ -89,7 +90,7 @@ class DataStore_Store_Supplier(DataStore_Store_Base):
@classmethod @classmethod
def save_suppliers(cls, comment, suppliers): def save_suppliers(cls, comment, suppliers):
_m = 'DataStore_Store_Supplier.save_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) av.val_str(comment, 'comment', _m)
guid = Helper_DB_MySQL.create_guid_str() 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 = Supplier_Temp.from_supplier(supplier)
row.guid = guid row.guid = guid
rows.append(row) rows.append(row)
print(f'rows: {rows}') Helper_App.console_log(f'rows: {rows}')
DataStore_Store_Base.upload_bulk(Supplier_Temp.__tablename__, rows, 1000) DataStore_Store_Base.upload_bulk(Supplier_Temp.__tablename__, rows, 1000)
print('bulk uploaded suppliers') Helper_App.console_log('bulk uploaded suppliers')
rows = [] rows = []
for supplier in suppliers: for supplier in suppliers:
print(f'supplier: {supplier}') Helper_App.console_log(f'supplier: {supplier}')
for supplier_address in supplier.addresses: for supplier_address in supplier.addresses:
row = Supplier_Address_Temp.from_supplier_address(supplier_address) row = Supplier_Address_Temp.from_supplier_address(supplier_address)
row.guid = guid row.guid = guid
rows.append(row) 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) 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 = { argument_dict_list = {
'a_comment': comment, 'a_comment': comment,
@@ -125,18 +126,18 @@ class DataStore_Store_Supplier(DataStore_Store_Base):
'a_debug': 0 'a_debug': 0
} }
result = cls.db_procedure_execute('p_shop_save_supplier', argument_dict_list) result = cls.db_procedure_execute('p_shop_save_supplier', argument_dict_list)
print('saved suppliers') Helper_App.console_log('saved suppliers')
# Errors # Errors
cursor = result.cursor cursor = result.cursor
cursor.nextset() cursor.nextset()
result_set_e = cursor.fetchall() result_set_e = cursor.fetchall()
print(f'raw errors: {result_set_e}') Helper_App.console_log(f'raw errors: {result_set_e}')
errors = [] errors = []
if len(result_set_e) > 0: if len(result_set_e) > 0:
errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # (row[0], row[1]) errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # (row[0], row[1])
for error in errors: 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) DataStore_Store_Supplier.db_cursor_clear(cursor)
return errors return errors

View File

@@ -16,6 +16,7 @@ import lib.argument_validation as av
from business_objects.sql_error import SQL_Error 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 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 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 helpers.helper_db_mysql import Helper_DB_MySQL
from extensions import db from extensions import db
# external # external
@@ -45,15 +46,15 @@ class DataStore_Store_Supplier_Purchase_Order(DataStore_Store_Base):
, **argument_dict , **argument_dict
, 'a_debug': 0 , 'a_debug': 0
} }
print(f'argument_dict: {argument_dict}') Helper_App.console_log(f'argument_dict: {argument_dict}')
print('executing p_shop_get_many_supplier_purchase_order') 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) result = self.db_procedure_execute('p_shop_get_many_supplier_purchase_order', argument_dict)
cursor = result.cursor cursor = result.cursor
print('data received') Helper_App.console_log('data received')
# Supplier_Purchase_Orders # Supplier_Purchase_Orders
result_set_1 = cursor.fetchall() 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 = [] supplier_purchase_orders = []
indices_supplier_purchase_order = {} indices_supplier_purchase_order = {}
for row in result_set_1: for row in result_set_1:
@@ -64,7 +65,7 @@ class DataStore_Store_Supplier_Purchase_Order(DataStore_Store_Base):
# Supplier_Purchase_Orders Items # Supplier_Purchase_Orders Items
cursor.nextset() cursor.nextset()
result_set_2 = cursor.fetchall() 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 = [] order_product_links = []
for row in result_set_2: for row in result_set_2:
new_link = Supplier_Purchase_Order_Product_Link.from_DB_supplier_purchase_order(row) 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 # Errors
cursor.nextset() cursor.nextset()
result_set_e = cursor.fetchall() result_set_e = cursor.fetchall()
print(f'raw errors: {result_set_e}') Helper_App.console_log(f'raw errors: {result_set_e}')
errors = [] errors = []
if len(result_set_e) > 0: if len(result_set_e) > 0:
errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # (row[0], row[1]) errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # (row[0], row[1])
for error in errors: 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) 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 = Supplier_Purchase_Order_Temp.from_supplier_purchase_order(supplier_purchase_order)
row.guid = guid row.guid = guid
rows_order.append(row) 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) 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 = [] rows_link = []
for supplier_purchase_order in supplier_purchase_orders: 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 = Supplier_Purchase_Order_Product_Link_Temp.from_supplier_purchase_order_product_link(link)
row.guid = guid row.guid = guid
rows_link.append(row) 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) 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 = { argument_dict_list = {
'a_comment': comment, 'a_comment': comment,
@@ -120,13 +121,13 @@ class DataStore_Store_Supplier_Purchase_Order(DataStore_Store_Base):
'a_debug': 0 'a_debug': 0
} }
result = cls.db_procedure_execute('p_shop_save_supplier_purchase_order', argument_dict_list) 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 # Errors
cursor = result.cursor cursor = result.cursor
cursor.nextset() cursor.nextset()
result_set_e = cursor.fetchall() result_set_e = cursor.fetchall()
print(f'raw errors: {result_set_e}') Helper_App.console_log(f'raw errors: {result_set_e}')
errors = [] errors = []
warnings = [] warnings = []
if len(result_set_e) > 0: if len(result_set_e) > 0:
@@ -136,7 +137,7 @@ class DataStore_Store_Supplier_Purchase_Order(DataStore_Store_Base):
warnings.append(new_error) warnings.append(new_error)
else: else:
errors.append(new_error) 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) cls.db_cursor_clear(cursor)
return errors, warnings return errors, warnings

View File

@@ -17,6 +17,7 @@ from business_objects.sql_error import SQL_Error
from business_objects.store.stock_item import Stock_Item from business_objects.store.stock_item import Stock_Item
from business_objects.user import User, User_Filters, User_Permission_Evaluation from business_objects.user import User, User_Filters, User_Permission_Evaluation
from datastores.datastore_base import DataStore_Base from datastores.datastore_base import DataStore_Base
from helpers.helper_app import Helper_App
from helpers.helper_db_mysql import Helper_DB_MySQL from helpers.helper_db_mysql import Helper_DB_MySQL
# from models.model_view_store_checkout import Model_View_Store_Checkout # circular! # from models.model_view_store_checkout import Model_View_Store_Checkout # circular!
from extensions import db from extensions import db
@@ -57,16 +58,16 @@ class DataStore_User(DataStore_Base):
cursor = result.cursor cursor = result.cursor
result_set_1 = cursor.fetchall() 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 # Errors
cursor.nextset() cursor.nextset()
result_set_e = cursor.fetchall() 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: 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] 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: 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) DataStore_User.db_cursor_clear(cursor)
@@ -85,10 +86,10 @@ class DataStore_User(DataStore_Base):
'a_id_checkout_session': id_checkout_session '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) result = self.db_procedure_execute('p_shop_get_many_user_order', argument_dict_list)
cursor = result.cursor cursor = result.cursor
print('data received') Helper_App.console_log('data received')
# Discount Delivery Regions # Discount Delivery Regions
@@ -98,16 +99,16 @@ class DataStore_User(DataStore_Base):
for row in result_set_1: for row in result_set_1:
new_order = Order(row[0], row[1], row[2], row[3], row[4], row[5], row[6]) new_order = Order(row[0], row[1], row[2], row[3], row[4], row[5], row[6])
orders.append(new_order) orders.append(new_order)
print(f'orders: {orders}') Helper_App.console_log(f'orders: {orders}')
# Errors # Errors
cursor.nextset() cursor.nextset()
result_set_e = cursor.fetchall() 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: 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] 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: 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) DataStore_User.db_cursor_clear(cursor)
@@ -116,7 +117,7 @@ class DataStore_User(DataStore_Base):
def get_many_user(self, user_filters, user=None): def get_many_user(self, user_filters, user=None):
_m = 'DataStore_User.get_many_user' _m = 'DataStore_User.get_many_user'
print(_m) Helper_App.console_log(_m)
# av.val_str(user_filters, 'user_filters', _m) # av.val_str(user_filters, 'user_filters', _m)
# av.val_list(permutations, 'list_permutations', _m, Product_Permutation, 1) # av.val_list(permutations, 'list_permutations', _m, Product_Permutation, 1)
av.val_instance(user_filters, 'user_filters', _m, User_Filters) av.val_instance(user_filters, 'user_filters', _m, User_Filters)
@@ -150,33 +151,33 @@ class DataStore_User(DataStore_Base):
""" """
cursor = result.cursor cursor = result.cursor
result_set = cursor.fetchall() result_set = cursor.fetchall()
print(f'raw users: {result_set}') Helper_App.console_log(f'raw users: {result_set}')
print(f'type result set: {str(type(result_set))}') Helper_App.console_log(f'type result set: {str(type(result_set))}')
print(f'len result set: {len(result_set)}') Helper_App.console_log(f'len result set: {len(result_set)}')
""" """
user_permission_evals = [] user_permission_evals = []
for row in result_set: for row in result_set:
user_permission_eval = User_Permission_Evaluation.from_DB_user_eval(row) user_permission_eval = User_Permission_Evaluation.from_DB_user_eval(row)
user_permission_evals.append(user_permission_eval) 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 = [] users = []
if len(result_set) > 0: if len(result_set) > 0:
for row in result_set: for row in result_set:
print(f'row: {row}') Helper_App.console_log(f'row: {row}')
user = User.from_DB_user(row) user = User.from_DB_user(row)
users.append(user) users.append(user)
print(f'user {str(type(user))}: {user}') Helper_App.console_log(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'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) # error_list, cursor = self.get_error_list_from_cursor(cursor)
errors = [] errors = []
cursor.nextset() cursor.nextset()
result_set_e = cursor.fetchall() 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: 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] 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: 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) DataStore_User.db_cursor_clear(cursor)
@@ -184,7 +185,7 @@ class DataStore_User(DataStore_Base):
def get_many_user(self, user_filters, user=None): def get_many_user(self, user_filters, user=None):
_m = 'DataStore_User.get_many_user' _m = 'DataStore_User.get_many_user'
print(_m) Helper_App.console_log(_m)
# av.val_str(user_filters, 'user_filters', _m) # av.val_str(user_filters, 'user_filters', _m)
# av.val_list(permutations, 'list_permutations', _m, Product_Permutation, 1) # av.val_list(permutations, 'list_permutations', _m, Product_Permutation, 1)
av.val_instance(user_filters, 'user_filters', _m, User_Filters) av.val_instance(user_filters, 'user_filters', _m, User_Filters)
@@ -218,33 +219,33 @@ class DataStore_User(DataStore_Base):
""" """
cursor = result.cursor cursor = result.cursor
result_set = cursor.fetchall() result_set = cursor.fetchall()
print(f'raw users: {result_set}') Helper_App.console_log(f'raw users: {result_set}')
print(f'type result set: {str(type(result_set))}') Helper_App.console_log(f'type result set: {str(type(result_set))}')
print(f'len result set: {len(result_set)}') Helper_App.console_log(f'len result set: {len(result_set)}')
""" """
user_permission_evals = [] user_permission_evals = []
for row in result_set: for row in result_set:
user_permission_eval = User_Permission_Evaluation.from_DB_user_eval(row) user_permission_eval = User_Permission_Evaluation.from_DB_user_eval(row)
user_permission_evals.append(user_permission_eval) 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 = [] users = []
if len(result_set) > 0: if len(result_set) > 0:
for row in result_set: for row in result_set:
print(f'row: {row}') Helper_App.console_log(f'row: {row}')
user = User.from_DB_user(row) user = User.from_DB_user(row)
users.append(user) users.append(user)
print(f'user {str(type(user))}: {user}') Helper_App.console_log(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'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) # error_list, cursor = self.get_error_list_from_cursor(cursor)
errors = [] errors = []
cursor.nextset() cursor.nextset()
result_set_e = cursor.fetchall() 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: 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] 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: 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) DataStore_User.db_cursor_clear(cursor)

View File

@@ -11,7 +11,7 @@ Feature: App Helper
# external # external
from pydantic import BaseModel, ConfigDict 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 # from flask_sqlalchemy import SQLAlchemy
@@ -19,7 +19,7 @@ class Helper_App(BaseModel):
@staticmethod @staticmethod
def get_request_data(request): def get_request_data(request):
print(f'request={request}') Helper_App.console_log(f'request={request}')
data = {} data = {}
try: try:
data = request.json data = request.json
@@ -31,5 +31,10 @@ class Helper_App(BaseModel):
data = request.form data = request.form
except: except:
pass pass
print(f'data={data}') Helper_App.console_log(f'data={data}')
return data return data
@staticmethod
def console_log(message):
if current_app.config["DEBUG"]:
print(message)

View File

@@ -7,24 +7,7 @@ Created on Thu Apr 27 12:33:59 2023
Argument Validation Argument Validation
""" """
# CLASSES from helpers.helper_app import Helper_App
# ATTRIBUTE DECLARATION
# METHODS
# FUNCTION
# ARGUMENTS
# ARGUMENT VALIDATION
# ATTRIBUTE + VARIABLE INSTANTIATION
# METHODS
# RETURNS
# NORMAL METHODS
# FUNCTION
# ARGUMENTS
# ARGUMENT VALIDATION
# VARIABLE INSTANTIATION
# METHODS
# RETURNS
from typing import Optional 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'): 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) val_bool(suppress_errors, 'suppress_errors', my_f)
# suppress_console_outputs # suppress_console_outputs
if not val_bool(suppress_console_outputs, 'suppress_console_outputs', my_f, suppress_errors): 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, "<class 'bool'>", suppress_errors)) Helper_App.console_log(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, "<class 'bool'>", suppress_errors))
return None return None
# v_name # v_name
if not val_str(v_name, 'v_name', my_f, 1, -1, suppress_errors, suppress_console_outputs): return None 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' my_f = 'full_val_bool'
val_bool(suppress_errors, 'suppress_errors', my_f) val_bool(suppress_errors, 'suppress_errors', my_f)
if not val_bool(suppress_console_outputs, 'suppress_console_outputs', my_f, suppress_errors): 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, "<class 'bool'>", suppress_errors)) Helper_App.console_log(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, "<class 'bool'>", suppress_errors))
return False return False
# method # method
if not val_str(method, 'method', my_f, 1, -1, suppress_errors, suppress_console_outputs): return False 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' my_f = 'input_int'
val_bool(suppress_errors, 'suppress_errors', my_f) val_bool(suppress_errors, 'suppress_errors', my_f)
if not val_bool(suppress_console_outputs, 'suppress_console_outputs', my_f, suppress_errors): 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, "<class 'bool'>", suppress_errors)) Helper_App.console_log(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, "<class 'bool'>", suppress_errors))
return None return None
# method # method
if not val_str(method, 'method', my_f, 1, -1, suppress_errors, suppress_console_outputs): return None 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: except:
if suppress_errors: if suppress_errors:
if not suppress_console_outputs: if not suppress_console_outputs:
print(error_msg) Helper_App.console_log(error_msg)
return None return None
int(v_input) int(v_input)
if not str(type(v_min)) == "<class 'NoneType'>": if not str(type(v_min)) == "<class 'NoneType'>":
if my_int < v_min: if my_int < v_min:
if suppress_errors: if suppress_errors:
if not suppress_console_outputs: 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 return None
if not str(type(v_max)) == "<class 'NoneType'>": if not str(type(v_max)) == "<class 'NoneType'>":
if my_int > v_max: if my_int > v_max:
if suppress_errors: if suppress_errors:
if not suppress_console_outputs: 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 return None
# RETURNS # RETURNS
return my_int 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' my_f = 'full_val_int'
val_bool(suppress_errors, 'suppress_errors', my_f) val_bool(suppress_errors, 'suppress_errors', my_f)
if not val_bool(suppress_console_outputs, 'suppress_console_outputs', my_f, suppress_errors): 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, "<class 'bool'>", suppress_errors)) Helper_App.console_log(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, "<class 'bool'>", suppress_errors))
return False return False
# v_name # v_name
if not val_str(v_name, 'v_name', my_f, 1, -1, suppress_errors, suppress_console_outputs): return False 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' my_f = 'input_float'
val_bool(suppress_errors, 'suppress_errors', my_f) val_bool(suppress_errors, 'suppress_errors', my_f)
if not val_bool(suppress_console_outputs, 'suppress_console_outputs', my_f, suppress_errors): 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, "<class 'bool'>", suppress_errors)) Helper_App.console_log(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, "<class 'bool'>", suppress_errors))
return None return None
# method # method
if not val_str(method, 'method', my_f, 1, -1, suppress_errors, suppress_console_outputs): return None 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: except:
if suppress_errors: if suppress_errors:
if not suppress_console_outputs: if not suppress_console_outputs:
print(error_msg) Helper_App.console_log(error_msg)
return None return None
float(v_input) float(v_input)
if not str(type(v_min)) == "<class 'NoneType'>": if not str(type(v_min)) == "<class 'NoneType'>":
if v_input < v_min: if v_input < v_min:
if suppress_errors: if suppress_errors:
if not suppress_console_outputs: 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 return None
if not str(type(v_max)) == "<class 'NoneType'>": if not str(type(v_max)) == "<class 'NoneType'>":
if v_input > v_max: if v_input > v_max:
if suppress_errors: if suppress_errors:
if not suppress_console_outputs: 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 return None
# RETURNS # RETURNS
return my_float 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' my_f = 'full_val_float'
val_bool(suppress_errors, 'suppress_errors', my_f) val_bool(suppress_errors, 'suppress_errors', my_f)
if not val_bool(suppress_console_outputs, 'suppress_console_outputs', my_f, suppress_errors): 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, "<class 'bool'>", suppress_errors)) Helper_App.console_log(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, "<class 'bool'>", suppress_errors))
return False return False
# method # method
if not val_str(method, 'method', my_f, 1, -1, suppress_errors, suppress_console_outputs): return False 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' my_f = 'val_type'
val_bool(suppress_errors, 'suppress_errors', my_f) val_bool(suppress_errors, 'suppress_errors', my_f)
if not val_bool(suppress_console_outputs, 'suppress_console_outputs', my_f, suppress_errors): 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, "<class 'bool'>", suppress_errors)) Helper_App.console_log(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, "<class 'bool'>", suppress_errors))
return False return False
# method # method
if not val_str(method, 'method', my_f, 1, -1, suppress_errors, suppress_console_outputs): return False 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"<class '{v_type}'>": if not mytype == v_type: # f"<class '{v_type}'>":
if suppress_errors: if suppress_errors:
if not suppress_console_outputs: if not suppress_console_outputs:
print(error_message) Helper_App.console_log(error_message)
return False return False
raise ValueError(error_message) raise ValueError(error_message)
# RETURNS # RETURNS
@@ -787,7 +770,7 @@ def val_instance(v_input, v_name, method, v_type, suppress_errors = False, suppr
my_f = 'val_type' my_f = 'val_type'
val_bool(suppress_errors, 'suppress_errors', my_f) val_bool(suppress_errors, 'suppress_errors', my_f)
if not val_bool(suppress_console_outputs, 'suppress_console_outputs', my_f, suppress_errors): 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, "<class 'bool'>", suppress_errors)) Helper_App.console_log(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, "<class 'bool'>", suppress_errors))
return False return False
# method # method
if not val_str(method, 'method', my_f, 1, -1, suppress_errors, suppress_console_outputs): return False 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"<class '{v_type}'>": if not isinstance(v_type, type): # mytype == v_type: # f"<class '{v_type}'>":
if suppress_errors: if suppress_errors:
if not suppress_console_outputs: if not suppress_console_outputs:
print(error_message) Helper_App.console_log(error_message)
return False return False
raise ValueError(error_message) # val_str(v_type, 'v_type', my_f, 6, -1, suppress_errors, suppress_console_outputs): 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 # 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"<class '{v_type}'>": if not isinstance(v_input, v_type): # mytype == v_type: # f"<class '{v_type}'>":
if suppress_errors: if suppress_errors:
if not suppress_console_outputs: if not suppress_console_outputs:
print(error_message) Helper_App.console_log(error_message)
return False return False
raise ValueError(error_message) raise ValueError(error_message)
# RETURNS # 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' my_f = 'val_list'
val_bool(suppress_errors, 'suppress_errors', my_f) val_bool(suppress_errors, 'suppress_errors', my_f)
if not val_bool(suppress_console_outputs, 'suppress_console_outputs', my_f, suppress_errors): 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, "<class 'bool'>", suppress_errors)) Helper_App.console_log(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, "<class 'bool'>", suppress_errors))
return False return False
# method # method
if not val_str(method, 'method', my_f, 1, -1, suppress_errors, suppress_console_outputs): return False 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)) == "<class 'list'>": if not str(type(v_input)) == "<class 'list'>":
if suppress_errors: if suppress_errors:
if not suppress_console_outputs: if not suppress_console_outputs:
print(error_msg) Helper_App.console_log(error_msg)
return False return False
raise ValueError(error_msg) raise ValueError(error_msg)
L = len(v_input) L = len(v_input)
if max_len > -1 and L > max_len: if max_len > -1 and L > max_len:
if suppress_errors: if suppress_errors:
if not suppress_console_outputs: 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 return False
raise ValueError(error_msg + f'\nInvalid list length. Maximum = {max_len}, length = {L}') raise ValueError(error_msg + f'\nInvalid list length. Maximum = {max_len}, length = {L}')
if L < min_len: if L < min_len:
if suppress_errors: if suppress_errors:
if not suppress_console_outputs: 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 return False
raise ValueError(error_msg + f'\nInvalid list length. Minimum = {min_len}, length = {L}') raise ValueError(error_msg + f'\nInvalid list length. Minimum = {min_len}, length = {L}')
if v_type != '' and L > 0: 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') 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 suppress_errors:
if not suppress_console_outputs: if not suppress_console_outputs:
print(error_msg) Helper_App.console_log(error_msg)
return False return False
raise ValueError(error_msg) raise ValueError(error_msg)
# RETURNS # 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' my_f = 'val_list_instances'
val_bool(suppress_errors, 'suppress_errors', my_f) val_bool(suppress_errors, 'suppress_errors', my_f)
if not val_bool(suppress_console_outputs, 'suppress_console_outputs', my_f, suppress_errors): 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, "<class 'bool'>", suppress_errors)) Helper_App.console_log(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, "<class 'bool'>", suppress_errors))
return False return False
# method # method
if not val_str(method, 'method', my_f, 1, -1, suppress_errors, suppress_console_outputs): return False 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)) == "<class 'list'>": if not str(type(v_input)) == "<class 'list'>":
if suppress_errors: if suppress_errors:
if not suppress_console_outputs: if not suppress_console_outputs:
print(error_msg) Helper_App.console_log(error_msg)
return False return False
raise ValueError(error_msg) raise ValueError(error_msg)
L = len(v_input) L = len(v_input)
if max_len > -1 and L > max_len: if max_len > -1 and L > max_len:
if suppress_errors: if suppress_errors:
if not suppress_console_outputs: 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 return False
raise ValueError(error_msg + f'\nInvalid list length. Maximum = {max_len}, length = {L}') raise ValueError(error_msg + f'\nInvalid list length. Maximum = {max_len}, length = {L}')
if L < min_len: if L < min_len:
if suppress_errors: if suppress_errors:
if not suppress_console_outputs: 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 return False
raise ValueError(error_msg + f'\nInvalid list length. Minimum = {min_len}, length = {L}') raise ValueError(error_msg + f'\nInvalid list length. Minimum = {min_len}, length = {L}')
if v_type != '' and L > 0: 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') 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 suppress_errors:
if not suppress_console_outputs: if not suppress_console_outputs:
print(error_msg) Helper_App.console_log(error_msg)
return False return False
raise ValueError(error_msg) raise ValueError(error_msg)
# RETURNS # 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' my_f = 'val_nested_list'
val_bool(suppress_errors, 'suppress_errors', my_f) val_bool(suppress_errors, 'suppress_errors', my_f)
if not val_bool(suppress_console_outputs, 'suppress_console_outputs', my_f, suppress_errors): 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, "<class 'bool'>")) Helper_App.console_log(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, "<class 'bool'>"))
return False return False
# method # method
if not val_str(method, 'method', my_f, 1, -1, suppress_errors, suppress_console_outputs): return False 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, "<class 'int'>", depth_max + 1, depth_max + 1, True, True) or v_mins == []): if not (val_list(v_mins, 'v_mins', my_f, "<class 'int'>", depth_max + 1, depth_max + 1, True, True) or v_mins == []):
error_msg = error_msg_str(v_mins, 'v_mins', my_f, "<class 'int'>") error_msg = error_msg_str(v_mins, 'v_mins', my_f, "<class 'int'>")
if not suppress_console_outputs: if not suppress_console_outputs:
print(error_msg) Helper_App.console_log(error_msg)
return False return False
raise ValueError(error_msg) raise ValueError(error_msg)
# v_maxs # v_maxs
if not (val_list(v_maxs, 'v_maxs', my_f, "<class 'int'>", depth_max + 1, depth_max + 1, True, True) or v_maxs == []): if not (val_list(v_maxs, 'v_maxs', my_f, "<class 'int'>", depth_max + 1, depth_max + 1, True, True) or v_maxs == []):
error_msg = error_msg_str(v_maxs, 'v_maxs', my_f, "<class 'int'>") error_msg = error_msg_str(v_maxs, 'v_maxs', my_f, "<class 'int'>")
if not suppress_console_outputs: if not suppress_console_outputs:
print(error_msg) Helper_App.console_log(error_msg)
return False return False
raise ValueError(error_msg) raise ValueError(error_msg)
# allow_nuns # 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) 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 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: if not suppress_console_outputs:
print(error_msg) Helper_App.console_log(error_msg)
return False return False
# METHODS # METHODS
L = len(v_input) 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 v_min > -1:
if suppress_errors: if suppress_errors:
if not suppress_console_outputs: 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 return False
raise ValueError(error_msg + f'\nMinimum length {v_min} not met.') raise ValueError(error_msg + f'\nMinimum length {v_min} not met.')
elif depth_i < depth_max: 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 (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 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: if not suppress_console_outputs:
print(error_msg) Helper_App.console_log(error_msg)
return False return False
elif not v_mins == []: 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 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: if not suppress_console_outputs:
print(error_msg) Helper_App.console_log(error_msg)
return False return False
elif not v_maxs == []: 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 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: if not suppress_console_outputs:
print(error_msg) Helper_App.console_log(error_msg)
return False return False
else: 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 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: if not suppress_console_outputs:
print(error_msg) Helper_App.console_log(error_msg)
return False return False
# RETURNS # RETURNS
return True 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' my_f = 'val_nested_list'
val_bool(suppress_errors, 'suppress_errors', my_f) val_bool(suppress_errors, 'suppress_errors', my_f)
if not val_bool(suppress_console_outputs, 'suppress_console_outputs', my_f, suppress_errors): 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, "<class 'bool'>")) Helper_App.console_log(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, "<class 'bool'>"))
return False return False
# method # method
if not val_str(method, 'method', my_f, 1, -1, suppress_errors, suppress_console_outputs): return False 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, "<class 'int'>", depth_max + 1, depth_max + 1, True, True) or v_mins == []): if not (val_list(v_mins, 'v_mins', my_f, "<class 'int'>", depth_max + 1, depth_max + 1, True, True) or v_mins == []):
error_msg = error_msg_str(v_mins, 'v_mins', my_f, "<class 'int'>") error_msg = error_msg_str(v_mins, 'v_mins', my_f, "<class 'int'>")
if not suppress_console_outputs: if not suppress_console_outputs:
print(error_msg) Helper_App.console_log(error_msg)
return False return False
raise ValueError(error_msg) raise ValueError(error_msg)
# v_maxs # v_maxs
if not (val_list(v_maxs, 'v_maxs', my_f, "<class 'int'>", depth_max + 1, depth_max + 1, True, True) or v_maxs == []): if not (val_list(v_maxs, 'v_maxs', my_f, "<class 'int'>", depth_max + 1, depth_max + 1, True, True) or v_maxs == []):
error_msg = error_msg_str(v_maxs, 'v_maxs', my_f, "<class 'int'>") error_msg = error_msg_str(v_maxs, 'v_maxs', my_f, "<class 'int'>")
if not suppress_console_outputs: if not suppress_console_outputs:
print(error_msg) Helper_App.console_log(error_msg)
return False return False
raise ValueError(error_msg) raise ValueError(error_msg)
# allow_nuns # 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) 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 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: if not suppress_console_outputs:
print(error_msg) Helper_App.console_log(error_msg)
return False return False
# METHODS # METHODS
L = len(v_input) 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 v_min > -1:
if suppress_errors: if suppress_errors:
if not suppress_console_outputs: 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 return False
raise ValueError(error_msg + f'\nMinimum length {v_min} not met.') raise ValueError(error_msg + f'\nMinimum length {v_min} not met.')
elif depth_i < depth_max: 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 (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 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: if not suppress_console_outputs:
print(error_msg) Helper_App.console_log(error_msg)
return False return False
elif not v_mins == []: 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 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: if not suppress_console_outputs:
print(error_msg) Helper_App.console_log(error_msg)
return False return False
elif not v_maxs == []: 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 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: if not suppress_console_outputs:
print(error_msg) Helper_App.console_log(error_msg)
return False return False
else: 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 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: if not suppress_console_outputs:
print(error_msg) Helper_App.console_log(error_msg)
return False return False
# RETURNS # RETURNS
return True return True
@@ -1183,7 +1166,7 @@ def val_url(v_input, v_name, method, min_len = 12, max_len = -1, suppress_errors
v_type = "<class 'str'>" v_type = "<class 'str'>"
val_bool(suppress_errors, 'suppress_errors', _m) val_bool(suppress_errors, 'suppress_errors', _m)
if not val_bool(suppress_console_outputs, 'suppress_console_outputs', _m, suppress_errors): if not val_bool(suppress_console_outputs, 'suppress_console_outputs', _m, suppress_errors):
print(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', _m, "<class 'bool'>")) Helper_App.console_log(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', _m, "<class 'bool'>"))
return False return False
# method # method
if not val_str(method, 'method', _m, -1, -1, suppress_errors, suppress_console_outputs): return False 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 not (v_input[:8] == r'https://' or v_input[:7] == r'http://'):
if suppress_errors: if suppress_errors:
if not suppress_console_outputs: if not suppress_console_outputs:
print(error_msg) Helper_App.console_log(error_msg)
return False return False
raise ValueError(error_msg) raise ValueError(error_msg)
# RETURNS # 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' my_f = 'val_DataFrame'
val_bool(suppress_errors, 'suppress_errors', my_f) val_bool(suppress_errors, 'suppress_errors', my_f)
if not val_bool(suppress_console_outputs, 'suppress_console_outputs', my_f, suppress_errors): 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, "<class 'bool'>")) Helper_App.console_log(error_msg_str(suppress_console_outputs, 'suppress_console_outputs', my_f, "<class 'bool'>"))
return False return False
# method # method
if not val_str(method, 'method', my_f, 1, -1, suppress_errors, suppress_console_outputs): return False 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, "<class 'str'>", min_col, max_col, True, True, True) or v_types == []): if not (val_list(v_types, 'v_types', my_f, "<class 'str'>", min_col, max_col, True, True, True) or v_types == []):
error_msg = error_msg_str(v_types, 'v_types', my_f, str) error_msg = error_msg_str(v_types, 'v_types', my_f, str)
if not suppress_console_outputs: if not suppress_console_outputs:
print(error_msg) Helper_App.console_log(error_msg)
return False return False
raise ValueError(error_msg) raise ValueError(error_msg)
# cols # cols
if not (val_list(cols, 'cols', my_f, "<class 'str'>", min_col, max_col, True, True) or cols == []): if not (val_list(cols, 'cols', my_f, "<class 'str'>", min_col, max_col, True, True) or cols == []):
error_msg = error_msg_str(cols, 'cols', my_f, "<class 'str'>") error_msg = error_msg_str(cols, 'cols', my_f, "<class 'str'>")
if not suppress_console_outputs: if not suppress_console_outputs:
print(error_msg) Helper_App.console_log(error_msg)
return False return False
raise ValueError(error_msg) raise ValueError(error_msg)
# v_input # 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 (min_col > 0 and n_c < min_col) or (max_col > 0 and n_c > max_col):
if suppress_errors: if suppress_errors:
if not suppress_console_outputs: if not suppress_console_outputs:
print(error_msg) Helper_App.console_log(error_msg)
return False return False
raise ValueError(error_msg) raise ValueError(error_msg)
my_sz = len(v_input.index) 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 (min_sz > 0 and my_sz < min_sz) or (max_sz > 0 and my_sz > max_sz):
if suppress_errors: if suppress_errors:
if not suppress_console_outputs: if not suppress_console_outputs:
print(error_msg) Helper_App.console_log(error_msg)
return False return False
raise ValueError(error_msg) raise ValueError(error_msg)
if not v_types == []: 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])) == "<class 'str'>" 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 not (v_types[col_i] == None or str(type(v_types[col_i])) == "<class 'str'>" 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 suppress_errors:
if not suppress_console_outputs: 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 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]}') 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 == []: 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 not v_input.columns[col_i] == cols[col_i] or cols[col_i] == '':
if suppress_errors: if suppress_errors:
if not suppress_console_outputs: 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 return False
raise ValueError(error_msg + f'\nInvalid column heading for column {v_input.columns[col_i]}') raise ValueError(error_msg + f'\nInvalid column heading for column {v_input.columns[col_i]}')
# RETURNS # 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__': if __name__ == '__main__':
print(input_bool('true', 'input_bool', 'test')) Helper_App.console_log(input_bool('true', 'input_bool', 'test'))
print(input_bool(None, 'input_bool', 'test')) Helper_App.console_log(input_bool(None, 'input_bool', 'test'))

View File

@@ -11,6 +11,7 @@ Data model for store permutations view
""" """
# internal # internal
from helpers.helper_app import Helper_App
from models.model_view_base import Model_View_Base from models.model_view_base import Model_View_Base
# external # external
@@ -21,5 +22,5 @@ class Model_View_Admin(Model_View_Base):
def __init__(self, hash_page_current, **kwargs): def __init__(self, hash_page_current, **kwargs):
_m = 'Model_View_Admin.__init__' _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) super().__init__(hash_page_current=hash_page_current, **kwargs)

View File

@@ -17,15 +17,16 @@ Base data model for views
# IMPORTS # IMPORTS
# internal # internal
# from routes import bp_home # 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.base import Base
from business_objects.store.product_category import Product_Category 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 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 # external
from abc import ABC, abstractmethod from abc import ABC, abstractmethod
from flask_sqlalchemy import SQLAlchemy from flask_sqlalchemy import SQLAlchemy
@@ -243,7 +244,7 @@ class Model_View_Base(BaseModel, ABC):
# Initialiser - validation # Initialiser - validation
_m = 'Model_View_Base.__new__' _m = 'Model_View_Base.__new__'
v_arg_type = 'class attribute' v_arg_type = 'class attribute'
print(f'{_m}\nstarting') Helper_App.console_log(f'{_m}\nstarting')
# return super().__new__(cls, *args, **kwargs) # return super().__new__(cls, *args, **kwargs)
av.val_instance(db, 'db', _m, SQLAlchemy, v_arg_type=v_arg_type) av.val_instance(db, 'db', _m, SQLAlchemy, v_arg_type=v_arg_type)
return super(Model_View_Base, cls).__new__(cls) return super(Model_View_Base, cls).__new__(cls)
@@ -253,7 +254,7 @@ class Model_View_Base(BaseModel, ABC):
""" """
_m = 'Model_View_Base.__init__' _m = 'Model_View_Base.__init__'
v_arg_type = 'class attribute' 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) av.val_instance(db, 'db', _m, SQLAlchemy, v_arg_type=v_arg_type)
""" """
BaseModel.__init__(self, hash_page_current=hash_page_current, **kwargs) BaseModel.__init__(self, hash_page_current=hash_page_current, **kwargs)
@@ -261,9 +262,9 @@ class Model_View_Base(BaseModel, ABC):
self.db = db self.db = db
self.session = session self.session = session
info_user = self.get_info_user() 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'])) == "<class 'NoneType'?") self.is_user_logged_in = ('sub' in list(info_user.keys()) and not info_user['sub'] == '' and not str(type(info_user['sub'])) == "<class 'NoneType'?")
print(f'is_user_logged_in: {self.is_user_logged_in}') Helper_App.console_log(f'is_user_logged_in: {self.is_user_logged_in}')
self.id_user = info_user['sub'] if self.is_user_logged_in else '' self.id_user = info_user['sub'] if self.is_user_logged_in else ''
self.app = app self.app = app
""" """
@@ -274,12 +275,12 @@ class Model_View_Base(BaseModel, ABC):
# self.form_delivery_region = Form_Delivery_Region() # self.form_delivery_region = Form_Delivery_Region()
# self.form_currency = Form_Currency() # self.form_currency = Form_Currency()
self.is_page_store = False self.is_page_store = False
print(f'session: {self.session}') Helper_App.console_log(f'session: {self.session}')
datastore_user = DataStore_User() datastore_user = DataStore_User()
self.user = datastore_user.get_user_session() self.user = datastore_user.get_user_session()
self.is_user_logged_in = self.user.is_logged_in self.is_user_logged_in = self.user.is_logged_in
print(f'model_view_base init end - model.user: {self.user}') Helper_App.console_log(f'model_view_base init end - model.user: {self.user}')
def output_bool(self, boolean): def output_bool(self, boolean):
return str(boolean).lower() return str(boolean).lower()
@@ -364,7 +365,7 @@ class Model_View_Base(BaseModel, ABC):
if preview_str != '': if preview_str != '':
preview_str += '\n' preview_str += '\n'
obj_json = obj.to_json() obj_json = obj.to_json()
print(f'obj_json: {obj_json}') Helper_App.console_log(f'obj_json: {obj_json}')
preview_str += obj_json[obj_json[Base.FLAG_NAME_ATTR_OPTION_TEXT]] preview_str += obj_json[obj_json[Base.FLAG_NAME_ATTR_OPTION_TEXT]]
return preview_str return preview_str
@staticmethod @staticmethod

View File

@@ -29,6 +29,7 @@ from datastores.datastore_store_base import DataStore_Store_Base
from datastores.datastore_user import DataStore_User from datastores.datastore_user import DataStore_User
from datastores.datastore_store_basket import DataStore_Store_Basket from datastores.datastore_store_basket import DataStore_Store_Basket
from forms.forms import Form_Basket_Edit, Form_Is_Included_VAT, Form_Delivery_Region, Form_Currency from forms.forms import Form_Basket_Edit, Form_Is_Included_VAT, Form_Delivery_Region, Form_Currency
from helpers.helper_app import Helper_App
import lib.argument_validation as av import lib.argument_validation as av
from models.model_view_base import Model_View_Base from models.model_view_base import Model_View_Base
# external # external
@@ -212,7 +213,7 @@ class Model_View_Store(Model_View_Base):
# Initialiser - validation # Initialiser - validation
_m = 'Model_View_Store.__new__' _m = 'Model_View_Store.__new__'
v_arg_type = 'class attribute' v_arg_type = 'class attribute'
print(f'{_m}\nstarting') Helper_App.console_log(f'{_m}\nstarting')
# av.val_str(id_user, 'id_user', _m) # av.val_str(id_user, 'id_user', _m)
# return super().__new__(cls, *args, **kwargs) # return super().__new__(cls, *args, **kwargs)
# cls.FLAG_BUTTON_BASKET_ADD = cls.FLAG_BUTTON_SUBMIT + '.buttonAddToBasket' # cls.FLAG_BUTTON_BASKET_ADD = cls.FLAG_BUTTON_SUBMIT + '.buttonAddToBasket'
@@ -225,7 +226,7 @@ class Model_View_Store(Model_View_Base):
def __init__(self, hash_page_current, **kwargs): # , id_currency, id_region_delivery, is_included_VAT): def __init__(self, hash_page_current, **kwargs): # , id_currency, id_region_delivery, is_included_VAT):
# Constructor # Constructor
_m = 'Model_View_Store.__init__' _m = 'Model_View_Store.__init__'
print(f'{_m}\nstarting') Helper_App.console_log(f'{_m}\nstarting')
super().__init__(hash_page_current=hash_page_current, **kwargs) super().__init__(hash_page_current=hash_page_current, **kwargs)
self.is_page_store = True self.is_page_store = True
""" """
@@ -279,7 +280,7 @@ class Model_View_Store(Model_View_Base):
def get_many_product_image_src(self, product_id, image_ids = '', get_primary_only = True, resolution_level = ''): def get_many_product_image_src(self, product_id, image_ids = '', get_primary_only = True, resolution_level = ''):
_m = 'Model_View_Store.get_many_product_image' _m = 'Model_View_Store.get_many_product_image'
# print(f'{_m}\n') # Helper_App.console_log(f'{_m}\n')
# av.val_instance(filters, 'filters', _m, Product_Image_Filters) # av.val_instance(filters, 'filters', _m, Product_Image_Filters)
av.val_int(product_id, 'product_id', _m) av.val_int(product_id, 'product_id', _m)
# av.full_val_int(product_id, 'product_id', _m) # av.full_val_int(product_id, 'product_id', _m)
@@ -324,14 +325,14 @@ class Model_View_Store(Model_View_Base):
# av.full_val_int(product_id, 'product_id', _m) # av.full_val_int(product_id, 'product_id', _m)
# product_id = int(product_id) # product_id = int(product_id)
# av.val_instance(db, 'db', _m, SQLAlchemy) # av.val_instance(db, 'db', _m, SQLAlchemy)
print(f'{_m} starting') Helper_App.console_log(f'{_m} starting')
# print(f'product_id: {product_id}\npermutation_id: {permutation_id}\nquantity = {quantity}') # Helper_App.console_log(f'product_id: {product_id}\npermutation_id: {permutation_id}\nquantity = {quantity}')
# av.full_val_int(product_id, 'product_id', _m) # av.full_val_int(product_id, 'product_id', _m)
# print('valid product id') # Helper_App.console_log('valid product id')
av.full_val_int(quantity, 'quantity', _m) av.full_val_int(quantity, 'quantity', _m)
quantity = int(quantity) quantity = int(quantity)
# item_added = False # item_added = False
print(f'basket: {self.basket}') Helper_App.console_log(f'basket: {self.basket}')
ids_permutation, quantities_permutation = self.basket.to_csv() ids_permutation, quantities_permutation = self.basket.to_csv()
self.basket = DataStore_Store_Basket().edit_basket(ids_permutation, quantities_permutation, permutation_id, quantity, quantity_sum_not_replace, self.id_currency, self.id_region_delivery, self.is_included_VAT) self.basket = DataStore_Store_Basket().edit_basket(ids_permutation, quantities_permutation, permutation_id, quantity, quantity_sum_not_replace, self.id_currency, self.id_region_delivery, self.is_included_VAT)
return True return True
@@ -360,14 +361,14 @@ class Model_View_Store(Model_View_Base):
permutation_ids += id_permutation # str(basket[b].product.id) permutation_ids += id_permutation # str(basket[b].product.id)
# item_index_dict[Basket.get_key_product_index_from_ids_product_permutation(id_product, id_permutation)] = index_item # item_index_dict[Basket.get_key_product_index_from_ids_product_permutation(id_product, id_permutation)] = index_item
item_index_dict[id_permutation] = index_item item_index_dict[id_permutation] = index_item
print(f'product_ids = {product_ids}') Helper_App.console_log(f'product_ids = {product_ids}')
print(f'permutation_ids = {permutation_ids}') Helper_App.console_log(f'permutation_ids = {permutation_ids}')
return product_ids, permutation_ids, item_index_dict return product_ids, permutation_ids, item_index_dict
def _get_basket_from_json(self, json_data): def _get_basket_from_json(self, json_data):
basket = json_data[self.KEY_BASKET]['items'] basket = json_data[self.KEY_BASKET]['items']
av.val_instance(basket, 'basket', 'Model_View_Store._get_basket_from_json', list) av.val_instance(basket, 'basket', 'Model_View_Store._get_basket_from_json', list)
print(f'basket = {basket}') Helper_App.console_log(f'basket = {basket}')
return basket return basket
def import_JSON_basket(self, json_data): def import_JSON_basket(self, json_data):
@@ -378,7 +379,7 @@ class Model_View_Store(Model_View_Base):
id_currency = basket[self.KEY_ID_CURRENCY] id_currency = basket[self.KEY_ID_CURRENCY]
id_region_delivery = basket[self.KEY_ID_REGION_DELIVERY] id_region_delivery = basket[self.KEY_ID_REGION_DELIVERY]
is_included_VAT = basket[self.KEY_IS_INCLUDED_VAT] is_included_VAT = basket[self.KEY_IS_INCLUDED_VAT]
print(f'json basket items: {items}') Helper_App.console_log(f'json basket items: {items}')
product_ids, permutation_ids, item_index_dict = self._get_json_basket_id_CSVs_product_permutation(items) product_ids, permutation_ids, item_index_dict = self._get_json_basket_id_CSVs_product_permutation(items)
category_list, errors = DataStore_Store_Base().get_many_product(Parameters_Product( category_list, errors = DataStore_Store_Base().get_many_product(Parameters_Product(
self.id_user, # :a_id_user self.id_user, # :a_id_user
@@ -390,7 +391,7 @@ class Model_View_Store(Model_View_Base):
False, str(id_currency), False, # :a_get_all_currency, :a_ids_currency, :a_get_inactive_currency False, str(id_currency), False, # :a_get_all_currency, :a_ids_currency, :a_get_inactive_currency
True, '', False # :a_get_all_discount, :a_ids_discount, :a_get_inactive_discount True, '', False # :a_get_all_discount, :a_ids_discount, :a_get_inactive_discount
)) # product_ids=product_ids, get_all_category=False, get_all_product=False) )) # product_ids=product_ids, get_all_category=False, get_all_product=False)
# print(f'categories = {categories}') # Helper_App.console_log(f'categories = {categories}')
self.basket = Basket(id_currency, id_region_delivery, is_included_VAT) self.basket = Basket(id_currency, id_region_delivery, is_included_VAT)
if len(category_list.categories) > 0: # not (categories is None): if len(category_list.categories) > 0: # not (categories is None):
for category in category_list.categories: for category in category_list.categories:
@@ -404,8 +405,8 @@ class Model_View_Store(Model_View_Base):
if len(items) > 0: if len(items) > 0:
for index_item in range(len(items)): for index_item in range(len(items)):
""" """
print(f'basket data: {json_data}') Helper_App.console_log(f'basket data: {json_data}')
print(f'basket: {self.basket}') Helper_App.console_log(f'basket: {self.basket}')
# ids_permutation_unavailable_region_or_currency = [] # ids_permutation_unavailable_region_or_currency = []
# id_permutation_unavailable_otherwise = [] # 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): def import_JSON_basket_item(self, json_data, form_basket = None):
_m = 'Model_View_Store.import_JSON_basket_item' _m = 'Model_View_Store.import_JSON_basket_item'
print(f'starting {_m}') Helper_App.console_log(f'starting {_m}')
# print('getting product id') # Helper_App.console_log('getting product id')
# product_id = av.input_int(json_data[self.key_id_product], self.key_id_product, _m) # 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: try:
permutation_id = json_data[self.KEY_ID_PERMUTATION] permutation_id = json_data[self.KEY_ID_PERMUTATION]
av.full_val_int(permutation_id, self.KEY_ID_PERMUTATION, _m) av.full_val_int(permutation_id, self.KEY_ID_PERMUTATION, _m)
@@ -457,21 +458,21 @@ class Model_View_Store(Model_View_Base):
except: except:
permutation_id = None permutation_id = None
if not 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") raise ValueError("Invalid permutation id")
print(f'permutation_id: {permutation_id}') Helper_App.console_log(f'permutation_id: {permutation_id}')
try: try:
print(f'form_basket: {form_basket}') Helper_App.console_log(f'form_basket: {form_basket}')
print('getting quantity') Helper_App.console_log('getting quantity')
print(f'form_basket.quantity: {form_basket.quantity}') Helper_App.console_log(f'form_basket.quantity: {form_basket.quantity}')
print(f'form_basket.quantity.data: {form_basket.quantity.data}') Helper_App.console_log(f'form_basket.quantity.data: {form_basket.quantity.data}')
quantity = int(form_basket.quantity.data) quantity = int(form_basket.quantity.data)
except: except:
quantity = 0 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 return permutation_id, quantity

View File

@@ -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.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 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 forms.store.manufacturing_purchase_order import Filters_Manufacturing_Purchase_Order
from helpers.helper_app import Helper_App
import lib.argument_validation as av import lib.argument_validation as av
# external # external
from typing import ClassVar 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): def __init__(self, form_filters_old, hash_page_current=Model_View_Store.HASH_PAGE_STORE_MANUFACTURING_PURCHASE_ORDERS):
_m = 'Model_View_Store_Manufacturing.__init__' _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) 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()) 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) parameters_manufacturing_purchase_order = Parameters_Manufacturing_Purchase_Order.from_filters_manufacturing_purchase_order(form_filters_old)

View File

@@ -21,6 +21,7 @@ from business_objects.store.product_category import Product_Category_Container
from datastores.datastore_store_product import DataStore_Store_Product from datastores.datastore_store_product import DataStore_Store_Product
from forms.access_level import Filters_Access_Level from forms.access_level import Filters_Access_Level
from forms.store.product import Filters_Product from forms.store.product import Filters_Product
from helpers.helper_app import Helper_App
from models.model_view_store import Model_View_Store from models.model_view_store import Model_View_Store
# from routes import bp_home # from routes import bp_home
import lib.argument_validation as av 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): def __init__(self, id_permutation, id_currency, id_region_delivery, is_included_VAT, hash_page_current=Model_View_Store.HASH_PAGE_STORE_PRODUCTS):
# Constructor # Constructor
_m = 'Model_View_Store_Product.__init__' _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) 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( category_list = DataStore_Store_Base().get_many_product(Parameters_Product(
self.info_user['sub'], self.info_user['sub'],
@@ -54,7 +55,7 @@ class Model_View_Store_Product(Model_View_Store):
False, str(id_currency), False, False, str(id_currency), False,
True, '', False True, '', False
)) # product_ids=str(id_product), permutation_ids=str(id_permutation)) )) # 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.categories = categories
# self.category_index = category_index # self.category_index = category_index
"" ""
@@ -62,7 +63,7 @@ class Model_View_Store_Product(Model_View_Store):
self.product = category_list.get_permutation_first() self.product = category_list.get_permutation_first()
else: else:
self.product = None 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): def __init__(self, form_filters, hash_page_current=Model_View_Store.HASH_PAGE_STORE_PRODUCTS):
_m = 'Model_View_Store_Product.__init__' _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) super().__init__(hash_page_current=hash_page_current, form_filters=form_filters)
self.access_levels = self.get_many_access_level(Filters_Access_Level()) self.access_levels = self.get_many_access_level(Filters_Access_Level())
parameters_product = Parameters_Product.from_form_filters_product(self.form_filters) 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 countProducts = 0
for category in self.category_list.categories: for category in self.category_list.categories:
countProducts += len(category.products) 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( self.category_list_filters, errors_filters = datastore_store.get_many_product(
Parameters_Product( Parameters_Product(
get_all_product_category = True, 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 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] 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.variation_types, self.variations, errors = self.get_many_product_variation()
self.units_measurement = self.get_many_unit_measurement() 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.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.currencies = self.get_many_currency()
self.currency_options = [currency.to_json_option() for currency in self.currencies] 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 @staticmethod
def save_products(comment, list_products): def save_products(comment, list_products):
_m = 'Model_View_Store_Product.save_products' _m = 'Model_View_Store_Product.save_products'

View File

@@ -21,6 +21,7 @@ from forms.store.product_category import Filters_Product_Category
# from routes import bp_home # from routes import bp_home
from business_objects.store.product import Product, Parameters_Product, Product_Permutation from business_objects.store.product import Product, Parameters_Product, Product_Permutation
from business_objects.store.product_variation import Product_Variation_Container from business_objects.store.product_variation import Product_Variation_Container
from helpers.helper_app import Helper_App
import lib.argument_validation as av import lib.argument_validation as av
# external # 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): def __init__(self, form_filters, hash_page_current=Model_View_Store.HASH_PAGE_STORE_PRODUCT_CATEGORIES):
_m = 'Model_View_Store_Product_Category.__init__' _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) 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) # BaseModel.__init__(self, app=app, filters_product=filters_product, **kwargs)
self.access_levels = self.get_many_access_level(Filters_Access_Level()) self.access_levels = self.get_many_access_level(Filters_Access_Level())

View File

@@ -18,6 +18,7 @@ from forms.store.product_permutation import Filters_Product_Permutation
# from routes import bp_home # from routes import bp_home
from business_objects.store.product import Product, Parameters_Product, Product_Permutation from business_objects.store.product import Product, Parameters_Product, Product_Permutation
from business_objects.store.product_variation import Product_Variation_Container from business_objects.store.product_variation import Product_Variation_Container
from helpers.helper_app import Helper_App
import lib.argument_validation as av import lib.argument_validation as av
# external # 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): def __init__(self, form_filters, hash_page_current=Model_View_Store.HASH_PAGE_STORE_PRODUCT_PERMUTATIONS):
_m = 'Model_View_Store_Permutation.__init__' _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) super().__init__(hash_page_current=hash_page_current, form_filters=form_filters)
# self.form_filters = Filters_Product_Permutation() # self.form_filters = Filters_Product_Permutation()
filters_product = Parameters_Product.from_form_filters_product_permutation(self.form_filters) 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 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] 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() 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.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.variation_types, self.variations, errors = self.get_many_product_variation()
self.units_measurement = self.get_many_unit_measurement() self.units_measurement = self.get_many_unit_measurement()

View File

@@ -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.product import Product, Parameters_Product, Product_Permutation
from business_objects.store.stock_item import Stock_Item, Parameters_Stock_Item from business_objects.store.stock_item import Stock_Item, Parameters_Stock_Item
from forms.store.stock_item import Filters_Stock_Item from forms.store.stock_item import Filters_Stock_Item
from helpers.helper_app import Helper_App
import lib.argument_validation as av import lib.argument_validation as av
# external # 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): def __init__(self, filters_stock_item, hash_page_current=Model_View_Store.HASH_PAGE_STORE_STOCK_ITEMS):
_m = 'Model_View_Store_Stock_Item.__init__' _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) 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) # 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) 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()] + 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() product_list = self.category_list_filters.to_product_option_list()
filtered_product_list = [] filtered_product_list = []
if product_list is not None: if product_list is not None:
for product in product_list: 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): 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) 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.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.form_filters.import_values(filters_stock_item)
self.variation_types, self.variations, errors = self.get_many_product_variation() self.variation_types, self.variations, errors = self.get_many_product_variation()

View File

@@ -15,6 +15,7 @@ from models.model_view_store import Model_View_Store
from datastores.datastore_store_supplier import DataStore_Store_Supplier from datastores.datastore_store_supplier import DataStore_Store_Supplier
from business_objects.store.supplier import Supplier, Parameters_Supplier from business_objects.store.supplier import Supplier, Parameters_Supplier
from forms.store.supplier import Filters_Supplier from forms.store.supplier import Filters_Supplier
from helpers.helper_app import Helper_App
import lib.argument_validation as av import lib.argument_validation as av
# external # external
from typing import ClassVar 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): def __init__(self, form_filters_old, hash_page_current=Model_View_Store.HASH_PAGE_STORE_SUPPLIERS):
_m = 'Model_View_Store_Supplier.__init__' _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) 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()) 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) parameters_supplier = Parameters_Supplier.from_filters_supplier(self.form_filters)

View File

@@ -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 import Supplier, Parameters_Supplier
from business_objects.store.supplier_purchase_order import Supplier_Purchase_Order, Parameters_Supplier_Purchase_Order 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 forms.store.supplier_purchase_order import Filters_Supplier_Purchase_Order
from helpers.helper_app import Helper_App
import lib.argument_validation as av import lib.argument_validation as av
class Model_View_Store_Supplier_Purchase_Order(Model_View_Store): 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): def __init__(self, form_filters_old, hash_page_current=Model_View_Store.HASH_PAGE_STORE_SUPPLIER_PURCHASE_ORDERS):
_m = 'Model_View_Store_Supplier.__init__' _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) 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()) 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) parameters_supplier_purchase_order = Parameters_Supplier_Purchase_Order.from_filters_supplier_purchase_order(self.form_filters)

View File

@@ -185,6 +185,7 @@ DROP TABLE IF EXISTS Shop_Interval_Recurrence;
DROP TABLE IF EXISTS Shop_Product_Audit; DROP TABLE IF EXISTS Shop_Product_Audit;
DROP TABLE IF EXISTS Shop_Product; 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_Temp;
DROP TABLE IF EXISTS Shop_Product_Category_Audit; DROP TABLE IF EXISTS Shop_Product_Category_Audit;

View File

@@ -185,6 +185,7 @@ DROP TABLE IF EXISTS Shop_Interval_Recurrence;
DROP TABLE IF EXISTS Shop_Product_Audit; DROP TABLE IF EXISTS Shop_Product_Audit;
DROP TABLE IF EXISTS Shop_Product; 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_Temp;
DROP TABLE IF EXISTS Shop_Product_Category_Audit; DROP TABLE IF EXISTS Shop_Product_Category_Audit;

View File

@@ -486,7 +486,7 @@ CALL partsltd_prod.p_shop_get_many_product (
, 0 # a_get_inactive_image , 0 # a_get_inactive_image
, '' # a_ids_image , '' # a_ids_image
, 0 # a_get_products_quantity_stock_below_minimum , 0 # a_get_products_quantity_stock_below_minimum
, 1 # a_debug , 0 # a_debug
); );
select * FROM partsltd_prod.Shop_Calc_User_Temp; select * FROM partsltd_prod.Shop_Calc_User_Temp;

View File

@@ -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<r.length;f++){for(var[o,a,n]=r[f],p=!0,v=0;v<o.length;v++)(!1&n||i>=n)&&Object.keys(t.O).every((r=>t.O[r](o[v])))?o.splice(v--,1):(p=!1,n<i&&(i=n));if(p){r.splice(f--,1);var s=a();void 0!==s&&(e=s)}}return e}n=n||0;for(var f=r.length;f>0&&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);s<i.length;s++)n=i[s],t.o(r,n)&&r[n]&&r[n][0](),r[n]=0;return t.O(f)},o=self.webpackChunkapp=self.webpackChunkapp||[];o.forEach(e.bind(null,0)),o.push=e.bind(null,o.push.bind(o))})(),t.O(void 0,[466],(()=>t(711)));var a=t.O(void 0,[466],(()=>t(561)));a=t.O(a)})(); (()=>{"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<r.length;f++){for(var[o,a,n]=r[f],p=!0,v=0;v<o.length;v++)(!1&n||i>=n)&&Object.keys(t.O).every((r=>t.O[r](o[v])))?o.splice(v--,1):(p=!1,n<i&&(i=n));if(p){r.splice(f--,1);var s=a();void 0!==s&&(e=s)}}return e}n=n||0;for(var f=r.length;f>0&&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);s<i.length;s++)n=i[s],t.o(r,n)&&r[n]&&r[n][0](),r[n]=0;return t.O(f)},o=self.webpackChunkapp=self.webpackChunkapp||[];o.forEach(e.bind(null,0)),o.push=e.bind(null,o.push.bind(o))})(),t.O(void 0,[564],(()=>t(647)));var a=t.O(void 0,[564],(()=>t(497)));a=t.O(a)})();

View File

@@ -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<r.length;f++){for(var[o,a,n]=r[f],p=!0,v=0;v<o.length;v++)(!1&n||i>=n)&&Object.keys(t.O).every((r=>t.O[r](o[v])))?o.splice(v--,1):(p=!1,n<i&&(i=n));if(p){r.splice(f--,1);var s=a();void 0!==s&&(e=s)}}return e}n=n||0;for(var f=r.length;f>0&&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);s<i.length;s++)n=i[s],t.o(r,n)&&r[n]&&r[n][0](),r[n]=0;return t.O(f)},o=self.webpackChunkapp=self.webpackChunkapp||[];o.forEach(e.bind(null,0)),o.push=e.bind(null,o.push.bind(o))})(),t.O(void 0,[466],(()=>t(711)));var a=t.O(void 0,[466],(()=>t(278)));a=t.O(a)})(); (()=>{"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<r.length;f++){for(var[o,a,n]=r[f],p=!0,v=0;v<o.length;v++)(!1&n||i>=n)&&Object.keys(t.O).every((r=>t.O[r](o[v])))?o.splice(v--,1):(p=!1,n<i&&(i=n));if(p){r.splice(f--,1);var s=a();void 0!==s&&(e=s)}}return e}n=n||0;for(var f=r.length;f>0&&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);s<i.length;s++)n=i[s],t.o(r,n)&&r[n]&&r[n][0](),r[n]=0;return t.O(f)},o=self.webpackChunkapp=self.webpackChunkapp||[];o.forEach(e.bind(null,0)),o.push=e.bind(null,o.push.bind(o))})(),t.O(void 0,[564],(()=>t(647)));var a=t.O(void 0,[564],(()=>t(206)));a=t.O(a)})();

View File

@@ -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<r.length;f++){for(var[o,a,n]=r[f],p=!0,v=0;v<o.length;v++)(!1&n||i>=n)&&Object.keys(t.O).every((r=>t.O[r](o[v])))?o.splice(v--,1):(p=!1,n<i&&(i=n));if(p){r.splice(f--,1);var s=a();void 0!==s&&(e=s)}}return e}n=n||0;for(var f=r.length;f>0&&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);s<i.length;s++)n=i[s],t.o(r,n)&&r[n]&&r[n][0](),r[n]=0;return t.O(f)},o=self.webpackChunkapp=self.webpackChunkapp||[];o.forEach(e.bind(null,0)),o.push=e.bind(null,o.push.bind(o))})(),t.O(void 0,[466],(()=>t(711)));var a=t.O(void 0,[466],(()=>t(805)));a=t.O(a)})(); (()=>{"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<r.length;f++){for(var[o,a,n]=r[f],p=!0,v=0;v<o.length;v++)(!1&n||i>=n)&&Object.keys(t.O).every((r=>t.O[r](o[v])))?o.splice(v--,1):(p=!1,n<i&&(i=n));if(p){r.splice(f--,1);var s=a();void 0!==s&&(e=s)}}return e}n=n||0;for(var f=r.length;f>0&&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);s<i.length;s++)n=i[s],t.o(r,n)&&r[n]&&r[n][0](),r[n]=0;return t.O(f)},o=self.webpackChunkapp=self.webpackChunkapp||[];o.forEach(e.bind(null,0)),o.push=e.bind(null,o.push.bind(o))})(),t.O(void 0,[564],(()=>t(647)));var a=t.O(void 0,[564],(()=>t(469)));a=t.O(a)})();

View File

@@ -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<r.length;f++){for(var[o,a,n]=r[f],p=!0,v=0;v<o.length;v++)(!1&n||i>=n)&&Object.keys(t.O).every((r=>t.O[r](o[v])))?o.splice(v--,1):(p=!1,n<i&&(i=n));if(p){r.splice(f--,1);var s=a();void 0!==s&&(e=s)}}return e}n=n||0;for(var f=r.length;f>0&&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);s<i.length;s++)n=i[s],t.o(r,n)&&r[n]&&r[n][0](),r[n]=0;return t.O(f)},o=self.webpackChunkapp=self.webpackChunkapp||[];o.forEach(e.bind(null,0)),o.push=e.bind(null,o.push.bind(o))})(),t.O(void 0,[466],(()=>t(711)));var a=t.O(void 0,[466],(()=>t(188)));a=t.O(a)})(); (()=>{"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<r.length;f++){for(var[o,a,n]=r[f],p=!0,v=0;v<o.length;v++)(!1&n||i>=n)&&Object.keys(t.O).every((r=>t.O[r](o[v])))?o.splice(v--,1):(p=!1,n<i&&(i=n));if(p){r.splice(f--,1);var s=a();void 0!==s&&(e=s)}}return e}n=n||0;for(var f=r.length;f>0&&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);s<i.length;s++)n=i[s],t.o(r,n)&&r[n]&&r[n][0](),r[n]=0;return t.O(f)},o=self.webpackChunkapp=self.webpackChunkapp||[];o.forEach(e.bind(null,0)),o.push=e.bind(null,o.push.bind(o))})(),t.O(void 0,[564],(()=>t(647)));var a=t.O(void 0,[564],(()=>t(396)));a=t.O(a)})();

View File

@@ -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<r.length;f++){for(var[o,a,n]=r[f],p=!0,v=0;v<o.length;v++)(!1&n||i>=n)&&Object.keys(t.O).every((r=>t.O[r](o[v])))?o.splice(v--,1):(p=!1,n<i&&(i=n));if(p){r.splice(f--,1);var s=a();void 0!==s&&(e=s)}}return e}n=n||0;for(var f=r.length;f>0&&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);s<i.length;s++)n=i[s],t.o(r,n)&&r[n]&&r[n][0](),r[n]=0;return t.O(f)},o=self.webpackChunkapp=self.webpackChunkapp||[];o.forEach(e.bind(null,0)),o.push=e.bind(null,o.push.bind(o))})(),t.O(void 0,[416],(()=>t(359)));var a=t.O(void 0,[416],(()=>t(780)));a=t.O(a)})(); (()=>{"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<r.length;f++){for(var[o,a,n]=r[f],p=!0,v=0;v<o.length;v++)(!1&n||i>=n)&&Object.keys(t.O).every((r=>t.O[r](o[v])))?o.splice(v--,1):(p=!1,n<i&&(i=n));if(p){r.splice(f--,1);var s=a();void 0!==s&&(e=s)}}return e}n=n||0;for(var f=r.length;f>0&&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);s<i.length;s++)n=i[s],t.o(r,n)&&r[n]&&r[n][0](),r[n]=0;return t.O(f)},o=self.webpackChunkapp=self.webpackChunkapp||[];o.forEach(e.bind(null,0)),o.push=e.bind(null,o.push.bind(o))})(),t.O(void 0,[830],(()=>t(807)));var a=t.O(void 0,[830],(()=>t(132)));a=t.O(a)})();

Some files were not shown because too many files have changed in this diff Show More