Browse Source

新增用户管理(南京质检院)

刘凡 2 years ago
parent
commit
46412bfbbc
88 changed files with 463 additions and 17 deletions
  1. 1 0
      TestLaboratory/settings.py
  2. 3 2
      apps/group/urls.py
  3. 13 1
      apps/group/views/grouplistview.py
  4. 46 0
      apps/group/views/groupuserview.py
  5. 1 0
      apps/plan/views/planview.py
  6. 2 0
      apps/user/urls.py
  7. 47 0
      apps/user/views/userexportview.py
  8. 1 0
      apps/user/views/userlistview.py
  9. BIN
      db/permission.xlsx
  10. BIN
      db/role_permissions.xlsx
  11. BIN
      lims-frontend/dist-recheck.zip
  12. 1 1
      lims-frontend/dist/browserconfig.xml
  13. 1 1
      lims-frontend/dist/css/chunk-0281b3aa.9b88a26e.css
  14. 1 0
      lims-frontend/dist/css/chunk-10d2afba.ce57d308.css
  15. 0 0
      lims-frontend/dist/css/chunk-16c48c2e.7fc2d857.css
  16. 0 1
      lims-frontend/dist/css/chunk-229e8b0d.c6a60be1.css
  17. 1 1
      lims-frontend/dist/css/chunk-241ed1ca.ebb262cf.css
  18. 1 0
      lims-frontend/dist/css/chunk-32c93460.7d1c1019.css
  19. 1 0
      lims-frontend/dist/css/chunk-3fa938b0.67c1abc3.css
  20. 0 1
      lims-frontend/dist/css/chunk-4d04fe3e.84a27482.css
  21. 0 1
      lims-frontend/dist/css/chunk-50b41631.fd18f11f.css
  22. 1 0
      lims-frontend/dist/css/chunk-690a2502.516a67e1.css
  23. 1 0
      lims-frontend/dist/css/chunk-6dff90aa.0594504e.css
  24. 0 1
      lims-frontend/dist/css/chunk-719f2106.b52eb0d9.css
  25. 1 1
      lims-frontend/dist/css/chunk-7f50406f.42fd3f6b.css
  26. 0 1
      lims-frontend/dist/css/chunk-8e31973a.873c8817.css
  27. 1 0
      lims-frontend/dist/css/chunk-fd7a9eb6.3a5a8038.css
  28. 1 1
      lims-frontend/dist/index.html
  29. 0 0
      lims-frontend/dist/js/app.8c71c862.js
  30. 0 0
      lims-frontend/dist/js/app.d810249c.js
  31. 0 0
      lims-frontend/dist/js/chunk-0281b3aa.3123ee64.js
  32. 0 0
      lims-frontend/dist/js/chunk-10d2afba.7c41cba7.js
  33. 0 0
      lims-frontend/dist/js/chunk-140ff0e2.05dba521.js
  34. 0 0
      lims-frontend/dist/js/chunk-16c48c2e.f5a39a80.js
  35. 0 0
      lims-frontend/dist/js/chunk-1acc34dc.b58dc71a.js
  36. 0 0
      lims-frontend/dist/js/chunk-229e8b0d.75c2772c.js
  37. 0 0
      lims-frontend/dist/js/chunk-241ed1ca.8103bcd5.js
  38. 0 0
      lims-frontend/dist/js/chunk-28e0a0ac.3420e88c.js
  39. 0 0
      lims-frontend/dist/js/chunk-2c8f5038.0ba3baea.js
  40. 0 0
      lims-frontend/dist/js/chunk-2c8f5038.513dbbc6.js
  41. 0 0
      lims-frontend/dist/js/chunk-2f551c08.5d77341a.js
  42. 0 0
      lims-frontend/dist/js/chunk-32c93460.dae9287a.js
  43. 0 0
      lims-frontend/dist/js/chunk-3b2a3e5a.b0f060aa.js
  44. 0 0
      lims-frontend/dist/js/chunk-3b2a3e5a.b9e9767f.js
  45. 0 0
      lims-frontend/dist/js/chunk-3fa938b0.1debc69f.js
  46. 0 0
      lims-frontend/dist/js/chunk-42ba316b.809a0c1d.js
  47. 0 0
      lims-frontend/dist/js/chunk-457fc716.375dffe8.js
  48. 0 0
      lims-frontend/dist/js/chunk-48594924.2f8c9f8d.js
  49. 0 0
      lims-frontend/dist/js/chunk-48594924.ad0beba2.js
  50. 0 0
      lims-frontend/dist/js/chunk-4d04fe3e.96858567.js
  51. 0 0
      lims-frontend/dist/js/chunk-50b41631.efae28c2.js
  52. 0 0
      lims-frontend/dist/js/chunk-61ad3c7e.211bd7a7.js
  53. 0 0
      lims-frontend/dist/js/chunk-61ad3c7e.8f2fe99b.js
  54. 0 0
      lims-frontend/dist/js/chunk-690a2502.666b5816.js
  55. 0 0
      lims-frontend/dist/js/chunk-6d88c632.295cce00.js
  56. 0 0
      lims-frontend/dist/js/chunk-6d88c632.970e4c1a.js
  57. 0 0
      lims-frontend/dist/js/chunk-6dff90aa.798f9911.js
  58. 0 0
      lims-frontend/dist/js/chunk-6fb66e82.04521d53.js
  59. 0 0
      lims-frontend/dist/js/chunk-6fb66e82.d4cc4725.js
  60. 0 0
      lims-frontend/dist/js/chunk-719f2106.86baecc1.js
  61. 0 0
      lims-frontend/dist/js/chunk-7f50406f.ef617aba.js
  62. 0 0
      lims-frontend/dist/js/chunk-8e31973a.dfc97e88.js
  63. 0 0
      lims-frontend/dist/js/chunk-b371d0a0.1f329c3b.js
  64. 0 0
      lims-frontend/dist/js/chunk-fd7a9eb6.156d0b8e.js
  65. BIN
      lims-frontend/dist/logo.png
  66. BIN
      lims-frontend/dist/logo2.png
  67. 103 0
      logs/all-2022-10-09.log
  68. 138 0
      logs/all-2022-10-10.log
  69. 2 0
      logs/all-2022-10-11.log
  70. 84 0
      logs/all-2022-10-12.log
  71. 0 0
      logs/error-2022-10-09.log
  72. 0 0
      logs/error-2022-10-10.log
  73. 0 0
      logs/error-2022-10-11.log
  74. 0 0
      logs/error-2022-10-12.log
  75. 0 0
      logs/info-2022-10-09.log
  76. 0 0
      logs/info-2022-10-10.log
  77. 0 0
      logs/info-2022-10-11.log
  78. 0 0
      logs/info-2022-10-12.log
  79. 11 4
      mysql-init/TestLaboratory.sql
  80. BIN
      static/case-template/测试用例-已执行.xlsx
  81. BIN
      static/case-template/测试用例-未执行.xlsx
  82. BIN
      static/report-tmp/测试报告表格-5.docx
  83. BIN
      static/user-file-export/2022-10-12 11:32:35.830083/用户信息.xls
  84. BIN
      static/user-file-export/2022-10-12 11:33:03.018291/用户信息.xls
  85. BIN
      static/user-file-export/2022-10-12 11:33:37.322016/用户信息.xls
  86. BIN
      static/user-file-export/2022-10-12 21:24:14.706198/用户信息.xls
  87. BIN
      static/user-file-export/2022-10-12 21:24:43.965067/用户信息.xls
  88. BIN
      static/user-file-export/2022-10-12 21:25:26.062981/用户信息.xls

+ 1 - 0
TestLaboratory/settings.py

@@ -29,6 +29,7 @@ TASK_ROOT = 'static/task-statement/'
 CASE_TEMPLATE_ROOT = 'static/case-template/测试用例模版.xlsx'
 CASE_FILE_ROOT = 'static/case-file/'
 CASE_FILE_EXPORT = 'static/case-file-export/'
+USER_FILE_ROOT = 'static/user-file-export/'
 HTTP_HEAD = 'http://172.26.0.14:8003/'
 
 

+ 3 - 2
apps/group/urls.py

@@ -1,10 +1,11 @@
 from django.urls import path
 from .views.grouplistview import GroupListView
