From a022b1fdfefcfb7086ae7c37a37651ab47b84f58 Mon Sep 17 00:00:00 2001 From: Hongyuan Ma Date: Thu, 14 Jun 2018 23:00:52 +0800 Subject: [PATCH] add CreateTestDateSetSerializer --- web/apps/test_records/models.py | 4 ++- web/apps/test_records/serializer.py | 11 ++++++- web/apps/test_records/views.py | 50 +++++++++++++++++++++-------- 3 files changed, 49 insertions(+), 16 deletions(-) diff --git a/web/apps/test_records/models.py b/web/apps/test_records/models.py index 0006003..2dcf924 100644 --- a/web/apps/test_records/models.py +++ b/web/apps/test_records/models.py @@ -108,7 +108,7 @@ class TestDataSet(models.Model): std = models.DecimalField(max_digits=16, decimal_places=6, verbose_name="std",help_text="std of the test dataset") metric = models.DecimalField(max_digits=16, decimal_places=6, verbose_name="metric",help_text="metric of the test dataset") median = models.DecimalField(max_digits=16, decimal_places=6, verbose_name="median",help_text="median of the test dataset") - add_time = models.DateTimeField(default=datetime.now, verbose_name="test dataset time") + STATUS_CHOICE = ( ('-1', 'none'), ('1', 'improved'), @@ -117,6 +117,8 @@ class TestDataSet(models.Model): ) status = models.IntegerField(choices=STATUS_CHOICE, verbose_name="status", help_text="status of this dataset") percentage = models.DecimalField(max_digits=8, decimal_places=4, verbose_name="percentage",help_text="percentage compared to previous dataset") + add_time = models.DateTimeField(default=datetime.now, verbose_name="test dataset time") + class Meta: verbose_name = "test dataset" verbose_name_plural = "test dataset" diff --git a/web/apps/test_records/serializer.py b/web/apps/test_records/serializer.py index 50f595b..13cc6f8 100644 --- a/web/apps/test_records/serializer.py +++ b/web/apps/test_records/serializer.py @@ -1,5 +1,5 @@ from rest_framework import serializers -from test_records.models import TestRecord, TestResult, PGInfo, LinuxInfo ,MetaInfo +from test_records.models import TestRecord, TestResult, PGInfo, LinuxInfo ,MetaInfo, TestDataSet from users.serializer import UserMachineSerializer from users.models import UserMachine from django.db.models import Q @@ -52,6 +52,15 @@ class CreateTestRecordSerializer(serializers.ModelSerializer): model = TestRecord fields = "__all__" +class CreateTestDateSetSerializer(serializers.ModelSerializer): + + ''' + create TestDateSetSerializer + ''' + + class Meta: + model = TestDataSet + fields = "__all__" class TestRecordSerializer(serializers.ModelSerializer): diff --git a/web/apps/test_records/views.py b/web/apps/test_records/views.py index 53acad9..5587d85 100644 --- a/web/apps/test_records/views.py +++ b/web/apps/test_records/views.py @@ -6,7 +6,7 @@ from rest_framework.pagination import PageNumberPagination from models import UserMachine from .serializer import TestRecordSerializer, TestRecordDetailSerializer, LinuxInfoSerializer, MetaInfoSerializer, \ - PGInfoSerializer, CreateTestRecordSerializer + PGInfoSerializer, CreateTestRecordSerializer, CreateTestDateSetSerializer from rest_framework.views import APIView from rest_framework.decorators import api_view from rest_framework.response import Response @@ -62,21 +62,24 @@ def TestRecordCreate(request, format=None): linux_data = json_data['linux'] linuxInfo = LinuxInfoSerializer(data=linux_data) - linuxInfo.is_valid() - linuxInfoRet = linuxInfo.save() + linuxInfoRet = None + if linuxInfo.is_valid(): + linuxInfoRet = linuxInfo.save() meta_data = json_data['meta'] metaInfo = MetaInfoSerializer(data=meta_data) - metaInfo.is_valid() - metaInfoRet = metaInfo.save() + metaInfoRet = None + if metaInfo.is_valid(): + metaInfoRet = metaInfo.save() # pg_data = json_data['postgres'] pg_data = { 'pg_branch':1 } pgInfo = PGInfoSerializer(data=pg_data) - pgInfo.is_valid() - pgInfoRet = pgInfo.save() + pgInfoRet = None + if pgInfo.is_valid(): + pgInfoRet = pgInfo.save() test_record_data = { 'pg_info': pgInfoRet.id, @@ -86,14 +89,33 @@ def TestRecordCreate(request, format=None): 'test_desc': 'here is desc' } testRecord = CreateTestRecordSerializer(data=test_record_data) - testRecord.is_valid() - print testRecord.is_valid() - print testRecord - testRecord.save() + testRecordRet = None + if testRecord.is_valid(): + testRecordRet = testRecord.save() - # ro = json_data['pgbench']['ro'] + ro = json_data['pgbench']['ro'] # print(type(ro)) - # for scale, v in ro.iteritems(): - # print "ro[%s]=" % scale, v + for scale, dataset_list in ro.iteritems(): + print "ro[%s]=" % scale, dataset_list + for client_num, dataset in dataset_list.iteritems(): + print dataset['std'] + test_dataset_data = { + 'test_record_id': testRecordRet.id, + 'clients': client_num, + 'scale': scale, + 'std': dataset['std'], + 'metric': dataset['metric'], + 'median': dataset['median'] + # todo status,percentage + } + testDateSet = CreateTestDateSetSerializer(data=test_dataset_data) + testDateSetRet = None + if testDateSet.is_valid(): + print 'dataset valid' + testDateSetRet = testDateSet.save() + else: + print testDateSet + + msg = 'upload ok' return Response(msg, status=status.HTTP_200_OK) -- 2.39.5