feat(MySQL): Tables, Triggers, and Get Many and Save Stored Procedures for Suppliers, Supplier Purchase Orders (+ items), and Manufacturing Purchase Orders (+ items)

This commit is contained in:
2024-10-15 16:40:35 +01:00
parent 15d9a3a76f
commit 8fcfcf0ef4
621 changed files with 3023 additions and 2945 deletions

View File

@@ -36,7 +36,6 @@ routes_core = Blueprint('routes_core', __name__)
def home():
try:
model = Model_View_Home()
print('nips')
html_body = render_template('pages/core/_home.html', model = model)
except Exception as e:
return jsonify(error=str(e)), 403

View File

@@ -61,12 +61,12 @@ def filter():
# ToDo: manually validate category, product
filters_form = Parameters_Product.from_form_filters_product(form_filters)
model = Model_View_Store_Product(filters = filters_form)
return jsonify({Model_View_Store_Product.FLAG_STATUS: Model_View_Store_Product.FLAG_SUCCESS, 'Success': True, Model_View_Store_Product.KEY_DATA: model.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.category_list.to_json()})
except Exception as e:
return jsonify({Model_View_Store_Product.FLAG_STATUS: Model_View_Store_Product.FLAG_FAILURE, Model_View_Store_Product.FLAG_MESSAGE: f'Bad data received by controller.\n{e}'})
def get_Filters_Product(data_request):
data_form = data_request[Model_View_Store_Product.KEY_FORM]
data_form = data_request[Model_View_Store_Product.FLAG_FORM]
form_filters = Filters_Product(**data_form)
form_filters.is_not_empty.data = av.input_bool(data_form['is_not_empty'], 'is_not_empty', 'filter')
form_filters.active.data = av.input_bool(data_form['active'], 'active', 'filter')
@@ -95,7 +95,7 @@ def save():
model_return = Model_View_Store_Product(filters=filters_form)
print('nips')
return jsonify({Model_View_Store_Product.FLAG_STATUS: Model_View_Store_Product.FLAG_SUCCESS, 'Success': True, Model_View_Store_Product.KEY_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:
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}'})
"""
@@ -112,7 +112,7 @@ def products():
print(f'form_filters={form_filters}')
model = Model_View_Store_Product(form_filters)
if not model.is_user_logged_in:
# return redirect(url_for('routes_user.login', data = jsonify({ Model_View_Store_Product.KEY_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 })))
return redirect(url_for('routes_core.home'))
return render_template('pages/store/_products.html', model = model)
@@ -131,7 +131,7 @@ def filter_product():
raise Exception('User not logged in')
return jsonify({
Model_View_Store_Product.FLAG_STATUS: Model_View_Store_Product.FLAG_SUCCESS,
Model_View_Store_Product.KEY_DATA: model.category_list.to_json()
Model_View_Store_Product.FLAG_DATA: model.category_list.to_json()
})
except Exception as e:
return jsonify({
@@ -171,7 +171,7 @@ def save_product():
print('nips')
return jsonify({
Model_View_Store_Product.FLAG_STATUS: Model_View_Store_Product.FLAG_SUCCESS,
Model_View_Store_Product.KEY_DATA: model_return.category_list.to_json()
Model_View_Store_Product.FLAG_DATA: model_return.category_list.to_json()
})
except Exception as e:
return jsonify({

View File

@@ -55,7 +55,7 @@ def categories():
"""
model = Model_View_Store_Product_Category(form_filters)
if not model.is_user_logged_in:
# return redirect(url_for('routes_user.login', data = jsonify({ Model_View_Store_Product_Category.KEY_CALLBACK: Model_View_Store_Product_Category.HASH_PAGE_STORE_PRODUCT_CATEGORIES })))
# return redirect(url_for('routes_user.login', data = jsonify({ Model_View_Store_Product_Category.FLAG_CALLBACK: Model_View_Store_Product_Category.HASH_PAGE_STORE_PRODUCT_CATEGORIES })))
return redirect(url_for('routes_core.home'))
return render_template('pages/store/_product_categories.html', model = model)
@@ -77,7 +77,7 @@ def filter_category():
raise Exception('User not logged in')
return jsonify({
Model_View_Store_Product_Category.FLAG_STATUS: Model_View_Store_Product_Category.FLAG_SUCCESS,
Model_View_Store_Product_Category.KEY_DATA: model.category_list.to_json()
Model_View_Store_Product_Category.FLAG_DATA: model.category_list.to_json()
})
except Exception as e:
return jsonify({
@@ -115,7 +115,7 @@ def save_category():
raise Exception('User not logged in')
return jsonify({
Model_View_Store_Product_Category.FLAG_STATUS: Model_View_Store_Product_Category.FLAG_SUCCESS,
Model_View_Store_Product_Category.KEY_DATA: model_return.category_list.to_json()
Model_View_Store_Product_Category.FLAG_DATA: model_return.category_list.to_json()
})
except Exception as e:
return jsonify({

View File

@@ -48,12 +48,12 @@ def permutation_filter():
# ToDo: manually validate category, product
filters_form = Parameters_Product.from_form(form_filters)
model = Model_View_Store_Product_Permutation(filters_product=filters_form)
return jsonify({Model_View_Base.FLAG_STATUS: Model_View_Base.FLAG_SUCCESS, 'Success': True, Model_View_Base.KEY_DATA: model.category_list.to_permutation_row_list()})
return jsonify({Model_View_Base.FLAG_STATUS: Model_View_Base.FLAG_SUCCESS, 'Success': True, Model_View_Base.FLAG_DATA: model.category_list.to_permutation_row_list()})
except Exception as e:
return jsonify({Model_View_Base.FLAG_STATUS: Model_View_Base.FLAG_FAILURE, Model_View_Base.FLAG_MESSAGE: f'Bad data received by controller.\n{e}'})
def get_Form_Filters_Permutation(data_request):
data_form = data_request[Model_View_Store_Product_Permutation.KEY_FORM]
data_form = data_request[Model_View_Store_Product_Permutation.FLAG_FORM]
form_filters = Filters_Product_Permutation(**data_form)
form_filters.is_out_of_stock.data = av.input_bool(data_form['is_out_of_stock'], 'is_out_of_stock', 'permutations_post')
return form_filters
@@ -80,7 +80,7 @@ def permutation_save():
model_save.save_permutations(data.comment, objsPermutation)
model_return = Model_View_Store_Product_Permutation(filters_product=filters_form)
return jsonify({Model_View_Base.FLAG_STATUS: Model_View_Base.FLAG_SUCCESS, 'Success': True, Model_View_Base.KEY_DATA: model_return.category_list.to_permutation_row_list()})
return jsonify({Model_View_Base.FLAG_STATUS: Model_View_Base.FLAG_SUCCESS, 'Success': True, Model_View_Base.FLAG_DATA: model_return.category_list.to_permutation_row_list()})
except Exception as e:
return jsonify({Model_View_Base.FLAG_STATUS: Model_View_Base.FLAG_FAILURE, Model_View_Base.FLAG_MESSAGE: f'Bad data received by controller.\n{e}'})
"""
@@ -97,7 +97,7 @@ def permutations():
print(f'form_filters={form_filters}')
model = Model_View_Store_Product_Permutation(form_filters)
if not model.is_user_logged_in:
# return redirect(url_for('routes_user.login', data = jsonify({ Model_View_Store_Product_Permutation.KEY_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 })))
return redirect(url_for('routes_core.home'))
return render_template('pages/store/_product_permutations.html', model = model)
@@ -116,7 +116,7 @@ def filter_permutation():
raise Exception('User not logged in')
return jsonify({
Model_View_Store_Product_Permutation.FLAG_STATUS: Model_View_Store_Product_Permutation.FLAG_SUCCESS,
Model_View_Store_Product_Permutation.KEY_DATA: model.category_list.to_json()
Model_View_Store_Product_Permutation.FLAG_DATA: model.category_list.to_json()
})
except Exception as e:
return jsonify({
@@ -156,7 +156,7 @@ def save_permutation():
print('nips')
return jsonify({
Model_View_Store_Product_Permutation.FLAG_STATUS: Model_View_Store_Product_Permutation.FLAG_SUCCESS,
Model_View_Store_Product_Permutation.KEY_DATA: model_return.category_list.to_json()
Model_View_Store_Product_Permutation.FLAG_DATA: model_return.category_list.to_json()
})
except Exception as e:
return jsonify({

View File

@@ -39,8 +39,8 @@ def stock_items():
print(f'form_filters={form_filters}')
model = Model_View_Store_Stock_Item(form_filters)
if not model.is_user_logged_in:
# return redirect(url_for('routes_user.login', data = jsonify({ Model_View_Store_Stock_Item.KEY_CALLBACK: Model_View_Store_Stock_Item.HASH_PAGE_STORE_STOCK_ITEMS })))
# return requests.post(f"{current_app.config['URL_HOST']}{url_for('routes_user.login')}", json={ Model_View_Store_Stock_Item.KEY_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 })))
# return requests.post(f"{current_app.config['URL_HOST']}{url_for('routes_user.login')}", json={ Model_View_Store_Stock_Item.FLAG_CALLBACK: Model_View_Store_Stock_Item.HASH_PAGE_STORE_STOCK_ITEMS })
return redirect(url_for('routes_core.home'))
return render_template('pages/store/_stock_items.html', model = model, datetime = datetime)
@@ -73,7 +73,7 @@ def filter_stock_item():
raise Exception('User not logged in.')
return jsonify({
Model_View_Store_Stock_Item.FLAG_STATUS: Model_View_Store_Stock_Item.FLAG_SUCCESS,
Model_View_Store_Stock_Item.KEY_DATA: model.category_list.to_json()
Model_View_Store_Stock_Item.FLAG_DATA: model.category_list.to_json()
})
except Exception as e:
return jsonify({
@@ -133,7 +133,7 @@ def save_stock_item():
raise Exception('User not logged in.')
return jsonify({
Model_View_Store_Stock_Item.FLAG_STATUS: Model_View_Store_Stock_Item.FLAG_SUCCESS,
Model_View_Store_Stock_Item.KEY_DATA: model_return.category_list.to_json()
Model_View_Store_Stock_Item.FLAG_DATA: model_return.category_list.to_json()
})
except Exception as e:
return jsonify({

View File

@@ -54,7 +54,7 @@ def supplier():
try:
model = Model_View_Store_Supplier(form)
if not model.is_user_logged_in:
# return redirect(url_for('routes_user.login', data = jsonify({ Model_View_Store_Supplier.KEY_CALLBACK: Model_View_Store_Supplier.HASH_PAGE_STORE_SUPPLIERS })))
# return redirect(url_for('routes_user.login', data = jsonify({ Model_View_Store_Supplier.FLAG_CALLBACK: Model_View_Store_Supplier.HASH_PAGE_STORE_SUPPLIERS })))
return redirect(url_for('routes_core.home'))
# print('importing basket')
# model.import_JSON_basket(data)

View File

@@ -36,14 +36,14 @@ def login():
except:
data = {}
print(f'data={data}')
# callback_login = F'{Model_View_Base.HASH_CALLBACK_LOGIN}{data.get(Model_View_Base.KEY_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.KEY_CALLBACK, Model_View_Base.HASH_PAGE_HOME))
# encoded_path = quote(data.get(Model_View_Base.FLAG_CALLBACK, Model_View_Base.HASH_PAGE_HOME))
uri_redirect = url_for('routes_user.login_callback', _external=True) # , subpath=encoded_path
# uri_redirect = f'{current_app.URL_HOST}/login_callback?subpath={data.get(Model_View_Base.KEY_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}')
hash_callback = data.get(Model_View_Base.KEY_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}')
red = oauth.auth0.authorize_redirect(
@@ -63,7 +63,7 @@ def login():
Query Parameters: {query_params}
""")
return jsonify({'Success': True, Model_View_Base.FLAG_STATUS: Model_View_Base.FLAG_SUCCESS, f'{Model_View_Base.KEY_CALLBACK}': headers})
return jsonify({'Success': True, Model_View_Base.FLAG_STATUS: Model_View_Base.FLAG_SUCCESS, f'{Model_View_Base.FLAG_CALLBACK}': headers})
@routes_user.route("/login_callback") # <path:subpath>/<code>
def login_callback():
@@ -84,6 +84,7 @@ def login_callback():
print(f"Error: {str(e)}")
session[current_app.config['ID_TOKEN_USER']] = token
# import user id
"""
print(f'str(type(token)) = {str(type(token))}')
print(f'token = {token}')
userinfo = token.get('userinfo')
@@ -91,18 +92,18 @@ def login_callback():
# id_user = token.get('sub')
id_user = userinfo.get('sub')
print(f'user ID: {id_user}')
datastore_user = DataStore_User()
user = datastore_user.get_user_auth0()
"""
user = User.from_json_auth0(token) # datastore_user.get_user_auth0()
user_filters = User_Filters.from_user(user)
datastore_user = DataStore_User()
users, errors = datastore_user.get_many_user(user_filters, user)
try:
user = users[0]
print('User logged in')
print(f'user ({str(type(user))}): {user}')
print(f'user key: {Model_View_Base.KEY_USER}')
print(f'user key: {Model_View_Base.FLAG_USER}')
user_json = user.to_json()
session[Model_View_Base.KEY_USER] = user_json
session[Model_View_Base.FLAG_USER] = user_json
print(f'user stored on session')
except:
print(f'User not found: {user_filters}\nDatabase query error: {errors}')
@@ -121,7 +122,7 @@ def login_callback():
# add user to database
# DataStore_Store().add_new_user(id_user) # this is part of get basket - should occur on page load
print(f'user session: {session[Model_View_Base.KEY_USER]}')
print(f'user session: {session[Model_View_Base.FLAG_USER]}')
return redirect(f"{current_app.config['URL_HOST']}{hash_callback}")
except Exception as e:
return jsonify({Model_View_Base.FLAG_STATUS: Model_View_Base.FLAG_FAILURE, Model_View_Base.FLAG_MESSAGE: f'Controller error.\n{e}'})
@@ -160,7 +161,7 @@ def logout_callback():
# add user to database
# DataStore_Store().add_new_user(id_user) # this is part of get basket - should occur on page load
print(f'user session: {session[Model_View_Base.KEY_USER]}')
print(f'user session: {session[Model_View_Base.FLAG_USER]}')
return redirect(f'{current_app.URL_HOST}{hash_callback}')
except Exception as e:
return jsonify({Model_View_Base.FLAG_STATUS: Model_View_Base.FLAG_FAILURE, Model_View_Base.FLAG_MESSAGE: f'Controller error.\n{e}'})
@@ -171,7 +172,7 @@ def user():
try:
model = Model_View_User(current_app, db)
if not model.is_user_logged_in:
# return redirect(url_for('routes_user.login', data = jsonify({ Model_View_User.KEY_CALLBACK: Model_View_User.HASH_PAGE_USER_ACCOUNT })))
# return redirect(url_for('routes_user.login', data = jsonify({ Model_View_User.FLAG_CALLBACK: Model_View_User.HASH_PAGE_USER_ACCOUNT })))
return redirect(url_for('routes_core.home'))
html_body = render_template('pages/user/_user.html', model = model)
except Exception as e: