feat: add complete company management UI
- Create companies list page with stats (total, verified, active, vendor count) - Add company creation form with owner account generation - Implement companies.js with full CRUD operations (list, create, edit, delete) - Add Companies menu item to admin sidebar (desktop + mobile) - Create company admin page routes (/admin/companies, /admin/companies/create) - Register companies API router in admin __init__.py Features: - List all companies with pagination - Create company with automatic owner user creation - Display temporary password for new owner accounts - Edit company information - Delete company (only if no vendors) - Toggle active/verified status - Show vendor count per company UI Components: - Stats cards (total companies, verified, active, total vendors) - Company table with status badges - Create form with validation - Success/error messaging - Responsive design with dark mode support
This commit is contained in:
@@ -17,6 +17,7 @@ Routes:
|
||||
- GET /vendors/{vendor_code} → Vendor details (auth required)
|
||||
- GET /vendors/{vendor_code}/edit → Edit vendor form (auth required)
|
||||
- GET /vendors/{vendor_code}/domains → Vendor domains management (auth required)
|
||||
- GET /vendor-themes → Vendor themes selection page (auth required)
|
||||
- GET /vendors/{vendor_code}/theme → Vendor theme editor (auth required)
|
||||
- GET /users → User management page (auth required)
|
||||
- GET /imports → Import history page (auth required)
|
||||
@@ -109,6 +110,48 @@ async def admin_dashboard_page(
|
||||
)
|
||||
|
||||
|
||||
# ============================================================================
|
||||
# COMPANY MANAGEMENT ROUTES
|
||||
# ============================================================================
|
||||
|
||||
|
||||
@router.get("/companies", response_class=HTMLResponse, include_in_schema=False)
|
||||
async def admin_companies_list_page(
|
||||
request: Request,
|
||||
current_user: User = Depends(get_current_admin_from_cookie_or_header),
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
"""
|
||||
Render companies management page.
|
||||
Shows list of all companies with stats.
|
||||
"""
|
||||
return templates.TemplateResponse(
|
||||
"admin/companies.html",
|
||||
{
|
||||
"request": request,
|
||||
"user": current_user,
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
@router.get("/companies/create", response_class=HTMLResponse, include_in_schema=False)
|
||||
async def admin_company_create_page(
|
||||
request: Request,
|
||||
current_user: User = Depends(get_current_admin_from_cookie_or_header),
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
"""
|
||||
Render company creation form.
|
||||
"""
|
||||
return templates.TemplateResponse(
|
||||
"admin/company-create.html",
|
||||
{
|
||||
"request": request,
|
||||
"user": current_user,
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
# ============================================================================
|
||||
# VENDOR MANAGEMENT ROUTES
|
||||
# ============================================================================
|
||||
@@ -231,6 +274,25 @@ async def admin_vendor_domains_page(
|
||||
# ============================================================================
|
||||
|
||||
|
||||
@router.get("/vendor-themes", response_class=HTMLResponse, include_in_schema=False)
|
||||
async def admin_vendor_themes_page(
|
||||
request: Request,
|
||||
current_user: User = Depends(get_current_admin_from_cookie_or_header),
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
"""
|
||||
Render vendor themes selection page.
|
||||
Allows admins to select a vendor to customize their theme.
|
||||
"""
|
||||
return templates.TemplateResponse(
|
||||
"admin/vendor-themes.html",
|
||||
{
|
||||
"request": request,
|
||||
"user": current_user,
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
@router.get(
|
||||
"/vendors/{vendor_code}/theme", response_class=HTMLResponse, include_in_schema=False
|
||||
)
|
||||
@@ -302,6 +364,25 @@ async def admin_imports_page(
|
||||
)
|
||||
|
||||
|
||||
@router.get("/marketplace", response_class=HTMLResponse, include_in_schema=False)
|
||||
async def admin_marketplace_page(
|
||||
request: Request,
|
||||
current_user: User = Depends(get_current_admin_from_cookie_or_header),
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
"""
|
||||
Render marketplace import management page.
|
||||
Allows admins to import products for any vendor and monitor all imports.
|
||||
"""
|
||||
return templates.TemplateResponse(
|
||||
"admin/marketplace.html",
|
||||
{
|
||||
"request": request,
|
||||
"user": current_user,
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
# ============================================================================
|
||||
# SETTINGS ROUTES
|
||||
# ============================================================================
|
||||
@@ -326,6 +407,25 @@ async def admin_settings_page(
|
||||
)
|
||||
|
||||
|
||||
@router.get("/logs", response_class=HTMLResponse, include_in_schema=False)
|
||||
async def admin_logs_page(
|
||||
request: Request,
|
||||
current_user: User = Depends(get_current_admin_from_cookie_or_header),
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
"""
|
||||
Render admin logs viewer page.
|
||||
View database and file logs with filtering and search.
|
||||
"""
|
||||
return templates.TemplateResponse(
|
||||
"admin/logs.html",
|
||||
{
|
||||
"request": request,
|
||||
"user": current_user,
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
# ============================================================================
|
||||
# CONTENT MANAGEMENT SYSTEM (CMS) ROUTES
|
||||
# ============================================================================
|
||||
|
||||
Reference in New Issue
Block a user