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)
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))
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))
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')
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)
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)
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')
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')
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')
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')
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')
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')
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')
def index(request): if not function.check_Session( request) and not function.check_gradeAdminSession(request): return HttpResponseRedirect("/login") return render(request, 'index.html')
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')
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')
def studentAdd(request): if not function.check_Session(request): return HttpResponseRedirect("/login") return render(request, 'studentAdd.html')
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})
def manageClass(request): if not function.check_Session(request): return HttpResponseRedirect("/login") return render(request, 'manageClass.html')
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')
def login(request): if function.check_Session(request) or function.check_gradeAdminSession( request): return HttpResponseRedirect("/index") return render(request, 'login.html', {"type": "user"})
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')