add UserMachinePermission
authorHongyuan Ma <[email protected]>
Tue, 3 Jul 2018 15:36:54 +0000 (23:36 +0800)
committerHongyuan Ma <[email protected]>
Tue, 3 Jul 2018 15:36:54 +0000 (23:36 +0800)
web/apps/test_records/views.py
web/apps/users/views.py

index 09bc70263f5e5e89dc7bf94126c463b994663084..de86c6fc23bba49738ad063ef7217b47e2d96806 100644 (file)
@@ -11,11 +11,12 @@ from exception import TestDataUploadError
 from filters import TestRecordListFilter
 from models import UserMachine, TestCategory
 from pgperffarm.settings import DB_ENUM
+from users.views import UserMachinePermission
 from .serializer import MachineHistoryRecordSerializer
 from .serializer import TestRecordListSerializer, TestRecordDetailSerializer, LinuxInfoSerializer, MetaInfoSerializer, \
     PGInfoSerializer, CreateTestRecordSerializer, CreateTestDateSetSerializer, TestResultSerializer
 
-from rest_framework.decorators import api_view
+from rest_framework.decorators import api_view, permission_classes
 from rest_framework.response import Response
 from rest_framework import mixins
 from rest_framework import status
@@ -59,7 +60,9 @@ class MachineHistoryRecordViewSet(mixins.RetrieveModelMixin, viewsets.GenericVie
     serializer_class = MachineHistoryRecordSerializer
     # pagination_class = StandardResultsSetPagination
 
+
 @api_view(['POST'])
+@permission_classes((UserMachinePermission, ))
 def TestRecordCreate(request, format=None):
     """
     Receive data from client
@@ -74,7 +77,7 @@ def TestRecordCreate(request, format=None):
     # jsLoads = json.loads(data[0])
 
     # todo get machine by token
-    test_machine = 1
+    test_machine = UserMachine.objects.filter(secret)
 
     from django.db import transaction
 
index 19668cc9e0c4bc2176c70cc2cf70fde13aa4c452..5125a5130c0bf3ad6d4196ba7e414a83d797c699 100644 (file)
@@ -3,10 +3,11 @@ from __future__ import unicode_literals
 
 from django.contrib.auth.backends import ModelBackend
 from django.db.models import Q
-from django.shortcuts import render
 
 # Create your views here.
-from models import UserProfile
+from rest_framework import permissions
+
+from .models import UserProfile, UserMachine
 
 
 class CustomBackend(ModelBackend):
@@ -21,4 +22,15 @@ class CustomBackend(ModelBackend):
 
 
         except Exception as e:
-            return None
\ No newline at end of file
+            return None
+
+
+class UserMachinePermission(permissions.BasePermission):
+    """
+    Global permission check for blacklisted IPs.
+    """
+
+    def has_permission(self, request, view):
+        secret = request.data.secret
+        ret = UserMachine.objects.filter(machine_secret=secret,is_active=1).exists()
+        return ret