Jun 27 MT-7

This commit is contained in:
2026-06-27 20:04:37 -04:00
parent 7505e82ab4
commit b46c1a7dd5
8 changed files with 864 additions and 1 deletions
+24
View File
@@ -97,6 +97,17 @@ def create_app(config_name='default'):
from flask_wtf.csrf import generate_csrf
app.jinja_env.globals['csrf_token'] = generate_csrf
app.jinja_env.globals['enumerate'] = enumerate
def _hex_to_rgb(hex_color):
"""Convert #rrggbb → 'r,g,b' string for CSS rgb() / Bootstrap var."""
h = hex_color.lstrip('#')
if len(h) != 6:
return '26,86,219'
try:
return ','.join(str(int(h[i:i+2], 16)) for i in (0, 2, 4))
except ValueError:
return '26,86,219'
app.jinja_env.filters['hex_to_rgb'] = _hex_to_rgb
# SLA helpers available in all templates
from app.utils.sla import sla_status, sla_deadline, sla_hours_remaining, SLA_HOURS
@@ -138,6 +149,17 @@ def create_app(config_name='default'):
except Exception:
pass
return {'unread_notification_count': 0, 'pending_verification_count': 0, 'open_support_tickets_count': 0}
@app.context_processor
def inject_tenant_branding():
"""MT-7: push tenant branding into every template as `tenant_branding`."""
try:
from app.models.tenant_settings import TenantSettings
settings = TenantSettings.get_or_default()
return {'tenant_branding': settings}
except Exception:
pass
return {'tenant_branding': None}
os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True)
@@ -151,6 +173,7 @@ def create_app(config_name='default'):
from app.routes import support # Support chat + admin tickets
from app.routes import broadcast # Admin broadcast messages
from app.routes import devices # Admin device management
from app.routes import tenant_settings # MT-7 — tenant self-service
app.register_blueprint(auth.bp)
app.register_blueprint(dashboard.bp)
@@ -167,6 +190,7 @@ def create_app(config_name='default'):
app.register_blueprint(support.bp)
app.register_blueprint(broadcast.bp)
app.register_blueprint(devices.bp)
app.register_blueprint(tenant_settings.bp)
# ── Mobile API (Phase 7 / Phase A / Phase B / Phase C) ───────────────────
# The /api/v1 blueprint group uses JWT Bearer tokens — no CSRF cookies needed.