From cf5c8291d60f75e4af9e6f6ed4b5904bf0e2fddc Mon Sep 17 00:00:00 2001 From: Michelle Fu Date: Fri, 21 Nov 2025 15:34:40 -0800 Subject: [PATCH 1/2] remove lastChecked from open period serializer --- .../endpoints/serializers/group_open_period_serializer.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/sentry/workflow_engine/endpoints/serializers/group_open_period_serializer.py b/src/sentry/workflow_engine/endpoints/serializers/group_open_period_serializer.py index 519ddb3dee60b6..ef012aefbf7769 100644 --- a/src/sentry/workflow_engine/endpoints/serializers/group_open_period_serializer.py +++ b/src/sentry/workflow_engine/endpoints/serializers/group_open_period_serializer.py @@ -5,7 +5,7 @@ from sentry.api.serializers import Serializer, register, serialize from sentry.incidents.utils.process_update_helpers import calculate_event_date_from_update_date -from sentry.models.groupopenperiod import GroupOpenPeriod, get_last_checked_for_open_period +from sentry.models.groupopenperiod import GroupOpenPeriod from sentry.models.groupopenperiodactivity import GroupOpenPeriodActivity, OpenPeriodActivityType from sentry.types.group import PriorityLevel @@ -22,7 +22,6 @@ class GroupOpenPeriodResponse(TypedDict): start: datetime end: datetime | None isOpen: bool - lastChecked: datetime activities: list[GroupOpenPeriodActivityResponse] | None @@ -72,6 +71,5 @@ def serialize( else None ), isOpen=obj.date_ended is None, - lastChecked=get_last_checked_for_open_period(obj.group), activities=attrs.get("activities"), ) From c66c842e6cd74ac4010254a4070be10833d97a66 Mon Sep 17 00:00:00 2001 From: Michelle Fu Date: Fri, 21 Nov 2025 15:36:35 -0800 Subject: [PATCH 2/2] update tests --- .../test_organization_open_periods.py | 40 ------------------- 1 file changed, 40 deletions(-) diff --git a/tests/sentry/workflow_engine/endpoints/test_organization_open_periods.py b/tests/sentry/workflow_engine/endpoints/test_organization_open_periods.py index 482000d6f12dfb..8597d00c2b6201 100644 --- a/tests/sentry/workflow_engine/endpoints/test_organization_open_periods.py +++ b/tests/sentry/workflow_engine/endpoints/test_organization_open_periods.py @@ -1,5 +1,3 @@ -from datetime import timedelta - from django.utils import timezone from sentry.incidents.grouptype import MetricIssue @@ -81,32 +79,6 @@ def test_open_periods_group_id(self) -> None: def test_validation_error_when_missing_params(self) -> None: self.get_error_response(*self.get_url_args(), status_code=400) - def test_open_periods_new_group_with_last_checked(self) -> None: - alert_rule = self.create_alert_rule( - organization=self.organization, - projects=[self.project], - name="Test Alert Rule", - ) - last_checked = timezone.now() - timedelta(seconds=alert_rule.snuba_query.time_window) - - response = self.get_success_response( - *self.get_url_args(), qs_params={"groupId": self.group.id} - ) - assert response.status_code == 200, response.content - assert len(response.data) == 1 - resp = response.data[0] - assert resp["id"] == str(self.group_open_period.id) - assert resp["start"] == self.group.first_seen - assert resp["end"] is None - assert resp["isOpen"] is True - assert resp["lastChecked"] >= last_checked - assert resp["activities"][0] == { - "id": str(self.opened_gopa.id), - "type": OpenPeriodActivityType.OPENED.to_str(), - "value": PriorityLevel(self.group.priority).to_str(), - "dateCreated": self.opened_gopa.date_added, - } - def test_open_periods_resolved_group(self) -> None: self.group.status = GroupStatus.RESOLVED self.group.save() @@ -138,9 +110,6 @@ def test_open_periods_resolved_group(self) -> None: assert resp["start"] == self.group.first_seen assert resp["end"] == resolved_time assert resp["isOpen"] is False - assert resp["lastChecked"].replace(second=0, microsecond=0) == activity.datetime.replace( - second=0, microsecond=0 - ) assert len(resp["activities"]) == 2 assert resp["activities"][0] == { "id": str(self.opened_gopa.id), @@ -223,9 +192,6 @@ def test_open_periods_unresolved_group(self) -> None: assert resp["start"] == unresolved_time assert resp["end"] == second_resolved_time assert resp["isOpen"] is False - assert resp["lastChecked"].replace(second=0, microsecond=0) == second_resolved_time.replace( - second=0, microsecond=0 - ) assert len(resp["activities"]) == 2 assert resp["activities"][0] == { "id": str(opened_gopa2.id), @@ -244,9 +210,6 @@ def test_open_periods_unresolved_group(self) -> None: assert resp2["start"] == self.group.first_seen assert resp2["end"] == resolved_time assert resp2["isOpen"] is False - assert resp2["lastChecked"].replace(second=0, microsecond=0) == resolved_time.replace( - second=0, microsecond=0 - ) assert len(resp2["activities"]) == 2 assert resp2["activities"][0] == { "id": str(self.opened_gopa.id), @@ -317,6 +280,3 @@ def test_open_periods_limit(self) -> None: assert resp["start"] == unresolved_time assert resp["end"] == second_resolved_time assert resp["isOpen"] is False - assert resp["lastChecked"].replace(second=0, microsecond=0) == second_resolved_time.replace( - second=0, microsecond=0 - )