Spaces:
Runtime error
Runtime error
| import uuid | |
| from fastapi import APIRouter, Depends, HTTPException | |
| from sqlalchemy import select | |
| from sqlalchemy.orm import Session | |
| from app.models.database import get_db, Tenant | |
| from app.dependencies.admin_auth import require_admin_jwt | |
| from app.schemas.admin_settings import GoLiveRequest, TenantSettingsUpdate, TenantResponse | |
| router = APIRouter(prefix="/admin", tags=["admin"]) | |
| def patch_admin_go_live( | |
| request: GoLiveRequest, | |
| tenant_id: uuid.UUID = Depends(require_admin_jwt), | |
| db: Session = Depends(get_db) | |
| ): | |
| tenant = db.scalar(select(Tenant).where(Tenant.id == tenant_id)) | |
| if not tenant: | |
| raise HTTPException(status_code=404, detail="Tenant not found") | |
| tenant.is_active = request.is_active | |
| db.commit() | |
| db.refresh(tenant) | |
| return tenant | |
| def put_admin_settings( | |
| request: TenantSettingsUpdate, | |
| tenant_id: uuid.UUID = Depends(require_admin_jwt), | |
| db: Session = Depends(get_db) | |
| ): | |
| tenant = db.scalar(select(Tenant).where(Tenant.id == tenant_id)) | |
| if not tenant: | |
| raise HTTPException(status_code=404, detail="Tenant not found") | |
| if request.name is not None: | |
| tenant.name = request.name | |
| if request.website_url is not None: | |
| tenant.website_url = str(request.website_url) | |
| if tenant.customization is None: | |
| tenant.customization = {} | |
| customization_update = {} | |
| if request.industry is not None: | |
| customization_update["industry"] = request.industry | |
| if request.timezone is not None: | |
| customization_update["timezone"] = request.timezone | |
| if request.chatbot_name is not None: | |
| customization_update["chatbot_name"] = request.chatbot_name | |
| if request.chatbot_greeting is not None: | |
| customization_update["chatbot_greeting"] = request.chatbot_greeting | |
| if customization_update: | |
| # SQLAlchemy requires a new dict object for JSON column mutation tracking | |
| new_customization = dict(tenant.customization) | |
| new_customization.update(customization_update) | |
| tenant.customization = new_customization | |
| if "backup_email" in request.model_fields_set: | |
| tenant.backup_email = str(request.backup_email) if request.backup_email else None | |
| db.commit() | |
| db.refresh(tenant) | |
| return tenant | |