Пример #1
0
    def get(self, request, organization):
        """
        List an Organization's User Feedback
        ``````````````````````````````

        Return a list of user feedback items within this organization. Can be
        filtered by projects/environments/creation date.

        :pparam string organization_slug: the slug of the organization.
        :pparam string project_slug: the slug of the project.
        :auth: required
        """
        try:
            filter_params = self.get_filter_params(
                request,
                organization,
                date_filter_optional=True,
            )
        except NoProjects:
            return Response([])
        except OrganizationEventsError as exc:
            return Response({'detail': exc.message}, status=400)

        queryset = UserReport.objects.filter(
            project_id__in=filter_params['project_id'],
            group__isnull=False,
        ).select_related('group')
        if 'environment' in filter_params:
            queryset = queryset.filter(
                environment__name__in=filter_params['environment'], )
        if filter_params['start'] and filter_params['end']:
            queryset = queryset.filter(
                date_added__range=(filter_params['start'],
                                   filter_params['end']))

        status = request.GET.get('status', 'unresolved')
        if status == 'unresolved':
            queryset = queryset.filter(group__status=GroupStatus.UNRESOLVED, )
        elif status:
            return self.respond({'status': 'Invalid status choice'},
                                status=400)

        return self.paginate(
            request=request,
            queryset=queryset,
            order_by='-date_added',
            on_results=lambda x: serialize(x, request.user,
                                           UserReportWithGroupSerializer()),
            paginator_cls=DateTimePaginator,
        )
Пример #2
0
    def get(self, request, organization):
        """
        List an Organization's User Feedback
        ``````````````````````````````

        Return a list of user feedback items within this organization. Can be
        filtered by projects/environments/creation date.

        :pparam string organization_slug: the slug of the organization.
        :pparam string project_slug: the slug of the project.
        :auth: required
        """
        try:
            filter_params = self.get_filter_params(request,
                                                   organization,
                                                   date_filter_optional=True)
        except NoProjects:
            return Response([])

        queryset = UserReport.objects.filter(
            project_id__in=filter_params["project_id"], group_id__isnull=False)
        if "environment" in filter_params:
            queryset = queryset.filter(environment_id__in=[
                env.id for env in filter_params["environment_objects"]
            ])
        if filter_params["start"] and filter_params["end"]:
            queryset = queryset.filter(
                date_added__range=(filter_params["start"],
                                   filter_params["end"]))

        status = request.GET.get("status", "unresolved")
        paginate_kwargs = {}
        if status == "unresolved":
            paginate_kwargs[
                "post_query_filter"] = user_reports_filter_to_unresolved
        elif status:
            return self.respond({"status": "Invalid status choice"},
                                status=400)

        return self.paginate(
            request=request,
            queryset=queryset,
            order_by="-date_added",
            on_results=lambda x: serialize(x, request.user,
                                           UserReportWithGroupSerializer()),
            paginator_cls=DateTimePaginator,
            **paginate_kwargs,
        )