add branch_data;add cate_sn field;
authorHongyuan Ma <CS_MaleicAcid@163.com>
Fri, 15 Jun 2018 15:23:01 +0000 (23:23 +0800)
committerHongyuan Ma <CS_MaleicAcid@163.com>
Fri, 15 Jun 2018 15:23:01 +0000 (23:23 +0800)
web/apps/test_records/models.py
web/apps/test_records/views.py
web/apps/users/models.py
web/db_tools/data/branch_data.py [new file with mode: 0644]
web/db_tools/data/category_data.py
web/db_tools/import_branch_data.py [new file with mode: 0644]
web/db_tools/import_category_data.py

index a1813dbea9f8c9ea91e59af974a73e3a88a04d93..ad64cd65687b8190299553ddc3437ea107ebf8d1 100644 (file)
@@ -1,5 +1,5 @@
 from datetime import datetime
-
+from django.utils import timezone
 from django.db import models
 
 # Create your models here.
@@ -11,7 +11,7 @@ class TestBranch(models.Model):
     test brand
     """
     branch_name = models.CharField(max_length=128, verbose_name="branch name", help_text="branch name")
-    add_time = models.DateTimeField(default=datetime.now, verbose_name="branch added time",
+    add_time = models.DateTimeField(default=timezone.now, verbose_name="branch added time",
                                     help_text="branch added time")
 
     class Meta:
@@ -27,9 +27,10 @@ class TestCategory(models.Model):
     tests category
     """
     cate_name = models.CharField(max_length=64, verbose_name="cate name", help_text="cate name")
+    cate_sn = models.CharField(max_length=32, unique=True, verbose_name="cate sn", help_text="cate sn")
     # cate_parent = models.ForeignKey("self", verbose_name="parent category", related_name="sub_cat", help_text="parent category")
     cate_order = models.IntegerField(verbose_name="cate order", help_text="order in the current level")
-    add_time = models.DateTimeField(default=datetime.now, verbose_name="add time", help_text="category added time")
+    add_time = models.DateTimeField(default=timezone.now, verbose_name="add time", help_text="category added time")
 
     class Meta:
         verbose_name = "tests category"
@@ -93,8 +94,8 @@ class TestRecord(models.Model):
 
     test_desc = models.TextField(verbose_name="test desc", help_text="test desc")
     # test_branch_id = models.ForeignKey(TestBranch, verbose_name="test category", help_text="test category")
-
-    add_time = models.DateTimeField(default=datetime.now, verbose_name="test added time")
+    meta_time = models.DateTimeField(default=timezone.now, verbose_name="meta time")
+    add_time = models.DateTimeField(default=timezone.now, verbose_name="test added time")
 
     class Meta:
         verbose_name = "tests"
@@ -119,7 +120,7 @@ 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")
+    add_time = models.DateTimeField(default=timezone.now, verbose_name="test dataset time")
 
     class Meta:
         verbose_name = "test dataset"
@@ -159,7 +160,7 @@ class TestResult(models.Model):
         ('1', 'simple'),
     )
     mode = models.IntegerField(choices=MODE_CHOICE, verbose_name="mode", help_text="test mode")
-    add_time = models.DateTimeField(default=datetime.now, verbose_name="test result added time")
+    add_time = models.DateTimeField(default=timezone.now, verbose_name="test result added time")
 
     class Meta:
         verbose_name = "test result"
index 8572c856a662737d8ed56d29c152d105d0508d17..a4fe48c78c959a2cbcc01c362bdd9f8fc99d5c04 100644 (file)
@@ -4,7 +4,7 @@ from __future__ import unicode_literals
 from django.shortcuts import render
 from rest_framework.pagination import PageNumberPagination
 
-from models import UserMachine
+from models import UserMachine, TestCategory
 from .serializer import TestRecordSerializer, TestRecordDetailSerializer, LinuxInfoSerializer, MetaInfoSerializer, \
     PGInfoSerializer, CreateTestRecordSerializer, CreateTestDateSetSerializer
 from rest_framework.views import APIView
@@ -95,7 +95,8 @@ def TestRecordCreate(request, format=None):
         'linux_info': linuxInfoRet.id,
         'meta_info': metaInfoRet.id,
         'test_machine_id': 1,
-        'test_desc': 'here is desc'
+        'test_desc': 'here is desc',
+        'meta_time': metaInfoRet.date
     }
     testRecord = CreateTestRecordSerializer(data=test_record_data)
     testRecordRet = None
@@ -105,34 +106,41 @@ def TestRecordCreate(request, format=None):
         msg = 'testRecord save error'
         return Response(msg, status=status.HTTP_202_ACCEPTED)
 
-    ro = json_data['pgbench']['ro']
+    pgbench = json_data['pgbench']
     # print(type(ro))
