Exemple #1
0
def music_list():
    '''
    :parameter: X
    :return: status code
    200 - 조회(데이터 반환) 성공
    403 - 로그인 상태 아님
    '''

    con, cur = connect()

    date_list = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
    return_dict = {}

    my_user = get_jwt_identity()

    for date in date_list:
        date_dict = {}

        sql = f'SELECT user_id, artist, title FROM music WHERE date="{date}"'

        cur.execute(sql)
        music_data = list(cur.fetchall())

        for i in music_data:
            user_dict = {}
            user_dict['artist'] = i[1]
            user_dict['title'] = i[2]

            date_dict[i[0]] = user_dict

        return_dict[date] = date_dict

    con.close()

    return return_dict, 200
Exemple #2
0
def pw_edit():
    '''
    :parameter: pw, pw_check
    :return: status code
    200 - 비밀번호 변경 완료
    410 - 로그인 상태 아님
    411 - 비밀번호와 비밀번호 확인 값이 다름
    '''

    data = request.json

    pw = data['pw']
    pw_check = data['pw_check']

    if pw != pw_check:
        return '비밀번호와 비밀번호 확인이 서로 같지 않습니다.', 411

    user_id = request.cookies.get('user')

    con, cur = connect()

    sql = f'UPDATE UserLog SET user_pw = "{pw}" WHERE user_id = "{user_id}"'
    cur.execute(sql)

    con.commit()
    con.close()

    return '비밀번호 변경 완료!', 200
Exemple #3
0
def login():
    '''
    :parameter: id, pw
    :return: status code
    200 - 로그인 성공
    403 - 이미 로그인이 되어 있음
    410 - 아이디 입력 오류
    411 - 비밀번호 입력 오류
    '''
    parser = reqparse.RequestParser()
    parser.add_argument('id', type=str)
    parser.add_argument('pw', type=str)
    args = parser.parse_args()

    _id = args['id']
    _pw = args['pw']

    con, cur = connect()

    if id_exist(con, cur, _id) == False:
        return {"message": "아이디가 이미 존재합니다.", "code": 410}, 410

    sql = f'SELECT user_id, user_pw FROM UserLog WHERE user_id = "{_id}"'

    cur.execute(sql)
    log_data = cur.fetchone()
    con.close()

    if _pw == log_data[1]:
        access_token = create_access_token(identity=_id)
        return {"access_token": access_token, "code": 200}, 200

    elif _pw != log_data[1]:
        return {"message": "일치하지 않는 비밀번호", "code": 411}, 411
Exemple #4
0
def stay_list():
    '''
    :parameter: X
    :return:
    403 - 로그인 상태 아님
    200 - 전체 잔류 신청 조회 성공 및 반환
    '''

    count = 1
    return_dict = {}
    user_list = []
    stay_list = {'1': '금요귀가', '2': '토요귀가', '3': '토요귀사', '4': '잔류'}

    con, cur = connect()

    sql = f'SELECT user_id FROM stay;'
    cur.execute(sql)

    for i in cur.fetchall():
        user_list.append(i[0])

    for i in user_list:
        user_dict = {}
        sql = f'SELECT stay FROM stay WHERE user_id = "{i}"'
        cur.execute(sql)

        user_dict['id'] = i
        user_dict['stay'] = stay_list[cur.fetchone()[0]]

        return_dict[str(count)] = user_dict
        count += 1

    return jsonify(return_dict), 200
Exemple #5
0
def pw_edit():
    '''
    :parameter: pw, pw_check
    :return: status code
    200 - 비밀번호 변경 완료
    410 - 로그인 상태 아님
    411 - 비밀번호와 비밀번호 확인 값이 다름
    '''

    parser = reqparse.RequestParser()
    parser.add_argument('pw', type=str)
    parser.add_argument('pw_check', type=str)
    args = parser.parse_args()

    _pw = args['pw']
    _pwCheck = args['pw_check']

    if _pw != _pwCheck:
        return '비밀번호와 비밀번호 확인이 서로 같지 않습니다.', 411

    user_id = get_jwt_identity()

    con, cur = connect()

    sql = f'UPDATE UserLog SET user_pw = "{_pw}" WHERE user_id = "{user_id}"'
    cur.execute(sql)

    con.commit()
    con.close()

    return '비밀번호 변경 완료!', 200
