53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
from flask import Blueprint
|
|
|
|
from flask import render_template, session, flash, request
|
|
from controllers.database.product import ProductController
|
|
from controllers.database.category import CategoryController
|
|
|
|
blueprint = Blueprint("products", __name__, url_prefix="/products")
|
|
|
|
# Global context to enable the categories to be accessed
|
|
# from any view
|
|
@blueprint.context_processor
|
|
def category_list():
|
|
database = CategoryController()
|
|
categories = database.read_all()
|
|
return dict(categories=categories)
|
|
|
|
# Loads the front product page
|
|
@blueprint.route('/')
|
|
def index():
|
|
database = ProductController()
|
|
products = database.read_all()
|
|
|
|
# No Products visible
|
|
if products == None:
|
|
flash("No Products available")
|
|
|
|
return render_template('index.html', content="content.html", user = session.get('user'), products = products)
|
|
|
|
# Loads a given product category page
|
|
@blueprint.route('/<string:category>')
|
|
def category(category: str):
|
|
database = ProductController()
|
|
|
|
# Check to see if there is a custome search term
|
|
search_term = request.args.get("search", type=str)
|
|
if search_term != None:
|
|
print(f"Search Term {search_term}")
|
|
products = database.read_all(category, search_term)
|
|
else:
|
|
products = database.read_all(category)
|
|
|
|
# No Products visible
|
|
if products == None:
|
|
flash(f"No Products available in {category}")
|
|
|
|
return render_template('index.html', content="content.html", user = session.get('user'), products = products, category = category)
|
|
|
|
# Loads a given product based on ID
|
|
@blueprint.route('/<int:id>')
|
|
def id(id: int):
|
|
return "ID: " + str(id)
|
|
|