예제 #1
0
def imgSend():
    """
    프론트 상에서 POST 요청이 들어오면 이미지 파일을 encode해서 전송해줌
    attention-stu 상에서 보기 버튼 클릭시 실행
    return : base64 encode data
    """
    if request.method == "POST":
        name = request.get_json()[0]['name']
        stu_num = request.get_json()[0]['stu_num']
        date = request.get_json()[0]['date']

        print(date)
        a, b, c = map(str, date.split('.'))
        basedate = a + '-' + b + '-' + c + ' 11:00:00'
        db = Signdatabase()
        atten_date = str(db.getstu_atten_date(stu_num, basedate).get('stu_atten_date'))[0:10]

        try:
            result = {
                "success": True,
                "stu_atten_date": atten_date,
                "image": imgencode(name, stu_num, atten_date).decode('utf-8')
            }
            return result
        except:
            result = {
                "success": False
            }
            return result
예제 #2
0
def signIn():
    stu_num = request.get_json()['stu_num']
    password = request.get_json()['password']

    db = Signdatabase()
    msg = db.login(stu_num, password)
    if msg == True:
        token = create_access_token(identity={'stu_num': stu_num})
        user = db.getUserbyStu_num(stu_num)
        result = {
            "success": True,
            "msg": "로그인되었습니다",
            "token": token,
            "user": user
        }

        return result

    else:
        result = {
            "success": False,
            "msg": "로그인에 실패하였습니다"

        }
        return result
예제 #3
0
def signInAdmin():
    admin_num = request.get_json()['admin_num']
    password = request.get_json()['password']

    db = Signdatabase()
    msg = db.loginadmin(admin_num, password)
    if msg == True:
        token_data = {
            "admin_num": admin_num,
            "admin": True
        }
        token = create_access_token(identity=token_data)

        admin = db.getAdminbyAdmin_num(admin_num)
        result = {
            "success": True,
            "msg": "관리자 계정으로 로그인되었습니다",
            "token": token,
            "admin": admin
        }

        return result

    else:
        result = {
            "success": False,
            "msg": "관리자 계정 로그인이 실패하였습니다"
        }
        return result
예제 #4
0
def subject_info():

    db = Signdatabase()
    temp = db.get_subjectInfo(request.get_json()['stu_num'])
    result = {
        'msg': temp
    }
    return result
예제 #5
0
def get_stu_atten_status():
    week = request.get_json()
    print(week)
    db = Signdatabase()
    data = db.get_atten_status_by_week(week)
    result = {
        'data' : data
    }

    return result
예제 #6
0
def adminAtten():
    """
    어드민 관리자가 학생들에 모든 출석정보를 확인하기 위해서 만들어줌 
    :param : Front json 요청 
    :return : return Json 학생 데이터
    """
    db = Signdatabase()
    data = db.get_all_user_data()
    result = {
        'msg': data
    }
    return result
예제 #7
0
def adminAttenUpdate():
    """
    관리자가 학생데이터 수정시 사용하는 함수 
    :param : Front json 요청 
    :return : 디비 데이터 수정 
    """
    db = Signdatabase()
    db.stu_atten_date_updating(request.get_json()['usernum'], request.get_json()[
                               'week'], request.get_json()['attenupdate'])
    result = {
        'msg': 'update'
    }
    return result
예제 #8
0
def sigUP():
    if request.method == 'POST':
        # 회원가입요청
        studendt_no = request.form['student_num']
        studendt_pass = request.form['student_pass']
        studendt_pass = hashlib.sha256(studendt_pass.encode())
        studendt_pass = studendt_pass.hexdigest()
        studendt_name = request.form['student_name']
        student_ID = request.form['student_ID']
        db = Signdatabase()
        db.insert_studentInfo(studendt_no, studendt_pass, studendt_name,
                              student_ID)
        return redirect('../signin')
    return render_template('signup.html')