def music_apply():
    '''
    :parameter: date(Mon, Tue, Wed, Thu, Fri), title, artist
    :return: status code
    403 - 로그인 상태가 아님
    411 - 해당 사용자가 한 주에 이미 기상 음악을 신청함
    412 - 당일 날에 이미 5개의 기상 음악이 신청됨
    400 - date의 VALUE에 정해진 값으로 들어오지 않음 (client 입력 오류)
    200 - 기상 음악 신청 성공
    '''

    con, cur = connect()

    sql = "CREATE TABLE Music (" \
          "     id BIGINT(20) unsigned NOT NULL AUTO_INCREMENT," \
          "     user_id TEXT NOT NULL," \
          "     date TEXT NOT NULL," \
          "     title TEXT NOT NULL," \
          "     artist TEXT NOT NULL," \
          "     PRIMARY KEY (id)" \
          ") DEFAULT CHARSET=utf8 COLLATE utf8_general_ci;"

    try:
        cur.execute(sql)
    except:
        pass

    date_list = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']

    data = request.json

    date = data['date']
    title = data['title']
    artist = data['artist']
    my_name = request.cookies.get('user')

    # 413 예외처리
    if date not in date_list:
        return 'date의 VALUE으로 정해진 문구를 넣어 주세요.(Mon, Tue, Wed, Thu, Fri)', 400

    # 412 예외처리
    if  music_count(con, cur, date) >= 5:
        return f"음악 신청이 만료되었습니다.", 412

    # 411 예외처리
    if music_exist(con, cur, my_name) == True:
        return '이미 음악신청을 하셨습니다.', 411

    # 200 처리
    sql = f'INSERT INTO music (user_id, date, title, artist) VALUES("{my_name}", "{date}", "{title}", "{artist}")'

    cur.execute(sql)
    con.commit()

    con.close()

    return '기상 음악 신청 완료!', 200
Exemple #7
0
def signup():
    '''
    :parameter: id, pw, pw_check
        :return: status_code
    200 - 완료
    410 - 이미 존재하는 아이디
    411 - 비밀번호와 비밀번호 확인 값이 다름
    '''
    parser = reqparse.RequestParser()
    parser.add_argument('id', type=str)
    parser.add_argument('pw', type=str)
    parser.add_argument('pw_check', type=str)
    args = parser.parse_args()

    _id = args['id']
    _pw = args['pw']
    _pwCheck = args['pw_check']

    con, cur = connect()

    sql = "create table UserLog("\
          "id bigint(20) unsigned NOT NULL AUTO_INCREMENT,"\
          "user_id text," \
          "user_pw text," \
          "PRIMARY KEY (id)" \
          ") DEFAULT CHARSET=utf8 COLLATE utf8_general_ci;"

    try:
        cur.execute(sql)

    except pymysql.err.InternalError:
        pass

    if _pw != _pwCheck:
        return "pw != pw_check", 411

    if id_exist(con, cur, _id) == True:
        return '이미 존재하는 아이디 입니다.', 400

    sql = f'INSERT INTO UserLog (user_id, user_pw) VALUES("{_id}", "{_pw}")'
    cur.execute(sql)

    con.commit()
    con.close()

    return '회원가입 성공!', 200
Exemple #8
0
def stay_apply():
    '''
    :parameter: stay(금요귀가, 토요귀가, 토요귀사, 잔류)
    :return: status code
    403 - 로그인 상태 아님
    400 - stay의 VALUE에 정해진 값으로 들어오지 않음 (client 입력 오류)
    410 - 이미 잔류 신청을 함
    200 - 잔류 신청 완료
    '''

    con, cur = connect()

    user = get_jwt_identity()

    req = reqparse.RequestParser()
    req.add_argument('stay', type=str)
    args = req.parse_args()
    _stay = args['stay']

    stay_list = {'금요귀가': '1', '토요귀가': '2', '토요귀사': '3', '잔류': '4'}

    if _stay not in ['금요귀가', '토요귀가', '토요귀사', '잔류']:
        return 'stay의 VALUE 값으로 정해진 문구를 넣어 주세요.(금요귀가, 토요귀가, 토요귀사, 잔류)', 400

    if stay_exist(con, cur, user) == True:
        return '이미 잔류 신청을 하셨네요!', 410

    sql = "CREATE TABLE Stay (" \
          "     id BIGINT(20) unsigned NOT NULL AUTO_INCREMENT," \
          "     user_id TEXT NOT NULL," \
          "     stay TEXT NOT NULL," \
          "     PRIMARY KEY (id)" \
          ") DEFAULT CHARSET=utf8 COLLATE utf8_general_ci;"

    try:
        cur.execute(sql)
    except:
        pass

    sql = f'INSERT INTO stay (user_id, stay) VALUES("{user}", "{stay_list[_stay]}")'
    cur.execute(sql)

    con.close()

    return '잔류 신청 완료!', 200
