updates
This commit is contained in:
Binary file not shown.
@@ -8,7 +8,93 @@ logger = get_logger(__name__)
|
||||
router = APIRouter(prefix='/home', tags=['home'])
|
||||
|
||||
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, 'hero_title': content.hero_title, 'hero_subtitle': content.hero_subtitle, 'hero_image': content.hero_image, 'amenities_section_title': content.amenities_section_title, 'amenities_section_subtitle': content.amenities_section_subtitle, 'amenities': json.loads(content.amenities) if content.amenities else None, 'testimonials_section_title': content.testimonials_section_title, 'testimonials_section_subtitle': content.testimonials_section_subtitle, 'testimonials': json.loads(content.testimonials) if content.testimonials else None, 'gallery_section_title': content.gallery_section_title, 'gallery_section_subtitle': content.gallery_section_subtitle, 'gallery_images': json.loads(content.gallery_images) if content.gallery_images else None, 'luxury_section_title': content.luxury_section_title, 'luxury_section_subtitle': content.luxury_section_subtitle, 'luxury_section_image': content.luxury_section_image, 'luxury_features': json.loads(content.luxury_features) if content.luxury_features else None, 'luxury_gallery_section_title': content.luxury_gallery_section_title, 'luxury_gallery_section_subtitle': content.luxury_gallery_section_subtitle, 'luxury_gallery': json.loads(content.luxury_gallery) if content.luxury_gallery else None, 'luxury_testimonials_section_title': content.luxury_testimonials_section_title, 'luxury_testimonials_section_subtitle': content.luxury_testimonials_section_subtitle, 'luxury_testimonials': json.loads(content.luxury_testimonials) if content.luxury_testimonials else None, 'about_preview_title': content.about_preview_title, 'about_preview_subtitle': content.about_preview_subtitle, 'about_preview_content': content.about_preview_content, 'about_preview_image': content.about_preview_image, 'stats': json.loads(content.stats) if content.stats else None, 'luxury_services_section_title': content.luxury_services_section_title, 'luxury_services_section_subtitle': content.luxury_services_section_subtitle, 'luxury_services': json.loads(content.luxury_services) if content.luxury_services else None, 'luxury_experiences_section_title': content.luxury_experiences_section_title, 'luxury_experiences_section_subtitle': content.luxury_experiences_section_subtitle, 'luxury_experiences': json.loads(content.luxury_experiences) if content.luxury_experiences else None, 'awards_section_title': content.awards_section_title, 'awards_section_subtitle': content.awards_section_subtitle, 'awards': json.loads(content.awards) if content.awards else None, 'cta_title': content.cta_title, 'cta_subtitle': content.cta_subtitle, 'cta_button_text': content.cta_button_text, 'cta_button_link': content.cta_button_link, 'cta_image': content.cta_image, 'partners_section_title': content.partners_section_title, 'partners_section_subtitle': content.partners_section_subtitle, 'partners': json.loads(content.partners) if content.partners else None, '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}
|
||||
def safe_json_loads(value, default=None):
|
||||
"""Safely parse JSON string, return default if invalid or empty"""
|
||||
if not value:
|
||||
return default
|
||||
try:
|
||||
parsed = json.loads(value)
|
||||
return parsed if parsed else default
|
||||
except (json.JSONDecodeError, TypeError):
|
||||
return default
|
||||
|
||||
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,
|
||||
'contact_info': safe_json_loads(content.contact_info, {}),
|
||||
'map_url': content.map_url,
|
||||
'social_links': safe_json_loads(content.social_links, {}),
|
||||
'footer_links': safe_json_loads(content.footer_links, {}),
|
||||
'badges': safe_json_loads(content.badges, []),
|
||||
'copyright_text': content.copyright_text,
|
||||
'hero_title': content.hero_title,
|
||||
'hero_subtitle': content.hero_subtitle,
|
||||
'hero_image': content.hero_image,
|
||||
'story_content': content.story_content,
|
||||
'values': safe_json_loads(content.values, []),
|
||||
'features': safe_json_loads(content.features, []),
|
||||
'about_hero_image': content.about_hero_image,
|
||||
'mission': content.mission,
|
||||
'vision': content.vision,
|
||||
'team': safe_json_loads(content.team, []),
|
||||
'timeline': safe_json_loads(content.timeline, []),
|
||||
'achievements': safe_json_loads(content.achievements, []),
|
||||
'amenities_section_title': content.amenities_section_title,
|
||||
'amenities_section_subtitle': content.amenities_section_subtitle,
|
||||
'amenities': safe_json_loads(content.amenities, []),
|
||||
'testimonials_section_title': content.testimonials_section_title,
|
||||
'testimonials_section_subtitle': content.testimonials_section_subtitle,
|
||||
'testimonials': safe_json_loads(content.testimonials, []),
|
||||
'gallery_section_title': content.gallery_section_title,
|
||||
'gallery_section_subtitle': content.gallery_section_subtitle,
|
||||
'gallery_images': safe_json_loads(content.gallery_images, []),
|
||||
'luxury_section_title': content.luxury_section_title,
|
||||
'luxury_section_subtitle': content.luxury_section_subtitle,
|
||||
'luxury_section_image': content.luxury_section_image,
|
||||
'luxury_features': safe_json_loads(content.luxury_features, []),
|
||||
'luxury_gallery_section_title': content.luxury_gallery_section_title,
|
||||
'luxury_gallery_section_subtitle': content.luxury_gallery_section_subtitle,
|
||||
'luxury_gallery': safe_json_loads(content.luxury_gallery, []),
|
||||
'luxury_testimonials_section_title': content.luxury_testimonials_section_title,
|
||||
'luxury_testimonials_section_subtitle': content.luxury_testimonials_section_subtitle,
|
||||
'luxury_testimonials': safe_json_loads(content.luxury_testimonials, []),
|
||||
'about_preview_title': content.about_preview_title,
|
||||
'about_preview_subtitle': content.about_preview_subtitle,
|
||||
'about_preview_content': content.about_preview_content,
|
||||
'about_preview_image': content.about_preview_image,
|
||||
'stats': safe_json_loads(content.stats, []),
|
||||
'luxury_services_section_title': content.luxury_services_section_title,
|
||||
'luxury_services_section_subtitle': content.luxury_services_section_subtitle,
|
||||
'luxury_services': safe_json_loads(content.luxury_services, []),
|
||||
'luxury_experiences_section_title': content.luxury_experiences_section_title,
|
||||
'luxury_experiences_section_subtitle': content.luxury_experiences_section_subtitle,
|
||||
'luxury_experiences': safe_json_loads(content.luxury_experiences, []),
|
||||
'awards_section_title': content.awards_section_title,
|
||||
'awards_section_subtitle': content.awards_section_subtitle,
|
||||
'awards': safe_json_loads(content.awards, []),
|
||||
'cta_title': content.cta_title,
|
||||
'cta_subtitle': content.cta_subtitle,
|
||||
'cta_button_text': content.cta_button_text,
|
||||
'cta_button_link': content.cta_button_link,
|
||||
'cta_image': content.cta_image,
|
||||
'partners_section_title': content.partners_section_title,
|
||||
'partners_section_subtitle': content.partners_section_subtitle,
|
||||
'partners': safe_json_loads(content.partners, []),
|
||||
'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_home_content(db: Session=Depends(get_db)):
|
||||
|
||||
Reference in New Issue
Block a user