Files
2026-05-07 12:17:19 -04:00

60 lines
1.8 KiB
Python

"""
app/tenant/settings/routes.py
Tenant settings management.
"""
import logging
from flask import Blueprint, render_template, redirect, url_for, flash, request, g
from flask_login import login_required
from app.extensions import db
from app.models.salon import TenantSetting
from app.decorators import require_role, demo_readonly
from app.tenant.utils import log_tenant_action
logger = logging.getLogger(__name__)
settings_bp = Blueprint("settings", __name__, url_prefix="/settings")
# Keys managed by the UI — any key not in this list is hidden
MANAGED_KEYS = [
"business_hours",
"booking_advance_days",
"auto_confirm_bookings",
"review_request_delay_minutes",
"receipt_footer_note",
"google_review_url",
"facebook_review_url",
"yelp_review_url",
]
@settings_bp.route("/")
@login_required
@require_role("tenant_admin")
def index():
settings = {s.setting_key: s.setting_value for s in TenantSetting.query.filter_by(
tenant_id=g.tenant.id).all()}
return render_template("tenant/settings/index.html",
settings=settings, managed_keys=MANAGED_KEYS)
@settings_bp.route("/save", methods=["POST"])
@login_required
@require_role("tenant_admin")
@demo_readonly
def save():
for key in MANAGED_KEYS:
value = request.form.get(key, "").strip()
existing = TenantSetting.query.filter_by(
tenant_id=g.tenant.id, setting_key=key).first()
if existing:
existing.setting_value = value or None
else:
setting = TenantSetting(
tenant_id=g.tenant.id, setting_key=key,
setting_value=value or None,
)
db.session.add(setting)
log_tenant_action("settings.save", "tenant", g.tenant.id)
db.session.commit()
flash("Settings saved.", "success")
return redirect(url_for("settings.index"))