|
3 | 3 | import datetime
|
4 | 4 |
|
5 | 5 | from django.db import IntegrityError, router, transaction
|
| 6 | +from django.db.models import QuerySet |
6 | 7 |
|
7 | 8 | from sentry.db.postgres.transactions import enforce_constraints
|
8 | 9 | from sentry.models.auditlogentry import AuditLogEntry
|
@@ -51,13 +52,21 @@ def record_user_ip(self, *, event: UserIpEvent) -> None:
|
51 | 52 | ).update(last_active=event.last_seen)
|
52 | 53 |
|
53 | 54 | def find_last_log(
|
54 |
| - self, *, organization_id: int | None, target_object_id: int | None, event: int | None |
| 55 | + self, |
| 56 | + *, |
| 57 | + organization_id: int | None, |
| 58 | + target_object_id: int | None, |
| 59 | + event: int | None, |
| 60 | + data: dict[str, str] | None = None, |
55 | 61 | ) -> AuditLogEvent | None:
|
56 |
| - last_entry: AuditLogEntry | None = AuditLogEntry.objects.filter( |
| 62 | + last_entry_q: QuerySet[AuditLogEntry] = AuditLogEntry.objects.filter( |
57 | 63 | organization_id=organization_id,
|
58 | 64 | target_object=target_object_id,
|
59 | 65 | event=event,
|
60 |
| - ).last() |
| 66 | + ) |
| 67 | + if data: |
| 68 | + last_entry_q = last_entry_q.filter(data=data) |
| 69 | + last_entry: AuditLogEntry | None = last_entry_q.last() |
61 | 70 |
|
62 | 71 | if last_entry is None:
|
63 | 72 | return None
|
@@ -87,6 +96,11 @@ def record_user_ip(self, *, event: UserIpEvent) -> None:
|
87 | 96 | outbox.save()
|
88 | 97 |
|
89 | 98 | def find_last_log(
|
90 |
| - self, *, organization_id: int | None, target_object_id: int | None, event: int | None |
| 99 | + self, |
| 100 | + *, |
| 101 | + organization_id: int | None, |
| 102 | + target_object_id: int | None, |
| 103 | + event: int | None, |
| 104 | + data: dict[str, str] | None = None, |
91 | 105 | ) -> AuditLogEvent | None:
|
92 | 106 | return None
|
0 commit comments