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)
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)
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 }
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)
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)
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)
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)
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)
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)
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)