def poll(request, project): from sentry.templatetags.sentry_plugins import handle_before_events offset = 0 limit = settings.MESSAGES_PER_PAGE view_id = request.GET.get('view_id') if view_id: try: view = View.objects.get_from_cache(pk=view_id) except View.DoesNotExist: return HttpResponseBadRequest() else: view = None response = _get_group_list( request=request, project=project, view=view, ) event_list = response['event_list'] event_list = list(event_list[offset:limit]) handle_before_events(request, event_list) data = transform_groups(request, event_list) response = HttpResponse(json.dumps(data)) response['Content-Type'] = 'application/json' return response
def attach_metadata(self, objects, request=None): from sentry.templatetags.sentry_plugins import handle_before_events attach_foreignkey(objects, Group.project, ['team']) if request and objects: handle_before_events(request, objects) if request and request.user.is_authenticated() and objects: bookmarks = set(GroupBookmark.objects.filter( user=request.user, group__in=objects, ).values_list('group_id', flat=True)) else: bookmarks = set() if objects: historical_data = Group.objects.get_chart_data_for_group( instances=objects, max_days=1, key='group', ) else: historical_data = {} for g in objects: g.is_bookmarked = g.pk in bookmarks g.historical_data = [x[1] for x in historical_data.get(g.id, [])]
def poll(request, project): from sentry.templatetags.sentry_plugins import handle_before_events offset = 0 limit = settings.MESSAGES_PER_PAGE view_id = request.GET.get("view_id") if view_id: try: view = View.objects.get_from_cache(pk=view_id) except View.DoesNotExist: return HttpResponseBadRequest() else: view = None response = _get_group_list(request=request, project=project, view=view) event_list = response["event_list"] event_list = list(event_list[offset:limit]) handle_before_events(request, event_list) data = transform_groups(request, event_list) response = HttpResponse(json.dumps(data)) response["Content-Type"] = "application/json" return response
def attach_metadata(self, objects, request=None): from sentry.templatetags.sentry_plugins import handle_before_events attach_foreignkey(objects, Group.project, ['team']) if request and objects: handle_before_events(request, objects) if request and request.user.is_authenticated() and objects: bookmarks = set(GroupBookmark.objects.filter( user=request.user, group__in=objects, ).values_list('group_id', flat=True)) else: bookmarks = set() if objects: historical_data = Group.objects.get_chart_data_for_group( instances=objects, max_days=1, key='group', ) else: historical_data = {} for g in objects: g.is_bookmarked = g.pk in bookmarks g.historical_data = [x[1] for x in historical_data.get(g.id, [])]
def attach_metadata(self, objects, request=None): from sentry.templatetags.sentry_plugins import handle_before_events attach_foreignkey(objects, Group.project, ['team']) GroupMeta.objects.populate_cache(objects) if request and objects: handle_before_events(request, objects) if request and request.user.is_authenticated() and objects: bookmarks = set( GroupBookmark.objects.filter( user=request.user, group__in=objects, ).values_list('group_id', flat=True)) seen_groups = dict( GroupSeen.objects.filter( user=request.user, group__in=objects, ).values_list('group_id', 'last_seen')) else: bookmarks = set() seen_groups = {} if objects: end = timezone.now() start = end - timedelta(days=1) historical_data = tsdb.get_range( model=tsdb.models.group, keys=[g.id for g in objects], start=start, end=end, ) else: historical_data = {} user_tagkeys = GroupTagKey.objects.filter( group_id__in=[o.id for o in objects], key='sentry:user', ) user_counts = {} for user_tagkey in user_tagkeys: user_counts[user_tagkey.group_id] = user_tagkey.values_seen for g in objects: g.is_bookmarked = g.pk in bookmarks g.historical_data = [x[1] for x in historical_data.get(g.id, [])] active_date = g.active_at or g.first_seen g.has_seen = seen_groups.get(g.id, active_date) > active_date g.annotations = [{ 'label': 'users', 'count': user_counts.get(g.id, 0), }]
def attach_metadata(self, objects, request=None): from sentry.templatetags.sentry_plugins import handle_before_events attach_foreignkey(objects, Group.project, ["team"]) if request and objects: handle_before_events(request, objects) if request and request.user.is_authenticated() and objects: bookmarks = set( GroupBookmark.objects.filter(user=request.user, group__in=objects).values_list("group_id", flat=True) ) seen_groups = dict( GroupSeen.objects.filter(user=request.user, group__in=objects).values_list("group_id", "last_seen") ) else: bookmarks = set() seen_groups = {} if objects: historical_data = Group.objects.get_chart_data_for_group(instances=objects, max_days=1, key="group") else: historical_data = {} project_list = set(o.project for o in objects) tag_keys = set(["sentry:user"]) project_annotations = {} for project in project_list: enabled_annotations = ProjectOption.objects.get_value(project, "annotations", ["sentry:user"]) project_annotations[project] = enabled_annotations tag_keys.update(enabled_annotations) annotation_counts = defaultdict(dict) annotation_results = GroupTagKey.objects.filter(group__in=objects, key__in=tag_keys).values_list( "key", "group", "values_seen" ) for key, group_id, values_seen in annotation_results: annotation_counts[key][group_id] = values_seen for g in objects: g.is_bookmarked = g.pk in bookmarks g.historical_data = [x[1] for x in historical_data.get(g.id, [])] active_date = g.active_at or g.last_seen g.has_seen = seen_groups.get(g.id, active_date) > active_date g.annotations = [] for key in sorted(tag_keys): if key in project_annotations[project]: label = TAG_LABELS.get(key, key.replace("_", " ")).lower() + "s" try: value = annotation_counts[key].get(g.id, 0) except KeyError: value = 0 g.annotations.append({"label": label, "count": value})
def poll(request, project): from sentry.templatetags.sentry_helpers import as_bookmarks from sentry.templatetags.sentry_plugins import handle_before_events offset = 0 limit = settings.MESSAGES_PER_PAGE view_id = request.GET.get('view_id') if view_id: try: view = View.objects.get_from_cache(pk=view_id) except View.DoesNotExist: return HttpResponseBadRequest() else: view = None filters, event_list = _get_group_list( request=request, project=project, view=view, ) event_list = list(event_list[offset:limit]) handle_before_events(request, event_list) data = [{ 'id': m.pk, 'html': render_to_string('sentry/partial/_group.html', { 'group': m, 'request': request, 'is_bookmarked': b, }).strip(), 'title': m.message_top(), 'message': m.error(), 'level': m.get_level_display(), 'logger': m.logger, 'count': m.times_seen, 'score': getattr(m, 'sort_value', None), } for m, b in as_bookmarks(event_list, request.user)] response = HttpResponse(json.dumps(data)) response['Content-Type'] = 'application/json' return response
def poll(request, project): from sentry.templatetags.sentry_helpers import as_bookmarks from sentry.templatetags.sentry_plugins import handle_before_events offset = 0 limit = settings.MESSAGES_PER_PAGE view_id = request.GET.get('view_id') if view_id: try: view = View.objects.get_from_cache(pk=view_id) except View.DoesNotExist: return HttpResponseBadRequest() else: view = None response = _get_group_list( request=request, project=project, view=view, ) event_list = response['event_list'] event_list = list(event_list[offset:limit]) handle_before_events(request, event_list) data = [ { 'id': m.pk, 'html': render_to_string('sentry/partial/_group.html', { 'group': m, 'request': request, 'is_bookmarked': b, }).strip(), 'title': m.message_top(), 'message': m.error(), 'level': m.get_level_display(), 'logger': m.logger, 'count': m.times_seen, 'score': getattr(m, 'sort_value', None), } for m, b in as_bookmarks(event_list, request.user)] response = HttpResponse(json.dumps(data)) response['Content-Type'] = 'application/json' return response
def attach_metadata(self, objects, request=None): from sentry.templatetags.sentry_plugins import handle_before_events attach_foreignkey(objects, Group.project, ['team']) if request and objects: handle_before_events(request, objects) if request and request.user.is_authenticated() and objects: bookmarks = set( GroupBookmark.objects.filter( user=request.user, group__in=objects, ).values_list('group_id', flat=True)) seen_groups = dict( GroupSeen.objects.filter( user=request.user, group__in=objects, ).values_list('group_id', 'last_seen')) else: bookmarks = set() seen_groups = {} if objects: historical_data = Group.objects.get_chart_data_for_group( instances=objects, max_days=1, key='group', ) else: historical_data = {} user_counts = dict( GroupTagKey.objects.filter( group__in=objects, key='sentry:user', ).values_list('group', 'values_seen')) for g in objects: g.is_bookmarked = g.pk in bookmarks g.historical_data = [x[1] for x in historical_data.get(g.id, [])] if user_counts: g.users_seen = user_counts.get(g.id, 0) active_date = g.active_at or g.last_seen g.has_seen = seen_groups.get(g.id, active_date) > active_date
def attach_metadata(self, objects, request=None): from sentry.templatetags.sentry_plugins import handle_before_events attach_foreignkey(objects, Group.project, ['team']) if request and objects: handle_before_events(request, objects) if request and request.user.is_authenticated() and objects: bookmarks = set(GroupBookmark.objects.filter( user=request.user, group__in=objects, ).values_list('group_id', flat=True)) seen_groups = dict(GroupSeen.objects.filter( user=request.user, group__in=objects, ).values_list('group_id', 'last_seen')) else: bookmarks = set() seen_groups = {} if objects: historical_data = Group.objects.get_chart_data_for_group( instances=objects, max_days=1, key='group', ) else: historical_data = {} user_counts = dict(GroupTagKey.objects.filter( group__in=objects, key='sentry:user', ).values_list('group', 'values_seen')) for g in objects: g.is_bookmarked = g.pk in bookmarks g.historical_data = [x[1] for x in historical_data.get(g.id, [])] if user_counts: g.users_seen = user_counts.get(g.id, 0) active_date = g.active_at or g.last_seen g.has_seen = seen_groups.get(g.id, active_date) > active_date
def poll(request, project): from sentry.templatetags.sentry_helpers import as_bookmarks from sentry.templatetags.sentry_plugins import handle_before_events offset = 0 limit = settings.MESSAGES_PER_PAGE view_id = request.GET.get("view_id") if view_id: try: view = View.objects.get_from_cache(pk=view_id) except View.DoesNotExist: return HttpResponseBadRequest() else: view = None response = _get_group_list(request=request, project=project, view=view) event_list = response["event_list"] event_list = list(event_list[offset:limit]) handle_before_events(request, event_list) data = [ { "id": m.pk, "html": render_to_string( "sentry/partial/_group.html", {"group": m, "request": request, "is_bookmarked": b} ).strip(), "title": m.message_top(), "message": m.error(), "level": m.get_level_display(), "logger": m.logger, "count": m.times_seen, "score": getattr(m, "sort_value", None), } for m, b in as_bookmarks(event_list, request.user) ] response = HttpResponse(json.dumps(data)) response["Content-Type"] = "application/json" return response
def attach_metadata(self, objects, request=None): from sentry.templatetags.sentry_plugins import handle_before_events attach_foreignkey(objects, Group.project, ['team']) GroupMeta.objects.populate_cache(objects) if request and objects: handle_before_events(request, objects) if request and request.user.is_authenticated() and objects: bookmarks = set(GroupBookmark.objects.filter( user=request.user, group__in=objects, ).values_list('group_id', flat=True)) seen_groups = dict(GroupSeen.objects.filter( user=request.user, group__in=objects, ).values_list('group_id', 'last_seen')) else: bookmarks = set() seen_groups = {} if objects: end = timezone.now() start = end - timedelta(days=1) historical_data = tsdb.get_range( model=tsdb.models.group, keys=[g.id for g in objects], start=start, end=end, ) else: historical_data = {} project_list = set(o.project for o in objects) tag_keys = set(['sentry:user']) project_annotations = {} for project in project_list: enabled_annotations = ProjectOption.objects.get_value( project, 'annotations', ['sentry:user']) project_annotations[project] = enabled_annotations tag_keys.update(enabled_annotations) annotation_counts = defaultdict(dict) annotation_results = GroupTagKey.objects.filter( group__in=objects, key__in=tag_keys, ).values_list('key', 'group', 'values_seen') for key, group_id, values_seen in annotation_results: annotation_counts[key][group_id] = values_seen for g in objects: g.is_bookmarked = g.pk in bookmarks g.historical_data = [x[1] for x in historical_data.get(g.id, [])] active_date = g.active_at or g.last_seen g.has_seen = seen_groups.get(g.id, active_date) > active_date g.annotations = [] for key in sorted(tag_keys): if key in project_annotations[project]: label = TAG_LABELS.get(key, key.replace('_', ' ')).lower() + 's' try: value = annotation_counts[key].get(g.id, 0) except KeyError: value = 0 g.annotations.append({ 'label': label, 'count': value, })