From 0838f5ed6c2181bb01d80a15769691fff8ce9da5 Mon Sep 17 00:00:00 2001 From: Hongyuan Ma Date: Sat, 7 Jul 2018 00:27:36 +0800 Subject: [PATCH] add branch order field --- web/apps/test_records/models.py | 9 ++++---- web/apps/user_operation/serializer.py | 32 +++++++++++++++++---------- web/apps/users/jwt_handler.py | 2 +- 3 files changed, 26 insertions(+), 17 deletions(-) diff --git a/web/apps/test_records/models.py b/web/apps/test_records/models.py index 856eb53..e2ea185 100644 --- a/web/apps/test_records/models.py +++ b/web/apps/test_records/models.py @@ -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") diff --git a/web/apps/user_operation/serializer.py b/web/apps/user_operation/serializer.py index dcaa32b..4a33071 100644 --- a/web/apps/user_operation/serializer.py +++ b/web/apps/user_operation/serializer.py @@ -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 diff --git a/web/apps/users/jwt_handler.py b/web/apps/users/jwt_handler.py index 73611e5..7dfdb94 100644 --- a/web/apps/users/jwt_handler.py +++ b/web/apps/users/jwt_handler.py @@ -1,6 +1,6 @@ from serializer import JWTUserProfileSerializer - +# user jwt handler def jwt_response_payload_handler(token, user=None, request=None): return { 'token': token, -- 2.39.5