Exemple #1
0
    def post(self, request):
        """
        按条件获取课程数据
        请求参数: user_id = ? , userkind = ?

        返回json: [
              {
                "lid": 809010001,
                "lname": "C语言程序设计01",
                "ltime": 12,
                "lclass_id": 1530501,
                "lclassroom_id": 101,
                "lteacher_id": 80901001
              },
              ...
            ]
        """

        # 获取请求数据
        querydict = request.data

        userkind = querydict.getlist("userkind")[0]
        user_id = querydict.getlist("user_id")[0]

        # 教师
        if userkind == "1":

            # 按照教师id获取课程数据
            condition_lesson = lesson_table.objects.filter(lteacher_id=user_id)
            condition_serializer = LessonSerializer(condition_lesson,
                                                    many=True)

            return Response(condition_serializer.data)

        # 学生
        if userkind == "2":

            # 获取该学生班号
            stu_querydict = student_table.objects.filter(sid=user_id)
            stu_info = StudentSerializer(stu_querydict, many=True).data

            print(stu_info)

            class_id = stu_info[0]["sclass"]

            # 按照班级id获取课程数据
            condition_lesson = lesson_table.objects.filter(lclass_id=class_id)
            condition_serializer = LessonSerializer(condition_lesson,
                                                    many=True)

            return Response(condition_serializer.data)
Exemple #2
0
 def put(self, request, *args, **kwargs):
     user = request.user
     data = request.data
     pk = kwargs['pk']
     lesson = get_object_or_404(Lesson, pk=pk)
     if not lesson.is_authorized(request.user):
         return Response(status=401)
     content = lesson.description
     content_data = {
         'text': data['text'],
         "last_edited_at": datetime.datetime.now()
     }
     if "file" in request.FILES:
         file = request.FILES['file']
         content_data['file'] = file
     serializer = ContentSerializer(content, data=content_data)
     serializer.is_valid(raise_exception=True)
     serializer.save()
     lesson_data = {
         "title": data['title'],
         "owner": lesson.owner.pk,
         "description": lesson.description.pk,
         "last_edited_at": datetime.datetime.now(),
         "course": lesson.course.pk
     }
     serializer = LessonSerializer(lesson, data=lesson_data)
     serializer.is_valid(raise_exception=True)
     serializer.save()
     return Response(serializer.data, status=HTTP_200_OK)
Exemple #3
0
 def makelog(l):
     lessonlog = LessonLog.objects.filter(user_id=user1.id,
                                          lesson_id=l.id).first()
     return {
         'lesson': LessonSerializer(l).data,
         'lessonlog': LessonLogSerializer(lessonlog).data
     }
Exemple #4
0
 def test_user_can_see_all_lessons(self):
     """
     Test that user can see all lessons.
     """
     testuser = create_default_user()
     self.client.force_authenticate(user=testuser)
     lesson = Lesson.objects.all()
     serializer = LessonSerializer(lesson, many=True)
     response = self.client.get(reverse('lessons_all'))
     self.assertEqual(response.data, serializer.data)
     self.assertEqual(response.status_code, status.HTTP_200_OK)
Exemple #5
0
    def get(self, request, pk):
        course = get_object_or_404(Course, pk=pk)
        course_serializer = CourseSerializer(course)
        data = course_serializer.data

        lessons = course.lessons.all()
        lesson_serializer = LessonSerializer(lessons, many=True)
        data['lessons'] = lesson_serializer.data

        students = course.students.all()
        user_serializer = StudentSerializer(students, many=True)
        data['students'] = user_serializer.data
        return Response(data)
Exemple #6
0
    def get(self, request):
        """查询所有"""
        try:
            lesson = lesson_table.objects.all()
        except:
            return Response({"error": "查询失败"})

        # 序列化
        lesson_serializer = LessonSerializer(lesson, many=True)
        lesson_dict = lesson_serializer.data

        # 返回
        return Response(lesson_dict)
Exemple #7
0
 def test_user_can_only_see_the_lesson_and_their_log(self):
     """
     Test that user can only see the lesson info and their lesson log.
     """
     user1 = LessonUser.objects.get(username='******')
     self.client.force_authenticate(user=user1)
     valid_lesson = Lesson.objects.first()
     log = LessonLog.objects.filter(user_id=user1,
                                    lesson_id=valid_lesson).first()
     resp = {
         'lesson': LessonSerializer(valid_lesson).data,
         'lessonlog': LessonLogSerializer(log).data
     }
     response = self.client.get(
         reverse('lesson_detail', args=(valid_lesson.id, )))
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     self.assertEqual(response.data, resp)
Exemple #8
0
    def post(self, request):
        """
        路由 POST /lesson/lessonall/
        请求参数: lclass_id = ?
        """

        # 获取请求数据
        querydict = request.data

        # 获取请求数据中的 教师id
        lclass_id = querydict.getlist("lclass_id")[0]

        # 在课程表中查询该教师的课数据,并序列化
        class_lesson = lesson_table.objects.filter(lclass_id=lclass_id)
        lesson_serializer = LessonSerializer(class_lesson, many=True)

        # 返回教师课表数据
        return Response(lesson_serializer.data)
