diff options
| author | Hongyuan Ma | 2018-07-08 17:33:55 +0000 |
|---|---|---|
| committer | Hongyuan Ma | 2018-07-08 17:33:55 +0000 |
| commit | b4f869cf90f3968d219f362a975612e5c749b169 (patch) | |
| tree | 7b132e5486c9236e357f4ca6a53fa3564e4a045d /web | |
| parent | b59601b8d7f809d1f27e4605d3d6b065b1461d3d (diff) | |
add TestBranchSerializer
Diffstat (limited to 'web')
| -rw-r--r-- | web/apps/test_records/serializer.py | 27 | ||||
| -rw-r--r-- | web/apps/user_operation/serializer.py | 41 | ||||
| -rw-r--r-- | web/apps/user_operation/views.py | 24 | ||||
| -rw-r--r-- | web/pgperffarm/settings.py | 5 | ||||
| -rw-r--r-- | web/pgperffarm/urls.py | 9 |
5 files changed, 75 insertions, 31 deletions
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')), |
