def changecheckinstatus(request, lessonid): lesson = Lesson.objects.get(id=lessonid) studentid = request.GET.get('studentid', default=False) or request.GET.get('pk') newstatus = request.GET.get('newstatus', default=False) or request.GET.get('value') try: student = Student.objects.get(studentid=studentid) except ObjectDoesNotExist: return HttpResponse(json.dumps({'error': 101, 'message': '未找到,请输入正确的学号'}), content_type="application/json") if not (has_course_permission(request.user, lesson.course) or request.user.has_perm('checkin_modify')): return HttpResponse(json.dumps({'error': 101, 'message': '没有权限'}), content_type="application/json") try: checkin = Checkin.objects.get(student=student, lesson=lesson) except ObjectDoesNotExist: if not Studentcourse.objects.filter(course=lesson.course, student=student).exists(): Studentcourse.objects.create(course=lesson.course, student=student) checkin = Checkin(student=student, lesson=lesson) """ 关闭请假不允许修改功能 if checkin.status > 10: # ASK return HttpResponse(json.dumps({'error': 101, 'message': '学生已经请假'}), content_type="application/json") """ if newstatus == 'newcheckin': data = student_checkin(student, lesson) elif newstatus == 'delete': checkin.status = CHECKIN_STATUS_NORMAL checkin.save() data = {'studentid': studentid, 'status': checkin.status} elif newstatus == 'late': checkin.status = CHECKIN_STATUS_LATE checkin.save() data = {'studentid': studentid, 'status': checkin.status} elif newstatus == 'success': checkin.status = CHECKIN_STATUS_SUCCESS checkin.save() data = {'studentid': studentid, 'status': checkin.status} elif newstatus == 'early': checkin.status = CHECKIN_STATUS_EARLY checkin.save() data = {'studentid': studentid, 'status': checkin.status} elif newstatus == 'lateearly': checkin.status = CHECKIN_STATUS_LATEEARLY checkin.save() data = {'studentid': studentid, 'status': checkin.status} elif newstatus == 'private_ask': checkin.status = CHECKIN_STATUS_PRIVATE_ASK checkin.save() data = {'studentid': studentid, 'status': checkin.status} elif newstatus == 'public_ask': checkin.status = CHECKIN_STATUS_PRIVATE_ASK checkin.save() data = {'studentid': studentid, 'status': checkin.status} elif newstatus == 'sick_ask': checkin.status = CHECKIN_STATUS_SICK_ASK checkin.save() data = {'studentid': studentid, 'status': checkin.status} elif newstatus.isdigit(): checkin.status = newstatus checkin.save() data = {'studentid': studentid, 'status': checkin.status} return HttpResponse(json.dumps(data), content_type="application/json")
def student_checkin(student, lesson, abnormal=None): try: checkin = Checkin.objects.get(lesson=lesson, student=student) except ObjectDoesNotExist: checkin = Checkin(lesson=lesson, student=student) # checkindata.seatid = seatid nowtime = datetime.datetime.now() if checkin.status > 10: # ASK return {'error': 101, 'message': '学生已经请假'} if not checkin.time: checkin.time = nowtime if lesson.status == LESSON_STATUS_CHECKIN: if checkin.status == CHECKIN_STATUS_NORMAL: checkin.status = CHECKIN_STATUS_SUCCESS elif lesson.status == LESSON_STATUS_CHECKIN_ADD: if checkin.status == CHECKIN_STATUS_NORMAL: checkin.status = CHECKIN_STATUS_LATE elif checkin.status == CHECKIN_STATUS_EARLY: checkin.status = CHECKIN_STATUS_SUCCESS elif checkin.status == CHECKIN_STATUS_LATEEARLY: checkin.status = CHECKIN_STATUS_LATE elif lesson.status == LESSON_STATUS_CHECKIN_AGAIN: if checkin.laststatus == CHECKIN_STATUS_NORMAL: return {'error': 101, 'message': '再签模式不能新签入'} elif checkin.laststatus == CHECKIN_STATUS_LATE: checkin.status = CHECKIN_STATUS_LATE elif checkin.laststatus == CHECKIN_STATUS_EARLY: checkin.status = CHECKIN_STATUS_SUCCESS elif checkin.laststatus == CHECKIN_STATUS_LATEEARLY: checkin.status = CHECKIN_STATUS_LATE elif checkin.status == CHECKIN_STATUS_NORMAL: checkin.status = CHECKIN_STATUS_SUCCESS if checkin.abnormal is None and abnormal is not None: checkin.abnormal = abnormal checkin.save() return {'error': 0, 'status': checkin.status, 'checkin_id': checkin.id}