diff options
author | Hongyuan Ma | 2018-05-15 14:49:46 +0000 |
---|---|---|
committer | Hongyuan Ma | 2018-05-15 14:49:46 +0000 |
commit | 4a4f408c3fbcb312e574865d849da7470b677a34 (patch) | |
tree | b24f4b55c52969d334af91a04a1e5df9ffcc13ea | |
parent | 3c0fc2a762a8169081590ee2c464d206585b62ac (diff) |
add apps,db_tools,extra_apps folders
27 files changed, 310 insertions, 2 deletions
diff --git a/web/apps/__init__.py b/web/apps/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/web/apps/__init__.py diff --git a/web/apps/tests/__init__.py b/web/apps/tests/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/web/apps/tests/__init__.py diff --git a/web/apps/tests/admin.py b/web/apps/tests/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/web/apps/tests/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/web/apps/tests/apps.py b/web/apps/tests/apps.py new file mode 100644 index 0000000..d2a644c --- /dev/null +++ b/web/apps/tests/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class TestsConfig(AppConfig): + name = 'tests' + diff --git a/web/apps/tests/models.py b/web/apps/tests/models.py new file mode 100644 index 0000000..db48aa2 --- /dev/null +++ b/web/apps/tests/models.py @@ -0,0 +1,99 @@ +from datetime import datetime + +from django.db import models +from users.models import UserProfile +from user_operation.models import UserMachine + +# Create your models here. +class TestBranch(models.Model): + """ + test brand + """ + branch_name = models.CharField(max_length=128, verbose_name="branch name", help_text="branch name") + add_time = models.DateTimeField(default=datetime.now, verbose_name="branch added time", help_text="branch added time") + + class Meta: + verbose_name = "test branch" + verbose_name_plural = "test branch" + + def __str__(self): + return self.branch_name + +class TestCategory(models.Model): + """ + tests category + """ + cate_name = models.CharField(max_length=64, verbose_name="cate name", help_text="cate name") + # cate_parent = models.ForeignKey("self", verbose_name="parent category", related_name="sub_cat", help_text="parent category") + cate_order = models.IntegerField(verbose_name="cate order", help_text="order in the current level") + add_time = models.DateTimeField(default=datetime.now, verbose_name="add time", help_text="category added time") + + class Meta: + verbose_name = "tests category" + verbose_name_plural = "tests category" + + def __str__(self): + return self.cate_name + +class Test(models.Model): + """ + tests + """ + test_name = models.CharField(max_length=128, verbose_name="test name", help_text="test name") + test_desc = models.TextField(verbose_name="test desc", help_text="test desc") + test_branch_id= models.ForeignKey(TestBranch, verbose_name="test category", help_text="test category") + test_cate_id= models.ForeignKey(TestCategory, verbose_name="test category", help_text="test category") + # test_item_id = models.CharField(max_length=32, unique=True, verbose_name="test sn", help_text="test sn") + test_owner = models.ForeignKey(UserProfile ,verbose_name="test owner", help_text="person who add this test item") + test_machine_id = models.ForeignKey(UserProfile ,verbose_name="test owner", help_text="person who add this test item") + add_time = models.DateTimeField(default=datetime.now, verbose_name="test added time") + + class Meta: + verbose_name = "tests" + verbose_name_plural = "tests" + + def __str__(self): + return self.test_name + + +class TestResult(models.Model): + """ + test result sample: + + "latency": -1, + "scale": "10", + "end": 1526184453.133798, + "clients": "2", + "start": 1526184333.102856, + "run": 0, + "threads": "2", + "mode": "simple", + "duration": "120", + "tps": "369.666116", + "read-only": false + + """ + + test_id = models.ForeignKey(Test, verbose_name="test sn", help_text="test sn") + latency = models.IntegerField(verbose_name="latency", help_text="latency of the test result") + scale = models.IntegerField(verbose_name="scale", help_text="scale of the test result") + end = models.DecimalField(max_digits=16, decimal_places=6, verbose_name="end", help_text="endtime of the test result") + clients = models.IntegerField(verbose_name="clients", help_text="clients of the test result") + start = models.DecimalField(max_digits=16, decimal_places=6, verbose_name="start", help_text="starttime of the test result") + run = models.IntegerField(verbose_name="run", help_text="run number") + threads = models.IntegerField(verbose_name="threads", help_text="threads of the test result") + + MODE_CHOICE = ( + (1, 'simple') + ) + mode = models.IntegerField(choices=MODE_CHOICE, verbose_name="mode", help_text="test mode") + add_time = models.DateTimeField(default=datetime.now, verbose_name="test result added time") + + class Meta: + verbose_name = "test result" + verbose_name_plural = "test result" + + + + + diff --git a/web/apps/tests/tests.py b/web/apps/tests/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/web/apps/tests/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/web/apps/tests/views.py b/web/apps/tests/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/web/apps/tests/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/web/apps/user_operation/__init__.py b/web/apps/user_operation/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/web/apps/user_operation/__init__.py diff --git a/web/apps/user_operation/admin.py b/web/apps/user_operation/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/web/apps/user_operation/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/web/apps/user_operation/apps.py b/web/apps/user_operation/apps.py new file mode 100644 index 0000000..1411ac8 --- /dev/null +++ b/web/apps/user_operation/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class UserOperationConfig(AppConfig): + name = 'user_operation' diff --git a/web/apps/user_operation/models.py b/web/apps/user_operation/models.py new file mode 100644 index 0000000..019fac2 --- /dev/null +++ b/web/apps/user_operation/models.py @@ -0,0 +1,45 @@ +from datetime import datetime +from django.db import models +from tests.models import Tests,TestBranch +from users.models import UserProfile + +# Create your models here. + +class UserMachine(models.Model): + """ + user machine + """ + machine_sn = models.CharField(max_length=16, verbose_name="machine sn") + machine_secret = models.CharField(max_length=32, verbose_name="machine secret") + machine_owner = models.ForeignKey(UserProfile) + alias = models.CharField(max_length=16, verbose_name="alias") + os_name = models.CharField(max_length=32, verbose_name="operation system name") + os_version = models.CharField(max_length=32, verbose_name="operation system version") + comp_name = models.CharField(max_length=32, verbose_name="compiler name") + comp_version = models.CharField(max_length=32, verbose_name="compiler version") + add_time = models.DateTimeField(default=datetime.now, verbose_name="machine added time") + + class Meta: + verbose_name = "user machines" + verbose_name_plural = "user machines" + + def __str__(self): + return self.machine_sn + +class TestResult(models.Model): + """ + test result + """ + test = models.ForeignKey(Tests) + machine = models.ForeignKey(UserMachine) + pg_config = models.TextField(verbose_name="postgresql config", help_text="postgresql config") + os_config = models.TextField(verbose_name="os config", help_text="os config") + result_desc = models.TextField(verbose_name="test result", help_text="test result") + test_branch = models.ForeignKey(TestBranch, verbose_name="test branch", help_text="branch of this test") + + test_time = models.DateTimeField(verbose_name="test time") + + class Meta: + verbose_name = "test result" + verbose_name_plural = "test result" + diff --git a/web/apps/user_operation/tests.py b/web/apps/user_operation/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/web/apps/user_operation/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/web/apps/user_operation/views.py b/web/apps/user_operation/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/web/apps/user_operation/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/web/apps/users/__init__.py b/web/apps/users/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/web/apps/users/__init__.py diff --git a/web/apps/users/admin.py b/web/apps/users/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/web/apps/users/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/web/apps/users/apps.py b/web/apps/users/apps.py new file mode 100644 index 0000000..e551ce4 --- /dev/null +++ b/web/apps/users/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class UsersConfig(AppConfig): + name = 'apps.users' diff --git a/web/apps/users/models.py b/web/apps/users/models.py new file mode 100644 index 0000000..58b9914 --- /dev/null +++ b/web/apps/users/models.py @@ -0,0 +1,23 @@ +from datetime import datetime + +from django.db import models +from django.contrib.auth.models import AbstractUser + +# Create your models here. +class UserProfile(AbstractUser): + """ + user + """ + # first_name = None + # last_name = None + # user_name = models.CharField(max_length=64, verbose_name="name") + # user_email = models.EmailField(max_length=256, verbose_name="email") + # add_time = models.DateTimeField(default=datetime.now, verbose_name="user added time") + + class Meta: + verbose_name = "user" + verbose_name_plural = "user" + + def __str__(self): + return self.user_name + diff --git a/web/apps/users/serializers.py b/web/apps/users/serializers.py new file mode 100644 index 0000000..2005d5a --- /dev/null +++ b/web/apps/users/serializers.py @@ -0,0 +1,8 @@ +from rest_framework import serializers + +from .models import UserProfile + +class UserProfileSerializer(serializers.ModelSerializer): + class Meta: + model = UserProfile + fields = "__all__"
\ No newline at end of file diff --git a/web/apps/users/tests.py b/web/apps/users/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/web/apps/users/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/web/apps/users/views.py b/web/apps/users/views.py new file mode 100644 index 0000000..638b63d --- /dev/null +++ b/web/apps/users/views.py @@ -0,0 +1,22 @@ +from django.shortcuts import render +from .serializers import UserProfileSerializer +from rest_framework.views import APIView +from rest_framework.response import Response +from rest_framework import mixins +from rest_framework import generics +from rest_framework.pagination import PageNumberPagination + +from rest_framework import viewsets +from .models import UserProfile + +# Create your views here. +class UserProfilePagination(PageNumberPagination): + page_size = 10 + page_size_query_param = 'page_size' + page_query_param = 'p' + max_page_size = 100 + +class UserProfileListViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): + queryset = UserProfile.objects.all() + serializer_class = UserProfileSerializer + pagination_class = UserProfilePagination
\ No newline at end of file diff --git a/web/db_tools/data/category_date.py b/web/db_tools/data/category_date.py new file mode 100644 index 0000000..b8ac261 --- /dev/null +++ b/web/db_tools/data/category_date.py @@ -0,0 +1 @@ +row_data = []
\ No newline at end of file diff --git a/web/db_tools/data/user_date.py b/web/db_tools/data/user_date.py new file mode 100644 index 0000000..017dcf1 --- /dev/null +++ b/web/db_tools/data/user_date.py @@ -0,0 +1,26 @@ +row_data = [ + { + 'password': 'Alice123', + 'is_superuser': False, + 'username': 'Alice', + 'email': '[email protected]', + 'is_staff': False, + 'is_active': False, + }, + { + 'password': 'Bob123', + 'is_superuser': False, + 'username': 'Bob', + 'email': '[email protected]', + 'is_staff': False, + 'is_active': True, + }, + { + 'password': 'Noah123', + 'is_superuser': False, + 'username': 'Noah', + 'email': '[email protected]', + 'is_staff': False, + 'is_active': True, + } +]
\ No newline at end of file diff --git a/web/db_tools/import_category_data.py b/web/db_tools/import_category_data.py new file mode 100644 index 0000000..51e4730 --- /dev/null +++ b/web/db_tools/import_category_data.py @@ -0,0 +1,14 @@ +import sys +import os + +# Use django's model independently +pwd = os.path.dirname(os.path.realpath(__file__)) +sys.path.append(pwd+ "../") +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "PerfFarm.settings") + +# Initialize django +import django +django.setup() + +from tests.models import TestsCategory +# todo
\ No newline at end of file diff --git a/web/db_tools/import_user_data.py b/web/db_tools/import_user_data.py new file mode 100644 index 0000000..94e189b --- /dev/null +++ b/web/db_tools/import_user_data.py @@ -0,0 +1,26 @@ +import sys +import os + +# Use django's model independently +pwd = os.path.dirname(os.path.realpath(__file__)) +sys.path.append(pwd+ "../") +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "PerfFarm.settings") + +# Initialize django +import django +django.setup() + +from users.models import UserProfile +from db_tools.data.user_date import row_data +from django.contrib.auth.hashers import make_password + +for user_deatil in row_data: + users = UserProfile() + users.password = make_password(user_deatil["password"]) + users.is_superuser = user_deatil["is_superuser"] + users.username = user_deatil["username"] + users.email = user_deatil["email"] + users.is_staff = user_deatil["is_staff"] + users.is_active = user_deatil["is_active"] + + users.save()
\ No newline at end of file diff --git a/web/extra_apps/__init__.py b/web/extra_apps/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/web/extra_apps/__init__.py diff --git a/web/requirements.txt b/web/requirements.txt index eb3458b..fb6d2ff 100644 --- a/web/requirements.txt +++ b/web/requirements.txt @@ -1,4 +1,8 @@ -Django==1.8.11 +Django==1.11.10 django-gravatar2==1.4.0 -psycopg2==2.6.1 pycrypto==2.6.1 +psycopg2==2.7.4 +django-filter==1.1.0 +djangorestframework==3.8.1 +Markdown==2.6.11 +pytz==2018.3 |