Skip to content

Commit b513d6b

Browse files
committed
Add seen status to broadcasts
1 parent 031b323 commit b513d6b

File tree

4 files changed

+484
-3
lines changed

4 files changed

+484
-3
lines changed

src/sentry/api/endpoints/broadcast_index.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ class BroadcastIndexEndpoint(Endpoint):
1212
permission_classes = (IsAuthenticated,)
1313

1414
def get(self, request):
15-
broadcasts = list(Broadcast.objects.filter(is_active=True))
15+
broadcasts = list(Broadcast.objects.filter(
16+
is_active=True
17+
))
1618

1719
return Response(serialize(broadcasts, request.user))
Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,32 @@
11
from __future__ import absolute_import
22

33
from sentry.api.serializers import Serializer, register
4-
from sentry.models import Broadcast
4+
from sentry.models import Broadcast, BroadcastSeen
55

66

77
@register(Broadcast)
88
class BroadcastSerializer(Serializer):
9+
def get_attrs(self, item_list, user):
10+
if not user.is_authenticated():
11+
seen = set()
12+
else:
13+
seen = set(BroadcastSeen.objects.filter(
14+
broadcast__in=item_list,
15+
user=user,
16+
).values_list('broadcast', flat=True))
17+
18+
return {
19+
item: {
20+
'seen': item.id in seen,
21+
} for item in item_list
22+
}
23+
924
def serialize(self, obj, attrs, user):
1025
return {
1126
'id': str(obj.id),
1227
'message': obj.message,
1328
'badge': obj.badge,
1429
'isActive': obj.is_active,
1530
'dateCreated': obj.date_added,
31+
'hasSeen': attrs['seen'],
1632
}

0 commit comments

Comments
 (0)