示例#1
0
    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))
示例#2
0
    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)
示例#4
0
    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)
示例#5
0
    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)