def notice_post(p_no): if not appliable_check(p_no): flash("지원가능한 기간이 아닙니다.") return redirect(url_for("notice_view.notice_board")) cursor = dao.get_conn().cursor() cursor.execute("select * from recruit_notice where n_no = %s" % (p_no)) result = cursor.fetchone() cursor.close() if not current_user.is_authenticated: result = result + ('login',) return render_template("/notice/notice_post.html", data=result) #이미 해당공고에 대한 이력서가 있으면 '수정하기'버튼을 보여준다. cursor = dao.get_conn().cursor() cursor.execute("select * from resume where r_notice_no = %s and r_writer_no = %s " % (p_no, current_user.user_no)) result2 = cursor.fetchone(); if result2: result = result + ('modify',) else: result = result + ('apply',) logger.info("notice_post view data : "+str(result)) return render_template("/notice/notice_post.html", data=result)
def admin_notice(page=1): ################# cursor = dao.get_conn().cursor() cursor.execute("select * from recruit_notice") result = cursor.fetchall() cursor.close() ################# per_page = 5 total_post = len(result) cur_page = (int(page) - 1) * 5 total_page = 0 if int(total_post) % int(per_page) == 0: total_page = (int(total_post) / int(per_page)) else: total_page = (int(total_post) / int(per_page)) + 1 ################# cursor = dao.get_conn().cursor() query_str = "select * from recruit_notice order by n_no DESC limit %s, %s" % ( str(cur_page), str(per_page)) cursor.execute(query_str) result = cursor.fetchall() cursor.close() ################# logger.info("notice_board view data : " + str(result)) return render_template('/admin/admin_notice.html', data=result, cur_page=cur_page, per_page=per_page, total_post=total_post, total_page=total_page)
def create_resume(): notice_no = request.values.get( "notice_no") if "notice_no" in request.values else '' sel1 = request.values.get("sel1") if "sel1" in request.values else '' sel2 = request.values.get("sel2") if "sel2" in request.values else '' if not appliable_check(notice_no): flash("수정가능한 기간이 아닙니다.") return redirect(url_for("mypage_view.mypage")) data = {} ####################### cursor = dao.get_conn().cursor() query_str = "select * from resume where r_notice_no = %s and r_writer_no = %s" % ( notice_no, current_user.user_no) logger.info("create resume check query : " + query_str) cursor.execute(query_str) chk_r = cursor.fetchall() cursor.close() ####################### if chk_r: data["RETURNCODE"] = -2 data["RETURNMSG"] = "이미 작성한 지원서가 있습니다." else: if notice_no == '': data["RETURNCODE"] = -1 data["RETURNMSG"] = "잘못된 접근입니다." else: c_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") cursor = dao.get_conn().cursor() cursor.callproc("insert_r_resume", (notice_no, current_user.user_no, c_time, 0)) cursor.execute("select @_insert_r_resume_3") result = cursor.fetchone() cursor.close() if int(result[0]) > 0: data["sel1"] = sel1 data["sel2"] = sel2 data["notice_no"] = notice_no data["RETURNCODE"] = 0 data["RETURNMSG"] = "success" else: data["RETURNCODE"] = -1 data["RETURNMSG"] = "잘못된 접근입니다." return jsonify(data)
def notice_board(page=1): n_type=request.values['n_type'] if 'n_type' in request.values else '1' if int(n_type) < 1 or int(n_type) > 4: flash("잘못된 접근입니다.") return redirect(url_for("main_view.index")) cur_dt=datetime.now().strftime("%Y-%m-%d") query_str="select * from recruit_notice" if n_type == '3': #마감된 query_str = query_str+" where '%s' > n_e_date" % (cur_dt) elif n_type == '4': #예정 query_str = query_str+" where '%s' < n_s_date" % (cur_dt) elif n_type == '2': #진행중 query_str = query_str+" where '%s' >= n_s_date and '%s' <= n_e_date" % (cur_dt, cur_dt) ################# cursor = dao.get_conn().cursor() cursor.execute(query_str) result = cursor.fetchall() cursor.close() ################# per_page = 5 total_post = len(result) cur_page = (int(page)-1) * 5 total_page = 0 if int(total_post) % int(per_page) == 0: total_page = (int(total_post)/int(per_page)) else: total_page = (int(total_post)/int(per_page)) + 1 query_str = query_str + " order by n_no DESC limit %s, %s" % (str(cur_page), str(per_page)) ################# cursor = dao.get_conn().cursor() cursor.execute(query_str) result = cursor.fetchall() cursor.close() ################# logger.info("notice_board view data : "+str(result)) return render_template("/notice/notice_board.html", data=result, per_page=per_page, total_post=total_post, cur_page=cur_page, total_page=total_page)
def modify_notice(): n_title = request.values['n_title'] if 'n_title' in request.values else '' n_s_date = request.values[ 'n_s_date'] if 'n_s_date' in request.values else '' n_e_date = request.values[ 'n_e_date'] if 'n_e_date' in request.values else '' sel1 = request.values['sel1'] if 'sel1' in request.values else '' sel2 = request.values['sel2'] if 'sel2' in request.values else '' n_body = request.values['n_body'] if 'n_body' in request.values else '' n_no = request.values['n_no'] if 'n_no' in request.values else '' data = {} ################ cursor = dao.get_conn().cursor() query_str = "update recruit_notice set n_title='%s', n_s_date='%s', n_e_date='%s', n_body='%s', n_sel1='%s', n_sel2='%s' where n_no = %s " % ( n_title.encode('utf-8'), n_s_date, n_e_date, n_body.encode('utf-8'), sel1.encode('utf-8'), sel2.encode('utf-8'), n_no) print query_str cursor.execute(query_str) g.conn.commit() a_row = cursor.rowcount cursor.close() ################ print a_row if a_row == 1: data["RETURNCODE"] = 0 data["RETURNMSG"] = "수정되었습니다." else: data["RETURNCODE"] = -1 data["RETURNMSG"] = "서버 오류. 관리자에게 문의하세요." return jsonify(data)
def create_notice(): n_title = request.values['n_title'] if 'n_title' in request.values else '' n_s_date = request.values[ 'n_s_date'] if 'n_s_date' in request.values else '' n_e_date = request.values[ 'n_e_date'] if 'n_e_date' in request.values else '' sel1 = request.values['sel1'] if 'sel1' in request.values else '' sel2 = request.values['sel2'] if 'sel2' in request.values else '' n_body = request.values['n_body'] if 'n_body' in request.values else '' data = {} ################ cursor = dao.get_conn().cursor() query_str = "insert into recruit_notice (n_title, n_s_date, n_e_date, n_body, n_sel1, n_sel2) values('%s', '%s', '%s', '%s', '%s', '%s')" % ( n_title.encode('utf-8'), n_s_date, n_e_date, n_body.encode('utf-8'), sel1.encode('utf-8'), sel2.encode('utf-8')) cursor.execute(query_str) g.conn.commit() a_row = cursor.rowcount cursor.close() ################ if a_row == 1: data["RETURNCODE"] = 0 data["RETURNMSG"] = "저장되었습니다." else: data["RETURNCODE"] = -1 data["RETURNMSG"] = "서버 오류. 관리자에게 문의하세요." return jsonify(data)
def register_action(): name = request.values.get("name").encode( "utf-8") if "name" in request.values else '' email = request.values.get("email").encode( "utf-8") if "email" in request.values else '' pwd = request.values.get("pwd") if "pwd" in request.values else '' hashed_pwd = generate_password_hash(pwd, salt_length=10) logger.info('register_action data : ' + name + ', ' + email + ', ' + hashed_pwd) cursor = dao.get_conn().cursor() cursor.callproc("insert_r_user", (email, name, hashed_pwd, 0)) cursor.execute("select @_insert_r_user_3") result = cursor.fetchone() cursor.close() g.conn.commit() last_id = result[0] logger.info("insert result (last_id) : %s" % (last_id)) msg = "" if result[0] > 0: msg = name + "님 가입 성공, 로그인 하세요." else: msg = "가입 실패" flash(msg) return redirect(url_for('main_view.index'))
def apply_step3(): data = {} data['step'] = 3 notice_no = request.values.get( "notice_no") if "notice_no" in request.values else '' if not appliable_check(notice_no): flash("수정가능한 기간이 아닙니다.") return redirect(url_for("mypage_view.mypage")) #################### cursor = dao.get_conn().cursor() query_str = "select r_cert_name, r_cert_no, r_cert_date, r_notice_no from resume where r_writer_no = %s and r_notice_no = %s" % ( current_user.user_no, notice_no) cursor.execute(query_str) logger.info("apply_step3 query : " + query_str) result = cursor.fetchall() col_names = cursor.description if result: for idx in range(0, len(col_names)): data[col_names[idx][0]] = result[0][idx] #################### logger.info("apply_step3 view data : " + str(result)) return render_template('apply/step3.html', data=data)
def step5_save(): logger.info("/step5_save_action params : " + str(request.values)) submit_flag = request.values.get( "submit_flag") if "submit_flag" in request.values else "" notice_no = request.values.get( "notice_no") if "notice_no" in request.values else '' data = {} if not appliable_check(notice_no): flash("수정가능한 기간이 아닙니다.") return redirect(url_for("mypage_view.mypage")) ##################### cursor = dao.get_conn().cursor() cur_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") query = "update resume set r_submit=%d, r_submit_time='%s' where r_writer_no=%d and r_notice_no=%d" % ( int(submit_flag), cur_time, int(current_user.user_no), int(notice_no)) logger.info("query : %s " % (query)) cursor.execute(query) g.conn.commit() affected_row = cursor.rowcount ##################### logger.info("affected_row : %s" % (affected_row)) if affected_row == 1: data["notice_no"] = notice_no data["RETURNCODE"] = 0 data["RETURNMSG"] = "제출되었습니다." else: data["RETURNCODE"] = -1 data["RETURNMSG"] = "서버 오류. 관리자에게 문의하세요." return jsonify(data)
def apply_step1(): data = {} data['step'] = 1 sel1 = request.values.get("sel1") if "sel1" in request.values else '' sel2 = request.values.get("sel2") if "sel2" in request.values else '' notice_no = request.values.get( "notice_no") if "notice_no" in request.values else '' if not appliable_check(notice_no): flash("수정가능한 기간이 아닙니다.") return redirect(url_for("mypage_view.mypage")) data["sel1"] = sel1 data["sel2"] = sel2 #################### cursor = dao.get_conn().cursor() query_str = "select r_group1, r_group2, r_notice_no from resume where r_writer_no = %s and r_notice_no = %s" % ( current_user.user_no, notice_no) cursor.execute(query_str) result = cursor.fetchall() col_names = cursor.description logger.info("apply_step1 query : " + query_str) if result: for idx in range(0, len(col_names)): data[col_names[idx][0]] = result[0][idx] #################### logger.info('apply_step1 view data : ' + str(data)) return render_template('apply/step1.html', data=data)
def step1_save(): logger.info("/step1_save_action params : " + str(request.values)) sel1 = request.values.get('sel1') if 'sel1' in request.values else '' sel2 = request.values.get('sel2') if 'sel2' in request.values else '' notice_no = request.values.get( "notice_no") if "notice_no" in request.values else '' if not appliable_check(notice_no): flash("수정가능한 기간이 아닙니다.") return redirect(url_for("mypage_view.mypage")) data = {} ##################### cursor = dao.get_conn().cursor() query = "update resume set r_group1='%s', r_group2='%s' where r_writer_no=%d and r_notice_no=%d" % ( sel1.encode('utf-8'), sel2.encode('utf-8'), int( current_user.user_no), int(notice_no)) logger.info("query : " + query) cursor.execute(query) g.conn.commit() affected_row = cursor.rowcount ##################### logger.info("affected_row : %s" % (affected_row)) if affected_row == 1: data["notice_no"] = notice_no data["RETURNCODE"] = 0 data["RETURNMSG"] = "저장되었습니다." else: data["RETURNCODE"] = -1 data["RETURNMSG"] = "서버 오류. 관리자에게 문의하세요." return jsonify(data)
def mypage(): ########################## cursor = dao.get_conn().cursor() join_query = "select * from resume join recruit_notice on resume.r_notice_no = recruit_notice.n_no and resume.r_writer_no=%s" % ( current_user.user_no) cursor.execute(join_query) result = cursor.fetchall() col_names = cursor.description ########################## data = {} if result: for row in range(0, len(result)): temp = {} for idx in range(0, len(col_names)): temp[col_names[idx][0]] = result[row][idx] temp['expire_chk'] = 0 if result[row][29] < datetime.now(): temp['expire_chk'] = 1 data[row] = temp logger.info("mypage view data : " + str(data)) return render_template("/mypage/mypage.html", data=data)
def login_action(): email = request.values["email"] if "email" in request.form else "" pw = request.values["pwd"] if "pwd" in request.form else "" notice_no = request.values[ "notice_no"] if "notice_no" in request.values else '' rmb = request.values["rmb"] if "rmb" in request.form else "" print "rmb:" + str(rmb) cursor = dao.get_conn().cursor() cursor.execute("select * from recruit_user where user_email like '%s'" % (email)) result = cursor.fetchone() cursor.close() logger.info("login_action, check email : " + str(result)) try: if result: if check_password_hash(result[3], pw): login_user( User(email, name=result[2].decode('utf-8'), auth=True, no=result[0])) if notice_no != '': return redirect( url_for('notice_view.notice_post', p_no=notice_no)) else: response = make_response( redirect(url_for("main_view.index"))) if rmb == 'on': from aes_cipher import encrypt expire_date = datetime.now() + timedelta(days=90) enc_email = encrypt(current_app.config['SECRET_KEY'], email) response.set_cookie('rmber', value=enc_email, expires=expire_date) else: response.set_cookie('rmber', expires=0) flash("로그인 되었습니다.") return response else: flash("아이디 또는 비밀번호가 일치하지 않습니다.") return redirect(url_for("auth_view.login_form")) else: flash("아이디 또는 비밀번호가 일치하지 않습니다.") return redirect(url_for("auth_view.login_form")) except Exception as e: logger.info(str(e)) raise e
def load_user(email): logger.info("load_user(%s)" % (email)) cursor = dao.get_conn().cursor() cursor.execute("select * from recruit_user where user_email like '%s'" % (email)) result = cursor.fetchone() if result[1] == email: return User(email, name=result[2], auth=True, no=result[0]) else: return None
def admin_resume_list(): notice_data = {} ####################### cursor = dao.get_conn().cursor() query_str = "select * from recruit_notice" cursor.execute(query_str) n_result = cursor.fetchall() n_cols = cursor.description cursor.close() ####################### for row in range(0, len(n_result)): tmp = {} for col_idx in range(0, len(n_cols)): tmp[n_cols[col_idx][0]] = n_result[row][col_idx] notice_data[row] = tmp #########column명 가져오기######## cursor = dao.get_conn().cursor() sql_str = "select * from recruit_notice join resume on resume.r_notice_no = recruit_notice.n_no" cursor.execute(sql_str) col_names = cursor.description cursor.close() ############################## names = [] for col in col_names: names.append(col[0]) #보여질 column 리스트 showing_col = ['r_no', 'n_title', 'n_sel1', 'r_name', 'r_submit_time'] return render_template('/admin/admin_resume.html', notice_data=notice_data, col_names=names, showing_col=showing_col)
def apply_doc(): r_no = request.values['r_no'] if 'r_no' in request.values else '' #################################### cursor = dao.get_conn().cursor() sql_str = "select * from recruit_notice join resume on resume.r_notice_no = recruit_notice.n_no and r_no = %s" % ( r_no) print sql_str cursor.execute(sql_str) result = cursor.fetchone() colnames = cursor.description cursor.close() #################################### data = {} for idx in range(0, len(colnames)): data[colnames[idx][0]] = result[idx] return render_template("/apply/detail.html", data=data)
def notice_post(): notice_no = request.values[ 'notice_no'] if 'notice_no' in request.values else '' ################# cursor = dao.get_conn().cursor() query_str = "select * from recruit_notice where n_no = %s" % (notice_no) cursor.execute(query_str) result = cursor.fetchone() col_names = cursor.description cursor.close() ################# data = {} for idx in range(0, len(result)): data[col_names[idx][0]] = result[idx] return render_template("/admin/admin_notice_modify.html", data=data)
def step2_save(): logger.info("/step2_save_action params : " + str(request.values)) name = request.values.get("name") if "name" in request.values else "" birth = request.values.get("birth") if "birth" in request.values else "" gender = request.values.get("gender") if "gender" in request.values else "" addr = request.values.get("addr") if "addr" in request.values else "" phone = request.values.get("phone") if "phone" in request.values else "" school_type = request.values.get( "school_type") if "school_type" in request.values else "" school_name = request.values.get( "school_name") if "school_name" in request.values else "" major = request.values.get("major") if "major" in request.values else "" grade = request.values.get("grade") if "grade" in request.values else "" career = request.values.get("career") if "career" in request.values else "" notice_no = request.values.get( "notice_no") if "notice_no" in request.values else '' data = {} if not appliable_check(notice_no): flash("수정가능한 기간이 아닙니다.") return redirect(url_for("mypage_view.mypage")) ##################### cursor = dao.get_conn().cursor() query = "update resume set r_name='%s', r_birth='%s', r_gender='%s', r_addr='%s', r_phone='%s', r_school_type='%s', r_school_name='%s', r_major='%s', r_grade='%s', r_career='%s' " \ "where r_writer_no=%d and r_notice_no=%d" % (name.encode('utf-8'), birth.encode('utf-8'), gender.encode('utf-8'), addr.encode('utf-8'), phone.encode('utf-8'), school_type.encode('utf-8'), school_name.encode('utf-8'), major.encode('utf-8'), grade.encode('utf-8'), career.encode('utf-8'), int(current_user.user_no), int(notice_no)) logger.info("query : %s " % (query)) cursor.execute(query) g.conn.commit() affected_row = cursor.rowcount ##################### logger.info("affected_row : %s" % (affected_row)) if affected_row == 1: data["notice_no"] = notice_no data["RETURNCODE"] = 0 data["RETURNMSG"] = "저장되었습니다." else: data["RETURNCODE"] = -1 data["RETURNMSG"] = "서버 오류. 관리자에게 문의하세요." return jsonify(data)
def remove_notice(): n_no = request.values['n_no'] if 'n_no' in request.values else '' data = {} ####################### cursor = dao.get_conn().cursor() query_str = "delete from recruit_notice where n_no = %s" % (str(n_no)) cursor.execute(query_str) g.conn.commit() a_row = cursor.rowcount cursor.close() ####################### if a_row == 1: data["RETURNCODE"] = 0 data["RETURNMSG"] = "삭제되었습니다." else: data["RETURNCODE"] = -1 data["RETURNMSG"] = "서버 오류. 관리자에게 문의하세요." return jsonify(data)
def admin_login(): id = request.form['id'] if 'id' in request.form else '' pwd = request.form['pwd'] if 'pwd' in request.form else '' ############### cursor = dao.get_conn().cursor() query_str = "select * from recruit_user where user_email like '%s'" % (id) cursor.execute(query_str) result = cursor.fetchone() cursor.close() ############### if result: if result[3] == pwd: login_user(User(id, name=result[2], auth=True, no=result[0])) flash("로그인 완료") return redirect(url_for('admin_view.admin_main')) else: flash("아이디 또는 비밀번호가 잘못되었습니다.") return redirect(url_for('admin_view.admin_main')) else: flash("아이디 또는 비밀번호가 잘못되었습니다.") return redirect(url_for('admin_view.admin_main'))
def apply_step5(): data = {} data['step'] = 5 notice_no = request.values.get( "notice_no") if "notice_no" in request.values else '' #################### cursor = dao.get_conn().cursor() query_str = "select * from resume where r_writer_no = %s and r_notice_no = %s" % ( current_user.user_no, notice_no) logger.info("apply_step5 query : " + query_str) cursor.execute(query_str) result = cursor.fetchall() col_names = cursor.description if result: for idx in range(0, len(col_names)): data[col_names[idx][0]] = result[0][idx] #################### logger.info("apply_step5 view data : " + str(result)) return render_template('apply/step5.html', data=data)
def apply_remove(): data = {} logger.info("/apply_remove_action params : " + str(request.values)) r_no = request.values.get("r_no") if "r_no" in request.values else '' r_writer_no = request.values.get( "r_writer_no") if "r_writer_no" in request.values else '' if str(r_writer_no) == str(current_user.user_no): cursor = dao.get_conn().cursor() cursor.execute("delete from resume where r_no = %s" % (r_no)) g.conn.commit() affected_row = cursor.rowcount if int(affected_row) == 1: data["RETURNCODE"] = 0 data["RETURNMSG"] = "지원이 성공적으로 취소되었습니다." else: data["RETURNCODE"] = -1 data["RETURNMSG"] = "취소실패. 관리자에게 문의하세요." else: data["RETURNCODE"] = -1 data["RETURNMSG"] = "잘못된 접근입니다." return jsonify(data)
def step3_save(): logger.info("/step3_save_action params : " + str(request.values)) list1_cert_name = request.values.get( "list1_cert_name") if "list1_cert_name" in request.values else "" list1_cert_no = request.values.get( "list1_cert_no") if "list1_cert_no" in request.values else "" list1_cert_date = request.values.get( "list1_cert_date") if "list1_cert_date" in request.values else "" notice_no = request.values.get( "notice_no") if "notice_no" in request.values else '' data = {} if not appliable_check(notice_no): flash("수정가능한 기간이 아닙니다.") return redirect(url_for("mypage_view.mypage")) ##################### cursor = dao.get_conn().cursor() query = "update resume set r_cert_name='%s', r_cert_no='%s', r_cert_date='%s' " \ "where r_writer_no=%d and r_notice_no=%d" % (list1_cert_name.encode('utf-8'), list1_cert_no.encode('utf-8'), list1_cert_date.encode('utf-8'), int(current_user.user_no), int(notice_no)) logger.info("query : %s " % (query)) cursor.execute(query) g.conn.commit() affected_row = cursor.rowcount ##################### logger.info("affected_row : %s" % (affected_row)) if affected_row == 1: data["notice_no"] = notice_no data["RETURNCODE"] = 0 data["RETURNMSG"] = "저장되었습니다." else: data["RETURNCODE"] = -1 data["RETURNMSG"] = "서버 오류. 관리자에게 문의하세요." return jsonify(data)
def get_resume_list(): param = request.values escape_char = ["\'", "\"", ";", "="]; for key in request.values: #print request.values[key] for e_char in escape_char: if e_char in request.values[key]: print request.values[key] raise Exception n_no = request.values['notice_no'] if 'notice_no' in request.values else '' search_val = request.values['search[value]'] if 'search[value]' in request.values else '' per_page = param.get('length') return_data = {} return_data['draw'] = int(param.get('draw')) #DB와 datatables libaray처리 ############################## cursor = dao.get_conn().cursor() sql_str="select * from resume" if n_no != '': sql_str = sql_str + " where r_notice_no = %s" % (n_no) cursor.execute(sql_str) result = cursor.fetchall() cursor.close() ############################## return_data['recordsTotal'] = len(result) return_data['recordsFiltered'] = len(result) ############################## cursor = dao.get_conn().cursor() #sql_str="select resume.r_no, recruit_notice.n_title, resume.r_group1, resume.r_group2, resume.r_name, r_submit_time from recruit_notice join resume on resume.r_notice_no = recruit_notice.n_no" sql_str="select * from recruit_notice join resume on resume.r_notice_no = recruit_notice.n_no" if search_val.strip() != '': sql_str = sql_str + " and (n_title like '%"+str(search_val)+"%' or n_body like '%"+str(search_val)+"%' or n_sel1 like '%"+str(search_val)+"%' or n_sel2 like '%"+str(search_val)+"%' or r_selfintro1 like '%"+str(search_val)+"%' or r_selfintro2 like '%"+str(search_val)+"%' or r_selfintro3 like '%"+str(search_val)+"%' or r_name like '%"+str(search_val)+"%' or r_school_type like '%"+str(search_val)+"%' or r_school_name like '%"+str(search_val)+"%' or r_addr like '%"+str(search_val)+"%' )" if n_no == '': sql_str = sql_str + " order by %s %s limit %s,%s" % (param.get('columns['+param.get('order[0][column]')+'][data]'), param.get('order[0][dir]'), param.get('start'), per_page) else: sql_str = sql_str + " and r_notice_no = %s order by %s %s limit %s,%s" % (n_no, param.get('columns['+param.get('order[0][column]')+'][data]'), param.get('order[0][dir]'), param.get('start'), per_page) cursor.execute(sql_str) col_names=cursor.description result = cursor.fetchall() cursor.close() ############################## post_list = [] for row in result: tmp={} for col in range(0,len(col_names)): tmp[param.get('columns['+str(col)+'][data]')]=row[col] post_list.append(tmp) return_data['data'] = post_list return jsonify(return_data)