예제 #9
0
def attendance_check():
    """
    프론트에서 출석데이터를 요청했을경우 처리해주는 로직
    :param :
    :return : 얼굴인식 값과 학번을 통하여 atten_update() 로직을 실행
    """
    data = request.get_json()[0]
    print(data)
    stu_num = data['stu_num']
    week = data['week']
    db = Signdatabase()

    # TODO decode() 에서 결과 값만 atten_update True 자리에
    # 결과를 반환하는것만 넣어주면 해결
    db.update_atten(stu_num, week, atten_update(True, stu_num, week))
    return "UPDATE ON "
예제 #10
0
def adminregister():
    Admin = {
        'admin_num': request.get_json()['admin_num'],
        'password': bcrypt.generate_password_hash(request.get_json()['password']).decode('utf-8')
    }
    db = Signdatabase()
    msg = db.registeradmin(Admin)
    if msg == True:
        result = {
            "success": True,
            "msg": "관리자 등록에 성공하였습니다"
        }
        return result
    else:
        result = {
            "success": False,
            "msg": "관리자 등록에 실패하였습니다"
        }
        return result
예제 #11
0
def atten(stunum):
    """
    과목생성 페이지가 없어서 인위적으로 데이터베이스에 과목을 생성하기위해
    구현한 로직
    :param : 학번
    :return : 데이터베이스에 attend테이블에 데이터 생성
    """
    db = Signdatabase()
    a, b, c, f = map(int, '2020,08,25,11'.split(','))
    import datetime
    for i in range(16):
        d = datetime.datetime(a, b, c, f)+datetime.timedelta(weeks=i)
        attend = {
            'stu_num': stunum,
            'week': i+1,
            'atten_date': d.strftime('%Y-%m-%d %H'),
            'atten': "None"
        }
        db.attendInsert(attend)
예제 #12
0
def register():

    User = {
        'stu_num':
        request.get_json()['stu_num'],
        'name':
        request.get_json()['name'],
        'email':
        request.get_json()['email'],
        'password':
        bcrypt.generate_password_hash(
            request.get_json()['password']).decode('utf-8')
    }
    result = ""
    db = Signdatabase()
    msg = db.register(User)
    if msg == True:
        result = {"success": True, "msg": "등록에 성공하였습니다"}
        return result
    else:
        result = {"success": False, "msg": msg}
        return result
예제 #13
0
def signIn():
    if login_status() == True:
        if request.method == 'POST':
            db = Signdatabase()
            pw = hashlib.sha256(request.form['password'].encode())
            pw = pw.hexdigest()
            print(request.form)
            userid = request.form['student_ID']
            result = db.auth(userid, pw)

            if result == True:
                userid = userid.encode('UTF-8')
                userid = base64.b64encode(userid)
                custom_resp = Response("COkkie 설정")
                custom_resp.set_cookie("USERID", userid)

                return custom_resp
            elif result == False:
                return '아이디 또는 비밀번호가 다릅니다. '
    elif login_status() == False:
        return '이미 로그인 되어져 있습니다! '
    return render_template('signin.html')
예제 #14
0
def atten_update(face_data, stu_num, week):
    """
    얼굴 인식이 완료 되면 데이터베이스에 출결 값과 출석 시간을 저장함
    :param :얼굴인식 상태(True,False) , 학번 , 출결 주차
    :return : 출결 값 (출석,지각,결석)
    """
    import datetime
    if face_data == True:
        db = Signdatabase()
        bc = db.get_subject_date(stu_num, week)
        bc = bc['atten_date']
        db.stu_atten_date_update(
            stu_num=stu_num, week=week, nowtime=datetime.datetime.now())
        cutline = db.get_stu_atten_date(stu_num=stu_num, week=week)[
            'stu_atten_date']-bc
        if cutline < datetime.timedelta(hours=2):
            return "출석"
        elif cutline > datetime.timedelta(hours=2):
            return "지각"
    elif face_data == False:
        return "결석"