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);
});
}
- getUserInfo(){
- let url = PGConstant.base_url + '/userinfo';
+ getUserPortalInfo(){
+ let url = PGConstant.base_url + '/portal/';
return _util.request({
type : 'get',
url : url,
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>
);
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'
<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>
);
});
<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>*/}
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):
'''
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'))
'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()
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):
'''
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()
# < 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
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):
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):
"""
"simple": 1,
"other": 2
},
+ "machine_state": {
+ "prohibited": -1,
+ "pending": 0,
+ "active": 1,
+ },
"status": {
"none": -1,
"improved": 1,
# '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),
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()),
# 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')),