add branch order field
authorHongyuan Ma <CS_MaleicAcid@163.com>
Fri, 6 Jul 2018 16:27:36 +0000 (00:27 +0800)
committerHongyuan Ma <CS_MaleicAcid@163.com>
Fri, 6 Jul 2018 16:27:36 +0000 (00:27 +0800)
web/apps/test_records/models.py
web/apps/user_operation/serializer.py
web/apps/users/jwt_handler.py

index 856eb530a3e5683131f327531c04eff10281f3d0..e2ea185798f82e5d8e0c9c6ae4f022200e2dcf2c 100644 (file)
@@ -11,6 +11,7 @@ class TestBranch(models.Model):
     test brand
     """
     branch_name = models.CharField(max_length=128, verbose_name="branch name", help_text="branch name")
+    branch_order = models.IntegerField(verbose_name=" branch order", help_text="order in all the  branch")
     add_time = models.DateTimeField(default=timezone.now, verbose_name="branch added time",
                                     help_text="branch added time")
 
@@ -87,14 +88,14 @@ class LinuxInfo(models.Model):
 
 class TestRecord(models.Model):
     """
-    tests
+    test record
     """
+    branch = models.ForeignKey(TestBranch, verbose_name="pg branch", help_text="pg branch")
     test_machine = models.ForeignKey(UserMachine, verbose_name="test owner",
                                      help_text="person who add this test item")
     pg_info = models.ForeignKey(PGInfo, verbose_name="pg info", help_text="pg info")
     meta_info = models.ForeignKey(MetaInfo, verbose_name="meta info", help_text="meta info")
     linux_info = models.ForeignKey(LinuxInfo, verbose_name="linux info", help_text="linux info")
-
     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")
     meta_time = models.DateTimeField(default=timezone.now, verbose_name="meta time")
@@ -216,8 +217,8 @@ class TestResult(models.Model):
     clients = models.IntegerField(verbose_name="clients", help_text="clients of the test result")
     start = models.DecimalField(max_digits=16, decimal_places=6, verbose_name="start",
                                 help_text="starttime of the test result")
-    tps = models.DecimalField(default=0,max_digits=18, decimal_places=6, verbose_name="tps",
-                                help_text="tps of the test result")
+    tps = models.DecimalField(default=0, max_digits=18, decimal_places=6, verbose_name="tps",
+                              help_text="tps of the test result")
     run = models.IntegerField(verbose_name="run", help_text="run number")
     threads = models.IntegerField(verbose_name="threads", help_text="threads of the test result")
 
index dcaa32bc9e9551057400070e238d0ec4a83ee9a7..4a330711e2bf782a538434cdeb512905ef4b7c5a 100644 (file)
@@ -1,10 +1,13 @@
+from django.db.models import Count
 from rest_framework import serializers
 
+from test_records.serializer import TestRecordListSerializer
 from users.serializer import AliasSerializer
 from test_records.models import TestRecord
-from users.models import UserMachine, Alias, UserProfile
+from users.models import UserMachine, Alias
 import hashlib
 
+
 class UserMachineManageSerializer(serializers.ModelSerializer):
     '''
     use UserMachineSerializer
@@ -12,11 +15,11 @@ class UserMachineManageSerializer(serializers.ModelSerializer):
 
     alias = serializers.SerializerMethodField()
     reports = serializers.SerializerMethodField()
-    owner = serializers.SerializerMethodField()
-    avatar = serializers.SerializerMethodField()
+    lastest = serializers.SerializerMethodField()
+
     class Meta:
         model = UserMachine
-        fields = ('alias', 'os_name', 'os_version', 'comp_name', 'comp_version', 'reports', 'owner' , 'avatar', 'state')
+        fields = ('alias', 'os_name', 'os_version', 'comp_name', 'comp_version', 'reports', 'state', 'lastest')
 
     def get_alias(self, obj):
         target_alias = Alias.objects.filter(id=obj.alias_id).first()
@@ -28,14 +31,19 @@ class UserMachineManageSerializer(serializers.ModelSerializer):
         reports_num = TestRecord.objects.filter(test_machine_id=obj.id).count()
         return reports_num
 
-    def get_owner(self, obj):
-        target_owner = UserProfile.objects.filter(id=obj.machine_owner_id).values('email').first()
+    def get_lastest(self, obj):
+        record_branch_list = TestRecord.objects.filter(test_machine_id=obj.id).values_list(
+            'branch').annotate(Count('id'))
+        # < QuerySet[(1, 4), (2, 5)] >
+        ret = []
+        for branch_item in record_branch_list:
+            branch_name = branch_item[0]
+
+            target_record = TestRecord.objects.filter(test_machine_id=obj.id, branch=branch_item[0]).first()
+            serializer = TestRecordListSerializer(target_record)
 
-        return target_owner['email']
+            dict = {'branch':branch_name,'record':serializer.data}
 
-    def get_avatar(self, obj):
-        target_owner = UserProfile.objects.filter(id=obj.machine_owner_id).values('email').first()
+            ret.append(dict)
 
-        avatar = 'http://s.gravatar.com/avatar/' + hashlib.md5(target_owner['email']).hexdigest()
-        print avatar
-        return  avatar
+        return ret
index 73611e581b736da40ed5cf0c6e5de12699d2774f..7dfdb943d0c4595b71ee5525490448a351207c3b 100644 (file)
@@ -1,6 +1,6 @@
 from serializer import JWTUserProfileSerializer
 
-
+# user jwt handler
 def jwt_response_payload_handler(token, user=None, request=None):
     return {
         'token': token,