示例#1
0
文件: user.py 项目: npuNancy/Apis
def getUsername(request):
    """
    @api {get} /specificApis/user/getUsername getUsername
    @apiVersion 1.0.0
    @apiDescription get username
    @apiName getUsername
    @apiGroup user
    @apiSuccessExample {json} Success-Response:
        HTTP/1.1 200 OK
        {
            "error": 0,
            "result": "get username success"
        }
    @apiErrorExample {json} Error-Response:
        HTTP/1.1 200 OK
        {
            "error": 1,
            "reason": "error reason here"
        }
    """
    if not function.check_Session(request) and not function.check_gradeAdminSession(request):
        return function.retJson(error=-1, reason='have not login')
    if function.check_Session(request):
        username = request.session.get('username')
        role = 'user'
    elif function.check_gradeAdminSession(request):
        username = request.session.get('username_grade')
        role = 'gradeAdmin'
    return function.retJson(error=0, result=username, role=role)
示例#2
0
文件: user.py 项目: npuNancy/Apis
def getUserClassNumber(request):
    """
    @api {get} /specificApis/user/getUserClassNumber getUserClassNumber
    @apiVersion 1.0.0
    @apiDescription getUserClassNumber
    @apiName getUserClassNumber
    @apiGroup user
    @apiSuccessExample {json} Success-Response:
        HTTP/1.1 200 OK
        {
            "error": 0,
            "result": "get UserClassNumber success"
        }
    @apiErrorExample {json} Error-Response:
        HTTP/1.1 200 OK
        {
            "error": 1,
            "reason": "error reason here"
        }
    """
    if not function.check_Session(request):
        return function.retJson(error=-1, reason='have not login')
    try:
        username = request.session.get('username')
        classNumber = User.objects.filter(username=username).values()[
            0]['classNumber']
        return function.retJson(error=0, classNumber=classNumber)
    except Exception as e:
        return function.retJson(error=1, reason=str(e))
示例#3
0
文件: user.py 项目: npuNancy/Apis
def logout(request):
    """
    @api {get} /specificApis/login/logout logout
    @apiVersion 1.0.0
    @apiDescription logout
    @apiName logout
    @apiGroup user
    @apiSuccessExample {json} Success-Response:
        HTTP/1.1 200 OK
        {
            "error": 0,
            "result": "logout"
        }
    @apiErrorExample {json} Error-Response:
        HTTP/1.1 200 OK
        {
            "error": 1,
            "reason": "error reason here"
        }
    """
    try:
        if not function.check_Session(request):
            return function.retJson(error=-1, reason='have not login')
        request.session.flush()
        return function.retJson(error=0, resule='logout')
    except Exception as e:
        return function.retJson(error=1, reason=str(e))
示例#4
0
文件: student.py 项目: npuNancy/Apis
def studentGet(request):
    """
    @api {get} /specificApis/student/get studentGet
    @apiVersion 1.0.0
    @apiDescription studentGet
    @apiName studentGet
    @apiGroup student
    @apiSuccessExample {json} Success-Response:
        HTTP/1.1 200 OK
        {
            "error": 0,
            "result": value
        }
    @apiErrorExample {json} Error-Response:
        HTTP/1.1 200 OK
        {
            "error": 1,
            "reason": "error reason here"
        }
    """
    if not function.check_Session(
            request) and not function.check_gradeAdminSession(request):
        return function.retJson(error=-1, reason='have not login')
    if request.method == "GET":
        value = list(Student.objects.all().values())
        return function.retJson(error=0,
                                result=value,
                                mycls=function.MyEncoder)
    else:
        return function.retJson(error=1, reason='needmethod: get')
示例#5
0
文件: views.py 项目: npuNancy/Apis
def classes(request):
    if not function.check_Session(
            request) and not function.check_gradeAdminSession(request):
        return HttpResponseRedirect("/login")
    if 'classNumber' in request.GET:
        classNumber = request.GET['classNumber']
        return render(request, 'classes.html', {'classNumber': classNumber})
    else:
        return index(request)
