total: 3,
             machines: [],
         },
-
-        // this.onPageChange = this.onPageChange.bind(this);
-
-        this.loadMachineList = this.loadMachineList.bind(this);
+            this.loadMachineList = this.loadMachineList.bind(this);
     }
 
-    componentDidMount(){
+    componentDidMount() {
         this.loadMachineList();
     }
 
-    loadMachineList(page=1){
-        _machine.getMachineList().then(res => {
+    loadMachineList(page = 1) {
+        _machine.getMachineList(page).then(res => {
             this.setState({
                 machines: res.results,
                 total: res.count,
                     Use the farm member link for history of that member on the relevant branch.
                 </p>
 
-                <MachineTable list={this.state.machines} total={this.state.total} current={this.state.currentPage} loadfunc={this.loadRecordList}/>
+                <MachineTable list={this.state.machines} total={this.state.total} current={this.state.currentPage}
+                              loadfunc={this.loadMachineList}/>
 
             </div>
         )
 
         super(props);
         this.state = {
             username: '',
-            isLoading: false,
             machines:[],
             userinfo: {}
         }
-
+        this.loadUserMachineManageList = this.loadUserMachineManageList.bind(this);
     }
     componentDidMount(){
 
         let user = _util.getStorage('userInfo')
         this.setState({
             username: user.username,
+        },()=>{
+            this.loadUserPortalInfo()
+            this.loadUserMachineManageList();
         });
         console.log(user.token)
-        this.loadUserPortalInfo()
-        this.loadUserMachineManageList();
+
     }
 
     loadUserPortalInfo(){
-        _user.getUserPortalInfo().then(res => {
+        let username = this.state.username
+        _user.getUserPortalInfo(username).then(res => {
             this.setState({
                 userinfo: res.results,
             });
     }
 
     loadUserMachineManageList(page=1){
-        _user.getUserMachineManageList().then(res => {
+
+        let listParam = {};
+        listParam.page = page;
+        listParam.machine_owner__username = this.state.username;
+        _user.getUserMachineManageList(listParam).then(res => {
             this.setState({
                 machines: res.results,
                 total: res.count,
-                isLoading: false
             });
         }, errMsg => {
             _util.errorTips(errMsg);
                         <h2 >Welcome Back, {this.state.username}</h2>
                     </div>
 
-                    <MachineTable list={this.state.machines} total={this.state.total} current={this.state.currentPage} loadfunc={this.loadRecordList}/>
+                    <MachineTable list={this.state.machines} total={this.state.total} current={this.state.currentPage} loadfunc={this.loadUserMachineManageList}/>
                 </div>
             </div>
 
 
 const _util       = new PGUtil();
 
 class MachineService{
-    getMachineList(pageNum){
+    getMachineList(page){
         let url = PGConstant.base_url + '/machines';
         return _util.request({
             type    : 'get',
             url     : url,
             data    : {
-                pageNum : pageNum
+                page : page
             }
         });
     }
 
         let data = {};
         data = listParam;
 
-        console.log('final data')
-        console.dir(listParam);
+        // console.log('final data')
+        // console.dir(listParam);
         return _util.request({
             type    : 'get',
             url     : url,
 
         return true;
     }
 
-    getUserMachineManageList(pageNum){
+    getUserMachineManageList(listParam){
         let url = PGConstant.base_url + '/my-machine';
         return _util.request({
             type    : 'get',
             url     : url,
-            data    : {
-                pageNum : pageNum
-            }
+            data    : listParam
+        //     listParam.page = page;
+        //     listParam.username = this.state.username;
         });
     }
 
-    getUserPortalInfo(){
+    getUserPortalInfo(username=''){
         let url = PGConstant.base_url + '/portal/';
         return _util.request({
             type    : 'get',
             url     : url,
-            data    : {}
+            data    : {
+                username : username
+            }
         });
     }
 
 
         }
     }
 
-
     onPageNumChange(current) {
+        let _this = this
         this.setState({
             currentPage: current
         }, () => {
-            this.props.loadfunc(current);
+            _this.props.loadfunc(current);
         });
         console.log('current:' + this.state.currentPage)
     }
 
 
 
     onPageNumChange(current) {
+        let _this = this
         this.setState({
             currentPage: current
         }, () => {
-            this.props.loadfunc(current);
+            _this.props.loadfunc(current);
         });
         console.log('current:' + this.state.currentPage)
     }
                     <Table.Row>
                         <Table.HeaderCell colSpan='10'>
 
-                            <Pagination style={style} onChange={(current) => this.onPageNumChange(current)} pageSize={15}
+                            <Pagination style={style} onChange={(current) => this.onPageNumChange(current)} pageSize={40}
                                         current={this.state.currentPage} total={this.props.total}/>
                         </Table.HeaderCell>
 
 
 import django_filters
 from django.db.models import Q
 
+from models import UserMachine
 from test_records.models import TestRecord
 
 
 
     class Meta:
         model = TestRecord
-        fields = ['branch__id', 'test_machine__machine_sn']
\ No newline at end of file
+        fields = ['branch__id', 'test_machine__machine_sn']
+
+
+class UserMachineListFilter(django_filters.rest_framework.FilterSet):
+    """
+    UserMachineListFilter
+    """
+
+    # machine_owner__username = django_filters.CharFilter()
+
+    class Meta:
+        model = UserMachine
+        fields = ['machine_owner__username', ]
\ No newline at end of file
 
 from __future__ import unicode_literals
 
 import django_filters
-from django.shortcuts import render
-from rest_framework import mixins, viewsets, permissions, status
+from rest_framework import mixins, viewsets, permissions
 
 from rest_framework import authentication
 from rest_framework.pagination import PageNumberPagination
-from rest_framework.response import Response
-from rest_framework.views import APIView
 from rest_framework_jwt.authentication import JSONWebTokenAuthentication
 
-from filters import MachineRecordListFilter
+from filters import MachineRecordListFilter, UserMachineListFilter
 from test_records.models import TestRecord
-from util.response import PGJsonResponse
 from users.models import UserMachine, UserProfile
-from serializer import UserMachineManageSerializer, UserPortalInfoSerializer, TestRecordListSerializer
+from serializer import UserMachineManageSerializer, UserPortalInfoSerializer, TestRecordListSerializer, \
+    UserMachineSerializer
+
 
 class StandardResultsSetPagination(PageNumberPagination):
     page_size = 2
     page_size_query_param = 'page_size'
     max_page_size = 100
 
+class MiddleResultsSetPagination(PageNumberPagination):
+    page_size = 40
+    page_size_query_param = 'page_size'
+    max_page_size = 100
+
 
 class UserMachineRecordByBranchListViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
     """
     filter_backends = (django_filters.rest_framework.DjangoFilterBackend,)
     filter_class = MachineRecordListFilter
 
-
-
 class UserMachineListViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
     """
     List test records
     permission_classes = (permissions.IsAuthenticated, )
     queryset = UserMachine.objects.all().order_by('add_time')
     serializer_class = UserMachineManageSerializer
-    # pagination_class = StandardResultsSetPagination
+    pagination_class = MiddleResultsSetPagination
+    filter_backends = (django_filters.rest_framework.DjangoFilterBackend,)
+    filter_class = UserMachineListFilter
+
+    # def perform_create(self, serializer):
+    #     shop_cart = serializer.save()
+    #     goods = shop_cart.goods
+    #     goods.goods_num -= shop_cart.nums
+    #     goods.save()
+
+    # def get_serializer_class(self):
+    #     if self.action == 'create':
+    #         return UserMachineSerializer
+    #     else:
+    #         return UserMachineManageSerializer
 
 class PublicMachineListViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
     """
     """
     queryset = UserMachine.objects.all().order_by('add_time')
     serializer_class = UserMachineManageSerializer
+    pagination_class = MiddleResultsSetPagination
 
-class UserPortalInfoViewSet(mixins.ListModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet):
+class UserPortalInfoViewSet( mixins.RetrieveModelMixin, viewsets.GenericViewSet):
     """
      user info
     """
     # authentication_classes = (JSONWebTokenAuthentication, authentication.SessionAuthentication )
     # permission_classes = (permissions.IsAuthenticated, )
-    queryset = UserProfile.objects.all().order_by('date_joined')
+    lookup_field = 'username'
+    queryset = UserProfile.objects.all()
     serializer_class = UserPortalInfoSerializer
 
 class UserMachinePermission(permissions.BasePermission):
 
 from django.conf import settings
 # Register your models here.
 from serializer import UserMachineSerializer
-from .models import UserMachine
+from .models import UserMachine, UserProfile
 
+class UserProfileAdmin(admin.ModelAdmin):
+    list_display = ('id', 'username', 'email', 'is_active', 'last_login', )
+    list_filter = ('is_active',)
+
+
+admin.site.register(UserProfile, UserProfileAdmin)
 
 class UserMachineAdmin(admin.ModelAdmin):
     list_display = ('id', 'alias', 'state', 'machine_sn', 'machine_secret', )
 
 
 admin.site.register(UserMachine, UserMachineAdmin)
+
+
+
 
     """
     custom user auth
     """
+    # todo use auth.py
     def authenticate(self, username=None, password=None, **kwargs):
         try:
             user = UserProfile.objects.get(Q(username=username))
 
 # Application definition
 
 INSTALLED_APPS = (
-    'corsheaders',
     'django.contrib.admin',
+    'corsheaders',
     'django.contrib.auth',
     'django.contrib.contenttypes',
     'django.contrib.sessions',
 
 # 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")
+router.register(r'^portal/', UserPortalInfoViewSet, base_name="portal")
 
 urlpatterns = [
-    url(r'^admin/', admin.site.urls),
-
+    url(r'^perf_farm_admin/', admin.site.urls),
+    # url(r'^admin/', include(admin.site.urls)),
     url(r'^api-auth/', include('rest_framework.urls')),
 
 
 
     url(r'^machine-token-auth/', MachineAuthToken.as_view()),
     url(r'^', include(router.urls)),
-    # url(r'status/$', test_record_list, name='test-list'),
-    # 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'),
+    url(r'upload/$', TestRecordCreate, name='test-upload'),
 
     url(r'docs/', include_docs_urls(title='pgperffarm')),
     # Static pages
 
+++ /dev/null
-<html>
-<head>
-<meta http-equiv="refresh" content="0;url={% url 'pgperffarm.auth.login' %}/?next=/admin/"></meta>
-</head>
-<body>
-<h1>Redirect</h1>
-<p>
-Redirect <a href="{% url 'pgperffarm.auth.login' %}/?next=/admin/">here</a>
-</p>
-</body>
-</html>
\ No newline at end of file
 
--- /dev/null
+<html>
+<head>
+<meta http-equiv="refresh" content="0;url={% url 'login' %}/?next=/admin/"></meta>
+</head>
+<body>
+<h1>Redirect</h1>
+<p>
+Redirect <a href="{% url login' %}/?next=/admin/">here</a>
+</p>
+</body>
+</html>
\ No newline at end of file