def post(self, request, *args, **kwargs): message = BaseResponse() teacher_id = request.POST.get('teacher_id') date = request.POST.get('date') time_id = request.POST.get('time_id') student_id = request.POST.get('student_id') if datetime.datetime.strptime(date, '%Y-%m-%d') < ( datetime.datetime.now() - datetime.timedelta(days=1)): message.msg = '预约时间有误' return JsonResponse(message.get_dict) try: # 预约创建前先加锁 from django.db import transaction with transaction.atomic(): appointment_obj = mental_models.AppointmentManage.objects.filter( teacher_id=teacher_id, date=date, time_id=time_id).select_for_update() if appointment_obj: message.msg = '该时段已被预约' return JsonResponse(message.get_dict) mental_models.AppointmentManage.objects.create( teacher_id=teacher_id, date=date, time_id=time_id, student_id=student_id) message.state = True message.msg = '预约成功' except Exception as e: print(e) message.msg = '预约失败' return JsonResponse(message.get_dict)
def list(self, request, *args, **kwargs): message = BaseResponse() try: teacher_id = request.GET.get('teacher_id', '11') teacher_info = tea_models.TeacherInfo.objects.filter(id=teacher_id).values('identity__title', 'school', 'teachers__stu_class__grade', 'teachers__stu_class').first() is_psychology_teacher = request.session['teacher_info'].get('is_psychology_teacher') grade = teacher_info.get('teachers__stu_class__grade') if not is_psychology_teacher: stu_class = sch_models.StuClass.objects.filter(grade=grade, id=teacher_info.get('teachers__stu_class'), school=teacher_info.get('school')) else: stu_class = sch_models.StuClass.objects.filter(school=teacher_info.get('school')) data_list = [] for item in stu_class: class_name = '%s%s' % (item.grade.get_grade_name_display(), item.name) student_queryset = stu_models.StudentInfo.objects.filter(stu_class=item, school=teacher_info.get('school')).values('id', 'full_name') if student_queryset: student_dict = {class_name: []} for student in student_queryset: student_dict[class_name].append(student) data_list.append(student_dict) message.state = True message.data = data_list except Exception as e: print(e) message.msg = '获取学生列表失败' return Response(message.__dict__)
def post(self, request, *args, **kwargs): ''' 更新班级名称以及对应的班主任 :param request: :param args: :param kwargs: :return: ''' ret = BaseResponse() try: data = json.loads(request.body.decode('utf-8')) teacher_id = data.get('teacherId') class_name = data.get('className') class_id = data.get('classId', 0) # 修改编辑名称操作 class_obj = sc_models.StuClass.objects.filter(id=class_id).only('name').first() if class_name != class_obj.name: sc_models.StuClass.objects.filter(id=class_id).update(name=class_name) if teacher_id: class_tutor_obj = tea_models.ClassToTeacher.objects.filter(stu_class_id=class_id, relate=1) if class_tutor_obj: class_tutor_obj.update(teacher_id=teacher_id) else: tea_models.ClassToTeacher.objects.create(teacher_id=teacher_id, stu_class_id=class_id) ret.msg = '修改成功' ret.state = True except Exception as e: print(e) ret.msg = '修改失败' return JsonResponse(ret.get_dict)
def post(self, request, *args, **kwargs): message = BaseResponse() try: data = json.loads(request.POST.get('info')) teacher_id = request.session.get('teacher_info').get('id') record = mental_models.IndividualStudentRecord.objects.filter( student_id=data.get('studentId'), teacher_id=teacher_id, record_time=datetime.datetime.now()) if record.exists(): message.msg = '今日已记录' return JsonResponse(message.get_dict) for scale_id, values in data.get('scaleInfo').items(): # 创建量表与学生的对应关系 scale_obj = stu_models.ScaleQuestion.objects.create( student_id=data.get('studentId'), scale_id=scale_id) # 创建一条档案记录 mental_models.IndividualStudentRecord.objects.create( student_id=data.get('studentId'), scale_table=scale_obj, teacher_id=teacher_id) for item in values: # 将填写的值与量表相对应 item['scale_stu'] = scale_obj stu_models.ScaleValue.objects.create(**item) else: message.msg = '创建成功' message.state = True except Exception as e: message.msg = '创建失败' return JsonResponse(message.get_dict)
def patch(self, request, *args, **kwargs): ''' 添加一个班级 :param request: :param args: :param kwargs: :return: ''' ret = BaseResponse() try: data = json.loads(request.body.decode('utf-8')) grade_id = data.get('grade') class_name = data.get('className') school_id = kwargs.get('school_id') class_obj = sc_models.StuClass.objects.filter(grade_id=grade_id, school_id=school_id, name=class_name).first() if class_obj: ret.msg = '该班级以存在' return JsonResponse(ret.get_dict) class_obj = sc_models.StuClass.objects.create(grade_id=grade_id, school_id=school_id, name=class_name) ret.state = True ret.msg = '创建成功' ret.data = {'class_id': class_obj.id} except Exception as e: print(e) ret.msg = '创建失败' return JsonResponse(ret.get_dict)
def patch(self, request, *args, **kwargs): ''' 更新课程表对应的时间 :param request: :param args: :param kwargs: :return: ''' res = BaseResponse() try: data = json.loads(request.body.decode('utf-8')) start_time = data.get('time') # 原来的时间 source_time = data.get('sourceTime', '') school_id = kwargs.get('school_id') query = sc_models.SchoolTimeRange.objects is_exist = query.filter(start_time=start_time, school_id=school_id).first() if is_exist: res.code = -1 res.msg = '该时间段已经存在,请重新编辑' return JsonResponse(res.get_dict) if not source_time: # 没有原来设置的时间添加操作 query.create(start_time=start_time, school_id=school_id) else: # 如果有原来设置的时间更新操作 query.filter(start_time=source_time, school_id=school_id).update(start_time=start_time) res.state = True res.code = 200 except: res.code = -1 res.msg = '编辑时间失败请重新编辑' return JsonResponse(res.get_dict)
def list(self, request, *args, **kwargs): message = BaseResponse() try: class_id = request.GET.get('class_id', '16') stu_class = sch_models.StuClass.objects.filter(id=class_id).first() school = request.session['teacher_info'].get('school') student_queryset = stu_models.StudentInfo.objects.filter(stu_class=stu_class) teacher_queryset = tea_models.TeacherInfo.objects.filter(course__course_des='心理', school=school) stu_se = StudentListSerialize(student_queryset, many=True) teacher_se = PsychologyTeacherSerialize(teacher_queryset, many=True) message.state = True message.data = {'student': stu_se.data, 'teacher': teacher_se.data} except Exception as e: message.msg = '获取失败' return Response(message.get_dict)
def post(self, request, *args, **kwargs): ''' 心理老师可修改预约时间 :return: ''' message = BaseResponse() try: date = request.POST.get('date') appointment_id = request.POST.get('appointmentId') mental_models.AppointmentManage.objects.filter( id=appointment_id).update(date=date) message.state = True message.msg = '修改成功' except Exception as e: print(e) message.msg = '修改失败' return JsonResponse(message.get_dict)
def post(self, request, *args, **kwargs): message = BaseResponse() # 通过姓名和电话号码登陆 teacher_name = request.POST.get('name') if len(teacher_name) <= 1: message.msg = '姓名输入有误' return JsonResponse(message) phone = request.POST.get('phoneNumber') teacher_query = th_models.TeacherInfo.objects.filter( last_name=teacher_name[0], first_name=teacher_name[1::], telephone__endswith=phone) teacher_obj = teacher_query.values('last_name', 'first_name', 'teachers__stu_class__grade', 'teachers__stu_class', 'school', 'id', 'identity__title').first() if teacher_obj: # 将老师的信息存放到session中 teacher_info = { 'name': teacher_obj.get('last_name') + teacher_obj.get('first_name'), 'school': teacher_obj.get('school'), 'grade': teacher_obj.get('teachers__stu_class__grade'), 'stu_class': teacher_obj.get('teachers__stu_class'), 'identity': teacher_obj.get('identity__title'), 'id': teacher_obj.get('id'), 'is_psychology_teacher': teacher_query.first().course.all().filter( course_des='心理').exists() } message.state = True message.msg = '登陆成功' request.session['teacher_id'] = teacher_obj.get('id') request.session['teacher_info'] = teacher_info else: message.msg = '未匹配到,请核对信息' return JsonResponse(message.get_dict)
def delete(self, request, *args, **kwargs): ''' 根据ID 删除一条预约 :param request: :param args: :param kwargs: :return: ''' message = BaseResponse() try: data = json.loads(request.body.decode('utf-8')) appointment_id = data.get('appointmentId') mental_models.AppointmentManage.objects.filter( id=appointment_id).delete() message.state = True message.msg = '删除成功' except Exception as e: message.msg = '删除失败' return JsonResponse(message.get_dict)
def post(self, request, *args, **kwargs): ''' 提交日期对应的描述 :param request: :param args: :param kwargs: :return: ''' res = BaseResponse() try: school_id = kwargs.get('school_id') start_date = request.POST.get('startDate') end_data = request.POST.get('endDate') des_ops = request.POST.get('desOptions') calendar_id = request.POST.get('specialId') save_data = { 'date': start_date, 'date_des': des_ops, 'school_id': school_id } if end_data: if datetime.datetime.strptime(start_date, '%Y-%m-%d') > datetime.datetime.strptime(end_data, '%Y-%m-%d'): res.msg = '结束日期要在开始日期之后' return JsonResponse(res.get_dict) save_data['end_date'] = end_data if calendar_id: calendar_obj = sc_models.SchoolCalendar.objects.filter(id=calendar_id) if calendar_obj: calendar_obj.update(**save_data) res.msg = '修改成功' else: sc_models.SchoolCalendar.objects.create(**save_data) res.msg = '创建成功' res.state = True except Exception as e: print(e) res.msg = '创建失败' return JsonResponse(res.get_dict)
def delete(self, request, *args, **kwargs): ''' 根据时间删除一行课程数据表 :param request: :param args: :param kwargs: :return: ''' res = BaseResponse() try: data = json.loads(request.body.decode('utf-8')) school_id = kwargs.get('school_id') start_time = data.get('time') time_obj = sc_models.SchoolTimeRange.objects.filter(start_time=start_time, school_id=school_id) sc_models.SchoolTimetable.objects.filter(time_range=time_obj.first()).delete() time_obj.delete() res.code = 200 res.state = True except Exception as e: res.code = -1 res.msg = '删除失败' return JsonResponse(res.get_dict)
def post(self, request, *args, **kwargs): ''' 添加一个课程表记录 :param request: :param args: :param kwargs: :return: ''' res = BaseResponse() try: time_info = request.POST.get('timeInfo') school_id = kwargs.get('school_id') time_obj = sc_models.SchoolTimeRange.objects.filter(start_time=time_info, school_id=school_id).first() week = request.POST.get('week') # 课程表Id 如果存在表示需要更新不存在则创建 course_table_id = request.POST.get('courseTableId') record_type = int(request.POST.get('type')) table_query = sc_models.SchoolTimetable.objects if not time_obj: res.msg = '请先设置时间' return JsonResponse(res.get_dict) # 代表添加的是普通的课程 if record_type == 0: teacher_id = request.POST.get('teacherId') course_id = request.POST.get('courseId') class_id = request.POST.get('classId') class_obj = sc_models.StuClass.objects.filter(id=class_id).first() # 单双周信息 course_week = request.POST.get('singleDoubleWeek') if not class_obj: res.msg = '该班级不存在' return JsonResponse(res.get_dict) teacher_obj = tea_models.TeacherInfo.objects.filter(id=teacher_id).first() if not teacher_obj: res.msg = '该教师已不存在, 请刷新页面' return JsonResponse(res.get_dict) course_table_obj = table_query.filter(week=week, time_range=time_obj, stu_class=class_id) if course_table_obj and not course_week and not course_table_id: res.msg = "该时段课程已存在,请重新核对或选择单双周" return JsonResponse(res.get_dict) course_obj = sc_models.Course.objects.filter(id=course_id).first() if not course_obj: res.msg = '该课程已不存在, 请刷新页面' return JsonResponse(res.get_dict) save_dict = { 'stu_class_id': class_id, 'course': course_obj, 'week': week, 'school_id': school_id, 'time_range': time_obj, 'teacher': teacher_obj, 'single_double_week': course_week } if int(course_week) == 1: filter_dic = {'time_range': time_obj, 'single_double_week__in': [2, 3]} # 如果单周或双周改为每周 要把对应单元格另外的一个单双周数据删除 if course_table_id: table_query.filter(**filter_dic).exclude(id=course_table_id).delete() else: table_query.filter(**filter_dic).delete() else: table_obj = table_query.filter(time_range=time_obj, single_double_week=course_week) if table_obj: table_obj.delete() # 代表添加的是其他事件 elif record_type == 1: event_id = request.POST.get('event') save_dict = { 'week': week, 'school_id': school_id, 'time_range': time_obj, 'other_event': int(event_id), 'info_type': 2 } else: raise Exception if course_table_id: obj = table_query.filter(id=course_table_id) if record_type == 0: obj.update(info_type=1, other_event=None) obj.update(**save_dict) obj = obj.first() res.msg = '修改成功' else: obj = table_query.create(**save_dict) # 添加或修改成功后将需要的数据返回给前端 if obj: if obj.info_type == 1: result_data = { 'table_id': obj.id, 'course_id': obj.course.id, 'course_name': obj.course.course_des, 'teacher_id': obj.teacher.id, 'teacher_name': obj.teacher.last_name + obj.teacher.first_name, 'course_week': int(obj.single_double_week), 'info_type': 0 } else: result_data = { 'table_id': obj.id, 'event_id': obj.other_event, 'event_name': obj.get_other_event_display(), 'info_type': 1 } res.msg = '添加成功' res.data = result_data res.state = True except Exception as e: print(e) res.msg = '添加失败' return JsonResponse(res.get_dict)