Coverage for polar/customer_portal/endpoints/organization.py: 68%
17 statements
« prev ^ index » next coverage.py v7.10.6, created at 2025-12-05 15:52 +0000
« prev ^ index » next coverage.py v7.10.6, created at 2025-12-05 15:52 +0000
1from typing import Annotated 1a
3from fastapi import Depends, Path 1a
5from polar.exceptions import ResourceNotFound 1a
6from polar.openapi import APITag 1a
7from polar.postgres import AsyncSession, get_db_session 1a
8from polar.routing import APIRouter 1a
10from ..schemas.organization import CustomerOrganizationData 1a
11from ..service.organization import ( 1a
12 customer_organization as customer_organization_service,
13)
15router = APIRouter(prefix="/organizations", tags=["organizations", APITag.public]) 1a
17OrganizationSlug = Annotated[str, Path(description="The organization slug.")] 1a
18OrganizationNotFound = { 1a
19 "description": "Organization not found.",
20 "model": ResourceNotFound.schema(),
21}
24@router.get( 1a
25 "/{slug}",
26 summary="Get Organization",
27 response_model=CustomerOrganizationData,
28 responses={404: OrganizationNotFound},
29)
30async def get( 1ab
31 slug: OrganizationSlug,
32 session: AsyncSession = Depends(get_db_session),
33) -> CustomerOrganizationData:
34 """Get a customer portal's organization by slug."""
35 organization = await customer_organization_service.get_by_slug(session, slug)
37 if organization is None:
38 raise ResourceNotFound()
40 return CustomerOrganizationData.model_validate(
41 {"organization": organization, "products": organization.products}
42 )