summaryrefslogtreecommitdiff
path: root/web
diff options
context:
space:
mode:
authorHongyuan Ma2018-07-01 12:30:19 +0000
committerHongyuan Ma2018-07-01 12:30:19 +0000
commit16acaa5f7553d16613b66eca31b8e882c69ee031 (patch)
treed76513c8123bab8f8584b0f9db91eba4e31f3d35 /web
parentf6c83a9f5a571df866612c8a5a4f5bfa37bf0985 (diff)
add machine history records api
Diffstat (limited to 'web')
-rw-r--r--web/apps/test_records/serializer.py26
-rw-r--r--web/apps/test_records/views.py20
-rw-r--r--web/apps/users/serializer.py4
-rw-r--r--web/pgperffarm/urls.py5
4 files changed, 43 insertions, 12 deletions
diff --git a/web/apps/test_records/serializer.py b/web/apps/test_records/serializer.py
index 7dd4a7a..08eda5e 100644
--- a/web/apps/test_records/serializer.py
+++ b/web/apps/test_records/serializer.py
@@ -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
diff --git a/web/apps/test_records/views.py b/web/apps/test_records/views.py
index 2f4d911..09bc702 100644
--- a/web/apps/test_records/views.py
+++ b/web/apps/test_records/views.py
@@ -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,
}
diff --git a/web/apps/users/serializer.py b/web/apps/users/serializer.py
index 350fde1..772bf96 100644
--- a/web/apps/users/serializer.py
+++ b/web/apps/users/serializer.py
@@ -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
+
diff --git a/web/pgperffarm/urls.py b/web/pgperffarm/urls.py
index 2b88d34..e0a08b3 100644
--- a/web/pgperffarm/urls.py
+++ b/web/pgperffarm/urls.py
@@ -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 = [