From: Hongyuan Ma Date: Sun, 24 Jun 2018 08:56:33 +0000 (+0800) Subject: add farmer-card X-Git-Url: http://git.postgresql.org/gitweb/?a=commitdiff_plain;h=e354c27ea9433415014f30249ecfa345ff8df089;p=pgperffarm.git add farmer-card --- diff --git a/front-end/src/component/farmer-card/index.jsx b/front-end/src/component/farmer-card/index.jsx new file mode 100644 index 0000000..048f3ac --- /dev/null +++ b/front-end/src/component/farmer-card/index.jsx @@ -0,0 +1,46 @@ +import React from 'react'; + +import NavTop from 'component/nav-top/index.jsx'; +// import './index.css'; +import {Image, Card, Button, List, Icon} from 'semantic-ui-react' +class FarmerCard extends React.Component { + constructor(props){ + super(props); + } + render(){ + let machine = this.props.machine + let system = machine.os_name + ' ' + machine.os_version; + let camp = machine.comp_name + ' ' + machine.comp_version; + return ( + +
+ + + + Farmer: {machine.alias} + report num: {machine.reports} + + + + + {machine.owner}} + /> + + + + +
+ +
+
+
+
+ ); + } +}export default FarmerCard; + diff --git a/front-end/src/page/detailInfo/index.jsx b/front-end/src/page/detailInfo/index.jsx index 93dd26f..1cbb46b 100644 --- a/front-end/src/page/detailInfo/index.jsx +++ b/front-end/src/page/detailInfo/index.jsx @@ -2,6 +2,7 @@ import React from 'react'; import './index.css'; import {Table, Divider, Segment, Image, Label, Card, Button, List, Icon} from 'semantic-ui-react' import PGUtil from 'util/util.jsx' +import FarmerCard from 'component/farmer-card/index.jsx' import Record from 'service/record-service.jsx' const _util = new PGUtil(); const _record = new Record(); @@ -27,52 +28,32 @@ class DetailInfo extends React.Component { listParam.recordNo = this.state.recordNo; _record.getRecordInfo(listParam).then(res => { - this.setState(res); - }, errMsg => { this.setState({ - list: [] + recordInfo:res }); + console.log(this.state.recordInfo) + }, errMsg => { + // this.setState({ + // recordInfo: {} + // }); _util.errorTips(errMsg); }); } render() { + let machine = this.state.recordInfo.test_machine || {}; + console.log(machine) + // let system = machine.os_name + ' ' + machine.os_version + ' ' + machine.comp_name + ' ' + machine.comp_version; return (
+
+

NO: {this.state.recordNo}

+
+
-

{this.state.recordNo}

+ Farmer Info - - - - Farmer: Cabbage - report num: 4 - - - - - mahongyuan1997@semantic-ui.com} - /> - - {/*
*/} - {/*
    */} - {/*
  • system os:ubuntu 16
  • */} - {/*
  • camp: x86 64
  • */} - {/*
*/} - {/*
*/} -
-
- -
- -
-
-
+
diff --git a/web/apps/users/serializer.py b/web/apps/users/serializer.py index 2f6a12f..ec047ed 100644 --- a/web/apps/users/serializer.py +++ b/web/apps/users/serializer.py @@ -1,14 +1,42 @@ from rest_framework import serializers -from users.models import UserMachine + +from test_records.models import TestRecord +from users.models import UserMachine, Alias, UserProfile from django.db.models import Q +class AliasSerializer(serializers.ModelSerializer): + ''' + use TestResultSerializer + ''' + + class Meta: + model = Alias + fields = ('name', ) class UserMachineSerializer(serializers.ModelSerializer): ''' use UserMachineSerializer ''' + alias = serializers.SerializerMethodField() + reports = serializers.SerializerMethodField() + owner = serializers.SerializerMethodField() class Meta: model = UserMachine # fields = "__all__" - fields = ('alias', 'os_name', 'os_version', 'comp_name', 'comp_version') + fields = ('alias', 'os_name', 'os_version', 'comp_name', 'comp_version', 'reports', 'owner') + + def get_alias(self, obj): + target_alias = Alias.objects.filter(id=obj.alias_id).first() + + serializer = AliasSerializer(target_alias) + return serializer.data['name'] + + def get_reports(self, obj): + 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() + + return target_owner['email'] \ No newline at end of file