summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHongyuan Ma2018-07-08 17:33:55 +0000
committerHongyuan Ma2018-07-08 17:33:55 +0000
commitb4f869cf90f3968d219f362a975612e5c749b169 (patch)
tree7b132e5486c9236e357f4ca6a53fa3564e4a045d
parentb59601b8d7f809d1f27e4605d3d6b065b1461d3d (diff)
add TestBranchSerializer
-rw-r--r--front-end/src/page/portal/index.jsx7
-rw-r--r--front-end/src/service/user-service.jsx4
-rw-r--r--front-end/src/util/machine-table/index.jsx19
-rw-r--r--web/apps/test_records/serializer.py27
-rw-r--r--web/apps/user_operation/serializer.py41
-rw-r--r--web/apps/user_operation/views.py24
-rw-r--r--web/pgperffarm/settings.py5
-rw-r--r--web/pgperffarm/urls.py9
8 files changed, 88 insertions, 48 deletions
diff --git a/front-end/src/page/portal/index.jsx b/front-end/src/page/portal/index.jsx
index de542f0..1406190 100644
--- a/front-end/src/page/portal/index.jsx
+++ b/front-end/src/page/portal/index.jsx
@@ -27,13 +27,14 @@ class Portal extends React.Component {
username: user.username,
});
console.log(user.token)
+ this.loadUserPortalInfo()
this.loadUserMachineManageList();
}
- loadUserInfo(){
- _user.getUserInfo().then(res => {
+ loadUserPortalInfo(){
+ _user.getUserPortalInfo().then(res => {
this.setState({
- userinfo: res.userinfo,
+ userinfo: res.results,
});
}, errMsg => {
_util.errorTips(errMsg);
diff --git a/front-end/src/service/user-service.jsx b/front-end/src/service/user-service.jsx
index 997632b..f12395e 100644
--- a/front-end/src/service/user-service.jsx
+++ b/front-end/src/service/user-service.jsx
@@ -56,8 +56,8 @@ class User{
});
}
- getUserInfo(){
- let url = PGConstant.base_url + '/userinfo';
+ getUserPortalInfo(){
+ let url = PGConstant.base_url + '/portal/';
return _util.request({
type : 'get',
url : url,
diff --git a/front-end/src/util/machine-table/index.jsx b/front-end/src/util/machine-table/index.jsx
index d590bde..34cc229 100644
--- a/front-end/src/util/machine-table/index.jsx
+++ b/front-end/src/util/machine-table/index.jsx
@@ -12,7 +12,7 @@ function LastestLink(props) {
let ret = _list.map((item, index) => {
return (
- <Link color='linkedin' to={'detailInfo/' + item.record.uuid}>
+ <Link color='linkedin' to={'detailInfo/' + item.uuid}>
{item.branch}
</Link>
);
@@ -50,11 +50,6 @@ class MachineTable extends React.Component {
let listBody = _list.map((machineItem, index) => {
let machine = machineItem
let system = machine.os_name + ' ' + machine.os_version + ' ' + machine.comp_name + ' ' + machine.comp_version;
- let alias = machine.alias;
- let lastest = machine.lastest;
- let state = machine.state;
-
- let reports = machine.reports
// let improvedIconClassName = trend.improved > 0 ? 'improved' : 'anonymous'
// let quoIconClassName = trend.quo > 0 ? 'quo' : 'anonymous'
@@ -63,30 +58,30 @@ class MachineTable extends React.Component {
<Table.Row key={index}>
{/*alias*/}
- <Table.Cell><a href="#">{alias}</a></Table.Cell>
+ <Table.Cell><a href="#">{machine.alias}</a></Table.Cell>
{/*system*/}
<Table.Cell><a href="#">{system}</a></Table.Cell>
{/*State*/}
- <Table.Cell>{state}</Table.Cell>
+ <Table.Cell>{machine.state}</Table.Cell>
{/*lastest-records*/}
<Table.Cell textAlign='center'>
{/*<Icon className={"bgc-clear " + improvedIconClassName} name='smile outline' size='large'/>*/}
{/*<Bubble num={trend.improved} name="improved"/>*/}
- <LastestLink list={lastest}/>
+ <LastestLink list={machine.lastest}/>
</Table.Cell>
{/*machine history*/}
<Table.Cell textAlign='center'>
- <Link color='linkedin' to={'machineInfo/' + '123'}>
+ <Link color='linkedin' to={'machineInfo/' + '###'}>
<Icon name='linkify'/> Link
</Link>
</Table.Cell>
{/*date*/}
- <Table.Cell>{}</Table.Cell>
+ <Table.Cell>{machine.add_time}</Table.Cell>
</Table.Row>
);
});
@@ -104,7 +99,7 @@ class MachineTable extends React.Component {
<Table.HeaderCell rowSpan='2'>State</Table.HeaderCell>
<Table.HeaderCell rowSpan='3'>Lastest</Table.HeaderCell>
<Table.HeaderCell rowSpan='2'>History</Table.HeaderCell>
- <Table.HeaderCell rowSpan='2'>Date</Table.HeaderCell>
+ <Table.HeaderCell rowSpan='2'>Add Date</Table.HeaderCell>
</Table.Row>
{/*<Table.Row>*/}
{/*<Table.HeaderCell>improvement</Table.HeaderCell>*/}
diff --git a/web/apps/test_records/serializer.py b/web/apps/test_records/serializer.py
index 08eda5e..b50071d 100644
--- a/web/apps/test_records/serializer.py
+++ b/web/apps/test_records/serializer.py
@@ -1,11 +1,20 @@
from rest_framework import serializers
from pgperffarm.settings import DB_ENUM
-from test_records.models import TestRecord, TestResult, PGInfo, LinuxInfo, MetaInfo, TestDataSet, TestCategory
+from test_records.models import TestRecord, TestResult, PGInfo, LinuxInfo, MetaInfo, TestDataSet, TestCategory, \
+ TestBranch
from users.serializer import UserMachineSerializer
from users.models import UserMachine
from django.db.models import Count
+class TestBranchSerializer(serializers.ModelSerializer):
+ '''
+ use TestBranchSerializer
+ '''
+
+ class Meta:
+ model = TestBranch
+ fields = ('branch_name',)
class TestCategorySerializer(serializers.ModelSerializer):
'''
@@ -127,14 +136,20 @@ class TestRecordListSerializer(serializers.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', 'trend', 'linux_info', 'meta_info')
+ 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'))
@@ -208,10 +223,10 @@ class TestRecordDetailSerializer(serializers.ModelSerializer):
'branch', 'date', 'uuid', 'pg_info', 'linux_info', 'hardware_info', 'meta_info', 'dataset_info', 'test_desc', 'meta_time', 'test_machine')
def get_branch(self, obj):
- target_pg_info = PGInfo.objects.filter(id=obj.pg_info.id).first()
- branch_id = target_pg_info.pg_branch_id
+ branch = TestBranch.objects.filter(id=obj.branch_id).first()
- return branch_id
+ serializer = TestBranchSerializer(branch)
+ return serializer.data["branch_name"]
def get_date(self, obj):
target_meta_info = MetaInfo.objects.filter(id=obj.meta_info.id).first()
diff --git a/web/apps/user_operation/serializer.py b/web/apps/user_operation/serializer.py
index 4a33071..9361c17 100644
--- a/web/apps/user_operation/serializer.py
+++ b/web/apps/user_operation/serializer.py
@@ -1,12 +1,34 @@
from django.db.models import Count
from rest_framework import serializers
+from pgperffarm.settings import DB_ENUM
from test_records.serializer import TestRecordListSerializer
-from users.serializer import AliasSerializer
+from users.serializer import AliasSerializer, UserMachineSerializer
from test_records.models import TestRecord
-from users.models import UserMachine, Alias
+from users.models import UserMachine, Alias, UserProfile
import hashlib
+class UserPortalInfoSerializer(serializers.ModelSerializer):
+
+ involved = serializers.SerializerMethodField()
+ class Meta:
+ model = UserProfile
+ fields = ('email', 'involved', 'date_joined')
+
+ def get_involved(self, obj):
+ '''
+ reports, machines, branches
+ '''
+ machine_dict = []
+ target_machines = UserMachine.objects.filter(machine_owner_id=obj.id)
+ serializer = UserMachineSerializer(target_machines, many=True)
+ print(serializer.data)
+ # for item in serializer.data:
+ # machine_dict.append(item.id)
+
+ reports = TestRecord.objects.filter(test_machine_id__in=machine_dict).count()
+
+ return reports
class UserMachineManageSerializer(serializers.ModelSerializer):
'''
@@ -16,10 +38,15 @@ class UserMachineManageSerializer(serializers.ModelSerializer):
alias = serializers.SerializerMethodField()
reports = serializers.SerializerMethodField()
lastest = serializers.SerializerMethodField()
-
+ state = serializers.SerializerMethodField()
class Meta:
model = UserMachine
- fields = ('alias', 'os_name', 'os_version', 'comp_name', 'comp_version', 'reports', 'state', 'lastest')
+ fields = ('alias', 'os_name', 'os_version', 'comp_name', 'comp_version', 'reports', 'state', 'lastest', 'state', 'add_time')
+
+ def get_state(self, obj):
+ state_code = obj.state
+ new_dict = {v: k for k, v in DB_ENUM["machine_state"].items()}
+ return new_dict[state_code]
def get_alias(self, obj):
target_alias = Alias.objects.filter(id=obj.alias_id).first()
@@ -37,13 +64,11 @@ class UserMachineManageSerializer(serializers.ModelSerializer):
# < QuerySet[(1, 4), (2, 5)] >
ret = []
for branch_item in record_branch_list:
- branch_name = branch_item[0]
+ # branch_name = branch_item[0]
target_record = TestRecord.objects.filter(test_machine_id=obj.id, branch=branch_item[0]).first()
serializer = TestRecordListSerializer(target_record)
- dict = {'branch':branch_name,'record':serializer.data}
-
- ret.append(dict)
+ ret.append(serializer.data)
return ret
diff --git a/web/apps/user_operation/views.py b/web/apps/user_operation/views.py
index 6c2d71a..c8bdf49 100644
--- a/web/apps/user_operation/views.py
+++ b/web/apps/user_operation/views.py
@@ -9,8 +9,8 @@ from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework_jwt.authentication import JSONWebTokenAuthentication
from util.response import PGJsonResponse
-from models import UserMachine
-from serializer import UserMachineManageSerializer
+from users.models import UserMachine, UserProfile
+from serializer import UserMachineManageSerializer, UserPortalInfoSerializer
class UserMachineListViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
@@ -23,18 +23,14 @@ class UserMachineListViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
serializer_class = UserMachineManageSerializer
# pagination_class = StandardResultsSetPagination
-
-
-# class UserMachineList(APIView):
-# authentication_classes = (JSONWebTokenAuthentication,)
-# permission_classes = (permissions.IsAuthenticated,)
-#
-# def get(self, request, format=None):
-# machines = UserMachine.objects.all().order_by('add_time')
-# serializer = UserMachineManageSerializer(machines, many=True)
-#
-# return PGJsonResponse(data=serializer.data, code=status.HTTP_200_OK, desc='get user machine list success')
-
+class UserPortalInfoViewSet(mixins.ListModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet):
+ """
+ user info
+ """
+ # authentication_classes = (JSONWebTokenAuthentication, authentication.SessionAuthentication )
+ # permission_classes = (permissions.IsAuthenticated, )
+ queryset = UserProfile.objects.all().order_by('date_joined')
+ serializer_class = UserPortalInfoSerializer
class UserMachinePermission(permissions.BasePermission):
"""
diff --git a/web/pgperffarm/settings.py b/web/pgperffarm/settings.py
index d3b5f42..c78bff7 100644
--- a/web/pgperffarm/settings.py
+++ b/web/pgperffarm/settings.py
@@ -150,6 +150,11 @@ DB_ENUM = {
"simple": 1,
"other": 2
},
+ "machine_state": {
+ "prohibited": -1,
+ "pending": 0,
+ "active": 1,
+ },
"status": {
"none": -1,
"improved": 1,
diff --git a/web/pgperffarm/urls.py b/web/pgperffarm/urls.py
index e9a659d..f6b5989 100644
--- a/web/pgperffarm/urls.py
+++ b/web/pgperffarm/urls.py
@@ -31,16 +31,18 @@ from test_records.auth import MachineAuthToken
# 'get': 'list',
# 'post': 'create'
# })
-from user_operation.views import UserMachineListViewSet
+from user_operation.views import UserMachineListViewSet, UserPortalInfoViewSet
router = DefaultRouter()
router.register(r'records', TestRecordListViewSet, base_name="records")
router.register(r'detail', TestRecordDetailViewSet, base_name="detail")
router.register(r'machine', MachineHistoryRecordViewSet, base_name="machine")
+
# user's machine manage list
router.register(r'my-machine', UserMachineListViewSet, base_name="my-machine")
-
+# get userinfo on portal page
+router.register(r'portal', UserPortalInfoViewSet, base_name="portal")
urlpatterns = [
# url(r'^admin/', admin.site.urls),
@@ -49,7 +51,7 @@ urlpatterns = [
url(r'^api-token-auth/', views.obtain_auth_token),
- # login(jwt auth)
+ # user login(jwt auth)
url(r'^login/', obtain_jwt_token),
url(r'^machine-token-auth/', MachineAuthToken.as_view()),
@@ -58,6 +60,7 @@ 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'portal/$', UserPortalInfoViewSet, name='portal'),
# url(r'my-machine/$', UserMachineList.as_view(), name='my-machine'),
url(r'docs/', include_docs_urls(title='pgperffarm')),