46 lines
2.0 KiB
Python
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)}')
|
|
|