From 50c6b444e6a71f8663653250c9fcee0e1eb0f838 Mon Sep 17 00:00:00 2001 From: Hongyuan Ma Date: Tue, 7 Aug 2018 02:25:37 +0800 Subject: [PATCH] online adaptation --- front-end/src/page/machine/index.jsx | 14 +++---- front-end/src/page/portal/index.jsx | 21 ++++++---- front-end/src/service/machine-service.jsx | 4 +- front-end/src/service/record-service.jsx | 4 +- front-end/src/service/user-service.jsx | 14 ++++--- .../src/util/machine-record-table/index.jsx | 4 +- front-end/src/util/machine-table/index.jsx | 5 ++- web/apps/user_operation/filters.py | 15 ++++++- web/apps/user_operation/views.py | 41 +++++++++++++------ web/apps/users/admin.py | 11 ++++- web/apps/users/views.py | 1 + web/extra_apps/{auth => pg_auth}/__init__.py | 0 web/extra_apps/{auth => pg_auth}/auth.py | 0 web/pgperffarm/settings.py | 2 +- web/pgperffarm/urls.py | 14 ++----- web/templates/admin/login.html | 11 ----- web/templates/admin_bak/login.html | 11 +++++ 17 files changed, 106 insertions(+), 66 deletions(-) rename web/extra_apps/{auth => pg_auth}/__init__.py (100%) rename web/extra_apps/{auth => pg_auth}/auth.py (100%) delete mode 100644 web/templates/admin/login.html create mode 100644 web/templates/admin_bak/login.html diff --git a/front-end/src/page/machine/index.jsx b/front-end/src/page/machine/index.jsx index be5914f..6e0edb8 100644 --- a/front-end/src/page/machine/index.jsx +++ b/front-end/src/page/machine/index.jsx @@ -17,18 +17,15 @@ class Machine extends React.Component { 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, @@ -50,7 +47,8 @@ class Machine extends React.Component { Use the farm member link for history of that member on the relevant branch.

- + ) diff --git a/front-end/src/page/portal/index.jsx b/front-end/src/page/portal/index.jsx index e6c968b..b730709 100644 --- a/front-end/src/page/portal/index.jsx +++ b/front-end/src/page/portal/index.jsx @@ -16,25 +16,27 @@ class Portal extends React.Component { 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, }); @@ -44,11 +46,14 @@ class Portal extends React.Component { } 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); @@ -98,7 +103,7 @@ class Portal extends React.Component {

Welcome Back, {this.state.username}

- + diff --git a/front-end/src/service/machine-service.jsx b/front-end/src/service/machine-service.jsx index 9b5188b..7278665 100644 --- a/front-end/src/service/machine-service.jsx +++ b/front-end/src/service/machine-service.jsx @@ -4,13 +4,13 @@ import PGConstant from 'util/constant.jsx' 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 } }); } diff --git a/front-end/src/service/record-service.jsx b/front-end/src/service/record-service.jsx index 3aa81c4..62ff12a 100644 --- a/front-end/src/service/record-service.jsx +++ b/front-end/src/service/record-service.jsx @@ -75,8 +75,8 @@ class Record{ 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, diff --git a/front-end/src/service/user-service.jsx b/front-end/src/service/user-service.jsx index f12395e..b697142 100644 --- a/front-end/src/service/user-service.jsx +++ b/front-end/src/service/user-service.jsx @@ -45,23 +45,25 @@ class User{ 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 + } }); } diff --git a/front-end/src/util/machine-record-table/index.jsx b/front-end/src/util/machine-record-table/index.jsx index c8b999a..91ef3d3 100644 --- a/front-end/src/util/machine-record-table/index.jsx +++ b/front-end/src/util/machine-record-table/index.jsx @@ -29,12 +29,12 @@ class MachineRecordTable extends React.Component { } } - onPageNumChange(current) { + let _this = this this.setState({ currentPage: current }, () => { - this.props.loadfunc(current); + _this.props.loadfunc(current); }); console.log('current:' + this.state.currentPage) } diff --git a/front-end/src/util/machine-table/index.jsx b/front-end/src/util/machine-table/index.jsx index e18001f..21ec17f 100644 --- a/front-end/src/util/machine-table/index.jsx +++ b/front-end/src/util/machine-table/index.jsx @@ -33,10 +33,11 @@ class MachineTable extends React.Component { onPageNumChange(current) { + let _this = this this.setState({ currentPage: current }, () => { - this.props.loadfunc(current); + _this.props.loadfunc(current); }); console.log('current:' + this.state.currentPage) } @@ -129,7 +130,7 @@ class MachineTable extends React.Component { - this.onPageNumChange(current)} pageSize={15} + this.onPageNumChange(current)} pageSize={40} current={this.state.currentPage} total={this.props.total}/> diff --git a/web/apps/user_operation/filters.py b/web/apps/user_operation/filters.py index 7208055..d429d96 100644 --- a/web/apps/user_operation/filters.py +++ b/web/apps/user_operation/filters.py @@ -3,6 +3,7 @@ import django_filters from django.db.models import Q +from models import UserMachine from test_records.models import TestRecord @@ -15,4 +16,16 @@ class MachineRecordListFilter(django_filters.rest_framework.FilterSet): 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 diff --git a/web/apps/user_operation/views.py b/web/apps/user_operation/views.py index ab38fc0..c006723 100644 --- a/web/apps/user_operation/views.py +++ b/web/apps/user_operation/views.py @@ -2,26 +2,29 @@ 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): """ @@ -34,8 +37,6 @@ class UserMachineRecordByBranchListViewSet(mixins.ListModelMixin, viewsets.Gener filter_backends = (django_filters.rest_framework.DjangoFilterBackend,) filter_class = MachineRecordListFilter - - class UserMachineListViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): """ List test records @@ -44,7 +45,21 @@ class UserMachineListViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): 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): """ @@ -52,14 +67,16 @@ 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): diff --git a/web/apps/users/admin.py b/web/apps/users/admin.py index bf81a3e..f9224ff 100644 --- a/web/apps/users/admin.py +++ b/web/apps/users/admin.py @@ -6,8 +6,14 @@ from asynchronous_send_mail import send_mail 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', ) @@ -58,3 +64,6 @@ PG PERF FARM" % (ret['alias'], ret['secret'], ret['system'], ret['compiler']) admin.site.register(UserMachine, UserMachineAdmin) + + + diff --git a/web/apps/users/views.py b/web/apps/users/views.py index 6ba4b36..5a4457f 100644 --- a/web/apps/users/views.py +++ b/web/apps/users/views.py @@ -14,6 +14,7 @@ class CustomBackend(ModelBackend): """ custom user auth """ + # todo use auth.py def authenticate(self, username=None, password=None, **kwargs): try: user = UserProfile.objects.get(Q(username=username)) diff --git a/web/extra_apps/auth/__init__.py b/web/extra_apps/pg_auth/__init__.py similarity index 100% rename from web/extra_apps/auth/__init__.py rename to web/extra_apps/pg_auth/__init__.py diff --git a/web/extra_apps/auth/auth.py b/web/extra_apps/pg_auth/auth.py similarity index 100% rename from web/extra_apps/auth/auth.py rename to web/extra_apps/pg_auth/auth.py diff --git a/web/pgperffarm/settings.py b/web/pgperffarm/settings.py index 76e7845..f5b3385 100644 --- a/web/pgperffarm/settings.py +++ b/web/pgperffarm/settings.py @@ -38,8 +38,8 @@ ALLOWED_HOSTS = [] # Application definition INSTALLED_APPS = ( - 'corsheaders', 'django.contrib.admin', + 'corsheaders', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', diff --git a/web/pgperffarm/urls.py b/web/pgperffarm/urls.py index 110a62f..245faec 100644 --- a/web/pgperffarm/urls.py +++ b/web/pgperffarm/urls.py @@ -45,11 +45,11 @@ router.register(r'machine-records-by-branch', UserMachineRecordByBranchListViewS # 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')), @@ -60,14 +60,8 @@ urlpatterns = [ 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 diff --git a/web/templates/admin/login.html b/web/templates/admin/login.html deleted file mode 100644 index e9e7257..0000000 --- a/web/templates/admin/login.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - -

Redirect

-

-Redirect here -

- - \ No newline at end of file diff --git a/web/templates/admin_bak/login.html b/web/templates/admin_bak/login.html new file mode 100644 index 0000000..224d856 --- /dev/null +++ b/web/templates/admin_bak/login.html @@ -0,0 +1,11 @@ + + + + + +

Redirect

+

+Redirect here +

+ + \ No newline at end of file -- 2.39.5