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
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
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
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
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
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
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
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
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