示例#6
0
文件: views.py 项目: npuNancy/Apis
def student(request):
    if not function.check_Session(
            request) and not function.check_gradeAdminSession(request):
        return HttpResponseRedirect("/login")
    if 'studentId' in request.GET:
        studentId = request.GET['studentId']
        return render(request, 'student.html', {'studentId': studentId})
    else:
        return index(request)
示例#7
0
def signOut(request):
    """
    @api {post} /specificApis/studentData/signOut signOut
    @apiVersion 1.0.0
    @apiDescription sign Out
    @apiName signOut
    @apiGroup studentData
    @apiParam {string} studentId studentId unique
    @apiParam {string} dataId dataId unique
    @apiSuccessExample {json} Success-Response:
        HTTP/1.1 200 OK
        {
            "error": 0,
            "result": "sign Out success"
        }
    @apiErrorExample {json} Error-Response:
        HTTP/1.1 200 OK
        {
            "error": 1,
            "reason": "error reason here"
        }
    """
    if not function.check_Session(request):
        return function.retJson(error=-1, reason='have not login')
    if request.method == 'POST':
        try:
            studentId = request.POST.get('studentId')
            dataId = request.POST.get('dataId')
            dateToday = date.today()
            if function.checkExist_student(studentId):
                data = StudentData.objects.get(id=dataId)
                if data.state == 2:
                    data.state = 3
                    data.save()
                    data = StudentData.objects.filter(id=dataId)
                    startTime = data.values()[0]['startTime']
                    endTime = data.values()[0]['endTime']
                    duration = function.calDurationTime(startTime, endTime)[0]
                    points = function.calDurationTime(startTime, endTime)[1]
                    data.update(duration=duration, points=points)
                    values = StudentData.objects.filter(id=dataId).values()[0]
                    return function.retJson(error=0,
                                            result='sign out success',
                                            values=values,
                                            mycls=function.MyEncoder)
                else:
                    return function.retJson(error=4, reason='wrong state')
            else:
                return function.retJson(error=2, reason='Students dont exist')
        except Exception as e:
            return function.retJson(error=3, reason=str(e))
    else:
        return function.retJson(error=1, reason='needmethod: POST')
示例#8
0
文件: student.py 项目: npuNancy/Apis
def studentAdd(request):
    """
    @api {post} /specificApis/student/add studentAdd
    @apiVersion 1.0.0
    @apiDescription studentAdd
    @apiName studentAdd
    @apiGroup student
    @apiParam {string} studentId studentId unique
    @apiParam {string} name name
    @apiParam {int} sex sex
    @apiParam {int} state state
    @apiParam {int} initPoints initial points
    @apiParam {string} classNumber classNumber 外键
    @apiSuccessExample {json} Success-Response:
        HTTP/1.1 200 OK
        {
            "error": 0,
            "result": "create student success"
        }
    @apiErrorExample {json} Error-Response:
        HTTP/1.1 200 OK
        {
            "error": 1,
            "reason": "error reason here"
        }
    """
    if not function.check_Session(request):
        return function.retJson(error=-1, reason='have not login')
    if request.method == "POST":
        studentId = request.POST.get('studentId')
        name = request.POST.get('name')
        sex = request.POST.get('sex')
        state = request.POST.get('state')
        initPoints = request.POST.get('initPoints')
        classNumber = request.POST.get('classNumber')
        try:
            class_Account = Classes.objects.get(classNumber=classNumber)
            student_Account__ = Student(classNumber=class_Account,
                                        sex=sex,
                                        studentId=studentId,
                                        name=name,
                                        state=state,
                                        initPoints=initPoints)
            student_Account__.save()
            return function.retJson(error=0, result="create student success")
        except Exception as e:
            return function.retJson(error=2, reason=str(e))
    else:
        return function.retJson(error=1, reason='needmethod: post')
