- Added customer_id and contact_id filters to the list_opportunities endpoint for improved querying. - Implemented a redirect for opportunity detail pages to a new format. - Refactored SubscriptionMatrixService to load invoices from a local snapshot instead of an external service, improving performance and reliability. - Updated settings to include 'pipeline' as a case type and added a new section for managing ignored product texts in the invoice error finder. - Introduced a new user_sag_create_preferences table to store per-user default case types for new cases. - Enhanced frontend settings page with invoice error finder configuration options and improved handling of ignored product texts. - Added migrations to support new features, including resolved status for invoice error finder issues and user-specific case type preferences.
18 lines
669 B
Python
18 lines
669 B
Python
from fastapi import APIRouter, Request
|
|
from fastapi.templating import Jinja2Templates
|
|
from fastapi.responses import HTMLResponse
|
|
from fastapi.responses import RedirectResponse
|
|
|
|
router = APIRouter()
|
|
templates = Jinja2Templates(directory="app")
|
|
|
|
|
|
@router.get("/opportunities", response_class=HTMLResponse)
|
|
async def opportunities_page(request: Request):
|
|
return templates.TemplateResponse("opportunities/frontend/opportunities.html", {"request": request})
|
|
|
|
|
|
@router.get("/opportunities/{opportunity_id}", include_in_schema=False)
|
|
async def opportunity_detail_redirect(opportunity_id: int):
|
|
return RedirectResponse(url=f"/sag/{opportunity_id}/v3", status_code=307)
|