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: environment_id = self._get_environment_id_from_request( request, group.project.organization_id) except Environment.DoesNotExist: # if the environment doesn't exist then the tag can't possibly exist raise ResourceDoesNotExist try: group_tag_key = tagstore.get_group_tag_key( group.project_id, group.id, environment_id, lookup_key) except tagstore.GroupTagKeyNotFound: raise ResourceDoesNotExist if group_tag_key.count is None: group_tag_key.count = tagstore.get_group_tag_value_count( group.project_id, group.id, environment_id, lookup_key) if group_tag_key.top_values is None: group_tag_key.top_values = tagstore.get_top_group_tag_values( group.project_id, group.id, environment_id, lookup_key) return Response(serialize(group_tag_key, request.user))
def get(self, request, group): group_tag_keys = tagstore.get_group_tag_keys(group.id) # O(N) db access data = [] all_top_values = [] for group_tag_key in group_tag_keys: total_values = tagstore.get_group_tag_value_count(group.id, group_tag_key.key) top_values = tagstore.get_top_group_tag_values(group.id, group_tag_key.key, limit=10) all_top_values.extend(top_values) data.append( { 'id': six.text_type(group_tag_key.id), 'key': tagstore.get_standardized_key(group_tag_key.key), 'name': tagstore.get_tag_key_label(group_tag_key.key), 'uniqueValues': group_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 """ lookup_key = tagstore.prefix_reserved_key(key) try: environment_id = self._get_environment_id_from_request( request, group.project.organization_id) except Environment.DoesNotExist: # if the environment doesn't exist then the tag can't possibly exist raise ResourceDoesNotExist try: tag_key = tagstore.get_tag_key(group.project_id, environment_id, lookup_key) except tagstore.TagKeyNotFound: raise ResourceDoesNotExist try: group_tag_key = tagstore.get_group_tag_key(group.project_id, group.id, environment_id, lookup_key) except tagstore.GroupTagKeyNotFound: raise ResourceDoesNotExist total_values = tagstore.get_group_tag_value_count( group.project_id, group.id, environment_id, lookup_key) top_values = tagstore.get_top_group_tag_values(group.project_id, group.id, environment_id, lookup_key, limit=9) data = { 'id': six.text_type(tag_key.id), 'key': key, 'name': tagstore.get_tag_key_label(tag_key.key), '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: environment_id = self._get_environment_id_from_request( request, group.project.organization_id) except Environment.DoesNotExist: # if the environment doesn't exist then the tag can't possibly exist raise ResourceDoesNotExist try: group_tag_key = tagstore.get_group_tag_key( group.project_id, group.id, environment_id, lookup_key) except tagstore.GroupTagKeyNotFound: raise ResourceDoesNotExist if group_tag_key.count is None: total_values = tagstore.get_group_tag_value_count( group.project_id, group.id, environment_id, lookup_key) else: total_values = group_tag_key.count if group_tag_key.top_values is None: top_values = tagstore.get_top_group_tag_values( group.project_id, group.id, environment_id, lookup_key, limit=9) else: top_values = group_tag_key.top_values data = { 'key': key, 'name': tagstore.get_tag_key_label(group_tag_key.key), '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: environment_id = self._get_environment_id_from_request( request, group.project.organization_id ) except Environment.DoesNotExist: # if the environment doesn't exist then the tag can't possibly exist raise ResourceDoesNotExist try: group_tag_key = tagstore.get_group_tag_key( group.project_id, group.id, environment_id, lookup_key ) except tagstore.GroupTagKeyNotFound: raise ResourceDoesNotExist if group_tag_key.count is None: group_tag_key.count = tagstore.get_group_tag_value_count( group.project_id, group.id, environment_id, lookup_key ) if group_tag_key.top_values is None: group_tag_key.top_values = tagstore.get_top_group_tag_values( group.project_id, group.id, environment_id, lookup_key ) return Response(serialize(group_tag_key, request.user))
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 = tagstore.get_group_tag_key(group.id, lookup_key) except tagstore.GroupTagKeyNotFound: raise ResourceDoesNotExist total_values = tagstore.get_group_tag_value_count(group.id, lookup_key) top_values = tagstore.get_top_group_tag_values(group.id, lookup_key, limit=9) data = { 'id': six.text_type(tag_key.id), 'key': key, 'name': tagstore.get_tag_key_label(tag_key.key), 'uniqueValues': group_tag_key.values_seen, 'totalValues': total_values, 'topValues': serialize(top_values, request.user), } return Response(data)