add approve function in machine model
authorHongyuan Ma <CS_MaleicAcid@163.com>
Wed, 1 Aug 2018 09:52:06 +0000 (17:52 +0800)
committerHongyuan Ma <CS_MaleicAcid@163.com>
Wed, 1 Aug 2018 09:52:06 +0000 (17:52 +0800)
web/apps/test_records/views.py
web/apps/users/admin.py
web/apps/users/models.py
web/pgperffarm/settings.py

index 0b6c776320449c5163ecf22675eb9c50b032afef..1e094b73ff539367f03055b06a6cbca7286488d9 100644 (file)
@@ -5,8 +5,6 @@ import django_filters
 import shortuuid
 
 from django.contrib.auth.hashers import make_password
-from django.db.models import Count
-# from requests import request
 from rest_framework.pagination import PageNumberPagination
 
 from exception import TestDataUploadError
index 2ade70fd3fe4bd5581702976189dfedefa94a04b..16fc2e88d5d4bed81f43db896071433dd9f1eaca 100644 (file)
@@ -5,7 +5,7 @@ from django.contrib import admin
 
 # Register your models here.
 from serializer import UserMachineSerializer
-from .models import UserMachine,Alias
+from .models import UserMachine
 
 class UserMachineAdmin(admin.ModelAdmin):
     list_display = ('alias', 'machine_sn', 'state')
@@ -13,15 +13,26 @@ class UserMachineAdmin(admin.ModelAdmin):
     actions = ['approve_machine']
 
     def approve_machine(self, request, queryset):
+
+        total = 0
+        error = 0
+        success =0
         for machine in queryset:
-            alias = Alias.objects.filter(is_used=False).order_by('?')[:1]
-            #todo
-            serializer = UserMachineSerializer(machine)
-            serializer.save()
+
+            ret = machine.approve_machine()
+            '''
+                ret = {"is_success": True, "alias": 'alias', "secrct": 'machine_secret', }
+            '''
+            if ret.is_success:
+                success += 1
+            else:
+                error += 1
+
+            total +=1
 
         # rows_updated = queryset.update(state=1)
         # message_bit = "%s machine(s)" % rows_updated
-        # self.message_user(request, "%s have been approved." % message_bit)
+        self.message_user(request, "Total: %s ,Success: %s ,Error: %s. Please make sure there are enough unused aliases" % (total,success,error))
 
     approve_machine.short_description = u'Approve Machine(Modify the state to active, generate machine_sn, machine_secret, and assign an alias)'
 
index 95fa3e07ce1c22f599612dbdefa340c738227f7c..8f40dd81ed8ee254194d6621e9b6e9f66d9acb3f 100644 (file)
@@ -1,4 +1,8 @@
 from datetime import datetime
+import shortuuid
+
+import hashlib
+from django.contrib.auth.hashers import make_password
 from django.utils import timezone
 from django.db import models
 from django.contrib.auth.models import AbstractUser
@@ -59,3 +63,30 @@ class UserMachine(models.Model):
 
     def __str__(self):
         return self.alias.__str__() + ' (' + self.os_name + ' ' + self.os_version + '' + self.comp_name + ' ' + self.comp_version + ')'
+
+    def approve_machine(self):
+        "Approve Machine(Modify the state to active, generate machine_sn, machine_secret, and assign an alias)"
+        alias = Alias.objects.filter(is_used=False).order_by('?').first()
+        if not alias:
+            return {"is_success": False, "alias": '', "secrct": ''}
+        from django.db import transaction
+        with transaction.atomic():
+            alias.is_used=True
+            alias.save()
+
+            self.alias = alias
+            self.state = 1
+            if not self.machine_sn:
+                self.machine_sn = shortuuid.ShortUUID().random(length=16)
+
+            if not self.machine_secret:
+                machine_str = self.alias.name + self.os_name + self.os_version + self.comp_name + self.comp_version + self.machine_sn
+
+                m = hashlib.md5()
+                m.update(make_password(str(machine_str), 'pg_perf_farm'))
+                self.machine_secret = m.hexdigest()
+
+            self.save()
+
+        user_email = 
+        return  {"is_success": True, "alias": self.alias, "secrct": self.machine_secret, "email":}
\ No newline at end of file
index 26fbe391299bb676f0dae30238a9beaf154239bd..fad5ec7beea5a23a9b6aa558905b432c1952809d 100644 (file)
@@ -85,6 +85,17 @@ TEMPLATES = [
     },
 ]
 
+# PASSWORD_HASHERS = (
+#     'django.contrib.auth.hashers.MD5PasswordHasher',
+#     'django.contrib.auth.hashers.PBKDF2PasswordHasher',
+#     'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
+#     'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
+#     'django.contrib.auth.hashers.BCryptPasswordHasher',
+#     'django.contrib.auth.hashers.SHA1PasswordHasher',
+#
+#     'django.contrib.auth.hashers.CryptPasswordHasher',
+# )
+
 WSGI_APPLICATION = 'pgperffarm.wsgi.application'
 
 # Database