Files
MyPOS/app/tenant/reviews/routes.py
T
2026-05-07 12:17:19 -04:00

39 lines
1.2 KiB
Python

"""
app/tenant/reviews/routes.py
Owner view of customer reviews submitted at checkout.
"""
import logging
from flask import Blueprint, render_template, g
from flask_login import login_required
from app.models.salon import CheckoutReview
from app.decorators import require_role
from sqlalchemy import func
from app.extensions import db
logger = logging.getLogger(__name__)
reviews_bp = Blueprint("reviews", __name__, url_prefix="/reviews")
@reviews_bp.route("/")
@login_required
@require_role("tenant_admin", "tenant_manager")
def index():
reviews = CheckoutReview.query.filter_by(
tenant_id=g.tenant.id
).order_by(CheckoutReview.created_at.desc()).limit(100).all()
avg_row = db.session.query(
func.avg(CheckoutReview.rating)
).filter_by(tenant_id=g.tenant.id).scalar()
avg_rating = round(float(avg_row or 0), 1)
dist = dict(
db.session.query(CheckoutReview.rating, func.count(CheckoutReview.id))
.filter_by(tenant_id=g.tenant.id)
.group_by(CheckoutReview.rating).all()
)
return render_template("tenant/reviews/index.html",
reviews=reviews, avg_rating=avg_rating,
rating_dist=dist)