feat: add company detail page and transfer ownership UI

- Add company-detail.html with status cards, info sections, vendors list
- Add company-edit.html with transfer ownership modal
- Add company-detail.js and company-edit.js
- Add user search autocomplete for transfer ownership
- Add inline validation errors for transfer form
- Add View button to companies list page
- Add route for /admin/companies/{id} detail page

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-12-02 19:39:40 +01:00
parent 66c967a04e
commit 4ef3e6eba3
7 changed files with 1385 additions and 9 deletions

View File

@@ -12,6 +12,9 @@ Routes:
- GET / → Redirect to /admin/login
- GET /login → Admin login page (no auth)
- GET /dashboard → Admin dashboard (auth required)
- GET /companies → Company list page (auth required)
- GET /companies/create → Create company form (auth required)
- GET /companies/{company_id}/edit → Edit company form (auth required)
- GET /vendors → Vendor list page (auth required)
- GET /vendors/create → Create vendor form (auth required)
- GET /vendors/{vendor_code} → Vendor details (auth required)
@@ -152,6 +155,50 @@ async def admin_company_create_page(
)
@router.get(
"/companies/{company_id}", response_class=HTMLResponse, include_in_schema=False
)
async def admin_company_detail_page(
request: Request,
company_id: int = Path(..., description="Company ID"),
current_user: User = Depends(get_current_admin_from_cookie_or_header),
db: Session = Depends(get_db),
):
"""
Render company detail view.
"""
return templates.TemplateResponse(
"admin/company-detail.html",
{
"request": request,
"user": current_user,
"company_id": company_id,
},
)
@router.get(
"/companies/{company_id}/edit", response_class=HTMLResponse, include_in_schema=False
)
async def admin_company_edit_page(
request: Request,
company_id: int = Path(..., description="Company ID"),
current_user: User = Depends(get_current_admin_from_cookie_or_header),
db: Session = Depends(get_db),
):
"""
Render company edit form.
"""
return templates.TemplateResponse(
"admin/company-edit.html",
{
"request": request,
"user": current_user,
"company_id": company_id,
},
)
# ============================================================================
# VENDOR MANAGEMENT ROUTES
# ============================================================================