Exemple #9
0
 def post(self, request, *args, **kwargs):
     user = request.user
     data = request.data
     course = get_object_or_404(Course, pk=kwargs.get("pk"))
     content = {'text': data['text']}
     if "file" in request.FILES:
         file = request.FILES['file']
         content['file'] = file
     serializer = ContentSerializer(data=content)
     serializer.is_valid(raise_exception=True)
     serializer.save()
     place = Lesson.objects.filter(course=course.id).count() + 1
     lesson = {
         "title": data['title'],
         "owner": user.pk,
         "description": serializer.instance.pk,
         "place": place,
         "course": kwargs.get("pk"),
     }
     serializer = LessonSerializer(data=lesson)
     serializer.is_valid(raise_exception=True)
     serializer.save()
     return Response(serializer.data, status=HTTP_200_OK)
Exemple #10
0
    def post(self, request):
        """
        根据路由中班级id获取相关学生考勤

        路由: POST attendance/user_attendance/

        请求: user_id = ?   usrkind = ?

        """
        # 获取请求参数
        attendance = request.data

        userkind = attendance.getlist("userkind")[0]
        user_id = attendance.getlist("user_id")[0]

        # 教师
        if userkind == "1":

            try:
                user_attendance = teacher_attendance_table.objects.filter(
                    atuser_id=user_id)
            except:
                return Response({"error": "查询失败"})

            # 序列化
            tea_attendance_serializer = TeacherAttendanceSerializer(
                user_attendance, many=True)
            tea_attendance_dict = tea_attendance_serializer.data

            attendance_list = []

            for dict1 in tea_attendance_dict:
                id = dict1["id"]
                time = dict1["attime"]
                status = dict1["atstatus"]
                lesson_id = dict1["alesson"]
                user_id = dict1["atuser"]

                if status == 1:
                    status = "全勤"
                elif status == 2:
                    status = "迟到"
                elif status == 3:
                    status = "早退"
                elif status == 4:
                    status = "缺勤"
                elif status == 5:
                    status = "请假"

                # 获取老师姓名
                teacher = teacher_table.objects.filter(tid=user_id)
                teacher_data = TeacherSerializer(teacher, many=True)
                teacher_name = teacher_data.data[0]["tname"]

                # 获取课程名
                lesson = lesson_table.objects.filter(lid=lesson_id)
                lesson_data = LessonSerializer(lesson, many=True)
                lesson_name = lesson_data.data[0]["lname"]

                data = {
                    "id": id,
                    "name": teacher_name,
                    "time": time,
                    "lesson_name": lesson_name,
                    "status": status,
                }

                attendance_list.append(data)

            return Response(attendance_list)

        # 学生
        if userkind == "2":
            try:
                user_attendance = student_attendance_table.objects.filter(
                    asuser_id=user_id)
            except:
                return Response({"error": "查询失败"})

            # 序列化
            stu_attendance_serializer = StudentAttendanceSerializer(
                user_attendance, many=True)
            stu_attendance_dict = stu_attendance_serializer.data

            attendance_list = []

            for dict1 in stu_attendance_dict:
                id = dict1["id"]
                time = dict1["astime"]
                status = dict1["asstatus"]
                lesson_id = dict1["alesson"]
                user_id = dict1["asuser"]

                if status == 1:
                    status = "全勤"
                elif status == 2:
                    status = "迟到"
                elif status == 3:
                    status = "早退"
                elif status == 4:
                    status = "缺勤"
                elif status == 5:
                    status = "请假"

                # 获取学生姓名
                student = student_table.objects.filter(sid=user_id)
                student_data = StudentSerializer(student, many=True)
                student_name = student_data.data[0]["sname"]

                # 获取课程名
                lesson = lesson_table.objects.filter(lid=lesson_id)
                lesson_data = LessonSerializer(lesson, many=True)
                lesson_name = lesson_data.data[0]["lname"]

                data = {
                    "id": id,
                    "name": student_name,
                    "time": time,
                    "lesson_name": lesson_name,
                    "status": status,
                }

                attendance_list.append(data)

            return Response(attendance_list)