|
@@ -1,9 +1,9 @@
|
|
|
from __future__ import absolute_import, division
|
|
|
|
|
|
from django.http import Http404, HttpResponse
|
|
|
-from django.shortcuts import get_object_or_404
|
|
|
|
|
|
-from sentry.models import Event, Group, GroupMeta, get_group_with_redirect
|
|
|
+from sentry import options
|
|
|
+from sentry.models import Event, SnubaEvent, Group, GroupMeta, get_group_with_redirect
|
|
|
from sentry.utils import json
|
|
|
from sentry.web.frontend.base import OrganizationView
|
|
|
|
|
@@ -12,6 +12,8 @@ class GroupEventJsonView(OrganizationView):
|
|
|
required_scope = 'event:read'
|
|
|
|
|
|
def get(self, request, organization, group_id, event_id_or_latest):
|
|
|
+ use_snuba = options.get('snuba.events-queries.enabled')
|
|
|
+
|
|
|
try:
|
|
|
# TODO(tkaemming): This should *actually* redirect, see similar
|
|
|
# comment in ``GroupEndpoint.convert_args``.
|
|
@@ -26,9 +28,14 @@ class GroupEventJsonView(OrganizationView):
|
|
|
# circumstances (such as a post_save signal failing)
|
|
|
event = group.get_latest_event() or Event(group=group)
|
|
|
else:
|
|
|
- event = get_object_or_404(group.event_set, pk=event_id_or_latest)
|
|
|
+ event_cls = SnubaEvent if use_snuba else Event
|
|
|
+ event = event_cls.objects.from_event_id(event_id_or_latest, group.project.id)
|
|
|
+
|
|
|
+ if event is None or (event.group_id != int(group_id)):
|
|
|
+ raise Http404
|
|
|
|
|
|
Event.objects.bind_nodes([event], 'data')
|
|
|
+
|
|
|
GroupMeta.objects.populate_cache([group])
|
|
|
|
|
|
return HttpResponse(json.dumps(event.as_dict()), content_type='application/json')
|