add CreateTestDateSetSerializer
authorHongyuan Ma <CS_MaleicAcid@163.com>
Thu, 14 Jun 2018 15:00:52 +0000 (23:00 +0800)
committerHongyuan Ma <CS_MaleicAcid@163.com>
Thu, 14 Jun 2018 15:00:52 +0000 (23:00 +0800)
web/apps/test_records/models.py
web/apps/test_records/serializer.py
web/apps/test_records/views.py

index 0006003d9c19d33b322ccc668c304bb8329f8ace..2dcf92403fd2cbd598bdaccdf924ec58df20cba6 100644 (file)
@@ -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"
index 50f595b6acd87009ebea8196cec5eb10c559823d..13cc6f8fee798a2e2ae8b80c1f49730196514c6c 100644 (file)
@@ -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):
 
index 53acad9fb588a26572f059b2f9af1063e6a45dab..5587d85a660dde1069d1c67600bbb0ba51573128 100644 (file)
@@ -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)