+from .views.groupuserview import GroupUserView
 from .views.groupview import GroupView, GroupEdit
 
 urlpatterns = [
     path('', GroupListView.as_view()),
+    path('user', GroupUserView.as_view()),
     path('<str:group_id>', GroupView.as_view()),
-    path('<str:group_id>/edit', GroupEdit.as_view()),
-
+    path('<str:group_id>/edit', GroupEdit.as_view())
 ]

+ 13 - 1
apps/group/views/grouplistview.py

@@ -22,7 +22,11 @@ class GroupListView(APIView):
     def post(request, *args, **kwargs):
         name = request.POST.get('name')
         manager_id = request.POST.get('manager_id')
-        manager = User.objects.filter(id=manager_id)[0]
+        manager = User.objects.filter(id=manager_id)
+        if not manager:
+            logger.error("用户不存在")
+            return HttpResponse(status=500, content='用户不存在')
+        manager = manager[0]
         group = Group.objects.filter(name=name, delete=False)
         if group:
             logger.error("组名已存在,请修改组名重新上传")
@@ -49,6 +53,7 @@ class GroupListView(APIView):
         name = request.GET.get('name')
         code = request.GET.get('code')
         manager_id = request.GET.get('manager_id')
+        user_id = request.GET.get('user_id')
 
         groups = Group.objects.order_by('-create_time').filter(delete=False)
         if group_id:
@@ -59,6 +64,13 @@ class GroupListView(APIView):
             groups = groups.filter(code=code)
         if manager_id:
             groups = groups.filter(manager=manager_id)
+        if user_id:
+            user = User.objects.filter(id=user_id)
+            if not user:
+                logger.error("用户不存在")
+                return HttpResponse(status=500, content='用户不存在')
+            user = user[0]
+            groups = groups & user.group_set.all()
 
         return_groups = list()
         for group in groups:

+ 46 - 0
apps/group/views/groupuserview.py

@@ -0,0 +1,46 @@
+import logging
+
+from rest_framework.views import APIView
+from rest_framework.response import Response
+
+from apps.group.models import Group
+from apps.user.middleware.rolecontrol import RoleControl
+from apps.user.models import User
+
+logger = logging.getLogger('django')
+
+
+class GroupUserView(APIView):
+    # create group
+    @staticmethod
+    @RoleControl
+    def get(request, *args, **kwargs):
+        groups = Group.objects.filter(delete=False)
+        users = set(User.objects.filter(delete=False))
+
+        users_info = []
+        for group in groups:
+            user_group = {'groupName': group.name,
+                          'userList': list()
+                          }
+            users = users - set(group.users.all())
+            for user in group.users.all():
+                user_group['userList'].append({
+                    'userid': user.id,
+                    'username': user.username,
+                    'identify': user.identify,
+                    'is_login': user.is_login
+                })
+            users_info.append(user_group)
+        user_group = {'groupName': '默认分组',
+                      'userList': list()
+                      }
+        for user in users:
+            user_group['userList'].append({
+                'userid': user.id,
+                'username': user.username,
+                'identify': user.identify,
+                'is_login': user.is_login
+            })
+        users_info.append(user_group)
+        return Response(users_info)

+ 1 - 0
apps/plan/views/planview.py

@@ -47,6 +47,7 @@ class PlanView(APIView):
                     'title': task.title,
                     'description': task.description,
                     'state': task.state,
+                    'executor': {'id': task.executor.id, 'name': task.executor.username},
                     'create_time': task.create_time,
                     'update_time': task.update_time
                 })

+ 2 - 0
apps/user/urls.py

@@ -1,5 +1,6 @@
 from django.urls import path
 
+from .views.userexportview import UserExportView
 from .views.userjoinview import UserJoinView
 from .views.userlistview import UserListView, UserListLogin
 from .views.userquitview import UserQuitView
@@ -9,6 +10,7 @@ urlpatterns = [
     # 注册登录代码
     path('', UserListView.as_view()),
     path('login', UserListLogin.as_view()),
+    path('export', UserExportView.as_view()),
     path('<str:user_id>', UserView.as_view()),
     path('<str:user_id>/edit', UserEdit.as_view()),
     path('<str:user_id>/join', UserJoinView.as_view()),

+ 47 - 0
apps/user/views/userexportview.py

@@ -0,0 +1,47 @@
+import datetime
+import logging
+import os
+
+from django.http import HttpResponse
+from rest_framework.response import Response
+from rest_framework.views import APIView
+
+from TestLaboratory.settings import USER_FILE_ROOT
+from apps.log.models import get_log, gen_log
+from apps.user.middleware.rolecontrol import RoleControl
+from apps.user.models import User
+from util_xlsx import write_to_xlsx
+from utils.util_add_id import get_id
+from utils.util_jwt import create_token_for_login
+
+logger = logging.getLogger('django')
+
+
+class UserExportView(APIView):
+    authentication_classes = []
+
+    @staticmethod
+    # @RoleControl
+    def get(request, *args, **kwargs):
+        user_all = User.objects.order_by('-create_time')
+
+        users_info = [['用户名', '企业', '联系方式', '系统角色']]
+        identify = ['系统管理员', '测试管理员', '测试工程师']
+        for user in user_all:
+            users_info.append([user.username, user.name, user.tel, identify[user.identify]])
+
+        file_name = "用户信息.xls"
+        update_time = datetime.datetime.now()
+        file_dir = USER_FILE_ROOT + str(update_time)
+        if not os.path.exists(file_dir):
+            os.makedirs(file_dir)
+        file_path = file_dir + "/" + file_name
+
+        sio = write_to_xlsx(file_path, users_info)
+        sio.seek(0)
+        response = HttpResponse(sio.getvalue(), content_type='application/vnd.ms-excel')
+        response['Content-Disposition'] = 'attachment; filename="{0}"'.format(file_name).encode('utf-8', 'ISO-8859-1')
+        response.write(sio.getvalue())
+        # executor, action, method = get_log(request)
+        # gen_log(action, "导出用户信息", "全部用户", method, executor)
+        return response

+ 1 - 0
apps/user/views/userlistview.py

@@ -75,6 +75,7 @@ class UserListView(APIView):
                 'username': user.username,
                 'name': user.name,
                 'identify': user.identify,
+                'tel': user.tel,
                 'is_login': user.is_login
             })
         return Response(users_info)

BIN
db/permission.xlsx


BIN
db/role_permissions.xlsx


BIN
lims-frontend/dist.zip → lims-frontend/dist-recheck.zip


+ 1 - 1
lims-frontend/dist/browserconfig.xml

@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="utf-8"?>
-<browserconfig><msapplication><tile><square70x70logo src="/ms-icon-70x70.png"/><square150x150logo src="/ms-icon-150x150.png"/><square310x310logo src="/ms-icon-310x310.png"/><TileColor>#ffffff</TileColor></tile></msapplication></browserconfig>
+<browserconfig><msapplication><tile><square70x70logo src="/logo.png"/><square150x150logo src="/logo.png"/><square310x310logo src="/logo.png"/><TileColor>#ffffff</TileColor></tile></msapplication></browserconfig>

+ 1 - 1
lims-frontend/dist/css/chunk-42ba316b.cd462228.css → lims-frontend/dist/css/chunk-0281b3aa.9b88a26e.css

@@ -1 +1 @@
-.c-icon[data-v-75bbe00c]{margin-right:.3rem}.fade-enter-active[data-v-fc5d6588],.fade-leave-active[data-v-fc5d6588]{-webkit-transition:opacity .3s;transition:opacity .3s}.fade-enter[data-v-fc5d6588],.fade-leave-to[data-v-fc5d6588]{opacity:0}
+.c-icon[data-v-a36641b0]{margin-right:.3rem}.fade-enter-active[data-v-fc5d6588],.fade-leave-active[data-v-fc5d6588]{-webkit-transition:opacity .3s;transition:opacity .3s}.fade-enter[data-v-fc5d6588],.fade-leave-to[data-v-fc5d6588]{opacity:0}

+ 1 - 0
lims-frontend/dist/css/chunk-10d2afba.ce57d308.css

