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
# 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')
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)'
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
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
},
]
+# 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