Files
Hotel-Booking/Backend/src/routes/refunds_routes.py
Iliyan Angelov 4ab7546de0 updates
2025-11-21 10:55:05 +02:00

46 lines
2.0 KiB
Python

from fastapi import APIRouter, Depends, HTTPException, status
from sqlalchemy.orm import Session
import json
from ..config.database import get_db
from ..config.logging_config import get_logger
from ..models.page_content import PageContent, PageType
logger = get_logger(__name__)
router = APIRouter(prefix='/refunds', tags=['refunds'])
def serialize_page_content(content: PageContent) -> dict:
return {
'id': content.id,
'page_type': content.page_type.value,
'title': content.title,
'subtitle': content.subtitle,
'description': content.description,
'content': content.content,
'meta_title': content.meta_title,
'meta_description': content.meta_description,
'meta_keywords': content.meta_keywords,
'og_title': content.og_title,
'og_description': content.og_description,
'og_image': content.og_image,
'canonical_url': content.canonical_url,
'is_active': content.is_active,
'created_at': content.created_at.isoformat() if content.created_at else None,
'updated_at': content.updated_at.isoformat() if content.updated_at else None
}
@router.get('/')
async def get_refunds_content(db: Session=Depends(get_db)):
try:
content = db.query(PageContent).filter(PageContent.page_type == PageType.REFUNDS).first()
if not content:
return {'status': 'success', 'data': {'page_content': None, 'is_active': False}}
if not content.is_active:
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail='Refunds policy page is currently disabled')
content_dict = serialize_page_content(content)
return {'status': 'success', 'data': {'page_content': content_dict}}
except HTTPException:
raise
except Exception as e:
logger.error(f'Error fetching refunds content: {str(e)}', exc_info=True)
raise HTTPException(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail=f'Error fetching refunds content: {str(e)}')