Merge pull request 'AURORA-1096-back: поправил фильтры в журнале аудита' (#54) from AURORA-1096-back into test

Reviewed-on: #54
Reviewed-by: Raykov-MS <RaykovMS@avt.rshb.ru>
This commit is contained in:
tsygankoviva 2026-06-19 08:23:05 +03:00
commit d99908c9b5
6 changed files with 17 additions and 4 deletions

View File

@ -1,3 +1,5 @@
from datetime import datetime
from fastapi import APIRouter, Depends, status
from sqlalchemy.ext.asyncio import AsyncSession
@ -35,8 +37,10 @@ async def get_audit_logs(
task_id=params.task_id,
form_id=params.form_id,
event_type=params.event_type,
date_from=params.date_from,
date_to=params.date_to,
event=params.event,
date_from=datetime.combine(params.date_from, datetime.min.time()) if params.date_from else None,
date_to=datetime.combine(params.date_to, datetime.max.time()) if params.date_to else None,
)
result = [audit_service.orm_log_to_response(log) for log in logs]
return BaseListResponse(result=result, count=count)

View File

@ -455,8 +455,9 @@ class AuditLogQueryParams(BaseModel):
task_id: Optional[int] = Field(None, description="ID задачи")
form_id: Optional[int] = Field(None, description="ID формы")
event_type: Optional[str] = Field(None, description="Тип события")
date_from: Optional[datetime] = Field(None, description="Дата начала (ISO 8601)")
date_to: Optional[datetime] = Field(None, description="Дата окончания (ISO 8601)")
event: Optional[str] = Field(None, description="Cобытиу")
date_from: Optional[date] = Field(None, description="Дата начала (ISO 8601)")
date_to: Optional[date] = Field(None, description="Дата окончания (ISO 8601)")

View File

@ -39,6 +39,7 @@ class AuditLogRepository:
task_id: int | None = None,
form_id: int | None = None,
event_type: str | None = None,
event: str | None = None,
date_from: datetime | None = None,
date_to: datetime | None = None,
) -> tuple[Iterable[AuditLog], int]:
@ -61,6 +62,9 @@ class AuditLogRepository:
if event_type is not None:
query = query.where(AuditLog.event_type == event_type)
query_count = query_count.where(AuditLog.event_type == event_type)
if event is not None:
query = query.where(AuditLog.event == event)
query_count = query_count.where(AuditLog.event == event)
if date_from is not None:
query = query.where(AuditLog.event_dt >= date_from)
query_count = query_count.where(AuditLog.event_dt >= date_from)

View File

@ -41,6 +41,7 @@ class AuditLogService:
task_id: int | None = None,
form_id: int | None = None,
event_type: str | None = None,
event: str | None = None,
date_from: datetime | None = None,
date_to: datetime | None = None,
) -> tuple[Iterable[AuditLog], int]:
@ -60,6 +61,7 @@ class AuditLogService:
event_type=event_type,
date_from=date_from,
date_to=date_to,
event=event,
)
def _can_view_audit_logs(self, user: AppUser) -> bool:

View File

@ -65,6 +65,7 @@ def test_projects_write_smoke(client, admin_tokens, auth_headers):
json={"line_id": line_id, "column": "q1.m1", "value": 100},
headers=auth_headers(admin_tokens),
)
assert upd_cell_response.status_code == 200
assert isinstance(upd_cell_response.json(), list)

View File

@ -58,6 +58,7 @@ async def test_get_all_allowed_for_admin(service_with_mock_repo, admin_user):
event_type="form",
date_from=None,
date_to=None,
event=None,
)