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")
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")
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")
+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
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()
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