Skip to content

Commit 3206e5b

Browse files
Revert "feat(dashboards): Expose lastVisited through dashboards list API (#95468)"
This reverts commit 4d7a4a1. Co-authored-by: narsaynorath <22846452+narsaynorath@users.noreply.github.com>
1 parent 10f2725 commit 3206e5b

File tree

5 files changed

+4
-81
lines changed

5 files changed

+4
-81
lines changed

src/sentry/api/endpoints/organization_dashboards.py

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -254,14 +254,7 @@ def handle_results(results):
254254
else:
255255
dashboards.append(item)
256256

257-
serialized.extend(
258-
serialize(
259-
dashboards,
260-
request.user,
261-
serializer=list_serializer,
262-
context={"organization": organization},
263-
)
264-
)
257+
serialized.extend(serialize(dashboards, request.user, serializer=list_serializer))
265258
return serialized
266259

267260
render_pre_built_dashboard = True

src/sentry/api/endpoints/organization_dashboards_starred.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,7 @@ def data_fn(offset, limit):
6262
return self.paginate(
6363
request=request,
6464
paginator=GenericOffsetPaginator(data_fn=data_fn),
65-
on_results=lambda x: serialize(
66-
x,
67-
request.user,
68-
serializer=DashboardListSerializer(),
69-
context={"organization": organization},
70-
),
65+
on_results=lambda x: serialize(x, request.user, serializer=DashboardListSerializer()),
7166
default_per_page=25,
7267
)
7368

src/sentry/api/serializers/models/dashboard.py

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
from django.db.models import prefetch_related_objects
88

9-
from sentry import features
109
from sentry.api.serializers import Serializer, register, serialize
1110
from sentry.models.dashboard import Dashboard, DashboardFavoriteUser
1211
from sentry.models.dashboard_permissions import DashboardPermissions
@@ -190,7 +189,6 @@ class DashboardListResponse(TypedDict):
190189
createdBy: UserSerializerResponse
191190
environment: list[str]
192191
filters: DashboardFilters
193-
lastVisited: str | None
194192
widgetDisplay: list[str]
195193
widgetPreview: list[dict[str, str]]
196194
permissions: DashboardPermissionsResponse | None
@@ -212,7 +210,6 @@ class _Widget(TypedDict):
212210
projects: list[int]
213211
environment: list[str]
214212
filters: DashboardFilters
215-
last_visited: str | None
216213

217214

218215
class PageFiltersOptional(TypedDict, total=False):
@@ -265,9 +262,8 @@ def get_filters(self, obj: Dashboard) -> tuple[PageFilters, DashboardFilters]:
265262

266263
class DashboardListSerializer(Serializer, DashboardFiltersMixin):
267264
def get_attrs(self, item_list, user, **kwargs):
268-
organization = kwargs.get("context", {}).get("organization")
269265
item_dict = {i.id: i for i in item_list}
270-
prefetch_related_objects(item_list, "projects", "dashboardlastvisited_set__member")
266+
prefetch_related_objects(item_list, "projects")
271267

272268
widgets = DashboardWidget.objects.filter(dashboard_id__in=item_dict.keys()).order_by(
273269
"order"
@@ -290,7 +286,6 @@ def get_attrs(self, item_list, user, **kwargs):
290286
"projects": [],
291287
"environment": [],
292288
"filters": {},
293-
"last_visited": None,
294289
}
295290
)
296291
for widget in widgets:
@@ -329,18 +324,6 @@ def get_attrs(self, item_list, user, **kwargs):
329324
result[dashboard]["permissions"] = serialize(permission)
330325

331326
for dashboard in item_dict.values():
332-
if features.has(
333-
"organizations:dashboards-starred-reordering",
334-
organization,
335-
user,
336-
):
337-
visit = dashboard.dashboardlastvisited_set.filter(
338-
dashboard=dashboard,
339-
member__user_id=user.id,
340-
member__organization=organization,
341-
).first()
342-
result[dashboard]["last_visited"] = visit.last_visited if visit else None
343-
344327
result[dashboard]["created_by"] = serialized_users.get(str(dashboard.created_by_id))
345328
result[dashboard]["is_favorited"] = dashboard.id in favorited_dashboard_ids
346329

