Merge branch 'test' into front
This commit is contained in:
commit
76ce3702f5
@ -79,6 +79,23 @@ async def get_forms(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@router.get("/{form_id}")
|
||||||
|
async def get_form(
|
||||||
|
form_id: int,
|
||||||
|
db: AsyncSession = Depends(get_db),
|
||||||
|
current_user: AppUser = Depends(get_current_active_user_with_set_db),
|
||||||
|
) -> BaseSingleResponse[BudgetFormResponse]:
|
||||||
|
bf_service = BudgetFormService(db)
|
||||||
|
form = await bf_service.get(
|
||||||
|
user=current_user,
|
||||||
|
budget_form_id=form_id,
|
||||||
|
load_org=True,
|
||||||
|
)
|
||||||
|
return BaseSingleResponse(
|
||||||
|
result = BudgetFormResponse.model_validate(form),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{form_id}/sheets")
|
@router.get("/{form_id}/sheets")
|
||||||
async def get_form_sheets(
|
async def get_form_sheets(
|
||||||
form_id: int,
|
form_id: int,
|
||||||
|
|||||||
@ -60,6 +60,7 @@ class BudgetFormRepository:
|
|||||||
budget_form_id: int,
|
budget_form_id: int,
|
||||||
org_unit: int | list[int] | None = None,
|
org_unit: int | list[int] | None = None,
|
||||||
load_form_type: bool = False,
|
load_form_type: bool = False,
|
||||||
|
load_org: bool = False,
|
||||||
) -> BudgetForm | None:
|
) -> BudgetForm | None:
|
||||||
query = select(BudgetForm)
|
query = select(BudgetForm)
|
||||||
|
|
||||||
@ -71,6 +72,10 @@ class BudgetFormRepository:
|
|||||||
where.append(BudgetForm.org_unit_id.in_(org_unit))
|
where.append(BudgetForm.org_unit_id.in_(org_unit))
|
||||||
|
|
||||||
query = query.where(*where)
|
query = query.where(*where)
|
||||||
|
if load_org:
|
||||||
|
query = query.options(
|
||||||
|
joinedload(BudgetForm.org_unit)
|
||||||
|
)
|
||||||
|
|
||||||
if load_form_type:
|
if load_form_type:
|
||||||
query = query.options(
|
query = query.options(
|
||||||
|
|||||||
@ -47,11 +47,13 @@ class BudgetFormService:
|
|||||||
budget_form_id: int,
|
budget_form_id: int,
|
||||||
user: AppUser,
|
user: AppUser,
|
||||||
load_form_type: bool = False,
|
load_form_type: bool = False,
|
||||||
|
load_org: bool = False,
|
||||||
) -> list[BudgetForm] | tuple[int, list[BudgetForm]]:
|
) -> list[BudgetForm] | tuple[int, list[BudgetForm]]:
|
||||||
if user.role_id == UserRoleEnum.ADMIN:
|
if user.role_id == UserRoleEnum.ADMIN:
|
||||||
return await self.bf_repo.get(
|
return await self.bf_repo.get(
|
||||||
budget_form_id=budget_form_id,
|
budget_form_id=budget_form_id,
|
||||||
load_form_type=load_form_type,
|
load_form_type=load_form_type,
|
||||||
|
load_org=load_org,
|
||||||
)
|
)
|
||||||
user = await self.user_repo.get(
|
user = await self.user_repo.get(
|
||||||
user_id=user.id,
|
user_id=user.id,
|
||||||
@ -61,4 +63,5 @@ class BudgetFormService:
|
|||||||
budget_form_id=budget_form_id,
|
budget_form_id=budget_form_id,
|
||||||
org_unit=[ou.id for ou in user.org_units],
|
org_unit=[ou.id for ou in user.org_units],
|
||||||
load_form_type=load_form_type,
|
load_form_type=load_form_type,
|
||||||
|
load_org=load_org,
|
||||||
)
|
)
|
||||||
|
|||||||
@ -10,6 +10,14 @@ def test_forms_list_smoke(client, admin_tokens, auth_headers):
|
|||||||
assert isinstance(payload["result"], list)
|
assert isinstance(payload["result"], list)
|
||||||
|
|
||||||
|
|
||||||
|
def test_form_smoke(client, admin_tokens, auth_headers):
|
||||||
|
response = client.get("/api/v1/form/1", headers=auth_headers(admin_tokens))
|
||||||
|
assert response.status_code == 200
|
||||||
|
payload = response.json()
|
||||||
|
assert "result" in payload
|
||||||
|
assert isinstance(payload["result"], dict)
|
||||||
|
|
||||||
|
|
||||||
def test_forms_sheets_not_found_error_shape(client, admin_tokens, auth_headers):
|
def test_forms_sheets_not_found_error_shape(client, admin_tokens, auth_headers):
|
||||||
response = client.get(
|
response = client.get(
|
||||||
"/api/v1/form/999/sheets", headers=auth_headers(admin_tokens)
|
"/api/v1/form/999/sheets", headers=auth_headers(admin_tokens)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user