add machine history records api
authorHongyuan Ma <CS_MaleicAcid@163.com>
Sun, 1 Jul 2018 12:30:19 +0000 (20:30 +0800)
committerHongyuan Ma <CS_MaleicAcid@163.com>
Sun, 1 Jul 2018 12:30:19 +0000 (20:30 +0800)
web/apps/test_records/serializer.py
web/apps/test_records/views.py
web/apps/users/serializer.py
web/pgperffarm/urls.py

index 7dd4a7ae84d2b29823ef1e5d5892fd5eb5021cea..08eda5ec9ae886f785e5af6ff51ee84fbfccbf57 100644 (file)
@@ -165,8 +165,7 @@ class TestRecordListSerializer(serializers.ModelSerializer):
     def get_machine_info(self, obj):
         machine_data = UserMachine.objects.filter(id=obj.test_machine_id)
 
-        machine_info_serializer = UserMachineSerializer(machine_data, many=True,
-                                                        context={'request': self.context['request']})
+        machine_info_serializer = UserMachineSerializer(machine_data, many=True)
         return machine_info_serializer.data
 
     # def get_client_max_num(self, obj):
@@ -272,3 +271,26 @@ class TestRecordDetailSerializer(serializers.ModelSerializer):
     #
     #     rw_info_serializer = TestResultSerializer(all_data, many=True, context={'request': self.context['request']})
     #     return rw_info_serializer.data
+
+class MachineHistoryRecordSerializer(serializers.ModelSerializer):
+    '''
+    use MachineHistoryRecordSerializer
+    '''
+    machine_info = serializers.SerializerMethodField()
+    reports = serializers.SerializerMethodField()
+
+    class Meta:
+        model = UserMachine
+        fields = ('machine_info', 'reports')
+
+    def get_reports(self, obj):
+        target_records = TestRecord.objects.filter(test_machine_id=obj.id)
+        serializer = TestRecordListSerializer(target_records,many=True)
+
+        return serializer.data
+
+    def get_machine_info(self, obj):
+        target_machine = UserMachine.objects.filter(id=obj.id).first()
+        serializer = UserMachineSerializer(target_machine)
+
+        return serializer.data
\ No newline at end of file
index 2f4d9112e8c21fedfd12825af0e35f3fc94afc11..09bc70263f5e5e89dc7bf94126c463b994663084 100644 (file)
@@ -5,23 +5,23 @@ import django_filters
 import shortuuid
 
 from django.contrib.auth.hashers import make_password
-from django.shortcuts import render
 from rest_framework.pagination import PageNumberPagination
 
 from exception import TestDataUploadError
 from filters import TestRecordListFilter
 from models import UserMachine, TestCategory
 from pgperffarm.settings import DB_ENUM
+from .serializer import MachineHistoryRecordSerializer
 from .serializer import TestRecordListSerializer, TestRecordDetailSerializer, LinuxInfoSerializer, MetaInfoSerializer, \
     PGInfoSerializer, CreateTestRecordSerializer, CreateTestDateSetSerializer, TestResultSerializer
-from rest_framework.views import APIView
+
 from rest_framework.decorators import api_view
 from rest_framework.response import Response
 from rest_framework import mixins
 from rest_framework import status
-from rest_framework import generics
+
 from rest_framework import viewsets
-from .models import TestRecord, LinuxInfo, MetaInfo, PGInfo, TestBranch
+from .models import TestRecord
 import json
 
 
@@ -48,8 +48,16 @@ class TestRecordDetailViewSet(mixins.RetrieveModelMixin, viewsets.GenericViewSet
     lookup_field = 'uuid'
     queryset = TestRecord.objects.all().order_by('add_time')
     serializer_class = TestRecordDetailSerializer
-    pagination_class = StandardResultsSetPagination
+    pagination_class = StandardResultsSetPagination
 
+class MachineHistoryRecordViewSet(mixins.RetrieveModelMixin, viewsets.GenericViewSet):
+    """
+    detail test records
+    """
+    lookup_field = 'machine_sn'
+    queryset = UserMachine.objects.all().order_by('add_time')
+    serializer_class = MachineHistoryRecordSerializer
+    # pagination_class = StandardResultsSetPagination
 
 @api_view(['POST'])
 def TestRecordCreate(request, format=None):
@@ -151,7 +159,7 @@ def TestRecordCreate(request, format=None):
                             'metric': dataset['metric'],
                             'median': dataset['median'],
                             'test_cate': test_cate.id,
-                            # status,percentage calc by tarr
+                            # status,percentage calc by receiver
                             'status': -1,
                             'percentage': 0.0,
                         }
index 350fde186384e77ff12ed29a9422f4b9a40b8c37..772bf9671e237215ea059a49441617e2e11f2b44 100644 (file)
@@ -25,7 +25,6 @@ class UserMachineSerializer(serializers.ModelSerializer):
     avatar = serializers.SerializerMethodField()
     class Meta:
         model = UserMachine
-        # fields = "__all__"
         fields = ('alias', 'os_name', 'os_version', 'comp_name', 'comp_version', 'reports', 'owner' , 'avatar')
 
     def get_alias(self, obj):
@@ -48,4 +47,5 @@ class UserMachineSerializer(serializers.ModelSerializer):
 
         avatar = 'http://s.gravatar.com/avatar/' + hashlib.md5(target_owner['email']).hexdigest()
         print avatar
-        return  avatar
\ No newline at end of file
+        return  avatar
+
index 2b88d34d894d9c1ba01e061a3f1ba1ab917d3edd..e0a08b387ebbfde1e9279c5d34378ce70e99ed0c 100644 (file)
@@ -19,7 +19,8 @@ from django.views.generic.base import RedirectView
 
 from rest_framework.documentation import include_docs_urls
 from rest_framework.routers import DefaultRouter
-from test_records.views import TestRecordListViewSet, TestRecordCreate, TestRecordDetailViewSet
+from test_records.views import TestRecordListViewSet, TestRecordCreate, TestRecordDetailViewSet, \
+    MachineHistoryRecordViewSet
 from test_records.auth import MachineAuthToken
 # from test_records.view_base import TestListView
 
@@ -31,7 +32,7 @@ from test_records.auth import MachineAuthToken
 router = DefaultRouter()
 router.register(r'records', TestRecordListViewSet, base_name="records")
 router.register(r'detail', TestRecordDetailViewSet, base_name="detail")
-
+router.register(r'machine', MachineHistoryRecordViewSet, base_name="machine")
 # router.register(r'detail', TestRecordListViewSet)
 
 urlpatterns = [