#5 Completed product ranking in category
This commit is contained in:
parent
83829af06f
commit
cafaf94a00
@ -3,9 +3,11 @@
|
|||||||
"""
|
"""
|
||||||
from flask import Blueprint
|
from flask import Blueprint
|
||||||
|
|
||||||
from flask import render_template, request
|
from flask import render_template, request, flash, session, redirect
|
||||||
from controllers.database.stats import StatsController
|
from controllers.database.stats import StatsController
|
||||||
from controllers.database.product import ProductController
|
from controllers.database.product import ProductController
|
||||||
|
from controllers.database.category import CategoryController
|
||||||
|
from controllers.web.product import is_role
|
||||||
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
import random
|
import random
|
||||||
@ -26,6 +28,19 @@ def index():
|
|||||||
@blueprint.route('/products/<int:id>')
|
@blueprint.route('/products/<int:id>')
|
||||||
def view_product_stats(id: int):
|
def view_product_stats(id: int):
|
||||||
""" Page to view statistics for a given product """
|
""" Page to view statistics for a given product """
|
||||||
|
# Check user is seller
|
||||||
|
if not is_role("Seller"):
|
||||||
|
flash("You must be logged in as a seller to view this page!", "error")
|
||||||
|
return redirect("/")
|
||||||
|
|
||||||
|
db = ProductController()
|
||||||
|
product = db.read_id(id)
|
||||||
|
|
||||||
|
# Check user owns this product
|
||||||
|
if product is None or product.sellerID is not session.get("user_id"):
|
||||||
|
flash("This product does not belong to you!", "error")
|
||||||
|
return redirect("/products/ownproducts")
|
||||||
|
|
||||||
db = StatsController()
|
db = StatsController()
|
||||||
|
|
||||||
prev_days: int = request.args.get('prev_days', 7, int)
|
prev_days: int = request.args.get('prev_days', 7, int)
|
||||||
@ -45,18 +60,14 @@ def view_product_stats(id: int):
|
|||||||
# Ranking in category
|
# Ranking in category
|
||||||
ranking = db.read_ranking(id)
|
ranking = db.read_ranking(id)
|
||||||
|
|
||||||
db = ProductController()
|
# Category name
|
||||||
product = db.read_id(id)
|
db = CategoryController()
|
||||||
|
category = db.read(product.category).name
|
||||||
# Stock Level
|
|
||||||
product.quantityAvailable
|
|
||||||
|
|
||||||
# Age
|
|
||||||
time_since_posted = datetime.now() - product.postedDate
|
|
||||||
|
|
||||||
data = {
|
data = {
|
||||||
"age": time_since_posted,
|
"age": datetime.now() - product.postedDate,
|
||||||
"ranking": ranking,
|
"ranking": ranking,
|
||||||
|
"category": category,
|
||||||
"views": {
|
"views": {
|
||||||
"total": total_views,
|
"total": total_views,
|
||||||
"headings": list(reversed(product_view_frequency_data.keys())),
|
"headings": list(reversed(product_view_frequency_data.keys())),
|
||||||
@ -70,11 +81,3 @@ def view_product_stats(id: int):
|
|||||||
content="stats.html",
|
content="stats.html",
|
||||||
data=data
|
data=data
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@blueprint.route('/users/<int:id>')
|
|
||||||
def view_user_stats(id: int):
|
|
||||||
""" Page to view statistics for a given user """
|
|
||||||
db = StatsController()
|
|
||||||
data = db.read_user(id)
|
|
||||||
return render_template("index.html", content="stats.html", data=data)
|
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<p><b>Age:</b> {{data['age']}}</p>
|
<p><b>Age:</b> {{data['age']}}</p>
|
||||||
<p><b>Ranking:</b> {{data['ranking']}}</p>
|
<p><b>Ranking:</b> #{{data['ranking']}} in {{data['category']}}</p>
|
||||||
<p><b>Stock Level:</b> {{data['stocklevel']}}</p>
|
<p><b>Stock Level:</b> {{data['stocklevel']}}</p>
|
||||||
<p><b>Total Views:</b> {{data['views']['total']}}</p>
|
<p><b>Total Views:</b> {{data['views']['total']}}</p>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
Reference in New Issue
Block a user