You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
136 lines
4.8 KiB
136 lines
4.8 KiB
import json
|
|
|
|
from django.core import serializers
|
|
from django.shortcuts import render
|
|
|
|
# Create your views here.
|
|
|
|
from course.models import SC, Course
|
|
|
|
from EduSystemServer.utils import *
|
|
from .models import Student
|
|
from django.views.decorators.csrf import csrf_exempt
|
|
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
|
|
|
|
|
|
@csrf_exempt
|
|
@permission(allowed_roles=["admin", "teacher"])
|
|
def add_student(request):
|
|
"""
|
|
添加学生
|
|
"""
|
|
if not request.method == "POST":
|
|
return JsonResponse(ResponseUtil.error("request method error!"))
|
|
try:
|
|
request_data = request.POST
|
|
student = Student()
|
|
student.username = request_data.get("username")
|
|
student.password = request_data.get("password")
|
|
student.name = request_data.get("name")
|
|
student.sex = request_data.get("sex")
|
|
student.grade = request_data.get("grade")
|
|
student.class_name = request_data.get("class_name")
|
|
student.major = request_data.get("major")
|
|
student.save()
|
|
result = ResponseUtil.ok(student.to_dict(), "添加成功!")
|
|
except Exception as E:
|
|
result = ResponseUtil.error(E)
|
|
return JsonResponse(result)
|
|
|
|
@csrf_exempt
|
|
@permission(allowed_roles=["admin", "teacher"])
|
|
def search_student(request):
|
|
"""
|
|
根据表单对学生进行模糊查询,以及将查询的数据进行分页
|
|
"""
|
|
currentPage = request.GET.get("currentPage")
|
|
pageSize = request.GET.get("pageSize")
|
|
request_data = request.POST
|
|
search_students = Student.objects.all()
|
|
if not request_data.get("sid") == "":
|
|
search_students =search_students.filter(sid=request_data.get("sid"))
|
|
if not request_data.get("name") == "":
|
|
search_students =search_students.filter(name__contains=request_data.get("name"))
|
|
if not request_data.get("sex") == "":
|
|
search_students =search_students.filter(sex=request_data.get("sex"))
|
|
if not request_data.get("class_name") == "":
|
|
search_students =search_students.filter(class_name__contains=request_data.get("class_name"))
|
|
if not request_data.get("major") == "":
|
|
search_students =search_students.filter(major__contains=request_data.get("major"))
|
|
paginator = Paginator(search_students, pageSize)
|
|
try:
|
|
students = paginator.page(currentPage).object_list
|
|
except PageNotAnInteger:
|
|
students = paginator.page(1)
|
|
except EmptyPage:
|
|
students = paginator.page(paginator.num_pages).object_list
|
|
result = ResponseUtil.ok(json.loads(serializers.serialize("json", students)), "success!")
|
|
result["pageTotal"] = paginator.count
|
|
result["pageNum"] = paginator.num_pages
|
|
return JsonResponse(result)
|
|
|
|
|
|
@csrf_exempt
|
|
@permission(allowed_roles=["admin", "teacher"])
|
|
def del_student(request):
|
|
"""
|
|
根据学生ID删除学生
|
|
"""
|
|
if not request.method == "GET":
|
|
return JsonResponse(ResponseUtil.error("request method error!"))
|
|
try:
|
|
sid = request.GET.get("sid")
|
|
student = Student.objects.filter(sid=sid).first()
|
|
student.delete()
|
|
result = ResponseUtil.ok(None, "删除成功!")
|
|
except Exception as E:
|
|
result = ResponseUtil.error(E)
|
|
return JsonResponse(result)
|
|
|
|
|
|
@csrf_exempt
|
|
@permission(allowed_roles=["admin", "student", "teacher"])
|
|
def select_course(request):
|
|
"""
|
|
选课
|
|
"""
|
|
if not request.method == "POST":
|
|
return JsonResponse(ResponseUtil.error("request method error!"))
|
|
try:
|
|
request_data = request.POST
|
|
cid = request_data.get("cid")
|
|
username = request_data.get("username")
|
|
student = Student.objects.filter(username=username).first()
|
|
if SC.objects.filter(cid=cid, sid=student.sid).exists():
|
|
return JsonResponse(ResponseUtil.error("该课程已经选择!"))
|
|
sc = SC()
|
|
sc.sid = student
|
|
sc.cid = Course.objects.filter(cid=cid).first()
|
|
sc.middle_grade = 0
|
|
sc.end_grade = 0
|
|
sc.save()
|
|
return JsonResponse(ResponseUtil.ok(None, "选课成功!"))
|
|
except Exception as E:
|
|
print(E)
|
|
return JsonResponse(ResponseUtil.error(str(E)))
|
|
|
|
|
|
@permission(allowed_roles=["student"])
|
|
def get_grade(request):
|
|
"""
|
|
获取学生成绩
|
|
"""
|
|
if not request.method == "GET":
|
|
return ResponseUtil.error("request method error!")
|
|
try:
|
|
username = request.jwt_payload.get("username")
|
|
student = Student.objects.filter(username=username).first()
|
|
grade__all = SC.objects.filter(sid=student.sid).values("sid", "sid__name", "cid__name", "cid__type", "cid__credit",
|
|
"cid__tid__name", "middle_grade", "end_grade").all()
|
|
grades = []
|
|
for grade in grade__all:
|
|
grades.append(grade)
|
|
return JsonResponse(ResponseUtil.ok(grades))
|
|
except Exception as E:
|
|
return JsonResponse(ResponseUtil.error(E))
|