Esempio n. 1
0
    def create(self, request, *args, **kwargs):
        data = {}
        data['os_name'] = request.data['os_name']
        data['os_version'] = request.data['os_version']
        data['comp_name'] = request.data['comp_name']
        data['comp_version'] = request.data['comp_version']

        username = request.data['machine_owner']
        user = User.objects.filter(username=username).filter().first()
        user_serializer = UserSerializer(user)

        data['machine_owner'] = user_serializer.data['id']

        serializer = MachineSerializer(data=data)
        serializer.is_valid(raise_exception=True)
        machine = self.perform_create(serializer)

        headers = self.get_success_headers(serializer.data)

        return Response('success',
                        status=status.HTTP_201_CREATED,
                        headers=headers)
    def get_reports(self, obj):
        """
		Number of reports
		"""
        machine_dict = []
        target_machines = Machine.objects.filter(owner=obj.id)
        serializer = MachineSerializer(target_machines, many=True)
        # print(serializer.data)
        for item in serializer.data:
            machine_dict.append(item['sn'])

        reports = TestRecord.objects.filter(
            test_machine__sn__in=machine_dict).count()

        return reports
Esempio n. 3
0
 def post(request):
     serializer = MachineSerializer(data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data, status=status.HTTP_201_CREATED)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Esempio n. 4
0
 def get(request):
     data = Machine.objects.all()
     serializer = MachineSerializer(data, many=True)
     return Response(serializer.data)
class TestRecordDetailSerializer(serializers.ModelSerializer):
    '''
    use ModelSerializer
    '''
    branch = serializers.SerializerMethodField()
    date = serializers.SerializerMethodField()
    pg_info = PGInfoSerializer()
    linux_info = LinuxInfoDetailSerializer()
    test_machine = MachineSerializer()
    hardware_info = serializers.SerializerMethodField()
    meta_info = MetaInfoDetailSerializer()
    dataset_info = serializers.SerializerMethodField()

    prev = serializers.SerializerMethodField()

    class Meta:
        model = TestRecord
        fields = ('branch', 'date', 'uuid', 'pg_info', 'linux_info',
                  'hardware_info', 'meta_info', 'dataset_info', 'test_desc',
                  'meta_time', 'test_machine', 'commit', 'prev')

    def get_prev(self, obj):
        target = TestDataSet.objects.filter(test_record_id=obj.id).first()
        serializer = TestDataSetDetailSerializer(target)
        prev = serializer.data["prev"]
        target = TestDataSet.objects.filter(id=prev).first()
        serializer = TestDataSetDetailSerializer(target)
        record_id = serializer.data["test_record"]

        target_record = TestRecord.objects.filter(id=record_id).first()
        serializer = TestRecordDetailSerializer(target_record)
        return serializer.data["uuid"]

    def get_branch(self, obj):
        branch = TestBranch.objects.filter(id=obj.branch_id).first()

        serializer = TestBranchSerializer(branch)
        return serializer.data["branch_name"]

    def get_date(self, obj):
        target_meta_info = MetaInfo.objects.filter(id=obj.meta_info.id).first()

        return target_meta_info.date

    def get_hardware_info(self, obj):
        target_data = LinuxInfo.objects.filter(id=obj.linux_info.id).first()

        hardware_info_serializer = HardwareInfoDetailSerializer(target_data)
        return hardware_info_serializer.data

    def get_dataset_info(self, obj):
        dataset_list = TestDataSet.objects.filter(
            test_record_id=obj.id).values_list('test_cate_id').annotate(
                Count('id'))
        # print(dataset_list)

        dataset = {}
        # < QuerySet[(1, 3), (2, 3)] >

        for cate_item in dataset_list:

            cate_info = TestCategory.objects.filter(id=cate_item[0]).first()
            cate_info_serializer = TestCategorySerializer(cate_info)
            cate_sn = cate_info_serializer.data["cate_sn"]
            dataset[cate_sn] = {}

            dataset_scale_list = TestDataSet.objects.filter(
                test_record_id=obj.id,
                test_cate=cate_item[0]).values_list('scale').annotate(
                    Count('id'))
            # print(dataset_scale_list) # <QuerySet [(10, 2), (20, 1)]>
            for scale_item in dataset_scale_list:
                dataset[cate_sn][scale_item[0]] = {}

                dataset_client_list = TestDataSet.objects.filter(
                    test_record_id=obj.id,
                    test_cate=cate_item[0],
                    scale=scale_item[0]).values_list('clients').annotate(
                        Count('id'))
                # print(dataset_client_list) # <QuerySet [(1, 1), (2, 1), (4, 1)]>
                for client_item in dataset_client_list:
                    dataset[cate_sn][scale_item[0]][client_item[0]] = []
                    target_dataset = TestDataSet.objects.filter(
                        test_record_id=obj.id,
                        test_cate=cate_item[0],
                        scale=scale_item[0],
                        clients=client_item[0])

                    dataset_serializer = TestDataSetDetailSerializer(
                        target_dataset, many=True)
                    dataset[cate_sn][scale_item[0]][
                        client_item[0]] = dataset_serializer.data

        return dataset
    def get_machine_info(self, obj):
        machine_data = Machine.objects.filter(id=obj.test_machine_id)

        machine_info_serializer = MachineSerializer(machine_data, many=True)
        return machine_info_serializer.data