From 323d777d1231d1bb21b8c36adc06fafcc4dfef9c Mon Sep 17 00:00:00 2001 From: Hongyuan Ma Date: Tue, 24 Jul 2018 02:18:43 +0800 Subject: [PATCH] add GetStatusRecordList --- front-end/src/page/detailInfo/index.jsx | 1 + front-end/src/page/login/index.jsx | 96 +++++++++---------------- web/apps/test_records/serializer.py | 60 +++++++++++++++- web/apps/test_records/views.py | 27 ++++--- web/pgperffarm/urls.py | 6 +- 5 files changed, 115 insertions(+), 75 deletions(-) diff --git a/front-end/src/page/detailInfo/index.jsx b/front-end/src/page/detailInfo/index.jsx index 3938c22..af9008e 100644 --- a/front-end/src/page/detailInfo/index.jsx +++ b/front-end/src/page/detailInfo/index.jsx @@ -218,6 +218,7 @@ class DetailInfo extends React.Component { Farmer Info {/*//todo add a catalog*/} +
aaaa
diff --git a/front-end/src/page/login/index.jsx b/front-end/src/page/login/index.jsx index 12b8b00..317690e 100644 --- a/front-end/src/page/login/index.jsx +++ b/front-end/src/page/login/index.jsx @@ -74,71 +74,41 @@ class Login extends React.Component { return (
-
-

Disabled Form States

-
-
-
- - -
-
- - -
-
- -
- -
-
-

Form Validation States

-
-
- - -
-
- - -
-
- - +
+
+
+ login to manage your machines!
- -

Input Groups

-
-
- @ - -
-
- - .00 -
-
- - - -
-
- $ - - .00 -
-
- - - - +
+
+ {/**/} +
+

Login Form

+ +
+ {/**/} + this.onInputKeyUp(e)} + onChange={e => this.onInputChange(e)}/> +
+
+ this.onInputKeyUp(e)} + onChange={e => this.onInputChange(e)}/> +
+ + +
+ {/**/} +
+ {/**/}
- + {/**/} +
+ {/**/}
{/**/}
diff --git a/web/apps/test_records/serializer.py b/web/apps/test_records/serializer.py index 11a8cf3..19732a2 100644 --- a/web/apps/test_records/serializer.py +++ b/web/apps/test_records/serializer.py @@ -15,7 +15,7 @@ class TestBranchSerializer(serializers.ModelSerializer): class Meta: model = TestBranch - fields = ('branch_name',) + fields = ('branch_name','id') class TestCategorySerializer(serializers.ModelSerializer): @@ -136,6 +136,64 @@ class CreateTestDateSetSerializer(serializers.ModelSerializer): model = TestDataSet fields = "__all__" +class TestStatusRecordListSerializer(serializers.ModelSerializer): + ''' + use ModelSerializer + ''' + pg_info = PGInfoSerializer() + linux_info = LinuxInfoSerializer() + meta_info = MetaInfoSerializer() + branch = serializers.SerializerMethodField() + trend = serializers.SerializerMethodField() + machine_info = serializers.SerializerMethodField() + + # client_max_num = serializers.SerializerMethodField() + class Meta: + model = TestRecord + fields = ('uuid', 'add_time', 'machine_info', 'pg_info', 'branch', 'trend', 'linux_info', 'meta_info') + + def get_branch(self, obj): + branch = TestBranch.objects.filter(id=obj.branch.id).first() + + serializer = TestBranchSerializer(branch) + return serializer.data["branch_name"] + + def get_trend(self, obj): + dataset_list = TestDataSet.objects.filter(test_record_id=obj.id).values_list('status').annotate(Count('id')) + data_list_count = TestDataSet.objects.filter(test_record_id=obj.id).count() + + trend = {} + trend['improved'] = 0 + trend['quo'] = 0 + trend['regressive'] = 0 + trend['none'] = 0 + trend['is_first'] = False + for i in dataset_list: + if i[0] == DB_ENUM['status']['improved']: + trend['improved'] += i[1] + elif i[0] == DB_ENUM['status']['quo']: + trend['quo'] += i[1] + elif i[0] == DB_ENUM['status']['regressive']: + trend['regressive'] += i[1] + elif i[0] == DB_ENUM['status']['none']: + trend['none'] += i[1] + + if (data_list_count == trend['none']): + trend['is_first'] = True + + print str(data_list_count) + return trend + + def get_machine_info(self, obj): + machine_data = UserMachine.objects.filter(id=obj.test_machine_id) + + machine_info_serializer = UserMachineSerializer(machine_data, many=True) + return machine_info_serializer.data + + # def get_client_max_num(self, obj): + # ro_client_num = TestResult.objects.filter(Q(test_record_id=obj.id ) ,test_cate_id=1).order_by('clients').distinct('clients').count() + # rw_client_num = TestResult.objects.filter(Q(test_record_id=obj.id ) ,test_cate_id=2).order_by('clients').distinct('clients').count() + # return max(ro_client_num,rw_client_num) class TestRecordListSerializer(serializers.ModelSerializer): ''' diff --git a/web/apps/test_records/views.py b/web/apps/test_records/views.py index a567976..fd0c2d5 100644 --- a/web/apps/test_records/views.py +++ b/web/apps/test_records/views.py @@ -5,14 +5,16 @@ import django_filters import shortuuid from django.contrib.auth.hashers import make_password +from django.db.models import Count +# from requests import request from rest_framework.pagination import PageNumberPagination from exception import TestDataUploadError from test_records.filters import TestRecordListFilter -from models import UserMachine, TestCategory +from models import UserMachine, TestCategory, TestBranch from pgperffarm.settings import DB_ENUM from user_operation.views import UserMachinePermission -from .serializer import MachineHistoryRecordSerializer +from .serializer import MachineHistoryRecordSerializer, TestStatusRecordListSerializer, TestBranchSerializer from .serializer import TestRecordListSerializer, TestRecordDetailSerializer, LinuxInfoSerializer, MetaInfoSerializer, \ PGInfoSerializer, CreateTestRecordSerializer, CreateTestDateSetSerializer, TestResultSerializer @@ -54,18 +56,25 @@ class TestRecordListViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): filter_backends = (django_filters.rest_framework.DjangoFilterBackend,) filter_class = TestRecordListFilter -class TestStatusRecordListViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): +@api_view(['GET']) +def GetStatusRecordList(request, format=None): """ - List test records + List lastest test records involve all branches """ - queryset = TestRecord.objects.all().order_by('add_time') - serializer_class = TestRecordListSerializer - pagination_class = StandardResultsSetPagination - filter_backends = (django_filters.rest_framework.DjangoFilterBackend,) - filter_class = TestRecordListFilter + queryset = TestBranch.objects.all().order_by('branch_order').values_list('id','branch_name').annotate(num_records=Count('testrecord')).filter(num_records__gt=0) + # print queryset # + ret = {'branch_num':queryset.__len__(),'result':[]} + for branch_item in queryset: + target_record = TestRecord.objects.filter(branch_id=branch_item[0]).order_by('test_machine_id','-add_time').distinct('test_machine_id').all() + # print target_record # + data = TestRecordListSerializer(target_record,many=True) + obj = {'branch':branch_item[1],'data':data.data} + ret["result"].append(obj) + # msg = 'ok!' + return Response(ret, status=status.HTTP_201_CREATED) class TestRecordDetailViewSet(mixins.RetrieveModelMixin, viewsets.GenericViewSet): diff --git a/web/pgperffarm/urls.py b/web/pgperffarm/urls.py index 2077330..c2d5d43 100644 --- a/web/pgperffarm/urls.py +++ b/web/pgperffarm/urls.py @@ -22,7 +22,7 @@ from django.views.generic.base import RedirectView from rest_framework.documentation import include_docs_urls from rest_framework.routers import DefaultRouter from test_records.views import TestRecordListViewSet, TestRecordCreate, TestRecordDetailViewSet, \ - MachineHistoryRecordViewSet, TestStatusRecordListViewSet + MachineHistoryRecordViewSet, GetStatusRecordList from test_records.auth import MachineAuthToken # from test_records.view_base import TestListView @@ -35,7 +35,7 @@ from user_operation.views import UserMachineListViewSet, UserPortalInfoViewSet, router = DefaultRouter() router.register(r'records', TestRecordListViewSet, base_name="records") -router.register(r'status-records', TestStatusRecordListViewSet, base_name="status-records") +# router.register(r'status-records', TestStatusRecordListViewSet, base_name="status-records") router.register(r'detail', TestRecordDetailViewSet, base_name="detail") router.register(r'machine-records', MachineHistoryRecordViewSet, base_name="machine-records") router.register(r'machine-records-by-branch', UserMachineRecordByBranchListViewSet, base_name="machine-records-by-branch") @@ -61,6 +61,8 @@ urlpatterns = [ # url(r'status/$', TestListView.as_view(), name='test-list'), # url(r'detail', TestRecordDetailViewSet ,name="detail"), url(r'upload/$', TestRecordCreate, name='test-upload'), + url(r'status-records/$', GetStatusRecordList, name='status-records'), + # url(r'portal/$', UserPortalInfoViewSet, name='portal'), # url(r'my-machine/$', UserMachineList.as_view(), name='my-machine'), -- 2.39.5