UX Improvements for Home page and Accessibility Statement page
This commit is contained in:
149
app.py
149
app.py
@@ -18,13 +18,17 @@ Initializes the Flask application, sets the configuration based on the environme
|
||||
# internal
|
||||
from config import app_config, Config
|
||||
# from routes import bp_home
|
||||
from forms import Form_Contact, Form_Supplier, Form_Filters_Permutations
|
||||
from forms import Form_Contact, Form_Supplier, Form_Filters_Permutation, Form_Filters_Stock_Item
|
||||
from models.model_view_base import Model_View_Base
|
||||
from models.model_view_home import Model_View_Home
|
||||
from models.model_view_contact import Model_View_Contact
|
||||
from models.model_view_store_stock_item import Model_View_Store_Stock_Item
|
||||
from models.model_view_supplier import Model_View_Supplier
|
||||
from models.model_view_store_permutations import Model_View_Store_Permutations
|
||||
from business_objects.product import Product, Product_Filters # , Product_Image_Filters, Resolution_Level_Enum
|
||||
from models.model_view_store_permutation import Model_View_Store_Permutation
|
||||
from business_objects.product import Product, Product_Filters, Product_Permutation # , Product_Image_Filters, Resolution_Level_Enum
|
||||
from business_objects.stock_item import Stock_Item, Stock_Item_Filters
|
||||
from datastores.datastore_store import DataStore_Store
|
||||
from helpers.helper_app import Helper_App
|
||||
import lib.argument_validation as av
|
||||
# external
|
||||
from flask import Flask, render_template, jsonify, request, render_template_string, send_from_directory, redirect, url_for, session
|
||||
@@ -171,7 +175,7 @@ def application(environ, start_response):
|
||||
@app.route('/', methods=['GET'])
|
||||
def home():
|
||||
try:
|
||||
model = Model_View_Home(app)
|
||||
model = Model_View_Home(app, db)
|
||||
html_body = render_template('_page_home.html', model = model)
|
||||
except Exception as e:
|
||||
return str(e)
|
||||
@@ -181,7 +185,7 @@ def home():
|
||||
def contact():
|
||||
try:
|
||||
form = Form_Contact()
|
||||
model = Model_View_Contact(db, get_info_user(), app, form)
|
||||
model = Model_View_Contact(app, db, form)
|
||||
html_body = render_template('_page_contact.html', model = model)
|
||||
except Exception as e:
|
||||
return jsonify(error=str(e)), 403
|
||||
@@ -211,7 +215,7 @@ def contact_post():
|
||||
# @app.route('/public_html/services', methods=['GET', 'POST'])
|
||||
def services():
|
||||
try:
|
||||
model = Model_View_Home(db, get_info_user(), app)
|
||||
model = Model_View_Home(app, db)
|
||||
html_body = render_template('_page_services.html', model = model)
|
||||
except Exception as e:
|
||||
return jsonify(error=str(e)), 403
|
||||
@@ -235,7 +239,7 @@ def supplier():
|
||||
# model = input_JSON_basket(model, data)
|
||||
# if not logged in:
|
||||
try:
|
||||
model = Model_View_Supplier(db, get_info_user(), app, form)
|
||||
model = Model_View_Supplier(app, db, form)
|
||||
# print('importing basket')
|
||||
# model.import_JSON_basket(data)
|
||||
model.get_basket(data)
|
||||
@@ -251,41 +255,122 @@ def supplier():
|
||||
return jsonify({'status': 'failure', 'Message': f'Invalid supplier details.\n{form.errors}'})
|
||||
|
||||
# product permutations
|
||||
@app.route('/store/permutations', methods=['GET'])
|
||||
def permutations_get():
|
||||
@app.route('/store/permutation', methods=['GET'])
|
||||
def permutation():
|
||||
filters = Product_Filters.get_default()
|
||||
model = Model_View_Store_Permutations(app=app, db=db, filters_product=filters)
|
||||
model = Model_View_Store_Permutation(app=app, db=db, filters_product=filters)
|
||||
return render_template('_page_store_product.html', model = model)
|
||||
|
||||
@app.route('/store/permutations', methods=['POST'])
|
||||
def permutations_post():
|
||||
try:
|
||||
data = request.json
|
||||
except:
|
||||
data = {}
|
||||
print(f'data={data}')
|
||||
@app.route('/store/permutation_filter', methods=['POST'])
|
||||
def permutation_filter():
|
||||
data = Helper_App.get_request_data(request)
|
||||
form_filters = None
|
||||
try:
|
||||
form_data = data[Model_View_Store_Permutations.KEY_FORM_FILTERS]
|
||||
print(f'form_data: {form_data}')
|
||||
form_filters = Form_Filters_Permutations(**form_data)
|
||||
print('form acquired')
|
||||
print(form_filters.__repr__)
|
||||
print('valid form')
|
||||
form_filters = get_Form_Filters_Permutation(data)
|
||||
if not form_filters.validate_on_submit():
|
||||
return jsonify({'status': 'failure', 'Message': f'Form invalid.\n{form_filters.errors}'})
|
||||
# ToDo: manually validate category, product
|
||||
filters_form = Product_Filters.from_form(form_filters)
|
||||
model = Model_View_Store_Permutations(app=app, db=db, filters_product=filters_form)
|
||||
# return render_template('_page_store_product.html', model = model)
|
||||
return jsonify({'status': 'success', 'data': model.category_list.to_list_rows_permutation()})
|
||||
model = Model_View_Store_Permutation(app=app, db=db, filters_product=filters_form)
|
||||
return jsonify({'status': 'success', 'Success': True, 'data': model.category_list.to_list_rows_permutation()})
|
||||
except Exception as e:
|
||||
return jsonify({'status': 'failure', 'Message': f'Bad data received by controller.\n{e}'})
|
||||
|
||||
def get_Form_Filters_Permutation(data_request):
|
||||
data_form = data_request[Model_View_Store_Permutation.KEY_FORM]
|
||||
form_filters = Form_Filters_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
|
||||
|
||||
@app.route('/store/permutation_save', methods=['POST'])
|
||||
def permutation_save():
|
||||
data = Helper_App.get_request_data(request)
|
||||
form_filters = None
|
||||
try:
|
||||
form_filters = get_Form_Filters_Permutation(data)
|
||||
if not form_filters.validate_on_submit():
|
||||
return jsonify({'status': 'failure', 'Message': f'Filters form invalid.\n{form_filters.errors}'})
|
||||
|
||||
permutations = data[Model_View_Store_Permutation.KEY_PERMUTATIONS]
|
||||
if len(permutations) == 0:
|
||||
return jsonify({'status': 'failure', 'Message': f'No permutations.'})
|
||||
objsPermutation = []
|
||||
for permutation in permutations:
|
||||
objsPermutation.append(Product_Permutation.from_json(permutation))
|
||||
|
||||
# ToDo: manually validate category, product
|
||||
filters_form = Product_Filters.from_form(form_filters)
|
||||
model_save = Model_View_Store_Permutation(app=app, db=db, filters_product=filters_form)
|
||||
model_save.save_permutations(data.comment, objsPermutation)
|
||||
|
||||
model_return = Model_View_Store_Permutation(app=app, db=db, filters_product=filters_form)
|
||||
return jsonify({'status': 'success', 'Success': True, 'data': model_return.category_list.to_list_rows_permutation()})
|
||||
except Exception as e:
|
||||
return jsonify({'status': 'failure', 'Message': f'Bad data received by controller.\n{e}'})
|
||||
|
||||
|
||||
# stock
|
||||
@app.route('/store/stock_item', methods=['GET'])
|
||||
def stock():
|
||||
filters = Stock_Item_Filters.get_default()
|
||||
model = Model_View_Store_Stock_Item(app=app, db=db, filters_stock_item=filters)
|
||||
return render_template('_page_store_stock_item.html', model = model)
|
||||
|
||||
@app.route('/store/stock_item_filter', methods=['POST'])
|
||||
def stock_filter():
|
||||
data = Helper_App.get_request_data(request)
|
||||
form_filters = None
|
||||
try:
|
||||
form_filters = get_form_filters_stock_items(data)
|
||||
if not form_filters.validate_on_submit():
|
||||
return jsonify({'status': 'failure', 'Message': f'Form invalid.\n{form_filters.errors}'})
|
||||
# ToDo: manually validate category, product
|
||||
filters_form = Stock_Item_Filters.from_form(form_filters)
|
||||
model = Model_View_Store_Stock_Item(app=app, db=db, filters_stock_item=filters_form)
|
||||
return jsonify({'status': 'success', 'Success': True, 'data': model.category_list.to_list_rows_permutation()})
|
||||
except Exception as e:
|
||||
return jsonify({'status': 'failure', 'Message': f'Bad data received by controller.\n{e}'})
|
||||
|
||||
def get_form_filters_stock_items(data_request):
|
||||
data_form = data_request[Model_View_Store_Stock_Item.KEY_FORM]
|
||||
form_filters = Form_Filters_Stock_Item(**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
|
||||
|
||||
@app.route('/store/stock_item_save', methods=['POST'])
|
||||
def stock_save():
|
||||
data = Helper_App.get_request_data(request)
|
||||
"""
|
||||
form_filters = None
|
||||
try:
|
||||
form_filters = get_form_filters_stock_items(data)
|
||||
if not form_filters.validate_on_submit():
|
||||
return jsonify({'status': 'failure', 'Message': f'Filters form invalid.\n{form_filters.errors}'})
|
||||
|
||||
stock_items = data[Model_View_Store_Stock.KEY_PERMUTATIONS]
|
||||
print(f'stock_items: {stock_items}')
|
||||
if len(stock_items) == 0:
|
||||
return jsonify({'status': 'failure', 'Message': f'No stock items.'})
|
||||
objsStockItem = []
|
||||
for stock_item in stock_items:
|
||||
objsStockItem.append(Product_Permutation.from_json(stock_item))
|
||||
print(f'objsStockItem: {objsStockItem}')
|
||||
|
||||
# ToDo: manually validate category, product
|
||||
filters_form = Stock_Filters.from_form(form_filters)
|
||||
model_save = Model_View_Store_Stock(app=app, db=db, filters_product=filters_form)
|
||||
model_save.save_stock_items(data.comment, objsPermutation)
|
||||
|
||||
model_return = Model_View_Store_Stock(app=app, db=db, filters_product=filters_form)
|
||||
return jsonify({'status': 'success', 'Success': True, 'data': model_return.category_list.to_list_rows_permutation()})
|
||||
except Exception as e:
|
||||
return jsonify({'status': 'failure', 'Message': f'Bad data received by controller.\n{e}'})
|
||||
"""
|
||||
|
||||
# snore
|
||||
@app.route('/license', methods=['GET'])
|
||||
def license():
|
||||
try:
|
||||
model = Model_View_Home(db, get_info_user(), app)
|
||||
model = Model_View_Home(app, db)
|
||||
html_body = render_template('_page_license.html', model = model)
|
||||
except Exception as e:
|
||||
return str(e)
|
||||
@@ -293,7 +378,7 @@ def license():
|
||||
@app.route('/accessibility-statement', methods=['GET'])
|
||||
def accessibility_statement():
|
||||
try:
|
||||
model = Model_View_Home(db, get_info_user(), app)
|
||||
model = Model_View_Home(app, db)
|
||||
html_body = render_template('_page_accessibility_statement.html', model = model)
|
||||
except Exception as e:
|
||||
return str(e)
|
||||
@@ -301,7 +386,7 @@ def accessibility_statement():
|
||||
@app.route('/accessibility-report', methods=['GET'])
|
||||
def accessibility_report():
|
||||
try:
|
||||
model = Model_View_Home(db, get_info_user(), app)
|
||||
model = Model_View_Home(app, db)
|
||||
html_body = render_template('_page_accessibility_report.html', model = model)
|
||||
except Exception as e:
|
||||
return str(e)
|
||||
@@ -309,7 +394,7 @@ def accessibility_report():
|
||||
@app.route('/retention-schedule', methods=['GET'])
|
||||
def retention_schedule():
|
||||
try:
|
||||
model = Model_View_Home(db, get_info_user(), app)
|
||||
model = Model_View_Home(app, db)
|
||||
html_body = render_template('_page_retention_schedule.html', model = model)
|
||||
except Exception as e:
|
||||
return str(e)
|
||||
@@ -317,7 +402,7 @@ def retention_schedule():
|
||||
@app.route('/privacy-notice', methods=['GET'])
|
||||
def privacy_notice():
|
||||
try:
|
||||
model = Model_View_Home(db, get_info_user(), app)
|
||||
model = Model_View_Home(app, db)
|
||||
html_body = render_template('_page_privacy_notice.html', model = model)
|
||||
except Exception as e:
|
||||
return str(e)
|
||||
|
||||
Reference in New Issue
Block a user