@@ -0,0 +1 @@
+.textMarginLeft[data-v-5aacad4c]{margin-left:50px}.infoColor[data-v-5aacad4c]{color:#909399}.fileButton[data-v-5aacad4c]{margin-left:20px;font-size:14px;font-weight:300}.indexColor[data-v-5aacad4c]{width:40px;color:#fff;text-align:center;font-size:12px;padding:2px;border-radius:10%;margin-top:10px;margin-right:10px;display:inline-block}

+ 0 - 0
lims-frontend/dist/css/chunk-6946487f.91f76422.css → lims-frontend/dist/css/chunk-16c48c2e.7fc2d857.css


+ 0 - 1
lims-frontend/dist/css/chunk-229e8b0d.c6a60be1.css

@@ -1 +0,0 @@
-.loginBox[data-v-9be1e39e]{height:400px;width:400px}.loginBox[data-v-9be1e39e],.rBox[data-v-9be1e39e]{margin:0 auto;margin-top:260px;background-color:#fcfcfc}.rBox[data-v-9be1e39e]{height:35%;width:500px}.inputArea[data-v-9be1e39e]{margin:50px 50px}.inputHeader[data-v-9be1e39e]{font-size:27px;font-family:Source Han Sans CN;font-weight:400;color:#444;margin-bottom:42px}.logtext[data-v-9be1e39e]{width:50px;height:13px;font-size:16px;font-family:Source Han Sans CN;font-weight:400;color:#a9a9b5}.loginBtn[data-v-9be1e39e]{width:349px;height:46px;background:#19a97b}

+ 1 - 1
lims-frontend/dist/css/chunk-b371d0a0.c1209d6e.css → lims-frontend/dist/css/chunk-241ed1ca.ebb262cf.css

@@ -1 +1 @@
-.c-icon[data-v-75bbe00c]{margin-right:.3rem}.fade-enter-active[data-v-3b21ac01],.fade-leave-active[data-v-3b21ac01]{-webkit-transition:opacity .3s;transition:opacity .3s}.fade-enter[data-v-3b21ac01],.fade-leave-to[data-v-3b21ac01]{opacity:0}
+.c-icon[data-v-a36641b0]{margin-right:.3rem}.fade-enter-active[data-v-3b21ac01],.fade-leave-active[data-v-3b21ac01]{-webkit-transition:opacity .3s;transition:opacity .3s}.fade-enter[data-v-3b21ac01],.fade-leave-to[data-v-3b21ac01]{opacity:0}

+ 1 - 0
lims-frontend/dist/css/chunk-32c93460.7d1c1019.css

@@ -0,0 +1 @@
+.textInfo[data-v-22361d9a]{margin-left:50px}

+ 1 - 0
lims-frontend/dist/css/chunk-3fa938b0.67c1abc3.css

@@ -0,0 +1 @@
+.textMarginLeft[data-v-442a705c]{margin-left:50px}.infoColor[data-v-442a705c]{color:#909399}

+ 0 - 1
lims-frontend/dist/css/chunk-4d04fe3e.84a27482.css

@@ -1 +0,0 @@
-.textMarginLeft[data-v-76602aff]{margin-left:50px}.infoColor[data-v-76602aff]{color:#909399}.fileButton[data-v-76602aff]{margin-left:20px;font-size:14px;font-weight:300}.indexColor[data-v-76602aff]{width:40px;color:#fff;text-align:center;font-size:12px;padding:2px;border-radius:10%;margin-top:10px;margin-right:10px;display:inline-block}

+ 0 - 1
lims-frontend/dist/css/chunk-50b41631.fd18f11f.css

@@ -1 +0,0 @@
-.mainArea[data-v-3fbe8a30]{width:60%;margin:100px auto}.formArea[data-v-3fbe8a30]{margin-top:40px}

+ 1 - 0
lims-frontend/dist/css/chunk-690a2502.516a67e1.css

@@ -0,0 +1 @@
+.mainArea[data-v-116f545a]{width:60%;margin:100px auto}.formArea[data-v-116f545a]{margin-top:40px}

+ 1 - 0
lims-frontend/dist/css/chunk-6dff90aa.0594504e.css

@@ -0,0 +1 @@
+.textMarginLeft[data-v-2eb73b2e]{margin-left:50px}.infoColor[data-v-2eb73b2e]{color:#909399}

+ 0 - 1
lims-frontend/dist/css/chunk-719f2106.b52eb0d9.css

@@ -1 +0,0 @@
-.textMarginLeft[data-v-d27f3a40]{margin-left:50px}.infoColor[data-v-d27f3a40]{color:#909399}

+ 1 - 1
lims-frontend/dist/css/chunk-457fc716.ba4579c0.css → lims-frontend/dist/css/chunk-7f50406f.42fd3f6b.css

@@ -1 +1 @@
-.c-icon[data-v-75bbe00c]{margin-right:.3rem}.fade-enter-active[data-v-71964fb9],.fade-leave-active[data-v-71964fb9]{-webkit-transition:opacity .3s;transition:opacity .3s}.fade-enter[data-v-71964fb9],.fade-leave-to[data-v-71964fb9]{opacity:0}
+.c-icon[data-v-a36641b0]{margin-right:.3rem}.fade-enter-active[data-v-71964fb9],.fade-leave-active[data-v-71964fb9]{-webkit-transition:opacity .3s;transition:opacity .3s}.fade-enter[data-v-71964fb9],.fade-leave-to[data-v-71964fb9]{opacity:0}

+ 0 - 1
lims-frontend/dist/css/chunk-8e31973a.873c8817.css

@@ -1 +0,0 @@
-.textInfo[data-v-6dcbe41a]{margin-left:50px}

+ 1 - 0
lims-frontend/dist/css/chunk-fd7a9eb6.3a5a8038.css

@@ -0,0 +1 @@
+.loginBox[data-v-5516f387]{height:-webkit-max-content;height:-moz-max-content;height:max-content;width:400px;position:relative}.loginBox[data-v-5516f387],.rBox[data-v-5516f387]{margin:0 auto;margin-top:260px;background-color:#fcfcfc}.rBox[data-v-5516f387]{height:35%;width:500px}.inputArea[data-v-5516f387]{margin:10px 50px 50px}.inputHeader[data-v-5516f387]{font-size:27px;font-family:Source Han Sans CN;font-weight:400;color:#444;margin-bottom:42px}.logtext[data-v-5516f387]{width:50px;height:13px;font-size:16px;font-family:Source Han Sans CN;font-weight:400;color:#a9a9b5}.loginBtn[data-v-5516f387]{width:349px;height:46px;background:#19a97b}

File diff suppressed because it is too large
+ 1 - 1
lims-frontend/dist/index.html


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/app.8c71c862.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/app.d810249c.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/chunk-0281b3aa.3123ee64.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/chunk-10d2afba.7c41cba7.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/chunk-140ff0e2.05dba521.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/chunk-16c48c2e.f5a39a80.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/chunk-1acc34dc.b58dc71a.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/chunk-229e8b0d.75c2772c.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/chunk-241ed1ca.8103bcd5.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/chunk-28e0a0ac.3420e88c.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/chunk-2c8f5038.0ba3baea.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/chunk-2c8f5038.513dbbc6.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/chunk-2f551c08.5d77341a.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/chunk-32c93460.dae9287a.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/chunk-3b2a3e5a.b0f060aa.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/chunk-3b2a3e5a.b9e9767f.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/chunk-3fa938b0.1debc69f.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/chunk-42ba316b.809a0c1d.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/chunk-457fc716.375dffe8.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/chunk-48594924.2f8c9f8d.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/chunk-48594924.ad0beba2.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/chunk-4d04fe3e.96858567.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/chunk-50b41631.efae28c2.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/chunk-61ad3c7e.211bd7a7.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/chunk-61ad3c7e.8f2fe99b.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/chunk-690a2502.666b5816.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/chunk-6d88c632.295cce00.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/chunk-6d88c632.970e4c1a.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/chunk-6dff90aa.798f9911.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/chunk-6fb66e82.04521d53.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/chunk-6fb66e82.d4cc4725.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/chunk-719f2106.86baecc1.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/chunk-7f50406f.ef617aba.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/chunk-8e31973a.dfc97e88.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/chunk-b371d0a0.1f329c3b.js


File diff suppressed because it is too large
+ 0 - 0
lims-frontend/dist/js/chunk-fd7a9eb6.156d0b8e.js


BIN
lims-frontend/dist/logo.png


BIN
lims-frontend/dist/logo2.png


+ 103 - 0
logs/all-2022-10-09.log

@@ -0,0 +1,103 @@
+[INFO] [2022-10-09 21:37:27,287] [autoreload.py:637] [autoreload:run_with_reloader] - Watching for file changes with StatReloader
+[INFO] [2022-10-09 21:38:28,286] [autoreload.py:637] [autoreload:run_with_reloader] - Watching for file changes with StatReloader
+[INFO] [2022-10-09 21:39:11,185] [basehttp.py:161] [basehttp:log_message] - "POST /api/v1/users/login HTTP/1.1" 200 292
+[INFO] [2022-10-09 21:39:31,648] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group HTTP/1.1" 301 0
+[INFO] [2022-10-09 21:39:31,670] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/ HTTP/1.1" 200 2
+[INFO] [2022-10-09 21:39:37,173] [basehttp.py:161] [basehttp:log_message] - "POST /api/v1/group/ HTTP/1.1" 200 84
+[INFO] [2022-10-09 21:39:40,101] [basehttp.py:161] [basehttp:log_message] - "POST /api/v1/group/ HTTP/1.1" 200 84
+[INFO] [2022-10-09 21:39:43,734] [basehttp.py:161] [basehttp:log_message] - "POST /api/v1/group/ HTTP/1.1" 200 84
+[INFO] [2022-10-09 21:39:48,370] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group HTTP/1.1" 301 0
+[INFO] [2022-10-09 21:39:48,402] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/ HTTP/1.1" 200 295
+[INFO] [2022-10-09 21:40:25,109] [basehttp.py:161] [basehttp:log_message] - "POST /api/v1/users/TestLaboratory_V1_User_1/join HTTP/1.1" 200 12
+[INFO] [2022-10-09 21:40:46,677] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group?user_id=160636 HTTP/1.1" 301 0
+[ERROR] [2022-10-09 21:40:46,689] [grouplistview.py:70] [grouplistview:get] - 用户不存在
+[ERROR] [2022-10-09 21:40:46,690] [log.py:224] [log:log_response] - Internal Server Error: /api/v1/group/
+[ERROR] [2022-10-09 21:40:46,690] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/?user_id=160636 HTTP/1.1" 500 15
+[INFO] [2022-10-09 21:41:03,886] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group?user_id=TestLaboratory_V1_User_1 HTTP/1.1" 301 0
+[INFO] [2022-10-09 21:41:03,915] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/?user_id=TestLaboratory_V1_User_1 HTTP/1.1" 200 167
+[INFO] [2022-10-09 21:41:38,778] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group HTTP/1.1" 301 0
+[INFO] [2022-10-09 21:41:38,802] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/ HTTP/1.1" 200 363
+[INFO] [2022-10-09 21:41:49,953] [basehttp.py:161] [basehttp:log_message] - "POST /api/v1/users/TestLaboratory_V1_User_1/join HTTP/1.1" 200 12
+[INFO] [2022-10-09 21:41:54,626] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group?user_id=TestLaboratory_V1_User_1 HTTP/1.1" 301 0
+[INFO] [2022-10-09 21:41:54,656] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/?user_id=TestLaboratory_V1_User_1 HTTP/1.1" 200 333
+[INFO] [2022-10-09 21:45:01,664] [autoreload.py:251] [autoreload:trigger_reload] - /Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/group/views/grouplistview.py changed, reloading.
+[INFO] [2022-10-09 21:45:02,067] [autoreload.py:637] [autoreload:run_with_reloader] - Watching for file changes with StatReloader
+[INFO] [2022-10-09 21:45:26,173] [autoreload.py:251] [autoreload:trigger_reload] - /Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/group/views/grouplistview.py changed, reloading.
+[INFO] [2022-10-09 21:45:26,560] [autoreload.py:637] [autoreload:run_with_reloader] - Watching for file changes with StatReloader
+[INFO] [2022-10-09 21:45:30,334] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group?user_id=TestLaboratory_V1_User_1 HTTP/1.1" 301 0
+[INFO] [2022-10-09 21:45:30,381] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/?user_id=TestLaboratory_V1_User_1 HTTP/1.1" 200 333
+[INFO] [2022-10-09 21:45:38,581] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group?code=596640&user_id=TestLaboratory_V1_User_1 HTTP/1.1" 301 0
+[INFO] [2022-10-09 21:45:38,597] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/?code=596640&user_id=TestLaboratory_V1_User_1 HTTP/1.1" 200 2
+[INFO] [2022-10-09 21:45:41,972] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group?user_id=TestLaboratory_V1_User_1 HTTP/1.1" 301 0
+[INFO] [2022-10-09 21:45:41,994] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/?user_id=TestLaboratory_V1_User_1 HTTP/1.1" 200 333
+[INFO] [2022-10-09 21:45:50,310] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group?code=160636&user_id=TestLaboratory_V1_User_1 HTTP/1.1" 301 0
+[INFO] [2022-10-09 21:45:50,329] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/?code=160636&user_id=TestLaboratory_V1_User_1 HTTP/1.1" 200 167
+[INFO] [2022-10-09 21:54:50,598] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group?code=160636&manager_id=TestLaboratory_V1_User_1&user_id=TestLaboratory_V1_User_1 HTTP/1.1" 301 0
+[INFO] [2022-10-09 21:54:50,621] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/?code=160636&manager_id=TestLaboratory_V1_User_1&user_id=TestLaboratory_V1_User_1 HTTP/1.1" 200 167
+[INFO] [2022-10-09 21:54:55,262] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group?manager_id=TestLaboratory_V1_User_1&user_id=TestLaboratory_V1_User_1 HTTP/1.1" 301 0
+[INFO] [2022-10-09 21:54:55,282] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/?manager_id=TestLaboratory_V1_User_1&user_id=TestLaboratory_V1_User_1 HTTP/1.1" 200 333
+[ERROR] [2022-10-09 21:55:12,063] [grouplistview.py:32] [grouplistview:post] - 组名已存在,请修改组名重新上传
+[ERROR] [2022-10-09 21:55:12,063] [log.py:224] [log:log_response] - Internal Server Error: /api/v1/group/
+[ERROR] [2022-10-09 21:55:12,063] [basehttp.py:161] [basehttp:log_message] - "POST /api/v1/group/ HTTP/1.1" 500 45
+[INFO] [2022-10-09 21:55:33,077] [basehttp.py:161] [basehttp:log_message] - "DELETE /api/v1/group/TestLaboratory_V1_Group_1 HTTP/1.1" 200 12
+[INFO] [2022-10-09 21:55:35,843] [basehttp.py:161] [basehttp:log_message] - "DELETE /api/v1/group/TestLaboratory_V1_Group_2 HTTP/1.1" 200 12
+[INFO] [2022-10-09 21:55:38,582] [basehttp.py:161] [basehttp:log_message] - "DELETE /api/v1/group/TestLaboratory_V1_Group_3 HTTP/1.1" 200 12
+[ERROR] [2022-10-09 21:55:41,145] [groupview.py:23] [groupview:delete] - 分组已删除或不存在
+[ERROR] [2022-10-09 21:55:41,226] [log.py:224] [log:log_response] - Internal Server Error: /api/v1/group/TestLaboratory_V1_Group_4
+Traceback (most recent call last):
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/django/core/handlers/exception.py", line 47, in inner
+    response = get_response(request)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/django/core/handlers/base.py", line 181, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
+    return view_func(*args, **kwargs)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/django/views/generic/base.py", line 70, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/rest_framework/views.py", line 509, in dispatch
+    response = self.handle_exception(exc)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/rest_framework/views.py", line 469, in handle_exception
+    self.raise_uncaught_exception(exc)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception
+    raise exc
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/rest_framework/views.py", line 506, in dispatch
+    response = handler(request, *args, **kwargs)
+  File "/Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/user/middleware/rolecontrol.py", line 48, in __call__
+    return self.func(request, *args, **kwargs)
+  File "/Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/group/views/groupview.py", line 24, in delete
+    group = group[0]
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/django/db/models/query.py", line 300, in __getitem__
+    return self._result_cache[k]
+IndexError: list index out of range
+[ERROR] [2022-10-09 21:55:41,237] [basehttp.py:161] [basehttp:log_message] - "DELETE /api/v1/group/TestLaboratory_V1_Group_4 HTTP/1.1" 500 103776
+[INFO] [2022-10-09 21:55:57,890] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group HTTP/1.1" 301 0
+[INFO] [2022-10-09 21:55:57,903] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/ HTTP/1.1" 200 2
+[INFO] [2022-10-09 21:56:08,444] [basehttp.py:161] [basehttp:log_message] - "POST /api/v1/group/ HTTP/1.1" 200 84
+[INFO] [2022-10-09 21:56:33,987] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group?manager_id=TestLaboratory_V1_User_1 HTTP/1.1" 301 0
+[INFO] [2022-10-09 21:56:34,007] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/?manager_id=TestLaboratory_V1_User_1 HTTP/1.1" 200 99
+[INFO] [2022-10-09 21:56:38,942] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group?user_id=TestLaboratory_V1_User_1 HTTP/1.1" 301 0
+[INFO] [2022-10-09 21:56:38,959] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/?user_id=TestLaboratory_V1_User_1 HTTP/1.1" 200 2
+[INFO] [2022-10-09 21:56:42,219] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group?manager_id=TestLaboratory_V1_User_1 HTTP/1.1" 301 0
+[INFO] [2022-10-09 21:56:42,234] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/?manager_id=TestLaboratory_V1_User_1 HTTP/1.1" 200 99
+[INFO] [2022-10-09 21:56:52,868] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group?manager_id=TestLaboratory_V1_User_1&user_id=TestLaboratory_V1_User_1 HTTP/1.1" 301 0
+[INFO] [2022-10-09 21:56:52,878] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/?manager_id=TestLaboratory_V1_User_1&user_id=TestLaboratory_V1_User_1 HTTP/1.1" 200 2
+[INFO] [2022-10-09 22:03:16,561] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group?user_id=TestLaboratory_V1_User_1 HTTP/1.1" 301 0
+[INFO] [2022-10-09 22:03:16,577] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/?user_id=TestLaboratory_V1_User_1 HTTP/1.1" 200 2
+[INFO] [2022-10-09 22:03:19,375] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group?manager_id=TestLaboratory_V1_User_1 HTTP/1.1" 301 0
+[INFO] [2022-10-09 22:03:19,389] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/?manager_id=TestLaboratory_V1_User_1 HTTP/1.1" 200 99
+[INFO] [2022-10-09 22:03:33,337] [basehttp.py:161] [basehttp:log_message] - "POST /api/v1/users/TestLaboratory_V1_User_1/join HTTP/1.1" 200 12
+[INFO] [2022-10-09 22:03:44,349] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group?manager_id=TestLaboratory_V1_User_1 HTTP/1.1" 301 0
+[INFO] [2022-10-09 22:03:44,369] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/?manager_id=TestLaboratory_V1_User_1 HTTP/1.1" 200 167
+[INFO] [2022-10-09 22:03:48,030] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group?manager_id=TestLaboratory_V1_User_1&user_id=TestLaboratory_V1_User_1 HTTP/1.1" 301 0
+[INFO] [2022-10-09 22:03:48,051] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/?manager_id=TestLaboratory_V1_User_1&user_id=TestLaboratory_V1_User_1 HTTP/1.1" 200 167
+[INFO] [2022-10-09 22:04:22,426] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group?manager_id=&user_id=TestLaboratory_V1_User_1 HTTP/1.1" 301 0
+[INFO] [2022-10-09 22:04:22,449] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/?manager_id=&user_id=TestLaboratory_V1_User_1 HTTP/1.1" 200 167
+[INFO] [2022-10-09 22:05:28,433] [autoreload.py:251] [autoreload:trigger_reload] - /Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/group/views/grouplistview.py changed, reloading.
+[INFO] [2022-10-09 22:05:28,748] [autoreload.py:637] [autoreload:run_with_reloader] - Watching for file changes with StatReloader
+[INFO] [2022-10-09 22:05:31,858] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group?manager_id=&user_id=TestLaboratory_V1_User_1 HTTP/1.1" 301 0
+[INFO] [2022-10-09 22:05:31,908] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/?manager_id=&user_id=TestLaboratory_V1_User_1 HTTP/1.1" 200 167
+[INFO] [2022-10-09 22:05:45,583] [autoreload.py:251] [autoreload:trigger_reload] - /Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/group/views/grouplistview.py changed, reloading.
+[INFO] [2022-10-09 22:05:45,782] [autoreload.py:637] [autoreload:run_with_reloader] - Watching for file changes with StatReloader
+[INFO] [2022-10-09 22:05:47,887] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group?manager_id=&user_id=TestLaboratory_V1_User_1 HTTP/1.1" 301 0
+[INFO] [2022-10-09 22:05:47,937] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/?manager_id=&user_id=TestLaboratory_V1_User_1 HTTP/1.1" 200 167
+[INFO] [2022-10-09 22:06:11,800] [autoreload.py:251] [autoreload:trigger_reload] - /Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/group/views/grouplistview.py changed, reloading.
+[INFO] [2022-10-09 22:06:12,028] [autoreload.py:637] [autoreload:run_with_reloader] - Watching for file changes with StatReloader

+ 138 - 0
logs/all-2022-10-10.log

@@ -0,0 +1,138 @@
+[INFO] [2022-10-10 21:58:15,970] [autoreload.py:637] [autoreload:run_with_reloader] - Watching for file changes with StatReloader
+[INFO] [2022-10-10 21:59:15,606] [basehttp.py:161] [basehttp:log_message] - "POST /api/v1/users/login HTTP/1.1" 200 292
+[WARNING] [2022-10-10 21:59:29,828] [log.py:224] [log:log_response] - Method Not Allowed: /api/v1/group/user
+[WARNING] [2022-10-10 21:59:29,829] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/user HTTP/1.1" 405 40
+[INFO] [2022-10-10 21:59:47,836] [autoreload.py:251] [autoreload:trigger_reload] - /Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/group/urls.py changed, reloading.
+[INFO] [2022-10-10 21:59:48,131] [autoreload.py:637] [autoreload:run_with_reloader] - Watching for file changes with StatReloader
+[WARNING] [2022-10-10 22:00:06,054] [log.py:224] [log:log_response] - Not Found: /api/v1/group/user/
+[WARNING] [2022-10-10 22:00:06,055] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/user/ HTTP/1.1" 404 3544
+[WARNING] [2022-10-10 22:00:25,949] [log.py:224] [log:log_response] - Method Not Allowed: /api/v1/group/user
+[WARNING] [2022-10-10 22:00:25,949] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/user HTTP/1.1" 405 40
+[WARNING] [2022-10-10 22:03:17,499] [log.py:224] [log:log_response] - Method Not Allowed: /api/v1/group/user
+[WARNING] [2022-10-10 22:03:17,500] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/user HTTP/1.1" 405 40
+[INFO] [2022-10-10 22:04:29,468] [autoreload.py:251] [autoreload:trigger_reload] - /Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/group/views/groupuserview.py changed, reloading.
+[INFO] [2022-10-10 22:04:29,778] [autoreload.py:637] [autoreload:run_with_reloader] - Watching for file changes with StatReloader
+[WARNING] [2022-10-10 22:04:35,924] [log.py:224] [log:log_response] - Method Not Allowed: /api/v1/group/user
+[WARNING] [2022-10-10 22:04:35,925] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/user HTTP/1.1" 405 40
+[INFO] [2022-10-10 22:06:20,734] [autoreload.py:251] [autoreload:trigger_reload] - /Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/group/views/groupuserview.py changed, reloading.
+[INFO] [2022-10-10 22:06:21,032] [autoreload.py:637] [autoreload:run_with_reloader] - Watching for file changes with StatReloader
+[WARNING] [2022-10-10 22:06:23,910] [log.py:224] [log:log_response] - Method Not Allowed: /api/v1/group/user
+[WARNING] [2022-10-10 22:06:23,911] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/user HTTP/1.1" 405 40
+[WARNING] [2022-10-10 22:06:26,059] [log.py:224] [log:log_response] - Method Not Allowed: /api/v1/group/user
+[WARNING] [2022-10-10 22:06:26,060] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/user HTTP/1.1" 405 40
+[INFO] [2022-10-10 22:06:32,718] [autoreload.py:251] [autoreload:trigger_reload] - /Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/group/urls.py changed, reloading.
+[INFO] [2022-10-10 22:06:32,996] [autoreload.py:637] [autoreload:run_with_reloader] - Watching for file changes with StatReloader
+[WARNING] [2022-10-10 22:06:34,927] [log.py:224] [log:log_response] - Not Found: /api/v1/group/user
+[WARNING] [2022-10-10 22:06:34,928] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/user HTTP/1.1" 404 3361
+[WARNING] [2022-10-10 22:06:46,833] [log.py:224] [log:log_response] - Not Found: /api/v1/group/user
+[WARNING] [2022-10-10 22:06:46,833] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/user HTTP/1.1" 404 3361
+[INFO] [2022-10-10 22:06:55,130] [autoreload.py:251] [autoreload:trigger_reload] - /Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/group/urls.py changed, reloading.
+[INFO] [2022-10-10 22:06:55,413] [autoreload.py:637] [autoreload:run_with_reloader] - Watching for file changes with StatReloader
+[WARNING] [2022-10-10 22:06:58,384] [log.py:224] [log:log_response] - Method Not Allowed: /api/v1/group/user
+[WARNING] [2022-10-10 22:06:58,385] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/user HTTP/1.1" 405 40
+[INFO] [2022-10-10 22:07:05,001] [autoreload.py:251] [autoreload:trigger_reload] - /Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/group/urls.py changed, reloading.
+[INFO] [2022-10-10 22:07:05,298] [autoreload.py:637] [autoreload:run_with_reloader] - Watching for file changes with StatReloader
+[WARNING] [2022-10-10 22:07:06,591] [log.py:224] [log:log_response] - Method Not Allowed: /api/v1/group/user
+[WARNING] [2022-10-10 22:07:06,591] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/user HTTP/1.1" 405 40
+[INFO] [2022-10-10 22:07:13,825] [autoreload.py:251] [autoreload:trigger_reload] - /Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/group/urls.py changed, reloading.
+[INFO] [2022-10-10 22:07:14,036] [autoreload.py:637] [autoreload:run_with_reloader] - Watching for file changes with StatReloader
+[INFO] [2022-10-10 22:07:55,343] [autoreload.py:251] [autoreload:trigger_reload] - /Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/group/urls.py changed, reloading.
+[INFO] [2022-10-10 22:07:55,558] [autoreload.py:637] [autoreload:run_with_reloader] - Watching for file changes with StatReloader
+[WARNING] [2022-10-10 22:07:57,602] [log.py:224] [log:log_response] - Forbidden: /api/v1/group/user
+[WARNING] [2022-10-10 22:07:57,603] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/user HTTP/1.1" 403 43
+[WARNING] [2022-10-10 22:09:26,351] [log.py:224] [log:log_response] - Forbidden: /api/v1/group/user
+[WARNING] [2022-10-10 22:09:26,352] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/user HTTP/1.1" 403 43
+[WARNING] [2022-10-10 22:09:27,862] [log.py:224] [log:log_response] - Forbidden: /api/v1/group/user
+[WARNING] [2022-10-10 22:09:27,863] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/user HTTP/1.1" 403 43
+[WARNING] [2022-10-10 22:09:28,631] [log.py:224] [log:log_response] - Forbidden: /api/v1/group/user
+[WARNING] [2022-10-10 22:09:28,632] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/user HTTP/1.1" 403 43
+[INFO] [2022-10-10 22:09:52,008] [autoreload.py:637] [autoreload:run_with_reloader] - Watching for file changes with StatReloader
+[WARNING] [2022-10-10 22:09:55,125] [log.py:224] [log:log_response] - Forbidden: /api/v1/group/user
+[WARNING] [2022-10-10 22:09:55,125] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/user HTTP/1.1" 403 43
+[INFO] [2022-10-10 22:09:59,524] [basehttp.py:161] [basehttp:log_message] - "POST /api/v1/users/login HTTP/1.1" 200 292
+[WARNING] [2022-10-10 22:10:16,691] [log.py:224] [log:log_response] - Forbidden: /api/v1/group/user
+[WARNING] [2022-10-10 22:10:16,692] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/user HTTP/1.1" 403 43
+[WARNING] [2022-10-10 22:10:27,353] [log.py:224] [log:log_response] - Forbidden: /api/v1/group/user
+[WARNING] [2022-10-10 22:10:27,353] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/user HTTP/1.1" 403 43
+[ERROR] [2022-10-10 22:10:44,538] [log.py:224] [log:log_response] - Internal Server Error: /api/v1/group/user
+Traceback (most recent call last):
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/django/core/handlers/exception.py", line 47, in inner
+    response = get_response(request)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/django/core/handlers/base.py", line 181, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
+    return view_func(*args, **kwargs)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/django/views/generic/base.py", line 70, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/rest_framework/views.py", line 509, in dispatch
+    response = self.handle_exception(exc)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/rest_framework/views.py", line 469, in handle_exception
+    self.raise_uncaught_exception(exc)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception
+    raise exc
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/rest_framework/views.py", line 506, in dispatch
+    response = handler(request, *args, **kwargs)
+  File "/Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/user/middleware/rolecontrol.py", line 48, in __call__
+    return self.func(request, *args, **kwargs)
+  File "/Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/group/views/groupuserview.py", line 26, in get
+    users = users - group.users
+TypeError: unsupported operand type(s) for -: 'QuerySet' and 'ManyRelatedManager'
+[ERROR] [2022-10-10 22:10:44,539] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/user HTTP/1.1" 500 100745
+[INFO] [2022-10-10 22:11:57,718] [autoreload.py:251] [autoreload:trigger_reload] - /Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/group/views/groupuserview.py changed, reloading.
+[INFO] [2022-10-10 22:11:58,030] [autoreload.py:637] [autoreload:run_with_reloader] - Watching for file changes with StatReloader
+[ERROR] [2022-10-10 22:12:00,124] [log.py:224] [log:log_response] - Internal Server Error: /api/v1/group/user
+Traceback (most recent call last):
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/django/core/handlers/exception.py", line 47, in inner
+    response = get_response(request)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/django/core/handlers/base.py", line 181, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
+    return view_func(*args, **kwargs)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/django/views/generic/base.py", line 70, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/rest_framework/views.py", line 509, in dispatch
+    response = self.handle_exception(exc)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/rest_framework/views.py", line 469, in handle_exception
+    self.raise_uncaught_exception(exc)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception
+    raise exc
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/rest_framework/views.py", line 506, in dispatch
+    response = handler(request, *args, **kwargs)
+  File "/Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/user/middleware/rolecontrol.py", line 48, in __call__
+    return self.func(request, *args, **kwargs)
+  File "/Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/group/views/groupuserview.py", line 26, in get
+    users = users - group.users.all()
+TypeError: unsupported operand type(s) for -: 'QuerySet' and 'QuerySet'
+[ERROR] [2022-10-10 22:12:00,125] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/user HTTP/1.1" 500 100697
+[INFO] [2022-10-10 22:13:48,407] [autoreload.py:251] [autoreload:trigger_reload] - /Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/group/views/groupuserview.py changed, reloading.
+[INFO] [2022-10-10 22:13:48,709] [autoreload.py:637] [autoreload:run_with_reloader] - Watching for file changes with StatReloader
+[ERROR] [2022-10-10 22:13:53,804] [log.py:224] [log:log_response] - Internal Server Error: /api/v1/group/user
+Traceback (most recent call last):
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/django/core/handlers/exception.py", line 47, in inner
+    response = get_response(request)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/django/core/handlers/base.py", line 181, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
+    return view_func(*args, **kwargs)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/django/views/generic/base.py", line 70, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/rest_framework/views.py", line 509, in dispatch
+    response = self.handle_exception(exc)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/rest_framework/views.py", line 469, in handle_exception
+    self.raise_uncaught_exception(exc)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception
+    raise exc
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/rest_framework/views.py", line 506, in dispatch
+    response = handler(request, *args, **kwargs)
+  File "/Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/user/middleware/rolecontrol.py", line 48, in __call__
+    return self.func(request, *args, **kwargs)
+  File "/Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/group/views/groupuserview.py", line 27, in get
+    for user in group.users:
+TypeError: 'ManyRelatedManager' object is not iterable
+[ERROR] [2022-10-10 22:13:53,806] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/user HTTP/1.1" 500 100459
+[INFO] [2022-10-10 22:14:06,588] [autoreload.py:251] [autoreload:trigger_reload] - /Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/group/views/groupuserview.py changed, reloading.
+[INFO] [2022-10-10 22:14:06,876] [autoreload.py:637] [autoreload:run_with_reloader] - Watching for file changes with StatReloader
+[INFO] [2022-10-10 22:14:08,950] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/user HTTP/1.1" 200 335
+[INFO] [2022-10-10 22:15:35,060] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group?manager_id=&user_id=TestLaboratory_V1_User_1 HTTP/1.1" 301 0
+[INFO] [2022-10-10 22:15:35,072] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/group/?manager_id=&user_id=TestLaboratory_V1_User_1 HTTP/1.1" 200 167
+[INFO] [2022-10-11 14:45:14,253] [autoreload.py:251] [autoreload:trigger_reload] - /Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/plan/views/planview.py changed, reloading.

+ 2 - 0
logs/all-2022-10-11.log

@@ -0,0 +1,2 @@
+[INFO] [2022-10-11 14:45:14,742] [autoreload.py:637] [autoreload:run_with_reloader] - Watching for file changes with StatReloader
+[INFO] [2022-10-12 11:22:16,329] [autoreload.py:251] [autoreload:trigger_reload] - /Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/user/urls.py changed, reloading.

+ 84 - 0
logs/all-2022-10-12.log

@@ -0,0 +1,84 @@
+[INFO] [2022-10-12 11:22:16,700] [autoreload.py:637] [autoreload:run_with_reloader] - Watching for file changes with StatReloader
+[INFO] [2022-10-12 11:30:16,138] [autoreload.py:251] [autoreload:trigger_reload] - /Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/user/views/userexportview.py changed, reloading.
+[INFO] [2022-10-12 11:30:16,433] [autoreload.py:637] [autoreload:run_with_reloader] - Watching for file changes with StatReloader
+[WARNING] [2022-10-12 11:31:45,577] [log.py:224] [log:log_response] - Not Found: /api/v1/user/export
+[WARNING] [2022-10-12 11:31:45,578] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/user/export HTTP/1.1" 404 2967
+[WARNING] [2022-10-12 11:32:17,524] [log.py:224] [log:log_response] - Forbidden: /api/v1/users/export
+[WARNING] [2022-10-12 11:32:17,525] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/users/export HTTP/1.1" 403 43
+[INFO] [2022-10-12 11:32:33,754] [autoreload.py:251] [autoreload:trigger_reload] - /Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/user/views/userexportview.py changed, reloading.
+[INFO] [2022-10-12 11:32:34,063] [autoreload.py:637] [autoreload:run_with_reloader] - Watching for file changes with StatReloader
+[INFO] [2022-10-12 11:32:35,833] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/users/export HTTP/1.1" 200 11264
+[INFO] [2022-10-12 11:33:03,025] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/users/export HTTP/1.1" 200 11264
+[INFO] [2022-10-12 11:33:32,589] [autoreload.py:251] [autoreload:trigger_reload] - /Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/user/views/userexportview.py changed, reloading.
+[INFO] [2022-10-12 11:33:32,909] [autoreload.py:637] [autoreload:run_with_reloader] - Watching for file changes with StatReloader
+[INFO] [2022-10-12 11:33:37,324] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/users/export HTTP/1.1" 200 11264
+[INFO] [2022-10-12 11:34:38,119] [autoreload.py:251] [autoreload:trigger_reload] - /Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/user/views/userexportview.py changed, reloading.
+[INFO] [2022-10-12 11:34:38,431] [autoreload.py:637] [autoreload:run_with_reloader] - Watching for file changes with StatReloader
+[INFO] [2022-10-12 15:05:08,044] [autoreload.py:251] [autoreload:trigger_reload] - /Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/user/views/userlistview.py changed, reloading.
+[INFO] [2022-10-12 15:05:08,367] [autoreload.py:637] [autoreload:run_with_reloader] - Watching for file changes with StatReloader
+[INFO] [2022-10-12 21:23:53,103] [autoreload.py:637] [autoreload:run_with_reloader] - Watching for file changes with StatReloader
+[ERROR] [2022-10-12 21:24:14,774] [log.py:224] [log:log_response] - Internal Server Error: /api/v1/users/export
+Traceback (most recent call last):
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/django/core/handlers/exception.py", line 47, in inner
+    response = get_response(request)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/django/core/handlers/base.py", line 181, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
+    return view_func(*args, **kwargs)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/django/views/generic/base.py", line 70, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/rest_framework/views.py", line 509, in dispatch
+    response = self.handle_exception(exc)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/rest_framework/views.py", line 469, in handle_exception
+    self.raise_uncaught_exception(exc)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception
+    raise exc
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/rest_framework/views.py", line 506, in dispatch
+    response = handler(request, *args, **kwargs)
+  File "/Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/user/views/userexportview.py", line 45, in get
+    executor, action, method = get_log(request)
+  File "/Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/log/models.py", line 55, in get_log
+    payload = jwt.decode(token, SALT, True)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/jwt/api_jwt.py", line 84, in decode
+    payload, _, _, _ = self._load(jwt)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/jwt/api_jws.py", line 176, in _load
+    raise DecodeError("Invalid token type. Token must be a {0}".format(
+jwt.exceptions.DecodeError: Invalid token type. Token must be a <class 'bytes'>
+[ERROR] [2022-10-12 21:24:14,779] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/users/export HTTP/1.1" 500 108551
+[INFO] [2022-10-12 21:24:28,602] [autoreload.py:251] [autoreload:trigger_reload] - /Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/user/views/userexportview.py changed, reloading.
+[INFO] [2022-10-12 21:24:28,923] [autoreload.py:637] [autoreload:run_with_reloader] - Watching for file changes with StatReloader
+[WARNING] [2022-10-12 21:24:31,151] [log.py:224] [log:log_response] - Forbidden: /api/v1/users/export
+[WARNING] [2022-10-12 21:24:31,154] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/users/export HTTP/1.1" 403 43
+[INFO] [2022-10-12 21:24:40,596] [autoreload.py:251] [autoreload:trigger_reload] - /Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/user/views/userexportview.py changed, reloading.
+[INFO] [2022-10-12 21:24:40,918] [autoreload.py:637] [autoreload:run_with_reloader] - Watching for file changes with StatReloader
+[ERROR] [2022-10-12 21:24:44,016] [log.py:224] [log:log_response] - Internal Server Error: /api/v1/users/export
+Traceback (most recent call last):
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/django/core/handlers/exception.py", line 47, in inner
+    response = get_response(request)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/django/core/handlers/base.py", line 181, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
+    return view_func(*args, **kwargs)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/django/views/generic/base.py", line 70, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/rest_framework/views.py", line 509, in dispatch
+    response = self.handle_exception(exc)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/rest_framework/views.py", line 469, in handle_exception
+    self.raise_uncaught_exception(exc)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception
+    raise exc
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/rest_framework/views.py", line 506, in dispatch
+    response = handler(request, *args, **kwargs)
+  File "/Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/user/views/userexportview.py", line 45, in get
+    executor, action, method = get_log(request)
+  File "/Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/log/models.py", line 55, in get_log
+    payload = jwt.decode(token, SALT, True)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/jwt/api_jwt.py", line 84, in decode
+    payload, _, _, _ = self._load(jwt)
+  File "/Users/liufan/program/software/python/miniforge3/lib/python3.9/site-packages/jwt/api_jws.py", line 176, in _load
+    raise DecodeError("Invalid token type. Token must be a {0}".format(
+jwt.exceptions.DecodeError: Invalid token type. Token must be a <class 'bytes'>
+[ERROR] [2022-10-12 21:24:44,021] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/users/export HTTP/1.1" 500 108551
+[INFO] [2022-10-12 21:25:21,634] [autoreload.py:251] [autoreload:trigger_reload] - /Users/liufan/program/PYTHON/TestLaboratoryGit/TestLaboratory/apps/user/views/userexportview.py changed, reloading.
+[INFO] [2022-10-12 21:25:22,002] [autoreload.py:637] [autoreload:run_with_reloader] - Watching for file changes with StatReloader
+[INFO] [2022-10-12 21:25:26,083] [basehttp.py:161] [basehttp:log_message] - "GET /api/v1/users/export HTTP/1.1" 200 11264

+ 0 - 0
logs/error-2022-10-09.log


+ 0 - 0
logs/error-2022-10-10.log


+ 0 - 0
logs/error-2022-10-11.log


+ 0 - 0
logs/error-2022-10-12.log


+ 0 - 0
logs/info-2022-10-09.log


+ 0 - 0
logs/info-2022-10-10.log


+ 0 - 0
logs/info-2022-10-11.log


+ 0 - 0
logs/info-2022-10-12.log


+ 11 - 4
mysql-init/TestLaboratory.sql

@@ -11,7 +11,7 @@
  Target Server Version : 80029
  File Encoding         : 65001
 
- Date: 06/10/2022 11:36:52
+ Date: 12/10/2022 22:29:41
 */
 
 SET NAMES utf8mb4;
@@ -400,7 +400,7 @@ CREATE TABLE `group_users` (
   KEY `group_users_user_id_3c44daf2_fk_user_id` (`user_id`),
   CONSTRAINT `group_users_group_id_3ffe8048_fk_group_id` FOREIGN KEY (`group_id`) REFERENCES `group` (`id`),
   CONSTRAINT `group_users_user_id_3c44daf2_fk_user_id` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
 
 -- ----------------------------
 -- Records of group_users
@@ -481,6 +481,8 @@ INSERT INTO `permission` VALUES ('TestLaboratory_V1_Permission_32', '查看分
 INSERT INTO `permission` VALUES ('TestLaboratory_V1_Permission_33', '删除分组', '/api/v1/group/.*', 'DELETE', '2022-10-06 09:01:59.000000', '2022-10-06 09:02:03.000000', 0);
 INSERT INTO `permission` VALUES ('TestLaboratory_V1_Permission_34', '加入班级', '/api/v1/users/.*/join', 'POST', '2022-10-06 09:02:48.000000', '2022-10-06 09:02:53.000000', 0);
 INSERT INTO `permission` VALUES ('TestLaboratory_V1_Permission_35', '退出班级', '/api/v1/users/.*/quit', 'POST', '2022-10-06 09:03:27.000000', '2022-10-06 09:03:30.000000', 0);
+INSERT INTO `permission` VALUES ('TestLaboratory_V1_Permission_36', '分组用户', '/api/v1/group/user', 'GET', '2022-10-10 22:02:45.000000', '2022-10-10 22:02:47.000000', 0);
+INSERT INTO `permission` VALUES ('TestLaboratory_V1_Permission_37', '导出用户', '/api/v1/users/group', 'GET', '2022-10-12 11:35:48.000000', '2022-10-12 11:35:50.000000', 0);
 INSERT INTO `permission` VALUES ('TestLaboratory_V1_Permission_4', '编辑测试目标', '/api/v1/software/.*/edit', 'POST', '2021-07-14 10:25:48.000000', '2021-07-14 10:25:50.000000', 0);
 INSERT INTO `permission` VALUES ('TestLaboratory_V1_Permission_5', '删除测试目标', '/api/v1/software/.*', 'DELETE', '2021-07-14 10:26:40.000000', '2021-07-14 10:26:42.000000', 0);
 INSERT INTO `permission` VALUES ('TestLaboratory_V1_Permission_6', '生成测试报告', '/api/v1/software/.*/report', 'GET', '2021-07-14 10:27:43.000000', '2021-07-14 10:27:46.000000', 0);
@@ -552,7 +554,7 @@ CREATE TABLE `role_permissions` (
   PRIMARY KEY (`id`),
   UNIQUE KEY `role_permissions_role_id_permission_id_04f77df0_uniq` (`role_id`,`permission_id`),
   KEY `role_permissions_permission_id_ad343843_fk_permission_id` (`permission_id`)
-) ENGINE=InnoDB AUTO_INCREMENT=83 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+) ENGINE=InnoDB AUTO_INCREMENT=88 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
 
 -- ----------------------------
 -- Records of role_permissions
@@ -586,6 +588,8 @@ INSERT INTO `role_permissions` VALUES (73, 'TestLaboratory_V1_Role_1', 'TestLabo
 INSERT INTO `role_permissions` VALUES (75, 'TestLaboratory_V1_Role_1', 'TestLaboratory_V1_Permission_33');
 INSERT INTO `role_permissions` VALUES (77, 'TestLaboratory_V1_Role_1', 'TestLaboratory_V1_Permission_34');
 INSERT INTO `role_permissions` VALUES (80, 'TestLaboratory_V1_Role_1', 'TestLaboratory_V1_Permission_35');
+INSERT INTO `role_permissions` VALUES (84, 'TestLaboratory_V1_Role_1', 'TestLaboratory_V1_Permission_36');
+INSERT INTO `role_permissions` VALUES (86, 'TestLaboratory_V1_Role_1', 'TestLaboratory_V1_Permission_37');
 INSERT INTO `role_permissions` VALUES (4, 'TestLaboratory_V1_Role_1', 'TestLaboratory_V1_Permission_4');
 INSERT INTO `role_permissions` VALUES (5, 'TestLaboratory_V1_Role_1', 'TestLaboratory_V1_Permission_5');
 INSERT INTO `role_permissions` VALUES (6, 'TestLaboratory_V1_Role_1', 'TestLaboratory_V1_Permission_6');
@@ -620,6 +624,8 @@ INSERT INTO `role_permissions` VALUES (74, 'TestLaboratory_V1_Role_2', 'TestLabo
 INSERT INTO `role_permissions` VALUES (76, 'TestLaboratory_V1_Role_2', 'TestLaboratory_V1_Permission_33');
 INSERT INTO `role_permissions` VALUES (78, 'TestLaboratory_V1_Role_2', 'TestLaboratory_V1_Permission_34');
 INSERT INTO `role_permissions` VALUES (81, 'TestLaboratory_V1_Role_2', 'TestLaboratory_V1_Permission_35');
+INSERT INTO `role_permissions` VALUES (85, 'TestLaboratory_V1_Role_2', 'TestLaboratory_V1_Permission_36');
+INSERT INTO `role_permissions` VALUES (87, 'TestLaboratory_V1_Role_2', 'TestLaboratory_V1_Permission_37');
 INSERT INTO `role_permissions` VALUES (25, 'TestLaboratory_V1_Role_2', 'TestLaboratory_V1_Permission_4');
 INSERT INTO `role_permissions` VALUES (26, 'TestLaboratory_V1_Role_2', 'TestLaboratory_V1_Permission_5');
 INSERT INTO `role_permissions` VALUES (27, 'TestLaboratory_V1_Role_2', 'TestLaboratory_V1_Permission_6');
@@ -638,6 +644,7 @@ INSERT INTO `role_permissions` VALUES (53, 'TestLaboratory_V1_Role_3', 'TestLabo
 INSERT INTO `role_permissions` VALUES (60, 'TestLaboratory_V1_Role_3', 'TestLaboratory_V1_Permission_26');
 INSERT INTO `role_permissions` VALUES (63, 'TestLaboratory_V1_Role_3', 'TestLaboratory_V1_Permission_27');
 INSERT INTO `role_permissions` VALUES (44, 'TestLaboratory_V1_Role_3', 'TestLaboratory_V1_Permission_3');
+INSERT INTO `role_permissions` VALUES (83, 'TestLaboratory_V1_Role_3', 'TestLaboratory_V1_Permission_31');
 INSERT INTO `role_permissions` VALUES (79, 'TestLaboratory_V1_Role_3', 'TestLaboratory_V1_Permission_34');
 INSERT INTO `role_permissions` VALUES (82, 'TestLaboratory_V1_Role_3', 'TestLaboratory_V1_Permission_35');
 COMMIT;
@@ -761,7 +768,7 @@ CREATE TABLE `user` (
 -- Records of user
 -- ----------------------------
 BEGIN;
-INSERT INTO `user` VALUES ('TestLaboratory_V1_User_1', 'honghong', '小红', '123456', '18851111391', 1, '2021-07-13 14:23:25.000000', '2022-10-05 19:43:42.066458', 1, 0);
+INSERT INTO `user` VALUES ('TestLaboratory_V1_User_1', 'honghong', '小红', '123456', '18851111391', 1, '2021-07-13 14:23:25.000000', '2022-10-10 22:09:59.520843', 1, 0);
 INSERT INTO `user` VALUES ('TestLaboratory_V1_User_2', 'zxc', '小蓝', '123456', '11223344556', 2, '2021-09-26 15:41:37.000000', '1900-01-20 17:33:18.000000', 0, 0);
 INSERT INTO `user` VALUES ('TestLaboratory_V1_User_3', 'bcd', '小黄', '123456', '138138138138', 2, '2021-09-26 15:44:39.000000', '2021-09-26 15:44:43.000000', 0, 0);
 COMMIT;

BIN
static/case-template/测试用例-已执行.xlsx


BIN
static/case-template/测试用例-未执行.xlsx


BIN
static/report-tmp/测试报告表格-5.docx


BIN
static/user-file-export/2022-10-12 11:32:35.830083/用户信息.xls


BIN
static/user-file-export/2022-10-12 11:33:03.018291/用户信息.xls


BIN
static/user-file-export/2022-10-12 11:33:37.322016/用户信息.xls


BIN
static/user-file-export/2022-10-12 21:24:14.706198/用户信息.xls


BIN
static/user-file-export/2022-10-12 21:24:43.965067/用户信息.xls


BIN
static/user-file-export/2022-10-12 21:25:26.062981/用户信息.xls


Some files were not shown because too many files changed in this diff