""" 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)