示例#9
0
文件: student.py 项目: npuNancy/Apis
def studentChange(request):
    """
    @api {post} /specificApis/student/change studentChange
    @apiVersion 1.0.0
    @apiDescription studentChange
    @apiName studentChange
    @apiGroup student
    @apiParam {string} studentId studentId unique
    @apiParam {string} name name
    @apiParam {int} sex sex
    @apiParam {string} classNumber classNumber 外键
    @apiSuccessExample {json} Success-Response:
        HTTP/1.1 200 OK
        {
            "error": 0,
            "result": change student success
        }
    @apiErrorExample {json} Error-Response:
        HTTP/1.1 200 OK
        {
            "error": 1,
            "reason": "error reason here"
        }
    """
    if not function.check_Session(request):
        return function.retJson(error=-1, reason='have not login')
    if request.method == "POST":
        studentId = request.POST.get('studentId')
        name = request.POST.get('name')
        sex = request.POST.get('sex')
        sex = 1 if (sex == "男") else 0
        initPoints = request.POST.get('initPoints')

        # classNumber = request.POST.get('classNumber')
        if function.checkExist_student(studentId):
            try:
                stud = Student.objects.filter(studentId=studentId)
                stud.update(name=name, sex=sex, initPoints=initPoints)
                # class_Account = Classes.objects.get(classNumber=classNumber)
                # stud.update(classNumber=class_Account, name=name, sex=sex)
                return function.retJson(error=0,
                                        result="change student success")
            except Exception as e:
                return function.retJson(error=3, reason=str(e))
        else:
            return function.retJson(error=2, reason='Students dont exist')
    else:
        return function.retJson(error=1, reason='needmethod: post')
示例#10
0
文件: show.py 项目: npuNancy/Apis
def getClassData(request):
    """
    @api {post} /specificApis/show/getClassData getClassData
    @apiVersion 1.0.0
    @apiDescription getClassData
    @apiName getClassData
    @apiGroup show
    @apiParam {string} classNumber classNumber
    @apiSuccessExample {json} Success-Response:
        HTTP/1.1 200 OK
        {
            "error": 0,
            "result": "get all class info success"
        }
    @apiErrorExample {json} Error-Response:
        HTTP/1.1 200 OK
        {
            "error": 1,
            "reason": "error reason here"
        }
    """
    if not function.check_Session(
            request) and not function.check_gradeAdminSession(request):
        return function.retJson(error=-1, reason='have not login')
    if request.method == "POST":
        try:
            classNumber = request.POST.get('classNumber')
            classs, students = function.getClassData(classNumber)

            return function.retJson(error=0,
                                    classs=classs,
                                    data=list(students),
                                    mycls=function.MyEncoder)
        except Exception as e:
            return function.retJson(error=2, reason=str(e))
    else:
        return function.retJson(error=1, reason='needmethod: get')
示例#11
0
文件: student.py 项目: npuNancy/Apis
def studentDelete(request):
    """
    @api {post} /specificApis/student/delete studentDelete
    @apiVersion 1.0.0
    @apiDescription Delete student
    @apiName studentDelete
    @apiGroup student
    @apiParam {string} studentId studentId unique
    @apiSuccessExample {json} Success-Response:
        HTTP/1.1 200 OK
        {
            "error": 0,
            "result": "delete student success"
        }
    @apiErrorExample {json} Error-Response:
        HTTP/1.1 200 OK
        {
            "error": 1,
            "reason": "error reason here"
        }
    """
    if not function.check_Session(request):
        return function.retJson(error=-1, reason='have not login')
    if request.method == "POST":
        studentId = request.POST.get('studentId')
        if function.checkExist_student(studentId):
            try:
                Student.objects.filter(studentId=studentId).delete()
                return function.retJson(error=0,
                                        result="delete student success")
            except Exception as e:
                return function.retJson(error=3, reason=str(e))
        else:
            return function.retJson(error=2, reason='Students dont exist')
    else:
        return function.retJson(error=1, reason='needmethod: post')
示例#12
0
文件: user.py 项目: npuNancy/Apis
def userChangePass(request):
    """
    @api {post} /specificApis/user/changePass userChangePass
    @apiVersion 1.0.0
    @apiDescription change user's password
    @apiName userChangePass
    @apiGroup user
    @apiParam {string} password new password
    @apiSuccessExample {json} Success-Response:
        HTTP/1.1 200 OK
        {
            "error": 0,
            "result": "create user success"
        }
    @apiErrorExample {json} Error-Response:
        HTTP/1.1 200 OK
        {
            "error": 1,
            "reason": "error reason here"
        }
    """
    if not function.check_Session(request):
        return function.retJson(error=-1, reason='have not login')
    if request.method == "POST":
        username = request.session.get('username')
        password = request.POST.get('password')

        password = function.hash(password)
        try:
            user_Account = User.objects.filter(username=username)
            user_Account.update(password=password)
            return function.retJson(error=0, result="change user's password success")
        except Exception as e:
            return function.retJson(error=2, reason=str(e))
    else:
        return function.retJson(error=3, reason='needmethod: post')
