From 197f2e25b7dacfc693ef1da790f9c5cec5e41cbc Mon Sep 17 00:00:00 2001 From: HuiBin Zhang <3478038112@qq.com> Date: Wed, 29 May 2019 22:42:52 +0800 Subject: [PATCH 01/23] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=AD=A6=E7=94=9F?= =?UTF-8?q?=E7=AB=AFAPI=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- submission/views/student.py | 29 ++++++++++++++++++++++++++++- user/views/student.py | 17 ++++++++++++++++- 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/submission/views/student.py b/submission/views/student.py index 2b3ae7e..5db0131 100644 --- a/submission/views/student.py +++ b/submission/views/student.py @@ -1 +1,28 @@ -from utils.api import APIView \ No newline at end of file +from utils.api import APIView +from rest_framework import status +from ..serializers import ProblemSubmissionSerializers1 +from django.http import HttpResponse, JsonResponse +from ..models import ProblemSubmission + +class GetALLSubmissionAPI(APIView): + def get(self, request): + submission_student_id = int(request.GET.get('submission_student_id')) + # query from database for submissions of student + try: + UserPersonalSubmission = ProblemSubmission.objects.get(id_student=submission_student_id) + except UserPersonalSubmission.DoesNotExist: + return HttpResponse(status=404) + serializer = ProblemSubmissionSerializers1(UserPersonalSubmission) + return JsonResponse(serializer.data,status=status.HTTP_200_OK) + +class GetUserSubmissionAPI(APIView): + def get(self, request): + submission_student_id = int(request.GET.get('submission_student_id')) + submission_problem_id = int(request.GET.get('submission_problem_id')) + # query from database for submissions of student and problem + try: + UserPersonalSubmission = ProblemSubmission.objects.filter(id_student=submission_student_id, id_problem=submission_problem_id) + except ProblemSubmission.DoesNotExist: + return HttpResponse(status=404) + serializer = ProblemSubmissionSerializers1(ProblemSubmission) + return JsonResponse(serializer.data,status=status.HTTP_200_OK) \ No newline at end of file diff --git a/user/views/student.py b/user/views/student.py index 2b3ae7e..1f64f6f 100644 --- a/user/views/student.py +++ b/user/views/student.py @@ -1 +1,16 @@ -from utils.api import APIView \ No newline at end of file +from utils.api import APIView, JSONResponse +from rest_framework import status +from ..serializers import ProblemSubmissionSerializers1 +from django.http import HttpResponse, JsonResponse +from ..models import Role, Permission, Student + +def GetStudentAPI(): + def get(self, request): + # get information from frontend + id_student = int(request.GET.get('id_student')) + try: + Student = Student.objects.get(id=id_student) + except Student.DoesNotExist: + return HttpResponse(status=404) + serializer = ProblemSubmissionSerializers1(Student) + return JsonResponse(serializer.data,status=status.HTTP_200_OK) From 95efdbd336dc59d29a137b07ab038607fc210826 Mon Sep 17 00:00:00 2001 From: HuiBin Zhang <3478038112@qq.com> Date: Wed, 29 May 2019 23:03:05 +0800 Subject: [PATCH 02/23] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=AD=A6=E7=94=9F?= =?UTF-8?q?=E7=AB=AFAPI=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problem/views/student.py | 17 ++++++++++++++++- submission/views/student.py | 2 +- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/problem/views/student.py b/problem/views/student.py index 2b3ae7e..5d06819 100644 --- a/problem/views/student.py +++ b/problem/views/student.py @@ -1 +1,16 @@ -from utils.api import APIView \ No newline at end of file +from utils.api import APIView, JSONResponse +from rest_framework import status +from ..serializers import ProblemSubmissionSerializers1 +from django.http import HttpResponse, JsonResponse +from ..models import Problem + +def GetProblemAPI(): + def get(self, request): + # get information from frontend + id_problem = int(request.GET.get('id_problem')) + try: + Problem = Problem.objects.get(id=id_problem) + except Problem.DoesNotExist: + return HttpResponse(status=404) + serializer = ProblemSubmissionSerializers1(Problem) + return JsonResponse(serializer.data,status=status.HTTP_200_OK) \ No newline at end of file diff --git a/submission/views/student.py b/submission/views/student.py index 5db0131..67f9570 100644 --- a/submission/views/student.py +++ b/submission/views/student.py @@ -4,7 +4,7 @@ from django.http import HttpResponse, JsonResponse from ..models import ProblemSubmission -class GetALLSubmissionAPI(APIView): +class GetAllSubmissionAPI(APIView): def get(self, request): submission_student_id = int(request.GET.get('submission_student_id')) # query from database for submissions of student From 4f2f6c90f51bfb39abbe9a6d31d89977796051df Mon Sep 17 00:00:00 2001 From: HuiBin Zhang <3478038112@qq.com> Date: Thu, 30 May 2019 22:41:35 +0800 Subject: [PATCH 03/23] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=AE=9E=E9=AA=8C=E6=8A=A5=E5=91=8A=E7=9A=84?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- submission/views/student.py | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/submission/views/student.py b/submission/views/student.py index 67f9570..9b55fe8 100644 --- a/submission/views/student.py +++ b/submission/views/student.py @@ -2,7 +2,7 @@ from rest_framework import status from ..serializers import ProblemSubmissionSerializers1 from django.http import HttpResponse, JsonResponse -from ..models import ProblemSubmission +from ..models import ProblemSubmission, LabSubmission, Attachment class GetAllSubmissionAPI(APIView): def get(self, request): @@ -25,4 +25,26 @@ def get(self, request): except ProblemSubmission.DoesNotExist: return HttpResponse(status=404) serializer = ProblemSubmissionSerializers1(ProblemSubmission) - return JsonResponse(serializer.data,status=status.HTTP_200_OK) \ No newline at end of file + return JsonResponse(serializer.data,status=status.HTTP_200_OK) + +class AddLabAttachment(APIView): + # create submission of a lab + def post(self, request): + submission_student_id = int(request.GET.get('id_user')) + course_id = int(request.GET.get('id_course')) + lab_id = int(request.GET.get('id_lab')) + attachment_path = int(request.GET.get('file')) + # query from database for submissions of student and problem + try: + labSubmission = LabSubmission.objects.filter(id_student=submission_student_id, id_lab=lab_id) + except ProblemSubmission.DoesNotExist: + return HttpResponse(status=404) + try: + attachment = Attachment.objects.create( + id_lab_submission = labSubmission.id, + path = attachment_path + ) + except Exception as e: + return HttpResponse(status=-1) + return HttpResponse(status=0) + From a30d91dd510dc196a589d7a27b2c8129e52cad74 Mon Sep 17 00:00:00 2001 From: "[zcyyc]" <[741339859@qq.com]> Date: Fri, 31 May 2019 18:40:49 +0800 Subject: [PATCH 04/23] =?UTF-8?q?=E6=B7=BB=E5=8A=A0URL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- oj/urls.py | 1 + problem/urls/student.py | 1 + submission/urls/student.py | 6 ++++++ submission/views/student.py | 21 ++++++++++++--------- 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/oj/urls.py b/oj/urls.py index 20043fd..3091ea8 100644 --- a/oj/urls.py +++ b/oj/urls.py @@ -23,4 +23,5 @@ url(r"^administrator/role/", include("user.urls.admin")), url(r"^exam/student", include("exam.urls.admin")), url(r"^api/student/", include("lab.urls.student")), + url(r"^api/submission/",include("submission.urls.student")) ] diff --git a/problem/urls/student.py b/problem/urls/student.py index 11d65f2..5b51e96 100644 --- a/problem/urls/student.py +++ b/problem/urls/student.py @@ -1,4 +1,5 @@ from django.conf.urls import url urlpatterns = [ + ] \ No newline at end of file diff --git a/submission/urls/student.py b/submission/urls/student.py index 11d65f2..4b51aaf 100644 --- a/submission/urls/student.py +++ b/submission/urls/student.py @@ -1,4 +1,10 @@ from django.conf.urls import url +from ..views.student import GetAllSubmissionAPI +from ..views.student import GetUserSubmissionAPI +from ..views.student import AddLabAttachmentAPI urlpatterns = [ + url(r"get_all_submission/?$", GetAllSubmissionAPI.as_view(), name="get_all_submission"), + url(r"get_user_submission/?$", GetUserSubmissionAPI.as_view(), name="get_user_submission"), + url(r"add_ab_attachment/?$", AddLabAttachmentAPI.as_view(), name="add_ab_attachment"), ] \ No newline at end of file diff --git a/submission/views/student.py b/submission/views/student.py index 9b55fe8..ea59018 100644 --- a/submission/views/student.py +++ b/submission/views/student.py @@ -2,20 +2,23 @@ from rest_framework import status from ..serializers import ProblemSubmissionSerializers1 from django.http import HttpResponse, JsonResponse -from ..models import ProblemSubmission, LabSubmission, Attachment +from submission.models import ProblemSubmission +from lab.models import LabSubmission,Attachment -class GetAllSubmissionAPI(APIView): +class GetAllSubmissionAPI(APIView): # 获取一个学生的所有提交记录 def get(self, request): - submission_student_id = int(request.GET.get('submission_student_id')) + # submission_student_id = int(request.GET.get('submission_student_id')) # query from database for submissions of student - try: - UserPersonalSubmission = ProblemSubmission.objects.get(id_student=submission_student_id) - except UserPersonalSubmission.DoesNotExist: - return HttpResponse(status=404) + # id_student=submission_student_id + # try: + print("@@@@@@@@@@@@@@@@") + UserPersonalSubmission = str(ProblemSubmission.objects.count()) + # except UserPersonalSubmission.DoesNotExist: + # return HttpResponse(status=404) serializer = ProblemSubmissionSerializers1(UserPersonalSubmission) return JsonResponse(serializer.data,status=status.HTTP_200_OK) -class GetUserSubmissionAPI(APIView): +class GetUserSubmissionAPI(APIView): # 获取一个学生关于一道题目的提交记录 def get(self, request): submission_student_id = int(request.GET.get('submission_student_id')) submission_problem_id = int(request.GET.get('submission_problem_id')) @@ -27,7 +30,7 @@ def get(self, request): serializer = ProblemSubmissionSerializers1(ProblemSubmission) return JsonResponse(serializer.data,status=status.HTTP_200_OK) -class AddLabAttachment(APIView): +class AddLabAttachmentAPI(APIView): # create submission of a lab def post(self, request): submission_student_id = int(request.GET.get('id_user')) From f565bfc712f55f4c52d6367c577932dc166efdb5 Mon Sep 17 00:00:00 2001 From: HuiBin Zhang <3478038112@qq.com> Date: Fri, 31 May 2019 20:10:58 +0800 Subject: [PATCH 05/23] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=AD=A6=E7=94=9F?= =?UTF-8?q?=E7=99=BB=E9=99=86API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- user/views/student.py | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/user/views/student.py b/user/views/student.py index 1f64f6f..e4a4b5d 100644 --- a/user/views/student.py +++ b/user/views/student.py @@ -4,13 +4,27 @@ from django.http import HttpResponse, JsonResponse from ..models import Role, Permission, Student -def GetStudentAPI(): +def GetStudentAPI(APIView): def get(self, request): # get information from frontend id_student = int(request.GET.get('id_student')) try: - Student = Student.objects.get(id=id_student) - except Student.DoesNotExist: + NowStudent = Student.objects.get(id=id_student) + except NowStudent.DoesNotExist: return HttpResponse(status=404) - serializer = ProblemSubmissionSerializers1(Student) + serializer = ProblemSubmissionSerializers1(NowStudent) return JsonResponse(serializer.data,status=status.HTTP_200_OK) + +def LoginStudentAPI(APIView): + # Login API + def post(self, request): + studentName = request.GET.get('name') + studentPasswordHash = request.GET.get('password_hash') + studentUser = Student.objects.get(name=studentName) + if studentUser: + if studentUser.password_hash == studentPasswordHash: + return HttpResponse(status=0) + else: + return HttpResponse(status=1) + else: + return HttpResponse(status=-1) \ No newline at end of file From bb1564ff9c5068864144ab355774491036912c76 Mon Sep 17 00:00:00 2001 From: HuiBin Zhang <3478038112@qq.com> Date: Mon, 3 Jun 2019 00:47:18 +0800 Subject: [PATCH 06/23] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=AD=A6=E7=94=9F?= =?UTF-8?q?=E7=AB=AFAPI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- oj/urls.py | 3 ++- user/urls/student.py | 1 + user/views/student.py | 22 +++++++++++++++++++--- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/oj/urls.py b/oj/urls.py index cd19ffc..354c72e 100644 --- a/oj/urls.py +++ b/oj/urls.py @@ -23,5 +23,6 @@ url(r"^administrator/role/", include("user.urls.admin")), url(r"^exam/student", include("exam.urls.admin")), url(r"^teacher/course/", include("course.urls.admin")), - url(r"^api/student/", include("lab.urls.student")), + url(r"^api/student/lab/", include("lab.urls.student")), + url(r"^api/student/course/", include("course.urls.student")), ] diff --git a/user/urls/student.py b/user/urls/student.py index 11d65f2..aa1c9f9 100644 --- a/user/urls/student.py +++ b/user/urls/student.py @@ -1,4 +1,5 @@ from django.conf.urls import url urlpatterns = [ + url(r'course-student/?$', GetStudentCourseAPI.as_view(), name="course-student"), ] \ No newline at end of file diff --git a/user/views/student.py b/user/views/student.py index e4a4b5d..b3ad817 100644 --- a/user/views/student.py +++ b/user/views/student.py @@ -1,8 +1,8 @@ from utils.api import APIView, JSONResponse from rest_framework import status -from ..serializers import ProblemSubmissionSerializers1 +from course.serializers import CourseSerializers from django.http import HttpResponse, JsonResponse -from ..models import Role, Permission, Student +from course.models import CourseStudent, Course def GetStudentAPI(APIView): def get(self, request): @@ -27,4 +27,20 @@ def post(self, request): else: return HttpResponse(status=1) else: - return HttpResponse(status=-1) \ No newline at end of file + return HttpResponse(status=-1) + + +def GetStudentCourseAPI(APIView): + # Get Course of an Student + def get(self, request): + idStudent = int(request.GET.get('id_student')) + courseListID = CourseStudent.object.filter(id_student = idStudent) + courseList = [] + for item in courseListID.data: + studentCourse = Course.object.get(id = item.id_course) + courseList.append(studentCourse) + courseListSerializer = CourseSerializers(courseList) + return JsonResponse(courseListSerializer.data,status=status.HTTP_200_OK) + +def GetMessageAPI(APiView): + pass \ No newline at end of file From cf6d543abb63d343f5b3f97643e9fba3d9df41c0 Mon Sep 17 00:00:00 2001 From: Li Guo Date: Mon, 3 Jun 2019 19:17:53 +0800 Subject: [PATCH 07/23] update student get course --- course/views/student.py | 44 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/course/views/student.py b/course/views/student.py index 2b3ae7e..fc46da3 100644 --- a/course/views/student.py +++ b/course/views/student.py @@ -1 +1,43 @@ -from utils.api import APIView \ No newline at end of file +from utils.api import APIView +from course.models import Course + + +def select_course_by_student(student): + student_courses = Course.students.courses.objects.filter( + id_student=student._id) + return student_courses + + +class GetMyCourseAPI(APIView): + response_class = JSONResponse + + def post(self, request): + esponse = dict() + student_number = request.GET.get('studentNumber') + page_length = request.GET.get('pageLength') + page = request.GET.get('page') + try: + student = Student.objects.get(student_number=student_number) + courses_student = Course.students.courses.objects.filter( + id_student=student.id) + paginator = Paginator(courses_student, page_length) + response['totalPages'] = paginator.num_pages + try: + courses_student = paginator.page(page) + response['currentPage'] = page + except PageNotAnInteger: + courses_student = paginator.page(1) + response['currentPage'] = 1 + except EmptyPage: + courses_student = paginator.page(paginator.num_pages) + response['currentPage'] = paginator.num_pages + courses = list() + for course in courses_student: + courses.append(course.course) + courses_info = list() + for course in courses: + courses_info.push(course) + response['courses'] = courses_info + return self.success(response) + except Exception as e: + return self.error(msg=str(e), err=e.args) From 3caf6b9a39b42d5b8b9490062aa2995fdef35cb3 Mon Sep 17 00:00:00 2001 From: HuiBin Zhang <3478038112@qq.com> Date: Mon, 3 Jun 2019 19:36:50 +0800 Subject: [PATCH 08/23] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=AD=A6=E7=94=9F?= =?UTF-8?q?=E7=AB=AFAPI=E5=AD=98=E5=9C=A8=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- oj/urls.py | 4 +--- user/urls/student.py | 1 - user/views/student.py | 1 - 3 files changed, 1 insertion(+), 5 deletions(-) diff --git a/oj/urls.py b/oj/urls.py index 6ce62c8..7083088 100644 --- a/oj/urls.py +++ b/oj/urls.py @@ -37,8 +37,6 @@ url(r"^auth/", include("user.urls.auth")), url(r"^swagger$", schema_view), url(r"^teacher/problem/", include("problem.urls.admin")), - url(r"^administrator/student/", include("user.urls.student")), - url(r"^teacher/submission/statistics/", - include("submission.urls.statistics")), + url(r"^teacher/submission/statistics/",include("submission.urls.statistics")), url(r"^distribution/", include("submission.urls.statistics")), ] diff --git a/user/urls/student.py b/user/urls/student.py index 4cde3f4..ab4af31 100644 --- a/user/urls/student.py +++ b/user/urls/student.py @@ -2,7 +2,6 @@ from user.views.student import GetStudentListAPI,DeleteStudentAPI urlpatterns = [ - url(r'course-student/?$', GetStudentCourseAPI.as_view(), name="course-student"), url(r'student_list?$', GetStudentListAPI.as_view(), name="get_student_list"), url(r'student_delete?$', DeleteStudentAPI.as_view(), name="delete_student") diff --git a/user/views/student.py b/user/views/student.py index 979a3a7..a85d008 100644 --- a/user/views/student.py +++ b/user/views/student.py @@ -1,6 +1,5 @@ from utils.api import APIView, JSONResponse from rest_framework import status -from course.serializers import CourseSerializers from django.http import HttpResponse, JsonResponse from course.models import CourseStudent, Course import math From 0beba3c164294febe4f96f4d0f7f8e6ba2ccc59c Mon Sep 17 00:00:00 2001 From: HuiBin Zhang <3478038112@qq.com> Date: Mon, 3 Jun 2019 21:28:35 +0800 Subject: [PATCH 09/23] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=AD=A6=E7=94=9F?= =?UTF-8?q?=E7=AB=AFAPI=EF=BC=8C=E6=9F=A5=E8=AF=A2=E5=85=A8=E9=83=A8?= =?UTF-8?q?=E8=AF=BE=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- course/serializers.py | 8 ++++++++ course/urls/student.py | 2 ++ course/views/student.py | 16 +++++++++++----- oj/dev_settings.py | 10 +++++----- 4 files changed, 26 insertions(+), 10 deletions(-) diff --git a/course/serializers.py b/course/serializers.py index e69de29..458a798 100644 --- a/course/serializers.py +++ b/course/serializers.py @@ -0,0 +1,8 @@ +from rest_framework import serializers +from .models import Course +from user.models import Student + +class CourseSerializers(serializers.ModelSerializer): + class Meta: + model = Course + fields = '__all__' diff --git a/course/urls/student.py b/course/urls/student.py index 11d65f2..b17386f 100644 --- a/course/urls/student.py +++ b/course/urls/student.py @@ -1,4 +1,6 @@ from django.conf.urls import url +from course.views.student import GetAllCourseAPI urlpatterns = [ + url(r'get-all-course/?$', GetAllCourseAPI.as_view(), name="get-all-course"), ] \ No newline at end of file diff --git a/course/views/student.py b/course/views/student.py index fc46da3..f12e8a6 100644 --- a/course/views/student.py +++ b/course/views/student.py @@ -1,12 +1,18 @@ from utils.api import APIView from course.models import Course +from course.serializers import CourseSerializers +from utils.api import JSONResponse +from django.forms import model_to_dict -def select_course_by_student(student): - student_courses = Course.students.courses.objects.filter( - id_student=student._id) - return student_courses - +class GetAllCourseAPI(APIView): + def get(self, request): + AllCourse = Course.objects.all() + AllCourseResult = [] + AllCourseResult.append(model_to_dict(AllCourse[0])) + AllCourseResult.append(model_to_dict(AllCourse[1])) + return self.success(AllCourseResult) + class GetMyCourseAPI(APIView): response_class = JSONResponse diff --git a/oj/dev_settings.py b/oj/dev_settings.py index 27a6548..fee4ec1 100644 --- a/oj/dev_settings.py +++ b/oj/dev_settings.py @@ -14,11 +14,11 @@ DATABASES = { 'default': { - 'ENGINE': 'django.db.backends.mysql', - 'HOST': os.getenv("DB_HOST", "127.0.0.1"), + 'ENGINE': 'django.db.backends.mysql', + 'HOST': os.getenv("DB_HOST", "47.93.232.223"), 'PORT': os.getenv("DB_PORT", 3306), - 'USER': os.getenv("DB_USER", "root"), - 'PASSWORD': os.getenv("DB_USER", "root"), - 'NAME': os.getenv("DB_NAME", "oj"), + 'USER': os.getenv("DB_USER", "nkoj"), + 'PASSWORD': os.getenv("DB_USER", "nkoj"), + 'NAME': os.getenv("DB_NAME", "nkoj"), } } \ No newline at end of file From 2d8e9820c184b4f14df893556e39d7fe2a24f67a Mon Sep 17 00:00:00 2001 From: HuiBin Zhang <3478038112@qq.com> Date: Tue, 4 Jun 2019 17:03:47 +0800 Subject: [PATCH 10/23] =?UTF-8?q?=E5=AD=A6=E7=94=9F=E7=AB=AFAPI=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E6=88=90=E5=8A=9F=EF=BC=9A=E6=8F=90=E4=BA=A4=E8=AE=B0?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- oj/dev_settings.py | 12 ++++++------ oj/urls.py | 3 +++ submission/urls/student.py | 4 ++-- submission/views/student.py | 39 +++++++++++++++++++------------------ user/urls/student.py | 5 +++-- user/views/student.py | 15 ++++++-------- 6 files changed, 40 insertions(+), 38 deletions(-) diff --git a/oj/dev_settings.py b/oj/dev_settings.py index fee4ec1..d264bae 100644 --- a/oj/dev_settings.py +++ b/oj/dev_settings.py @@ -13,12 +13,12 @@ ALLOWED_HOSTS = ['*'] DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.mysql', - 'HOST': os.getenv("DB_HOST", "47.93.232.223"), + 'default': { + 'ENGINE': 'django.db.backends.mysql', + 'HOST': os.getenv("DB_HOST", "127.0.0.1"), 'PORT': os.getenv("DB_PORT", 3306), - 'USER': os.getenv("DB_USER", "nkoj"), - 'PASSWORD': os.getenv("DB_USER", "nkoj"), - 'NAME': os.getenv("DB_NAME", "nkoj"), + 'USER': os.getenv("DB_USER", "root"), + 'PASSWORD': os.getenv("DB_USER", "root"), + 'NAME': os.getenv("DB_NAME", "oj"), } } \ No newline at end of file diff --git a/oj/urls.py b/oj/urls.py index 7083088..7becc93 100644 --- a/oj/urls.py +++ b/oj/urls.py @@ -33,6 +33,9 @@ url(r"^teacher/course/stat/", include("course.urls.statistics")), url(r"^teacher/submission/stat/", include("submission.urls.statistics")), url(r"^teacher/student/stat/", include("user.urls.statistics")), + + url(r"^api/student/submission", include("submission.urls.student")), + url(r"^api/student/user", include("user.urls.student")), url(r"^api/student/", include("lab.urls.student")), url(r"^auth/", include("user.urls.auth")), url(r"^swagger$", schema_view), diff --git a/submission/urls/student.py b/submission/urls/student.py index 4b51aaf..80351f4 100644 --- a/submission/urls/student.py +++ b/submission/urls/student.py @@ -1,10 +1,10 @@ from django.conf.urls import url -from ..views.student import GetAllSubmissionAPI +from ..views.student import GetAllStudentSubmissionAPI from ..views.student import GetUserSubmissionAPI from ..views.student import AddLabAttachmentAPI urlpatterns = [ - url(r"get_all_submission/?$", GetAllSubmissionAPI.as_view(), name="get_all_submission"), + url(r"get_all_submission/?$", GetAllStudentSubmissionAPI.as_view(), name="get_all_submission"), url(r"get_user_submission/?$", GetUserSubmissionAPI.as_view(), name="get_user_submission"), url(r"add_ab_attachment/?$", AddLabAttachmentAPI.as_view(), name="add_ab_attachment"), ] \ No newline at end of file diff --git a/submission/views/student.py b/submission/views/student.py index ea59018..cff7b5c 100644 --- a/submission/views/student.py +++ b/submission/views/student.py @@ -4,31 +4,32 @@ from django.http import HttpResponse, JsonResponse from submission.models import ProblemSubmission from lab.models import LabSubmission,Attachment +from django.forms import model_to_dict -class GetAllSubmissionAPI(APIView): # 获取一个学生的所有提交记录 + +class GetAllStudentSubmissionAPI(APIView): # 获取一个学生的所有提交记录 #OK# def get(self, request): - # submission_student_id = int(request.GET.get('submission_student_id')) - # query from database for submissions of student - # id_student=submission_student_id - # try: - print("@@@@@@@@@@@@@@@@") - UserPersonalSubmission = str(ProblemSubmission.objects.count()) - # except UserPersonalSubmission.DoesNotExist: - # return HttpResponse(status=404) - serializer = ProblemSubmissionSerializers1(UserPersonalSubmission) - return JsonResponse(serializer.data,status=status.HTTP_200_OK) + submission_student_id = int(request.GET.get('student_id')) + student_submission = ProblemSubmission.objects.filter(student=submission_student_id) + student_submission_result = [] + for item in student_submission: + item_result = model_to_dict(item) + del item_result['cases'] + student_submission_result.append(item_result) + return self.success(student_submission_result) class GetUserSubmissionAPI(APIView): # 获取一个学生关于一道题目的提交记录 def get(self, request): - submission_student_id = int(request.GET.get('submission_student_id')) - submission_problem_id = int(request.GET.get('submission_problem_id')) + submission_student_id = int(request.GET.get('student_id')) + submission_problem_id = int(request.GET.get('problem_id')) # query from database for submissions of student and problem - try: - UserPersonalSubmission = ProblemSubmission.objects.filter(id_student=submission_student_id, id_problem=submission_problem_id) - except ProblemSubmission.DoesNotExist: - return HttpResponse(status=404) - serializer = ProblemSubmissionSerializers1(ProblemSubmission) - return JsonResponse(serializer.data,status=status.HTTP_200_OK) + userPersonalSubmission = ProblemSubmission.objects.filter(student=submission_student_id, problem=submission_problem_id) + userPersonalSubmissionResult = [] + for item in userPersonalSubmission: + item_result = model_to_dict(item) + del item_result['cases'] + userPersonalSubmissionResult.append(item_result) + return self.success(userPersonalSubmissionResult) class AddLabAttachmentAPI(APIView): # create submission of a lab diff --git a/user/urls/student.py b/user/urls/student.py index ab4af31..3871c45 100644 --- a/user/urls/student.py +++ b/user/urls/student.py @@ -1,8 +1,9 @@ from django.conf.urls import url -from user.views.student import GetStudentListAPI,DeleteStudentAPI +from user.views.student import GetStudentListAPI,DeleteStudentAPI, GetStudentAPI urlpatterns = [ url(r'student_list?$', GetStudentListAPI.as_view(), name="get_student_list"), - url(r'student_delete?$', DeleteStudentAPI.as_view(), name="delete_student") + url(r'student_delete?$', DeleteStudentAPI.as_view(), name="delete_student"), + url(r'student_get/?$', GetStudentAPI.as_view(), name="get_student") ] \ No newline at end of file diff --git a/user/views/student.py b/user/views/student.py index a85d008..4a221ec 100644 --- a/user/views/student.py +++ b/user/views/student.py @@ -1,23 +1,20 @@ from utils.api import APIView, JSONResponse from rest_framework import status from django.http import HttpResponse, JsonResponse -from course.models import CourseStudent, Course +from course.models import Course import math from django.contrib.auth.models import Group from django.db.models import Model from utils.api import APIView, JSONResponse from ..models import Student,UserStatus,Gender,User +from django.forms import model_to_dict -def GetStudentAPI(APIView): +class GetStudentAPI(APIView): def get(self, request): - # get information from frontend + # get information from frontend #OK# id_student = int(request.GET.get('id_student')) - try: - NowStudent = Student.objects.get(id=id_student) - except NowStudent.DoesNotExist: - return HttpResponse(status=404) - serializer = ProblemSubmissionSerializers1(NowStudent) - return JsonResponse(serializer.data,status=status.HTTP_200_OK) + NowStudent = Student.objects.get(id=id_student) + return self.success(model_to_dict(NowStudent)) def LoginStudentAPI(APIView): # Login API From a7bf06f57632aa0ed5a1174518b905ccb392c028 Mon Sep 17 00:00:00 2001 From: HuiBin Zhang <3478038112@qq.com> Date: Tue, 4 Jun 2019 17:12:15 +0800 Subject: [PATCH 11/23] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=AD=A6=E7=94=9F?= =?UTF-8?q?=E7=AB=AFAPI=EF=BC=9A=E8=8E=B7=E5=8F=96=E5=85=A8=E9=83=A8?= =?UTF-8?q?=E8=AF=BE=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- course/views/student.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/course/views/student.py b/course/views/student.py index f12e8a6..fcfb5af 100644 --- a/course/views/student.py +++ b/course/views/student.py @@ -6,11 +6,15 @@ class GetAllCourseAPI(APIView): + #OK# def get(self, request): AllCourse = Course.objects.all() AllCourseResult = [] - AllCourseResult.append(model_to_dict(AllCourse[0])) - AllCourseResult.append(model_to_dict(AllCourse[1])) + for item in AllCourse: + item_result = model_to_dict(item) + del item_result['students'] + del item_result['teachers'] + AllCourseResult.append(item_result) return self.success(AllCourseResult) From ce06523e01353223c530ceaf21096871e53bf9a8 Mon Sep 17 00:00:00 2001 From: HuiBin Zhang <3478038112@qq.com> Date: Tue, 4 Jun 2019 17:19:05 +0800 Subject: [PATCH 12/23] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=AF=BE=E7=A8=8BAPI?= =?UTF-8?q?=EF=BC=9A=E8=8E=B7=E5=8F=96=E5=85=A8=E9=83=A8=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E4=B8=8E=E8=8E=B7=E5=8F=96=E8=AF=BE=E7=A8=8B=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- course/urls/student.py | 4 +++- course/views/student.py | 22 +++++++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/course/urls/student.py b/course/urls/student.py index b17386f..b02b980 100644 --- a/course/urls/student.py +++ b/course/urls/student.py @@ -1,6 +1,8 @@ from django.conf.urls import url -from course.views.student import GetAllCourseAPI +from course.views.student import GetAllCourseAPI,GetAllMessageAPI,GetMessageOfCourseAPI urlpatterns = [ url(r'get-all-course/?$', GetAllCourseAPI.as_view(), name="get-all-course"), + url(r'get-all-message/?$', GetAllMessageAPI.as_view(), name="get-all-message"), + url(r'get-course-message/?$', GetMessageOfCourseAPI.as_view(), name="get-course-message"), ] \ No newline at end of file diff --git a/course/views/student.py b/course/views/student.py index fcfb5af..269039b 100644 --- a/course/views/student.py +++ b/course/views/student.py @@ -1,5 +1,5 @@ from utils.api import APIView -from course.models import Course +from course.models import Course, Message from course.serializers import CourseSerializers from utils.api import JSONResponse from django.forms import model_to_dict @@ -17,6 +17,26 @@ def get(self, request): AllCourseResult.append(item_result) return self.success(AllCourseResult) +class GetAllMessageAPI(APIView): + #OK# + def get(self, request): + AllMessage = Message.objects.all() + AllMessageResult = [] + for item in AllMessage: + item_result = model_to_dict(item) + AllMessageResult.append(item_result) + return self.success(AllMessageResult) + +class GetMessageOfCourseAPI(APIView): + #OK# + def get(self, request): + course_id = int(request.GET.get('course_id')) + AllMessage = Message.objects.filter(course=course_id) + AllMessageResult = [] + for item in AllMessage: + item_result = model_to_dict(item) + AllMessageResult.append(item_result) + return self.success(AllMessageResult) class GetMyCourseAPI(APIView): response_class = JSONResponse From db320e956e94f950f4dad1f51f5ebf965f452c47 Mon Sep 17 00:00:00 2001 From: HuiBin Zhang <3478038112@qq.com> Date: Tue, 4 Jun 2019 17:41:28 +0800 Subject: [PATCH 13/23] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=AD=A6=E7=94=9F?= =?UTF-8?q?=E7=AB=AFAPI=EF=BC=9A=E6=9F=A5=E7=9C=8B=E9=A2=98=E7=9B=AE?= =?UTF-8?q?=E8=AF=A6=E6=83=85=EF=BC=8C=E6=9F=A5=E7=9C=8B=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E7=94=A8=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- oj/urls.py | 1 + problem/urls/student.py | 4 +++- problem/views/student.py | 30 ++++++++++++++++++++---------- 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/oj/urls.py b/oj/urls.py index 7becc93..c6b16a9 100644 --- a/oj/urls.py +++ b/oj/urls.py @@ -35,6 +35,7 @@ url(r"^teacher/student/stat/", include("user.urls.statistics")), url(r"^api/student/submission", include("submission.urls.student")), + url(r"^api/student/problem", include("problem.urls.student")), url(r"^api/student/user", include("user.urls.student")), url(r"^api/student/", include("lab.urls.student")), url(r"^auth/", include("user.urls.auth")), diff --git a/problem/urls/student.py b/problem/urls/student.py index 5b51e96..b65608e 100644 --- a/problem/urls/student.py +++ b/problem/urls/student.py @@ -1,5 +1,7 @@ from django.conf.urls import url +from problem.views.student import GetProblemAPI,GetCaseOfProblemAPI urlpatterns = [ - + url(r"get-problem/?$", GetProblemAPI.as_view(), name="get-problem"), + url(r"get-problem-cases/?$", GetCaseOfProblemAPI.as_view(), name="get-problem-cases"), ] \ No newline at end of file diff --git a/problem/views/student.py b/problem/views/student.py index 5d06819..6332c83 100644 --- a/problem/views/student.py +++ b/problem/views/student.py @@ -1,16 +1,26 @@ from utils.api import APIView, JSONResponse from rest_framework import status -from ..serializers import ProblemSubmissionSerializers1 from django.http import HttpResponse, JsonResponse -from ..models import Problem +from ..models import Problem, Case +from django.forms import model_to_dict -def GetProblemAPI(): +class GetProblemAPI(APIView): def get(self, request): - # get information from frontend + # get information from frontend #ok# id_problem = int(request.GET.get('id_problem')) - try: - Problem = Problem.objects.get(id=id_problem) - except Problem.DoesNotExist: - return HttpResponse(status=404) - serializer = ProblemSubmissionSerializers1(Problem) - return JsonResponse(serializer.data,status=status.HTTP_200_OK) \ No newline at end of file + problem_return = model_to_dict(Problem.objects.get(id=id_problem)) + del problem_return['tags'] + return self.success(problem_return) + + +class GetCaseOfProblemAPI(APIView): + def get(self, request): + # get information from frontend #ok# + id_problem = int(request.GET.get('id_problem')) + case_list = Case.objects.filter(problem=id_problem) + case_list_result = [] + for item in case_list: + item_result = model_to_dict(item) + del item_result['tags'] + case_list_result.append(item_result) + return self.success(case_list_result) \ No newline at end of file From 64503b58ae70bc51e1f8cf8d8665d9a21b5b4e93 Mon Sep 17 00:00:00 2001 From: HuiBin Zhang <3478038112@qq.com> Date: Tue, 4 Jun 2019 18:06:18 +0800 Subject: [PATCH 14/23] =?UTF-8?q?=E5=AD=A6=E7=94=9F=E7=AB=AFAPI=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=EF=BC=9A=E6=B7=BB=E5=8A=A0=E9=97=AE=E9=A2=98=E6=8F=90?= =?UTF-8?q?=E4=BA=A4API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problem/views/student.py | 2 +- submission/urls/student.py | 2 ++ submission/views/student.py | 30 +++++++++++++++++++++++++++++- 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/problem/views/student.py b/problem/views/student.py index 6332c83..b9fa229 100644 --- a/problem/views/student.py +++ b/problem/views/student.py @@ -23,4 +23,4 @@ def get(self, request): item_result = model_to_dict(item) del item_result['tags'] case_list_result.append(item_result) - return self.success(case_list_result) \ No newline at end of file + return self.success(case_list_result) diff --git a/submission/urls/student.py b/submission/urls/student.py index 80351f4..8279d5e 100644 --- a/submission/urls/student.py +++ b/submission/urls/student.py @@ -2,9 +2,11 @@ from ..views.student import GetAllStudentSubmissionAPI from ..views.student import GetUserSubmissionAPI from ..views.student import AddLabAttachmentAPI +from ..views.student import CreateProblemSubmissionAPI urlpatterns = [ url(r"get_all_submission/?$", GetAllStudentSubmissionAPI.as_view(), name="get_all_submission"), url(r"get_user_submission/?$", GetUserSubmissionAPI.as_view(), name="get_user_submission"), url(r"add_ab_attachment/?$", AddLabAttachmentAPI.as_view(), name="add_ab_attachment"), + url(r"add_problem_submission/?$", CreateProblemSubmissionAPI.as_view(), name="add_problem_submission"), ] \ No newline at end of file diff --git a/submission/views/student.py b/submission/views/student.py index cff7b5c..ad689f8 100644 --- a/submission/views/student.py +++ b/submission/views/student.py @@ -5,7 +5,7 @@ from submission.models import ProblemSubmission from lab.models import LabSubmission,Attachment from django.forms import model_to_dict - +import time; class GetAllStudentSubmissionAPI(APIView): # 获取一个学生的所有提交记录 #OK# def get(self, request): @@ -31,6 +31,34 @@ def get(self, request): userPersonalSubmissionResult.append(item_result) return self.success(userPersonalSubmissionResult) + +class CreateProblemSubmissionAPI(APIView): # 获取一个学生关于一道题目的提交记录 + def post(self, request): + submission_student_id = int(request.GET.get('student_id')) + submission_problem_id = int(request.GET.get('problem_id')) + submission_program = str(request.GET.get('program')) + submission_create_at= time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + submission_runtime = int(request.GET.get('runtime')) + submission_memory = int(request.GET.get('memory')) + submission_ip = str(request.GET.get('ip')) + submission_language = int(request.GET.get('language')) + submission_status_id = int(request.GET.get('status')) + + submission_result = ProblemSubmission.objects.create( + problem=submission_problem_id, + student=submission_student_id, + program=submission_program, + created_at=submission_create_at, + runtime=submission_runtime, + memory=submission_memory, + Ip=submission_ip, + language=submission_language, + submission_status=submission_status_id, + ) + + submission_result = model_to_dict(submission_result) + return self.success(submission_result) + class AddLabAttachmentAPI(APIView): # create submission of a lab def post(self, request): From 6ec4bbdcdc53b4df01430c5fdeffdac5be136cfd Mon Sep 17 00:00:00 2001 From: Li Guo Date: Tue, 4 Jun 2019 20:15:48 +0800 Subject: [PATCH 15/23] =?UTF-8?q?=E4=BD=BF=E7=94=A8=E4=BA=91=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E5=AD=98=E5=82=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- oj/dev_settings.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/oj/dev_settings.py b/oj/dev_settings.py index d264bae..00dadf3 100644 --- a/oj/dev_settings.py +++ b/oj/dev_settings.py @@ -13,12 +13,12 @@ ALLOWED_HOSTS = ['*'] DATABASES = { - 'default': { + 'default': { 'ENGINE': 'django.db.backends.mysql', - 'HOST': os.getenv("DB_HOST", "127.0.0.1"), + 'HOST': os.getenv("DB_HOST", "47.93.232.223"), 'PORT': os.getenv("DB_PORT", 3306), - 'USER': os.getenv("DB_USER", "root"), - 'PASSWORD': os.getenv("DB_USER", "root"), - 'NAME': os.getenv("DB_NAME", "oj"), + 'USER': os.getenv("DB_USER", "nkoj"), + 'PASSWORD': os.getenv("DB_USER", "nkoj"), + 'NAME': os.getenv("DB_NAME", "nkoj"), } -} \ No newline at end of file +} From d620f732f3d247573cae79acdbdf8c4729a05e23 Mon Sep 17 00:00:00 2001 From: Li Guo Date: Tue, 4 Jun 2019 20:15:57 +0800 Subject: [PATCH 16/23] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- course/urls/student.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/course/urls/student.py b/course/urls/student.py index b02b980..8961ed5 100644 --- a/course/urls/student.py +++ b/course/urls/student.py @@ -1,8 +1,10 @@ from django.conf.urls import url -from course.views.student import GetAllCourseAPI,GetAllMessageAPI,GetMessageOfCourseAPI +from course.views.student import GetAllCourseAPI,GetAllMessageAPI,GetMessageOfCourseAPI,GetMyCourseAPI,GetMyCourseByIDAPI urlpatterns = [ url(r'get-all-course/?$', GetAllCourseAPI.as_view(), name="get-all-course"), url(r'get-all-message/?$', GetAllMessageAPI.as_view(), name="get-all-message"), url(r'get-course-message/?$', GetMessageOfCourseAPI.as_view(), name="get-course-message"), + url(r'get-my-course/?$',GetMyCourseAPI.as_view(),name="get-my-course"), + url(r'get-my-course-by-id/?$',GetMyCourseByIDAPI.as_view(),name="get-my-course-by-id") ] \ No newline at end of file From 7745b7c4cec8c2592b4ff2905ed05353441c5153 Mon Sep 17 00:00:00 2001 From: Li Guo Date: Tue, 4 Jun 2019 20:16:21 +0800 Subject: [PATCH 17/23] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=A0=B9=E6=8D=AEstude?= =?UTF-8?q?nt=5Fnumber=E6=89=BE=E8=AF=BE=E7=A8=8B=E5=92=8C=E6=A0=B9?= =?UTF-8?q?=E6=8D=AEstudent=E7=9A=84user=20id=E6=89=BE=E8=AF=BE=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- course/views/student.py | 70 ++++++++++++++++++++++------------------- 1 file changed, 38 insertions(+), 32 deletions(-) diff --git a/course/views/student.py b/course/views/student.py index 269039b..557f040 100644 --- a/course/views/student.py +++ b/course/views/student.py @@ -16,7 +16,8 @@ def get(self, request): del item_result['teachers'] AllCourseResult.append(item_result) return self.success(AllCourseResult) - + + class GetAllMessageAPI(APIView): #OK# def get(self, request): @@ -27,6 +28,7 @@ def get(self, request): AllMessageResult.append(item_result) return self.success(AllMessageResult) + class GetMessageOfCourseAPI(APIView): #OK# def get(self, request): @@ -38,36 +40,40 @@ def get(self, request): AllMessageResult.append(item_result) return self.success(AllMessageResult) + class GetMyCourseAPI(APIView): - response_class = JSONResponse + # 根据student_number找到他的所有课程 + def get(self, request): + studentNumber = request.GET.get('studentNumber') + AllCourse = Course.objects.all() + MyCourses = [] + for item in AllCourse: + item_result = model_to_dict(item) + for student in item_result['students']: + print(student.student_number) + stu_num=""+student.student_number + if stu_num == studentNumber: + del item_result['students'] + del item_result['teachers'] + MyCourses.append(item_result) + break + + return self.success(MyCourses) + +class GetMyCourseByIDAPI(APIView): + # 根据student的user id找到他的所有课程 + def get(self, request): + studentID = request.GET.get('studentID') + AllCourse = Course.objects.all() + MyCourses = [] + for item in AllCourse: + item_result = model_to_dict(item) + for student in item_result['students']: + stu_id=str(student.user.id) + if stu_id == studentID: + del item_result['students'] + del item_result['teachers'] + MyCourses.append(item_result) + break - def post(self, request): - esponse = dict() - student_number = request.GET.get('studentNumber') - page_length = request.GET.get('pageLength') - page = request.GET.get('page') - try: - student = Student.objects.get(student_number=student_number) - courses_student = Course.students.courses.objects.filter( - id_student=student.id) - paginator = Paginator(courses_student, page_length) - response['totalPages'] = paginator.num_pages - try: - courses_student = paginator.page(page) - response['currentPage'] = page - except PageNotAnInteger: - courses_student = paginator.page(1) - response['currentPage'] = 1 - except EmptyPage: - courses_student = paginator.page(paginator.num_pages) - response['currentPage'] = paginator.num_pages - courses = list() - for course in courses_student: - courses.append(course.course) - courses_info = list() - for course in courses: - courses_info.push(course) - response['courses'] = courses_info - return self.success(response) - except Exception as e: - return self.error(msg=str(e), err=e.args) + return self.success(MyCourses) \ No newline at end of file From a5292d0d09ca0f05ad6a2a9f909806e8fa9d5284 Mon Sep 17 00:00:00 2001 From: HuiBin Zhang <3478038112@qq.com> Date: Tue, 4 Jun 2019 20:43:56 +0800 Subject: [PATCH 18/23] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=BA=E6=9C=AC?= =?UTF-8?q?=E5=9C=B0=E6=95=B0=E6=8D=AE=E5=BA=93=EF=BC=8C=E5=8F=AF=E9=80=9A?= =?UTF-8?q?=E8=BF=87=E8=BF=90=E8=A1=8Csql=E6=96=87=E4=BB=B6=E5=BB=BA?= =?UTF-8?q?=E7=AB=8B=E6=95=B0=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- oj/dev_settings.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/oj/dev_settings.py b/oj/dev_settings.py index 00dadf3..cd02108 100644 --- a/oj/dev_settings.py +++ b/oj/dev_settings.py @@ -14,11 +14,11 @@ DATABASES = { 'default': { - 'ENGINE': 'django.db.backends.mysql', - 'HOST': os.getenv("DB_HOST", "47.93.232.223"), + 'ENGINE': 'django.db.backends.mysql', + 'HOST': os.getenv("DB_HOST", "127.0.0.1"), 'PORT': os.getenv("DB_PORT", 3306), - 'USER': os.getenv("DB_USER", "nkoj"), - 'PASSWORD': os.getenv("DB_USER", "nkoj"), - 'NAME': os.getenv("DB_NAME", "nkoj"), + 'USER': os.getenv("DB_USER", "root"), + 'PASSWORD': os.getenv("DB_USER", "root"), + 'NAME': os.getenv("DB_NAME", "oj"), } } From b4578c8631f14b1a6d973108d80b73eca87af743 Mon Sep 17 00:00:00 2001 From: HuiBin Zhang <3478038112@qq.com> Date: Tue, 4 Jun 2019 21:14:45 +0800 Subject: [PATCH 19/23] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=AD=A6=E7=94=9F?= =?UTF-8?q?=E7=AB=AFAPI=EF=BC=9A=E4=BC=A0=E9=80=92=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E7=BB=93=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- submission/models.py | 3 +-- submission/views/student.py | 8 +++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/submission/models.py b/submission/models.py index fcf1d87..07779e8 100644 --- a/submission/models.py +++ b/submission/models.py @@ -27,8 +27,7 @@ class ProblemSubmission(models.Model): IP = models.CharField(max_length=20) language = models.IntegerField() submission_status = models.ForeignKey(CaseStatus, default=CaseStatus.default, on_delete=models.SET_DEFAULT) - cases = models.ManyToManyField(Case, blank=True, related_name='problem_submissions', - through='ProblemSubmissionCase') + cases = models.ManyToManyField(Case, blank=True, related_name='problem_submissions',through='ProblemSubmissionCase') lectures = models.ManyToManyField(Lecture, blank=True, related_name='problem_submissions') diff --git a/submission/views/student.py b/submission/views/student.py index ad689f8..948cc82 100644 --- a/submission/views/student.py +++ b/submission/views/student.py @@ -2,7 +2,7 @@ from rest_framework import status from ..serializers import ProblemSubmissionSerializers1 from django.http import HttpResponse, JsonResponse -from submission.models import ProblemSubmission +from submission.models import ProblemSubmission, CaseStatus from lab.models import LabSubmission,Attachment from django.forms import model_to_dict import time; @@ -11,10 +11,16 @@ class GetAllStudentSubmissionAPI(APIView): # 获取一个学生的所有提交 def get(self, request): submission_student_id = int(request.GET.get('student_id')) student_submission = ProblemSubmission.objects.filter(student=submission_student_id) + caseStatusResult = CaseStatus.objects.all() + caseStatusDemo = [] + for item in caseStatusResult: + caseStatusDemo.append(model_to_dict(item)) + student_submission_result = [] for item in student_submission: item_result = model_to_dict(item) del item_result['cases'] + item_result['status'] = caseStatusDemo[int(item_result['submission_status'])]['name'] student_submission_result.append(item_result) return self.success(student_submission_result) From 1f3e4fae03555c7151a7b70ea156cdbcc75ef1dd Mon Sep 17 00:00:00 2001 From: HuiBin Zhang <3478038112@qq.com> Date: Tue, 4 Jun 2019 21:20:15 +0800 Subject: [PATCH 20/23] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=AD=A6=E7=94=9F?= =?UTF-8?q?=E7=AB=AFAPI:=E6=B7=BB=E5=8A=A0=E5=88=9B=E5=BB=BA=E6=97=B6?= =?UTF-8?q?=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- submission/views/student.py | 1 + 1 file changed, 1 insertion(+) diff --git a/submission/views/student.py b/submission/views/student.py index 948cc82..cfb7ed3 100644 --- a/submission/views/student.py +++ b/submission/views/student.py @@ -20,6 +20,7 @@ def get(self, request): for item in student_submission: item_result = model_to_dict(item) del item_result['cases'] + item_result['create_at'] = str(item.created_at) item_result['status'] = caseStatusDemo[int(item_result['submission_status'])]['name'] student_submission_result.append(item_result) return self.success(student_submission_result) From 53eb158e90b890c6a1d0ef6f1398d963a59bec5d Mon Sep 17 00:00:00 2001 From: HuiBin Zhang <3478038112@qq.com> Date: Tue, 4 Jun 2019 23:22:30 +0800 Subject: [PATCH 21/23] =?UTF-8?q?=E6=9B=B4=E6=96=B0API=EF=BC=9A=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E7=94=A8=E6=88=B7=E7=9A=84=E5=85=A8=E9=83=A8=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- submission/views/student.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/submission/views/student.py b/submission/views/student.py index cfb7ed3..b2cb578 100644 --- a/submission/views/student.py +++ b/submission/views/student.py @@ -28,13 +28,20 @@ def get(self, request): class GetUserSubmissionAPI(APIView): # 获取一个学生关于一道题目的提交记录 def get(self, request): submission_student_id = int(request.GET.get('student_id')) - submission_problem_id = int(request.GET.get('problem_id')) + submission_problem_id = int(request.GET.get('problem_id')) # query from database for submissions of student and problem + caseStatusResult = CaseStatus.objects.all() + caseStatusDemo = [] + for item in caseStatusResult: + caseStatusDemo.append(model_to_dict(item)) + userPersonalSubmission = ProblemSubmission.objects.filter(student=submission_student_id, problem=submission_problem_id) userPersonalSubmissionResult = [] for item in userPersonalSubmission: item_result = model_to_dict(item) del item_result['cases'] + item_result['create_at'] = str(item.created_at) + item_result['status'] = caseStatusDemo[int(item_result['submission_status'])]['name'] userPersonalSubmissionResult.append(item_result) return self.success(userPersonalSubmissionResult) From bae504b78688156e93b08a57538c417b68fc5c9f Mon Sep 17 00:00:00 2001 From: HuiBin Zhang <3478038112@qq.com> Date: Wed, 5 Jun 2019 00:28:46 +0800 Subject: [PATCH 22/23] =?UTF-8?q?=E5=AD=A6=E7=94=9F=E7=AB=AFAPI=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=EF=BC=9A=E6=B7=BB=E5=8A=A0=E9=A2=98=E7=9B=AE=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=E7=BB=93=E6=9E=9C=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- submission/urls/student.py | 2 ++ submission/views/student.py | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/submission/urls/student.py b/submission/urls/student.py index 8279d5e..bab2f57 100644 --- a/submission/urls/student.py +++ b/submission/urls/student.py @@ -3,10 +3,12 @@ from ..views.student import GetUserSubmissionAPI from ..views.student import AddLabAttachmentAPI from ..views.student import CreateProblemSubmissionAPI +from ..views.student import GetProblemSubmissionAPI urlpatterns = [ url(r"get_all_submission/?$", GetAllStudentSubmissionAPI.as_view(), name="get_all_submission"), url(r"get_user_submission/?$", GetUserSubmissionAPI.as_view(), name="get_user_submission"), + url(r"get_problem_submission/?$", GetProblemSubmissionAPI.as_view(), name="get_problem_submission"), url(r"add_ab_attachment/?$", AddLabAttachmentAPI.as_view(), name="add_ab_attachment"), url(r"add_problem_submission/?$", CreateProblemSubmissionAPI.as_view(), name="add_problem_submission"), ] \ No newline at end of file diff --git a/submission/views/student.py b/submission/views/student.py index b2cb578..eab0818 100644 --- a/submission/views/student.py +++ b/submission/views/student.py @@ -7,6 +7,24 @@ from django.forms import model_to_dict import time; +class GetProblemSubmissionAPI(APIView): # 获取一个学生的所有提交记录 #OK# + def get(self, request): + submission_problem_id = int(request.GET.get('problem_id')) + problem_submission = ProblemSubmission.objects.filter(problem=submission_problem_id) + caseStatusResult = CaseStatus.objects.all() + caseStatusDemo = [] + for item in caseStatusResult: + caseStatusDemo.append(model_to_dict(item)) + + problem_submission_result = [] + for item in problem_submission: + item_result = model_to_dict(item) + del item_result['cases'] + item_result['create_at'] = str(item.created_at) + item_result['status'] = caseStatusDemo[int(item_result['submission_status'])]['name'] + problem_submission_result.append(item_result) + return self.success(problem_submission_result) + class GetAllStudentSubmissionAPI(APIView): # 获取一个学生的所有提交记录 #OK# def get(self, request): submission_student_id = int(request.GET.get('student_id')) From 07053ec719621745f46f305f7f17421d54b2a386 Mon Sep 17 00:00:00 2001 From: HuiBin Zhang <3478038112@qq.com> Date: Wed, 5 Jun 2019 09:28:21 +0800 Subject: [PATCH 23/23] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=AD=A6=E7=94=9F?= =?UTF-8?q?=E7=AB=AFAPI:=E8=8E=B7=E5=8F=96=E5=AD=A6=E7=94=9F=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- user/views/student.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/user/views/student.py b/user/views/student.py index 1bec631..660bfd5 100644 --- a/user/views/student.py +++ b/user/views/student.py @@ -12,9 +12,12 @@ class GetStudentAPI(APIView): def get(self, request): # get information from frontend #OK# - id_student = int(request.GET.get('id_student')) - NowStudent = Student.objects.get(id=id_student) - return self.success(model_to_dict(NowStudent)) + id_user = int(request.GET.get('id_user')) + NowStudent = Student.objects.get(user=id_user) + NowStudentResult = model_to_dict(NowStudent) + del NowStudentResult['followers'] + del NowStudentResult['achievements'] + return self.success(NowStudentResult) def LoginStudentAPI(APIView): # Login API