示例#1
0
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")
示例#2
0
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}