示例#13
0
def getClassStudents(request):
    """
    @api {get} /specificApis/studentData/getClassStudents getClassStudents
    @apiVersion 1.0.0
    @apiDescription get this class's students
    @apiName getClassStudents
    @apiGroup studentData
    @apiSuccessExample {json} Success-Response:
        HTTP/1.1 200 OK
        {
            "error": 0,
            "result": "ask for leave success"
        }
    @apiErrorExample {json} Error-Response:
        HTTP/1.1 200 OK
        {
            "error": 1,
            "reason": "error reason here"
        }
    """
    if not function.check_Session(request):
        return function.retJson(error=-1, reason='have not login')
    if request.method == "GET":
        try:
            username = request.session.get('username')
            classNumber = User.objects.filter(
                username=username).values()[0]['classNumber']
            stu = Student.objects.filter(
                classNumber__classNumber=classNumber).values()
            return function.retJson(error=0,
                                    result=list(stu),
                                    mycls=function.MyEncoder)
        except Exception as e:
            return function.retJson(error=2, reason=str(e))
    else:
        return function.retJson(error=1, reason='needmethod: get')
示例#14
0
文件: views.py 项目: npuNancy/Apis
def index(request):
    if not function.check_Session(
            request) and not function.check_gradeAdminSession(request):
        return HttpResponseRedirect("/login")
    return render(request, 'index.html')
示例#15
0
def signIn(request):
    """
    @api {post} /specificApis/studentData/signIn signIn
    @apiVersion 1.0.0
    @apiDescription 开始签到
    @apiName signIn
    @apiGroup studentData
    @apiParam {string} studentId studentId unique
    @apiSuccessExample {json} Success-Response:
        HTTP/1.1 200 OK
        {
            "error": 0,
            "result": "Record success"
        }
    @apiErrorExample {json} Error-Response:
        HTTP/1.1 200 OK
        {
            "error": 1,
            "reason": "error reason here"
        }
    """
    if not function.check_Session(request):
        return function.retJson(error=-1, reason='have not login')
    if request.method == "POST":
        try:
            # check if the # correct Time
            nowTime = datetime.strptime(datetime.now().strftime('%H:%M:%S'),
                                        '%H:%M:%S')
            conf = Config.objects.get(name='default')
            earliestTime = datetime.strptime(str(conf.startTime), '%H:%M:%S')
            latestTime = datetime.strptime(str(conf.startTime), '%H:%M:%S')
            if nowTime >= earliestTime and nowTime <= latestTime:
                # correct time
                studentId = request.POST.get('studentId')
                dateToday = date.today()
                if function.checkExist_student(studentId):
                    student_Account = Student.objects.get(studentId=studentId)
                    flag_askLeave = StudentData.objects.filter(
                        studentId=student_Account, date=dateToday, state=1)
                    if not flag_askLeave:
                        flag_notOver = StudentData.objects.filter(
                            studentId=student_Account, date=dateToday, state=2)
                        if not flag_notOver:
                            try:
                                obje_Data = StudentData(
                                    studentId=student_Account, state=2)
                                obje_Data.save()
                                values = StudentData.objects.filter(
                                    studentId=student_Account,
                                    date=dateToday,
                                    state=2).values()[0]
                                return function.retJson(
                                    error=0,
                                    result='sign in success',
                                    values=values,
                                    mycls=function.MyEncoder)
                            except Exception as e:
                                return function.retJson(error=6, reason=str(e))
                        else:
                            return function.retJson(error=5,
                                                    reason='not over yet')
                    else:
                        return function.retJson(error=4,
                                                reason='has asked for leave')
                else:
                    return function.retJson(error=3,
                                            reason='Students dont exist')
            else:
                # incorrect time
                return function.retJson(error=2, reason='incorrect time')
        except Exception as e:
            return function.retJson(error=6, reason=str(e))

    else:
        return function.retJson(error=1, reason='needmethod: post')
