Esempio n. 1
0
    def put(self, request, project, environment):
        try:
            instance = EnvironmentProject.objects.select_related(
                "environment").get(
                    project=project,
                    environment__name=Environment.get_name_from_path_segment(
                        environment),
                )
        except EnvironmentProject.DoesNotExist:
            raise ResourceDoesNotExist

        serializer = ProjectEnvironmentSerializer(data=request.data,
                                                  partial=True)
        if not serializer.is_valid():
            return Response(serializer.errors, status=400)

        data = serializer.validated_data
        fields = {}

        if "isHidden" in data:
            fields["is_hidden"] = data["isHidden"]

        if fields:
            instance.update(**fields)

        return Response(serialize(instance, request.user))
    def get(self, request, project, environment):
        try:
            instance = EnvironmentProject.objects.select_related('environment').get(
                project=project,
                environment__name=Environment.get_name_from_path_segment(environment),
            )
        except EnvironmentProject.DoesNotExist:
            raise ResourceDoesNotExist

        return Response(serialize(instance, request.user))
    def get(self, request, project, environment):
        try:
            instance = EnvironmentProject.objects.select_related('environment').get(
                project=project,
                environment__name=Environment.get_name_from_path_segment(environment),
            )
        except EnvironmentProject.DoesNotExist:
            raise ResourceDoesNotExist

        return Response(serialize(instance, request.user))
    def put(self, request, project, environment):
        try:
            instance = EnvironmentProject.objects.select_related('environment').get(
                project=project,
                environment__name=Environment.get_name_from_path_segment(environment),
            )
        except EnvironmentProject.DoesNotExist:
            raise ResourceDoesNotExist

        serializer = ProjectEnvironmentSerializer(data=request.DATA, partial=True)
        if not serializer.is_valid():
            return Response(serializer.errors, status=400)

        data = serializer.object
        fields = {}

        if 'isHidden' in data:
            fields['is_hidden'] = data['isHidden']

        if fields:
            instance.update(**fields)

        return Response(serialize(instance, request.user))
    def get(self, request, group, environment):
        project = group.project
        try:
            environment = Environment.objects.get(
                projects=project,
                organization_id=project.organization_id,
                name=Environment.get_name_from_path_segment(environment),
            )
        except Environment.DoesNotExist:
            raise ResourceDoesNotExist

        first_release = GroupRelease.objects.filter(
            group_id=group.id,
            environment=environment.name,
        ).order_by('first_seen').first()

        last_release = GroupRelease.objects.filter(
            group_id=group.id,
            environment=environment.name,
        ).order_by('-first_seen').first()

        # the current release is the 'latest seen' release within the
        # environment even if it hasnt affected this issue

        current_release = GroupRelease.objects.filter(
            group_id=group.id,
            environment=environment.name,
            release_id=ReleaseEnvironment.objects.filter(
                release_id__in=ReleaseProject.objects.filter(
                    project_id=group.project_id).values_list('release_id',
                                                             flat=True),
                organization_id=group.project.organization_id,
                environment_id=environment.id,
            ).order_by('-first_seen').values_list('release_id',
                                                  flat=True).first(),
        ).first()

        last_seen = GroupRelease.objects.filter(
            group_id=group.id,
            environment=environment.name,
        ).order_by('-last_seen').values_list('last_seen', flat=True).first()

        until = request.GET.get('until')
        if until:
            until = to_datetime(float(until))

        context = {
            'environment':
            serialize(
                environment, request.user,
                GroupEnvironmentWithStatsSerializer(
                    group=group,
                    until=until,
                )),
            'firstRelease':
            serialize(first_release, request.user),
            'lastRelease':
            serialize(last_release, request.user),
            'currentRelease':
            serialize(current_release, request.user,
                      GroupReleaseWithStatsSerializer(until=until, )),
            'lastSeen':
            last_seen,
            'firstSeen':
            first_release.first_seen if first_release else None,
        }
        return Response(context)