Skip to content

Commit 50f852f

Browse files
authored
fix: Clean up data access events (M2-10700) (#2092)
🔗 [Jira Ticket M2-10700](https://mindlogger.atlassian.net/browse/M2-10700) Changes include: - Remove unused `curious.flow_id` - Remove unused `curious.activity_id` - Populate `curious.subject_id` when fetching answers This is a follow-up PR with a few small audit log updates for data access events.
1 parent 9031a50 commit 50f852f

3 files changed

Lines changed: 6 additions & 24 deletions

File tree

src/apps/answers/api.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,7 @@ async def applet_activity_answers_list(
262262
query_params: QueryParams = Depends(parse_query_params(AppletSubmissionsFilter)),
263263
answer_session=Depends(get_answer_session),
264264
) -> ResponseMulti[AppletActivityAnswerPublic]:
265+
target_subject_id = query_params.filters.get("target_subject_id")
265266
try:
266267
filters = query_params.filters
267268
await AppletService(session, user.id).exist_by_id(applet_id)
@@ -283,6 +284,7 @@ async def applet_activity_answers_list(
283284
user_id=user.id,
284285
event_action=EventAction.APPLET_ANSWER_VIEW,
285286
curious_applet_id=[applet_id],
287+
curious_subject_id=[target_subject_id] if target_subject_id else None,
286288
**http_audit_fields(request, e),
287289
)
288290
)
@@ -293,6 +295,7 @@ async def applet_activity_answers_list(
293295
user_id=user.id,
294296
event_action=EventAction.APPLET_ANSWER_VIEW,
295297
curious_applet_id=[applet_id],
298+
curious_subject_id=[target_subject_id] if target_subject_id else None,
296299
curious_answer_id=[a.answer_id for a in answers if a.answer_id] or None,
297300
**http_audit_fields(request),
298301
)
@@ -309,6 +312,7 @@ async def applet_flow_submissions_list(
309312
session=Depends(get_session),
310313
answer_session=Depends(get_answer_session),
311314
) -> PublicFlowSubmissionsResponse:
315+
target_subject_id = query_params.filters.get("target_subject_id")
312316
try:
313317
await AppletService(session, user.id).exist_by_id(applet_id)
314318
await CheckAccessService(session, user.id).check_answer_review_access(applet_id)
@@ -328,6 +332,7 @@ async def applet_flow_submissions_list(
328332
user_id=user.id,
329333
event_action=EventAction.APPLET_ANSWER_VIEW,
330334
curious_applet_id=[applet_id],
335+
curious_subject_id=[target_subject_id] if target_subject_id else None,
331336
**http_audit_fields(request, e),
332337
)
333338
)
@@ -338,6 +343,7 @@ async def applet_flow_submissions_list(
338343
user_id=user.id,
339344
event_action=EventAction.APPLET_ANSWER_VIEW,
340345
curious_applet_id=[applet_id],
346+
curious_subject_id=[target_subject_id] if target_subject_id else None,
341347
curious_submit_id=[s.submit_id for s in submissions.submissions] or None,
342348
curious_answer_id=[a.id for s in submissions.submissions for a in s.answers] or None,
343349
**http_audit_fields(request),
@@ -371,7 +377,6 @@ async def summary_activity_latest_report_retrieve(
371377
user_id=user.id,
372378
event_action=EventAction.APPLET_ANSWER_REPORT_DOWNLOAD,
373379
curious_applet_id=[applet_id],
374-
curious_activity_id=[activity_id],
375380
curious_subject_id=[subject_id],
376381
**http_audit_fields(request, e),
377382
)
@@ -383,7 +388,6 @@ async def summary_activity_latest_report_retrieve(
383388
user_id=user.id,
384389
event_action=EventAction.APPLET_ANSWER_REPORT_DOWNLOAD,
385390
curious_applet_id=[applet_id],
386-
curious_activity_id=[activity_id],
387391
curious_subject_id=[subject_id],
388392
**http_audit_fields(request),
389393
)
@@ -424,7 +428,6 @@ async def summary_flow_latest_report_retrieve(
424428
user_id=user.id,
425429
event_action=EventAction.APPLET_ANSWER_REPORT_DOWNLOAD,
426430
curious_applet_id=[applet_id],
427-
curious_flow_id=[flow_id],
428431
curious_subject_id=[subject_id],
429432
**http_audit_fields(request, e),
430433
)
@@ -436,7 +439,6 @@ async def summary_flow_latest_report_retrieve(
436439
user_id=user.id,
437440
event_action=EventAction.APPLET_ANSWER_REPORT_DOWNLOAD,
438441
curious_applet_id=[applet_id],
439-
curious_flow_id=[flow_id],
440442
curious_subject_id=[subject_id],
441443
**http_audit_fields(request),
442444
)
@@ -1341,8 +1343,6 @@ async def applet_ehr_answers_export(
13411343
event_action=EventAction.APPLET_ANSWER_EHR_DOWNLOAD,
13421344
curious_applet_id=[applet_id],
13431345
curious_subject_id=query_params.filters.get("target_subject_ids"),
1344-
curious_activity_id=query_params.filters.get("activity_ids"),
1345-
curious_flow_id=query_params.filters.get("flow_ids"),
13461346
**http_audit_fields(request, e),
13471347
)
13481348
)
@@ -1354,7 +1354,6 @@ async def applet_ehr_answers_export(
13541354
event_action=EventAction.APPLET_ANSWER_EHR_DOWNLOAD,
13551355
curious_applet_id=[applet_id],
13561356
curious_subject_id=list({a.target_subject_id for a in ehr_answers}) or None,
1357-
curious_activity_id=list({a.activity_id for a in ehr_answers}) or None,
13581357
curious_submit_id=list({a.submit_id for a in ehr_answers}) or None,
13591358
**http_audit_fields(request),
13601359
)
@@ -1400,7 +1399,6 @@ async def applet_ehr_answers_export(
14001399
event_action=EventAction.APPLET_ANSWER_EHR_DOWNLOAD,
14011400
curious_applet_id=[applet_id],
14021401
curious_subject_id=list({a.target_subject_id for a in ehr_answers}) or None,
1403-
curious_activity_id=list({a.activity_id for a in ehr_answers}) or None,
14041402
curious_submit_id=list({a.submit_id for a in ehr_answers}) or None,
14051403
event_outcome=EventOutcome.FAILURE,
14061404
error_type=type(e).__name__,

src/apps/answers/tests/test_audit.py

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -851,7 +851,6 @@ async def test_ehr_download_success_logs_subject_activity_submit(
851851
assert event.curious_applet_id == [applet.id]
852852
assert event.curious_subject_id is not None
853853
assert set(event.curious_subject_id) == {subject_id_a, subject_id_b}
854-
assert event.curious_activity_id == [activity_id_a]
855854
assert event.curious_submit_id is not None
856855
assert set(event.curious_submit_id) == {submit_id_a, submit_id_b}
857856

@@ -879,7 +878,6 @@ async def test_ehr_download_success_no_data_emits_event(
879878
assert event.event_outcome == EventOutcome.SUCCESS
880879
assert event.curious_applet_id == [applet.id]
881880
assert event.curious_subject_id is None
882-
assert event.curious_activity_id is None
883881
assert event.curious_submit_id is None
884882

885883
async def test_ehr_download_failure_404_applet(
@@ -953,8 +951,6 @@ async def test_ehr_download_failure_promotes_query_filters(
953951
assert event.event_outcome == EventOutcome.FAILURE
954952
assert event.curious_applet_id == [applet.id]
955953
assert event.curious_subject_id == [target_subject_id]
956-
assert event.curious_activity_id == [activity_id]
957-
assert event.curious_flow_id == [flow_id]
958954

959955
async def test_ehr_download_zip_failure_emits_error_event(
960956
self,
@@ -999,7 +995,6 @@ async def test_ehr_download_zip_failure_emits_error_event(
999995
assert failure_event.error_type == "RuntimeError"
1000996
assert failure_event.curious_applet_id == [applet.id]
1001997
assert failure_event.curious_subject_id == [subject_id]
1002-
assert failure_event.curious_activity_id == [activity_id]
1003998
assert failure_event.curious_submit_id == [submit_id]
1004999

10051000
# --- summary_activity_latest_report_retrieve / summary_flow_latest_report_retrieve ---
@@ -1033,9 +1028,7 @@ async def test_activity_report_download_success(
10331028
assert event.event_action == EventAction.APPLET_ANSWER_REPORT_DOWNLOAD
10341029
assert event.event_outcome == EventOutcome.SUCCESS
10351030
assert event.curious_applet_id == [applet.id]
1036-
assert event.curious_activity_id == [applet.activities[0].id]
10371031
assert event.curious_subject_id == [tom_applet_subject.id]
1038-
assert event.curious_flow_id is None
10391032

10401033
async def test_activity_report_download_failure_subject_not_found(
10411034
self,
@@ -1063,7 +1056,6 @@ async def test_activity_report_download_failure_subject_not_found(
10631056
assert event.event_action == EventAction.APPLET_ANSWER_REPORT_DOWNLOAD
10641057
assert event.event_outcome == EventOutcome.FAILURE
10651058
assert event.curious_applet_id == [applet.id]
1066-
assert event.curious_activity_id == [applet.activities[0].id]
10671059
assert event.curious_subject_id == [missing_subject_id]
10681060

10691061
async def test_activity_report_download_failure_403(
@@ -1093,7 +1085,6 @@ async def test_activity_report_download_failure_403(
10931085
assert event.event_action == EventAction.APPLET_ANSWER_REPORT_DOWNLOAD
10941086
assert event.event_outcome == EventOutcome.FAILURE
10951087
assert event.curious_applet_id == [applet.id]
1096-
assert event.curious_activity_id == [applet.activities[0].id]
10971088

10981089
async def test_flow_report_download_success(
10991090
self,
@@ -1121,9 +1112,7 @@ async def test_flow_report_download_success(
11211112
assert event.event_action == EventAction.APPLET_ANSWER_REPORT_DOWNLOAD
11221113
assert event.event_outcome == EventOutcome.SUCCESS
11231114
assert event.curious_applet_id == [applet_with_flow.id]
1124-
assert event.curious_flow_id == [applet_with_flow.activity_flows[0].id]
11251115
assert event.curious_subject_id == [tom_applet_with_flow_subject.id]
1126-
assert event.curious_activity_id is None
11271116

11281117
async def test_flow_report_download_failure_403(
11291118
self,
@@ -1152,4 +1141,3 @@ async def test_flow_report_download_failure_403(
11521141
assert event.event_action == EventAction.APPLET_ANSWER_REPORT_DOWNLOAD
11531142
assert event.event_outcome == EventOutcome.FAILURE
11541143
assert event.curious_applet_id == [applet_with_flow.id]
1155-
assert event.curious_flow_id == [applet_with_flow.activity_flows[0].id]

src/apps/audit/domain.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,6 @@ class AuditEvent(PublicModel):
5555
Applicable to Curious database records:
5656
- curious_applet_id
5757
- curious_subject_id
58-
- curious_flow_id
59-
- curious_activity_id
6058
- curious_submit_id
6159
- curious_answer_id
6260
@@ -108,8 +106,6 @@ class AuditEvent(PublicModel):
108106
# For Curious database records
109107
curious_applet_id: Annotated[list[UUID] | None, Field(alias="curious.applet_id")] = None
110108
curious_subject_id: Annotated[list[UUID] | None, Field(alias="curious.subject_id")] = None
111-
curious_flow_id: Annotated[list[UUID] | None, Field(alias="curious.flow_id")] = None
112-
curious_activity_id: Annotated[list[UUID] | None, Field(alias="curious.activity_id")] = None
113109
curious_submit_id: Annotated[list[UUID] | None, Field(alias="curious.submit_id")] = None
114110
curious_answer_id: Annotated[list[UUID] | None, Field(alias="curious.answer_id")] = None
115111

0 commit comments

Comments
 (0)