@@ -364,7 +347,6 @@ def serialize(self, obj, attrs, user, **kwargs) -> DashboardListResponse:
364347
"projects": attrs.get("projects", []),
365348
"environment": attrs.get("environment", []),
366349
"filters": attrs.get("filters", {}),
367-
"lastVisited": attrs.get("last_visited", None),
368350
}
369351

370352

src/sentry/apidocs/examples/dashboard_examples.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@
8181
"id": "1",
8282
"title": "Dashboard",
8383
"dateCreated": "2024-06-20T14:38:03.498574Z",
84-
"lastVisited": "2024-06-20T14:38:03.498574Z",
8584
"projects": [1],
8685
"environment": ["alpha"],
8786
"filters": {
@@ -122,7 +121,6 @@
122121
"id": "2",
123122
"title": "Dashboard",
124123
"dateCreated": "2024-06-20T14:38:03.498574Z",
125-
"lastVisited": "2024-06-20T14:38:03.498574Z",
126124
"projects": [],
127125
"environment": ["alpha"],
128126
"filters": {

tests/sentry/api/endpoints/test_organization_dashboards.py

Lines changed: 1 addition & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,12 @@
55

66
from django.urls import reverse
77

8-
from sentry.models.dashboard import (
9-
Dashboard,
10-
DashboardFavoriteUser,
11-
DashboardLastVisited,
12-
DashboardTombstone,
13-
)
8+
from sentry.models.dashboard import Dashboard, DashboardFavoriteUser, DashboardTombstone
149
from sentry.models.dashboard_widget import (
1510
DashboardWidget,
1611
DashboardWidgetDisplayTypes,
1712
DashboardWidgetTypes,
1813
)
19-
from sentry.models.organizationmember import OrganizationMember
2014
from sentry.testutils.cases import OrganizationDashboardWidgetTestCase
2115
from sentry.testutils.helpers.datetime import before_now
2216

@@ -787,45 +781,6 @@ def test_get_with_filters(self):
787781
assert response.data[0].get("environment") == ["alpha"]
788782
assert response.data[0].get("filters") == {"release": ["v1"]}
789783

790-
def test_get_with_last_visited(self):
791-
# Clean up existing dashboards setup for this test.
792-
Dashboard.objects.all().delete()
793-
794-
Dashboard.objects.create(
795-
title="Dashboard without last visited",
796-
organization=self.organization,
797-
created_by_id=self.user.id,
798-
)
799-
dashboard_2 = Dashboard.objects.create(
800-
title="Dashboard with last visited",
801-
organization=self.organization,
802-
created_by_id=self.user.id,
803-
)
804-
now = before_now(minutes=0)
805-
DashboardLastVisited.objects.create(
806-
dashboard=dashboard_2,
807-
member=OrganizationMember.objects.get(
808-
organization=self.organization, user_id=self.user.id
809-
),
810-
last_visited=now,
811-
)
812-
813-
with self.feature("organizations:dashboards-starred-reordering"):
814-
response = self.client.get(self.url, data={"sort": "recentlyViewed"})
815-
assert response.status_code == 200, response.content
816-
assert len(response.data) == 3
817-
818-
titles = [row["title"] for row in response.data]
819-
assert titles == [
820-
"General",
821-
"Dashboard with last visited",
822-
"Dashboard without last visited",
823-
]
824-
825-
# Only "Dashboard with last visited" has a last visited timestamp.
826-
visited_at = [row.get("lastVisited") for row in response.data]
827-
assert visited_at == [None, now, None]
828-
829784
def test_post(self):
830785
response = self.do_request("post", self.url, data={"title": "Dashboard from Post"})
831786
assert response.status_code == 201

0 commit comments

Comments
 (0)