示例#16
0
def askLeave(request):
    # will not use
    """
    @api {post} /specificApis/studentData/askLeave askLeave
    @apiVersion 1.0.0
    @apiDescription ask for leave
    @apiName askLeave
    @apiGroup studentData
    @apiParam {string} studentId studentId unique
    @apiSuccessExample {json} Success-Response:
        HTTP/1.1 200 OK
        {
            "error": 0,
            "result": "ask for leave success"
        }
    @apiErrorExample {json} Error-Response:
        HTTP/1.1 200 OK
        {
            "error": 1,
            "reason": "error reason here"
        }
    """
    if not function.check_Session(request):
        return function.retJson(error=-1, reason='have not login')
    if request.method == "POST":
        studentId = request.POST.get('studentId')
        dateToday = date.today()
        if function.checkExist_student(studentId):
            # 学生存在
            student_Account = Student.objects.get(studentId=studentId)
            flag_askLeave = StudentData.objects.filter(
                studentId=student_Account, date=dateToday, state=1)
            if not flag_askLeave:
                # 今天没请过假
                flag_notOver = StudentData.objects.filter(
                    studentId=student_Account, date=dateToday, state=2)
                if not flag_notOver:
                    # 还没结束
                    flag_notStart = StudentData.objects.filter(
                        studentId=student_Account, date=dateToday, state=3)
                    if not flag_notStart:
                        # 还没开始过
                        try:
                            obje_Data = StudentData(studentId=student_Account,
                                                    state=1,
                                                    points=0)  # 请假/不来 0 积分
                            obje_Data.save()
                            values = StudentData.objects.filter(
                                studentId=student_Account,
                                date=dateToday,
                                state=1).values()[0]
                            return function.retJson(error=0,
                                                    values=values,
                                                    mycls=function.MyEncoder)
                        except Exception as e:
                            return function.retJson(error=7, reason=str(e))
                    else:
                        # 开始过
                        return function.retJson(error=6,
                                                reason='cant ask for leave')
                else:
                    return function.retJson(error=5, reason='not over yet')
            else:
                return function.retJson(error=4, reason='has asked for leave')
        else:
            return function.retJson(error=2, reason='Students dont exist')
    else:
        return function.retJson(error=1, reason='needmethod: post')
示例#17
0
文件: views.py 项目: npuNancy/Apis
def studentAdd(request):
    if not function.check_Session(request):
        return HttpResponseRedirect("/login")
    return render(request, 'studentAdd.html')
示例#18
0
文件: views.py 项目: npuNancy/Apis
def studentEdit(request):
    if not function.check_Session(request):
        return HttpResponseRedirect("/login")
    if 'studentId' in request.GET:
        studentId = request.GET['studentId']
    return render(request, 'studentEdit.html', {'studentId': studentId})
示例#19
0
文件: views.py 项目: npuNancy/Apis
def manageClass(request):
    if not function.check_Session(request):
        return HttpResponseRedirect("/login")
    return render(request, 'manageClass.html')
