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'),
+ ('2', 'quo'),
+ ('3', 'regressive'),
+ )
+ 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")
class Meta:
verbose_name = "test dataset"
verbose_name_plural = "test dataset"
from django.shortcuts import render
from rest_framework.pagination import PageNumberPagination
-from .serializer import TestRecordSerializer, TestRecordDetailSerializer
+from models import UserMachine
+from .serializer import TestRecordSerializer, TestRecordDetailSerializer, LinuxInfoSerializer, MetaInfoSerializer, \
+ PGInfoSerializer, CreateTestRecordSerializer
from rest_framework.views import APIView
from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework import status
from rest_framework import generics
from rest_framework import viewsets
-from .models import TestRecord
+from .models import TestRecord, LinuxInfo, MetaInfo, PGInfo, TestBranch
+import json
+
class StandardResultsSetPagination(PageNumberPagination):
page_size = 10
serializer_class = TestRecordSerializer
pagination_class = StandardResultsSetPagination
+
class TestRecordDetailViewSet(mixins.ListModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet):
"""
List test records
# return Response(serializers.data, status=status.HTTP_201_CREATED)
data = request.data
- # def byteify(input):
- # if isinstance(input, dict):
- # return {byteify(key): byteify(value) for key, value in input.iteritems()}
- # elif isinstance(input, list):
- # return [byteify(element) for element in input]
- # elif isinstance(input, unicode):
- # return input.encode('utf-8')
- # else:
- # return input
- return Response((data), status=status.HTTP_200_OK)
+ print type(data[0])
+ json_data = json.dumps(data[0], encoding="UTF-8", ensure_ascii=False)
+ json_data = json.loads(json_data, encoding="UTF-8")
+ # obj = data[0].pgbench
+ # jsLoads = json.loads(data[0])
+
+ linux_data = json_data['linux']
+ linuxInfo = LinuxInfoSerializer(data=linux_data)
+ linuxInfo.is_valid()
+ linuxInfoRet = linuxInfo.save()
+
+ meta_data = json_data['meta']
+ metaInfo = MetaInfoSerializer(data=meta_data)
+ 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()
+
+ test_record_data = {
+ 'pg_info': pgInfoRet.id,
+ 'linux_info': linuxInfoRet.id,
+ 'meta_info': metaInfoRet.id,
+ 'test_machine_id': 1,
+ 'test_desc': 'here is desc'
+ }
+ testRecord = CreateTestRecordSerializer(data=test_record_data)
+ testRecord.is_valid()
+ print testRecord.is_valid()
+ print testRecord
+ testRecord.save()
+
+ # ro = json_data['pgbench']['ro']
+ # print(type(ro))
+ # for scale, v in ro.iteritems():
+ # print "ro[%s]=" % scale, v
+ msg = 'upload ok'
+ return Response(msg, status=status.HTTP_200_OK)