コード例 #1
0
    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)
コード例 #2
0
ファイル: mental.py プロジェクト: cs4224485/SchoolSystem
 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__)
コード例 #3
0
 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)
コード例 #4
0
    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)
コード例 #5
0
 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)
コード例 #6
0
    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)
コード例 #7
0
ファイル: mental.py プロジェクト: cs4224485/SchoolSystem
 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)
コード例 #8
0
 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)
コード例 #9
0
    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)
コード例 #10
0
 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)
コード例 #11
0
    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)
コード例 #12
0
 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)
コード例 #13
0
    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)