Exemple #9
0
def signup():
    '''
    :parameter: id, pw, pw_check
        :return: status_code
    200 - 완료
    410 - 이미 존재하는 아이디
    411 - 비밀번호와 비밀번호 확인 값이 다름
    '''
    data = request.json

    id = data['id']
    pw = data['pw']
    pw_check = data['pw_check']

    con, cur = connect()

    sql = "create table UserLog("\
          "id bigint(20) unsigned NOT NULL AUTO_INCREMENT,"\
          "user_id text," \
          "user_pw text," \
          "PRIMARY KEY (id)" \
          ") DEFAULT CHARSET=utf8 COLLATE utf8_general_ci;"

    try:
        cur.execute(sql)

    except pymysql.err.InternalError:
        pass

    if pw != pw_check:
        return "pw != pw_check", 411

    if id_exist(con, cur, id) == True:
        return '이미 존재하는 아이디 입니다.', 400

    sql = f'INSERT INTO UserLog (user_id, user_pw) VALUES("{id}", "{pw}")'
    cur.execute(sql)

    con.commit()
    con.close()

    return '회원가입 성공!', 200
def stay_list_my():
    '''
    :parameter: X
    :return: status code
    403 - 로그인 상태 아님
    410 - 아직 잔류 신청을 안함
    200 - 내 잔류 신청 조회 성공 및 반환
    '''

    stay_list = {'1': '금요귀가', '2': '토요귀가', '3': '토요귀사', '4': '잔류'}
    dict = {}
    user = request.cookies.get('user')

    con, cur = connect()

    if stay_exist(con, cur, user) == False:
        return "아직 잔류 신청을 하지 않았네요", 410

    sql = f'SELECT stay FROM stay WHERE user_id="{user}"'
    cur.execute(sql)

    dict['stay'] = stay_list[cur.fetchone()[0]]

    return jsonify(dict)
def music_delete():
    '''
    :parameter: X
    :return: status code
    403 로그인 상태 아님
    410 전에 신청해둔 음악이 없음.
    200 기상 음악 신청 취소 완료
    '''

    my_name = request.cookies.get('user')

    con, cur = connect()

    if music_exist(con, cur, my_name) == False:
        return "전에 신청해둔 음악이 없습니다.", 410

    sql = f'DELETE FROM music WHERE user_id="{my_name}"'

    cur.execute(sql)

    con.commit()
    con.close()

    return "기상 음악 취소 완료!", 200
Exemple #12
0
def login():
    '''
    :parameter: id, pw
    :return: status code
    200 - 로그인 성공
    403 - 이미 로그인이 되어 있음
    410 - 아이디 입력 오류
    411 - 비밀번호 입력 오류
    '''
    data = request.json

    id = data['id']
    pw = data['pw']

    con, cur = connect()

    if 'user' in request.cookies:
        return '이미 로그인이 되어 있습니다.', 403

    if id_exist(con, cur, id) == False:
        return '일치하지 않는 아이디입니다.', 410

    sql = f'SELECT user_id, user_pw FROM UserLog WHERE user_id = "{id}"'

    cur.execute(sql)
    log_data = cur.fetchone()
    con.close()

    if pw == log_data[1]:
        resp = make_response("로그인 성공")
        resp.set_cookie('user', id)

        return resp, 200

    elif pw != log_data[1]:
        return '일치하지 않는 비밀번호 입니다.', 411