-    for scale, dataset_list in ro.iteritems():
-        print "ro[%s]=" % scale, dataset_list
-        for client_num, dataset in dataset_list.iteritems():
-            print 'std is:'+ str(dataset['std'])
-
-            test_dataset_data = {
-                'test_record': testRecordRet.id,
-                'clients': client_num,
-                'scale': scale,
-                'std': dataset['std'],
-                'metric': dataset['metric'],
-                'median': dataset['median'],
-                'test_cate': 1,
-                # todo status,percentage
-                'status': 1,
-                'percentage': 0.062,
-            }
-            testDateSet = CreateTestDateSetSerializer(data=test_dataset_data)
-            testDateSetRet = None
-            if testDateSet.is_valid():
-                print 'dataset valid'
-                testDateSetRet = testDateSet.save()
-            else:
-                print(testDateSet.errors)
-                msg = 'testDateSet save error'
-                return Response(msg, status=status.HTTP_202_ACCEPTED)
+    ro = pgbench['ro']
+    for tag, tag_list in pgbench.iteritems():
+        test_cate = TestCategory.objects.get(cate_sn=tag)
+        if not test_cate:
+            continue
+        else:
+            print test_cate.cate_name
+        for scale, dataset_list in tag_list.iteritems():
+            print "ro[%s]=" % scale, dataset_list
+            for client_num, dataset in dataset_list.iteritems():
+                print 'std is:'+ str(dataset['std'])
+
+                test_dataset_data = {
+                    'test_record': testRecordRet.id,
+                    'clients': client_num,
+                    'scale': scale,
+                    'std': dataset['std'],
+                    'metric': dataset['metric'],
+                    'median': dataset['median'],
+                    'test_cate': test_cate.id,
+                    # status,percentage cal by tarr
+                    'status': -1,
+                    'percentage': 0.0,
+                }
+                testDateSet = CreateTestDateSetSerializer(data=test_dataset_data)
+                testDateSetRet = None
+                if testDateSet.is_valid():
+                    print 'dataset valid'
+                    testDateSetRet = testDateSet.save()
+                else:
+                    print(testDateSet.errors)
+                    msg = 'testDateSet save error'
+                    return Response(msg, status=status.HTTP_202_ACCEPTED)
 
 
 
index 269f388903409ea25cb8b00b2c204fc19bcddbb2..16ef78b810d471cbfa9c9bd381ce52c7cabaec80 100644 (file)
@@ -1,5 +1,5 @@
 from datetime import datetime
-
+from django.utils import timezone
 from django.db import models
 from django.contrib.auth.models import AbstractUser
 
@@ -40,7 +40,7 @@ class UserMachine(models.Model):
     os_version = models.CharField(max_length=32, verbose_name="operation system version")
     comp_name = models.CharField(max_length=32, verbose_name="compiler name")
     comp_version = models.CharField(max_length=32, verbose_name="compiler version")
-    add_time = models.DateTimeField(default=datetime.now, verbose_name="machine added time")
+    add_time = models.DateTimeField(default=timezone.now, verbose_name="machine added time")
 
     class Meta:
         verbose_name = "user machines"
diff --git a/web/db_tools/data/branch_data.py b/web/db_tools/data/branch_data.py
new file mode 100644 (file)
index 0000000..fdbe10d
--- /dev/null
@@ -0,0 +1,5 @@
+row_data = [
+    {
+        'branch_name': 'HEAD',
+    },
+]
index 12bb28658a6d37bbc04860ff276879f76d414d6b..46a4e829534d48621ec1109b69922526a978b980 100644 (file)
@@ -2,9 +2,11 @@ row_data = [
     {
         'cate_name': 'read only',
         'cate_order': 1,
+        'cate_sn': 'ro'
     },
     {
         'cate_name': 'read write',
         'cate_order': 2,
+        'cate_sn': 'rw',
     },
 ]
\ No newline at end of file
diff --git a/web/db_tools/import_branch_data.py b/web/db_tools/import_branch_data.py
new file mode 100644 (file)
index 0000000..d643272
--- /dev/null
@@ -0,0 +1,21 @@
+import sys
+import os
+
+# Use django's model independently
+pwd = os.path.dirname(os.path.realpath(__file__))
+sys.path.append(pwd)
+path = 'D:\GitSpace\pgperffarm\web\pgperffarm'
+sys.path.append(path)
+os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")
+
+# Initialize django
+import django
+django.setup()
+
+from test_records.models import TestBranch
+from data.branch_data import row_data
+
+for branch_item in row_data:
+    branch = TestBranch()
+    branch.branch_name = branch_item["branch_name"]
+    branch.save()
\ No newline at end of file
index 33fcf88350bc3b41b0cb471df9d52423e6641094..4c677e1f12f3eefa31bd2f9aa18c5ecf76d75f8c 100644 (file)
@@ -20,5 +20,5 @@ for test_cate in row_data:
     cate = TestCategory()
     cate.cate_name = test_cate["cate_name"]
     cate.cate_order = test_cate["cate_order"]
-
+    cate.cate_sn = test_cate["cate_sn"]
     cate.save()
\ No newline at end of file