def get(self, request, group, key): """ List a tag's details Returns details about the given tag key. {method} {path} """ try: tag_key = TagKey.objects.get( project=group.project_id, key=key, status=TagKeyStatus.VISIBLE, ) except TagKey.DoesNotExist: raise ResourceDoesNotExist total_values = GroupTagValue.get_value_count(group.id, key) top_values = GroupTagValue.get_top_values(group.id, key, limit=3) data = { 'id': str(tag_key.id), 'key': tag_key.key, 'name': tag_key.get_label(), 'uniqueValues': tag_key.values_seen, 'totalValues': total_values, 'topValues': serialize(top_values, request.user), } return Response(data)
def get(self, request, group): tag_keys = TagKey.objects.filter( project=group.project, status=TagKeyStatus.VISIBLE, key__in=GroupTagKey.objects.filter(group=group, ).values('key'), ) # O(N) db access data = [] for tag_key in tag_keys: total_values = GroupTagValue.get_value_count(group.id, tag_key.key) top_values = GroupTagValue.get_top_values(group.id, tag_key.key, limit=10) if tag_key.key.startswith('sentry:'): key = tag_key.key.split('sentry:', 1)[-1] else: key = tag_key.key data.append({ 'id': str(tag_key.id), 'key': key, 'name': tag_key.get_label(), 'uniqueValues': tag_key.values_seen, 'totalValues': total_values, 'topValues': serialize(top_values, request.user), }) return Response(data)
def get(self, request, group): tag_keys = TagKey.objects.filter( project=group.project, status=TagKeyStatus.VISIBLE, key__in=GroupTagKey.objects.filter(group=group, ).values('key'), ) # O(N) db access data = [] all_top_values = [] for tag_key in tag_keys: total_values = GroupTagValue.get_value_count(group.id, tag_key.key) top_values = GroupTagValue.get_top_values(group.id, tag_key.key, limit=10) all_top_values.extend(top_values) data.append({ 'id': six.text_type(tag_key.id), 'key': TagKey.get_standardized_key(tag_key.key), 'name': tag_key.get_label(), 'uniqueValues': tag_key.values_seen, 'totalValues': total_values, }) # Serialize all of the values at once to avoid O(n) serialize/db queries top_values_by_key = defaultdict(list) for value in serialize(all_top_values, request.user): top_values_by_key[value['key']].append(value) for d in data: d['topValues'] = top_values_by_key[d['key']] return Response(data)
def get(self, request, group): tag_keys = TagKey.objects.filter( project=group.project, status=TagKeyStatus.VISIBLE, key__in=GroupTagKey.objects.filter(group=group).values("key"), ) # O(N) db access data = [] for tag_key in tag_keys: total_values = GroupTagValue.get_value_count(group.id, tag_key.key) top_values = GroupTagValue.get_top_values(group.id, tag_key.key, limit=10) if tag_key.key.startswith("sentry:"): key = tag_key.key.split("sentry:", 1)[-1] else: key = tag_key.key data.append( { "id": str(tag_key.id), "key": key, "name": tag_key.get_label(), "uniqueValues": tag_key.values_seen, "totalValues": total_values, "topValues": serialize(top_values, request.user), } ) return Response(data)
def get(self, request, group): tag_keys = TagKey.objects.filter( project=group.project, status=TagKeyStatus.VISIBLE, key__in=GroupTagKey.objects.filter( group=group, ).values('key'), ) # O(N) db access data = [] all_top_values = [] for tag_key in tag_keys: total_values = GroupTagValue.get_value_count(group.id, tag_key.key) top_values = GroupTagValue.get_top_values(group.id, tag_key.key, limit=10) all_top_values.extend(top_values) data.append({ 'id': six.text_type(tag_key.id), 'key': TagKey.get_standardized_key(tag_key.key), 'name': tag_key.get_label(), 'uniqueValues': tag_key.values_seen, 'totalValues': total_values, }) # Serialize all of the values at once to avoid O(n) serialize/db queries top_values_by_key = defaultdict(list) for value in serialize(all_top_values, request.user): top_values_by_key[value['key']].append(value) for d in data: d['topValues'] = top_values_by_key[d['key']] return Response(data)
def get(self, request, group, key): """ Retrieve Tag Details ```````````````````` Returns details for given tag key related to an issue. :pparam string issue_id: the ID of the issue to retrieve. :pparam string key: the tag key to look the values up for. :auth: required """ # XXX(dcramer): kill sentry prefix for internal reserved tags if TagKey.is_reserved_key(key): lookup_key = 'sentry:{0}'.format(key) else: lookup_key = key try: tag_key = TagKey.objects.get( project=group.project_id, key=lookup_key, status=TagKeyStatus.VISIBLE, ) except TagKey.DoesNotExist: raise ResourceDoesNotExist try: group_tag_key = GroupTagKey.objects.get( group=group, key=lookup_key, ) except GroupTagKey.DoesNotExist: raise ResourceDoesNotExist total_values = GroupTagValue.get_value_count(group.id, lookup_key) top_values = GroupTagValue.get_top_values(group.id, lookup_key, limit=3) data = { 'id': str(tag_key.id), 'key': key, 'name': tag_key.get_label(), 'uniqueValues': group_tag_key.values_seen, 'totalValues': total_values, 'topValues': serialize(top_values, request.user), } return Response(data)
def get(self, request, group, key): """ Retrieve Tag Details ```````````````````` Returns details for given tag key related to an issue. :pparam string issue_id: the ID of the issue to retrieve. :pparam string key: the tag key to look the values up for. :auth: required """ # XXX(dcramer): kill sentry prefix for internal reserved tags if TagKey.is_reserved_key(key): lookup_key = 'sentry:{0}'.format(key) else: lookup_key = key try: tag_key = TagKey.objects.get( project=group.project_id, key=lookup_key, status=TagKeyStatus.VISIBLE, ) except TagKey.DoesNotExist: raise ResourceDoesNotExist try: group_tag_key = GroupTagKey.objects.get( group=group, key=lookup_key, ) except GroupTagKey.DoesNotExist: raise ResourceDoesNotExist total_values = GroupTagValue.get_value_count(group.id, lookup_key) top_values = GroupTagValue.get_top_values(group.id, lookup_key, limit=9) data = { 'id': str(tag_key.id), 'key': key, 'name': tag_key.get_label(), 'uniqueValues': group_tag_key.values_seen, 'totalValues': total_values, 'topValues': serialize(top_values, request.user), } return Response(data)
def get(self, request, group, key): """ Retrieve Tag Details ```````````````````` Returns details for given tag key related to an issue. :pparam string issue_id: the ID of the issue to retrieve. :pparam string key: the tag key to look the values up for. :auth: required """ lookup_key = tagstore.prefix_reserved_key(key) try: tag_key = tagstore.get_tag_key(group.project_id, lookup_key) except tagstore.TagKeyNotFound: raise ResourceDoesNotExist try: group_tag_key = GroupTagKey.objects.get( group_id=group.id, key=lookup_key, ) except GroupTagKey.DoesNotExist: raise ResourceDoesNotExist total_values = GroupTagValue.get_value_count(group.id, lookup_key) top_values = GroupTagValue.get_top_values(group.id, lookup_key, limit=9) data = { 'id': six.text_type(tag_key.id), 'key': key, 'name': tag_key.get_label(), 'uniqueValues': group_tag_key.values_seen, 'totalValues': total_values, 'topValues': serialize(top_values, request.user), } return Response(data)
def get(self, request, group, key): """ List Tag Details ```````````````` Returns a list of details about the given tag key. :pparam string group_id: the ID of the group to retrieve. :pparam string key: the tag key to look the values up for. :auth: required """ # XXX(dcramer): kill sentry prefix for internal reserved tags if key in ('release', 'user', 'filename', 'function'): lookup_key = 'sentry:{0}'.format(key) else: lookup_key = key try: tag_key = TagKey.objects.get( project=group.project_id, key=lookup_key, status=TagKeyStatus.VISIBLE, ) except TagKey.DoesNotExist: raise ResourceDoesNotExist total_values = GroupTagValue.get_value_count(group.id, key) top_values = GroupTagValue.get_top_values(group.id, key, limit=3) data = { 'key': key, 'name': tag_key.get_label(), 'uniqueValues': tag_key.values_seen, 'totalValues': total_values, 'topValues': serialize(top_values, request.user), } return Response(data)
def get(self, request, group): tag_keys = TagKey.objects.filter( project=group.project, key__in=GroupTagKey.objects.filter(group=group, ).values('key'), ) # O(N) db access data = [] for tag_key in tag_keys: total_values = GroupTagValue.get_value_count(group.id, tag_key.key) top_values = GroupTagValue.get_top_values(group.id, tag_key.key, limit=10) data.append({ 'id': str(tag_key.id), 'key': tag_key.key, 'name': tag_key.get_label(), 'uniqueValues': tag_key.values_seen, 'totalValues': total_values, 'topValues': serialize(top_values, request.user), }) return Response(data)
def get(self, request, group): tag_keys = TagKey.objects.filter( project=group.project, key__in=GroupTagKey.objects.filter( group=group, ).values('key'), ) # O(N) db access data = [] for tag_key in tag_keys: total_values = GroupTagValue.get_value_count(group.id, tag_key.key) top_values = GroupTagValue.get_top_values(group.id, tag_key.key, limit=10) data.append({ 'id': str(tag_key.id), 'key': tag_key.key, 'name': tag_key.get_label(), 'uniqueValues': tag_key.values_seen, 'totalValues': total_values, 'topValues': serialize(top_values, request.user), }) return Response(data)