summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHongyuan Ma2018-05-15 14:49:46 +0000
committerHongyuan Ma2018-05-15 14:49:46 +0000
commit4a4f408c3fbcb312e574865d849da7470b677a34 (patch)
treeb24f4b55c52969d334af91a04a1e5df9ffcc13ea
parent3c0fc2a762a8169081590ee2c464d206585b62ac (diff)
add apps,db_tools,extra_apps folders
-rw-r--r--web/apps/__init__.py0
-rw-r--r--web/apps/tests/__init__.py0
-rw-r--r--web/apps/tests/admin.py3
-rw-r--r--web/apps/tests/apps.py6
-rw-r--r--web/apps/tests/models.py99
-rw-r--r--web/apps/tests/tests.py3
-rw-r--r--web/apps/tests/views.py3
-rw-r--r--web/apps/user_operation/__init__.py0
-rw-r--r--web/apps/user_operation/admin.py3
-rw-r--r--web/apps/user_operation/apps.py5
-rw-r--r--web/apps/user_operation/models.py45
-rw-r--r--web/apps/user_operation/tests.py3
-rw-r--r--web/apps/user_operation/views.py3
-rw-r--r--web/apps/users/__init__.py0
-rw-r--r--web/apps/users/admin.py3
-rw-r--r--web/apps/users/apps.py5
-rw-r--r--web/apps/users/models.py23
-rw-r--r--web/apps/users/serializers.py8
-rw-r--r--web/apps/users/tests.py3
-rw-r--r--web/apps/users/views.py22
-rw-r--r--web/db_tools/data/category_date.py1
-rw-r--r--web/db_tools/data/user_date.py26
-rw-r--r--web/db_tools/import_category_data.py14
-rw-r--r--web/db_tools/import_user_data.py26
-rw-r--r--web/extra_apps/__init__.py0
-rw-r--r--web/git0
-rw-r--r--web/requirements.txt8
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/git b/web/git
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/web/git
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