fix: add vendor page creation endpoint and update JS logic
- Add POST /admin/content-pages/vendor endpoint for vendor overrides - Update JS to use /vendor or /platform endpoint based on vendor selection - Platform endpoint forces vendor_id=None, vendor endpoint requires vendor_id 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -161,6 +161,52 @@ def create_platform_page(
|
|||||||
return page.to_dict()
|
return page.to_dict()
|
||||||
|
|
||||||
|
|
||||||
|
# ============================================================================
|
||||||
|
# VENDOR PAGES
|
||||||
|
# ============================================================================
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/vendor", response_model=ContentPageResponse, status_code=201)
|
||||||
|
def create_vendor_page(
|
||||||
|
page_data: ContentPageCreate,
|
||||||
|
current_user: User = Depends(get_current_admin_api),
|
||||||
|
db: Session = Depends(get_db),
|
||||||
|
):
|
||||||
|
"""
|
||||||
|
Create a vendor-specific content page override.
|
||||||
|
|
||||||
|
Vendor pages override platform defaults for a specific vendor.
|
||||||
|
"""
|
||||||
|
if not page_data.vendor_id:
|
||||||
|
from fastapi import HTTPException
|
||||||
|
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=400,
|
||||||
|
detail="vendor_id is required for vendor pages. Use /platform for platform defaults.",
|
||||||
|
)
|
||||||
|
|
||||||
|
page = content_page_service.create_page(
|
||||||
|
db,
|
||||||
|
slug=page_data.slug,
|
||||||
|
title=page_data.title,
|
||||||
|
content=page_data.content,
|
||||||
|
vendor_id=page_data.vendor_id,
|
||||||
|
content_format=page_data.content_format,
|
||||||
|
template=page_data.template,
|
||||||
|
meta_description=page_data.meta_description,
|
||||||
|
meta_keywords=page_data.meta_keywords,
|
||||||
|
is_published=page_data.is_published,
|
||||||
|
show_in_footer=page_data.show_in_footer,
|
||||||
|
show_in_header=page_data.show_in_header,
|
||||||
|
show_in_legal=page_data.show_in_legal,
|
||||||
|
display_order=page_data.display_order,
|
||||||
|
created_by=current_user.id,
|
||||||
|
)
|
||||||
|
db.commit()
|
||||||
|
|
||||||
|
return page.to_dict()
|
||||||
|
|
||||||
|
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
# ALL CONTENT PAGES (Platform + Vendors)
|
# ALL CONTENT PAGES (Platform + Vendors)
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
|
|||||||
@@ -163,10 +163,13 @@ function contentPageEditor(pageId) {
|
|||||||
this.successMessage = 'Page updated successfully!';
|
this.successMessage = 'Page updated successfully!';
|
||||||
contentPageEditLog.info('Page updated');
|
contentPageEditLog.info('Page updated');
|
||||||
} else {
|
} else {
|
||||||
// Create new page
|
// Create new page - use vendor or platform endpoint based on selection
|
||||||
response = await apiClient.post('/admin/content-pages/platform', payload);
|
const endpoint = this.form.vendor_id
|
||||||
|
? '/admin/content-pages/vendor'
|
||||||
|
: '/admin/content-pages/platform';
|
||||||
|
response = await apiClient.post(endpoint, payload);
|
||||||
this.successMessage = 'Page created successfully!';
|
this.successMessage = 'Page created successfully!';
|
||||||
contentPageEditLog.info('Page created');
|
contentPageEditLog.info('Page created', { endpoint, vendor_id: this.form.vendor_id });
|
||||||
|
|
||||||
// Redirect to edit page after creation
|
// Redirect to edit page after creation
|
||||||
const pageData = response.data || response;
|
const pageData = response.data || response;
|
||||||
|
|||||||
Reference in New Issue
Block a user