示例#20
0
def getStudentStates(request):
    """
    @api {post} /specificApis/studentData/getStudentstates getStudentStates
    @apiVersion 1.0.0
    @apiDescription getStudentStates
    @apiName getStudentStates
    @apiGroup studentData
    @apiParam {string} studentId studentId unique
    @apiSuccessExample {json} Success-Response:
        HTTP/1.1 200 OK
        {
            "error": 0,
            "result": "ask for leave success"
        }
    @apiErrorExample {json} Error-Response:
        HTTP/1.1 200 OK
        {
            "error": 1,
            "reason": "error reason here"
        }
    """
    if not function.check_Session(request):
        return function.retJson(error=-1, reason='have not login')
    if request.method == "POST":
        studentId = request.POST.get('studentId')
        dateToday = date.today()
        try:
            if function.checkExist_student(studentId):
                # student exist
                student_Account = Student.objects.get(studentId=studentId)
                flag_askLeave = StudentData.objects.filter(
                    studentId=student_Account, date=dateToday, state=1)
                if not flag_askLeave:
                    # 今日还没请假
                    flag_notOver = StudentData.objects.filter(
                        studentId=student_Account, date=dateToday, state=2)
                    if not flag_notOver:
                        flag_notStart = StudentData.objects.filter(
                            studentId=student_Account, date=dateToday, state=3)
                        if not flag_notStart:
                            return function.retJson(error=0, state=0)
                        else:
                            # 今天开始过
                            st = flag_notStart.values(
                            )[0]['startTime'].strftime('%Y-%m-%d %H:%M:%S')
                            et = flag_notStart.values()[0]['endTime'].strftime(
                                '%Y-%m-%d %H:%M:%S')
                            points = flag_notStart.values()[0]['points']
                            return function.retJson(error=0,
                                                    state=3,
                                                    starttime=st,
                                                    endtime=et,
                                                    points=points,
                                                    mycls=function.MyEncoder)
                    else:
                        st = flag_notOver.values()[0]['startTime'].strftime(
                            '%Y-%m-%d %H:%M:%S')
                        dataId = flag_notOver.values()[0]['id']
                        # 没结束
                        return function.retJson(error=0,
                                                state=2,
                                                starttime=st,
                                                dataId=dataId)
                else:
                    return function.retJson(error=0, state=1)  # 请假
            else:
                return function.retJson(error=3, reason='Students dont exist')
        except Exception as e:
            return function.retJson(error=2, reason=str(e))
    else:
        return function.retJson(error=1, reason='needmethod: post')
示例#21
0
文件: views.py 项目: npuNancy/Apis
def login(request):
    if function.check_Session(request) or function.check_gradeAdminSession(
            request):
        return HttpResponseRedirect("/index")
    return render(request, 'login.html', {"type": "user"})
示例#22
0
文件: show.py 项目: npuNancy/Apis
def getGradeClass(request):
    """
    @api {get} /specificApis/show/getGradeClass getGradeClass
    @apiVersion 1.0.0
    @apiDescription get one grades's all class info
    @apiName getGradeClass
    @apiGroup show
    @apiSuccessExample {json} Success-Response:
        HTTP/1.1 200 OK
        {
            "error": 0,
            "result": "get class info success"
        }
    @apiErrorExample {json} Error-Response:
        HTTP/1.1 200 OK
        {
            "error": 1,
            "reason": "error reason here"
        }
    """
    if not function.check_Session(
            request) and not function.check_gradeAdminSession(request):
        return function.retJson(error=-1, reason='have not login')
    if request.method == "GET":
        try:
            if function.check_Session(request):
                username = request.session.get('username')
                classNum = User.objects.get(username=username).classNumber
                classes = Classes.objects.filter(classNumber=classNum).values()
                people = 0
                requiredPeople = 0
                classInfo = []
                for cl in classes:
                    classNumber = cl['classNumber_id']
                    info = function.getClassData(classNumber)[0]
                    people += info['number']
                    requiredPeople += info['requiredPeople']
                    classInfo.append(info)
                result = {'people': people, 'requiredPeople': requiredPeople}
                return function.retJson(error=0,
                                        result=result,
                                        classInfo=classInfo,
                                        mycls=function.MyEncoder,
                                        role='user')

            elif function.check_gradeAdminSession(request):
                username = request.session.get('username_grade')
                grade = GradeAdmin.objects.get(username=username).grade.grade
                classes = Classes.objects.filter(grade=grade).values()
                people = 0
                requiredPeople = 0
                classInfo = []
                for cl in classes:
                    classNumber = cl['classNumber_id']
                    info = function.getClassData(classNumber)[0]
                    people += info['number']
                    requiredPeople += info['requiredPeople']
                    classInfo.append(info)
                result = {'people': people, 'requiredPeople': requiredPeople}
                return function.retJson(error=0,
                                        result=result,
                                        classInfo=classInfo,
                                        mycls=function.MyEncoder,
                                        role='gradeAdmin')
        except Exception as e:
            return function.retJson(error=2, reason=str(e))
    else:
        return function.retJson(error=1, reason='needmethod: get')