def callback(photolog_id): """ twitter로부터 callback url이 요청되었을때 최종인증을 한 후 트위터로 해당 사진과 커멘트를 전송한다. """ Log.info("callback oauth_token:" + request.args['oauth_token']); Log.info("callback oauth_verifier:" + request.args['oauth_verifier']); # oauth에서 twiter로 부터 넘겨받은 인증토큰을 세션으로 부터 가져온다. OAUTH_TOKEN = session['OAUTH_TOKEN'] OAUTH_TOKEN_SECRET = session['OAUTH_TOKEN_SECRET'] oauth_verifier = request.args['oauth_verifier'] # 임시로 받은 인증토큰을 이용하여 twitter 객체를 만들고 인증토큰을 검증한다. twitter = Twython(current_app.config['TWIT_APP_KEY'], current_app.config['TWIT_APP_SECRET'], OAUTH_TOKEN, OAUTH_TOKEN_SECRET) final_step = twitter.get_authorized_tokens(oauth_verifier) # oauth_verifier를 통해 얻은 최종 인증토큰을 이용하여 twitter 객체를 새로 생성한다. twitter = Twython(current_app.config['TWIT_APP_KEY'], current_app.config['TWIT_APP_SECRET'], final_step['oauth_token'], final_step['oauth_token_secret']) session['TWITTER'] = twitter # 파라미터로 받은 photolog_id를 이용하여 해당 사진과 커멘트를 트위터로 전송한다. photo_info = get_photo_info(photolog_id) download_filepath = photo_info[2] photo_comment = photo_info[3] photo = open(download_filepath, 'rb') twitter.update_status_with_media(status=photo_comment, media=photo) return redirect(url_for('.show_all'))
def unregist(): user_id = session['user_info'].id try: user = dao.query(User).filter_by(id=user_id).first() Log.info("unregist:"+user.username) if user.id == user_id: dao.delete(user) # 업로드된 사진 파일 삭제 try: upload_folder = \ os.path.join(current_app.root_path, current_app.config['UPLOAD_FOLDER']) __delete_files(upload_folder, user.username) except Exception as e: Log.error("파일 삭제에 실패했습니다. : %s" + \ str(e)) dao.commit() else: Log.error("존재하지 않는 사용자의 탈퇴시도 : %d", user_id) raise Exception except Exception as e: Log.error(str(e)) dao.rollback() raise e # else: return redirect(url_for('.leave'))
def callback(photolog_id): """ twitter로부터 callback url이 요청되었을때 최종인증을 한 후 트위터로 해당 사진과 커멘트를 전송한다. """ Log.info("callback oauth_token:" + request.args['oauth_token']); Log.info("callback oauth_verifier:" + request.args['oauth_verifier']); # oauth에서 twiter로 부터 넘겨받은 인증토큰을 세션으로 부터 가져온다. OAUTH_TOKEN = session['OAUTH_TOKEN'] OAUTH_TOKEN_SECRET = session['OAUTH_TOKEN_SECRET'] oauth_verifier = request.args['oauth_verifier'] try: # 임시로 받은 인증토큰을 이용하여 twitter 객체를 만들고 인증토큰을 검증한다. twitter = Twython(current_app.config['TWIT_APP_KEY'], current_app.config['TWIT_APP_SECRET'], OAUTH_TOKEN, OAUTH_TOKEN_SECRET) final_step = twitter.get_authorized_tokens(oauth_verifier) # oauth_verifier를 통해 얻은 최종 인증토큰을 이용하여 twitter 객체를 새로 생성한다. twitter = Twython(current_app.config['TWIT_APP_KEY'], current_app.config['TWIT_APP_SECRET'], final_step['oauth_token'], final_step['oauth_token_secret']) session['TWITTER'] = twitter # 파라미터로 받은 photolog_id를 이용하여 해당 사진과 커멘트를 트위터로 전송한다. __send_twit(twitter, photolog_id) except TwythonError as e: Log.error("callback(): TwythonError , "+ str(e)) session['TWITTER_RESULT'] = str(e) return redirect(url_for('.show_all'))
def unregist(): user_id = session['user_info'].id try: user = dao.query(User).filter_by(id=user_id).first() Log.info("unregist:"+user.username) if user.id == user_id: dao.delete(user) # 업로드된 사진 파일 삭제 try: upload_folder = \ os.path.join(current_app.root_path, current_app.config['UPLOAD_FOLDER']) __delete_files(upload_folder, user.username) except Exception as e: Log.error("파일 삭제에 실패했습니다. : %s" + \ str(e)) dao.commit() else: Log.error("존재하지 않는 사용자의 탈퇴시도 : %d", user_id) raise Exception except Exception as e: Log.error(str(e)) dao.rollback() raise e # else: return redirect(url_for('.logout'))
def callback(photolog_id): """ twitter로부터 callback url이 요청되었을때 최종인증을 한 후 트위터로 해당 사진과 커멘트를 전송한다. """ Log.info("callback oauth_token:" + request.args['oauth_token']) Log.info("callback oauth_verifier:" + request.args['oauth_verifier']) # oauth에서 twiter로 부터 넘겨받은 인증토큰을 세션으로 부터 가져온다. OAUTH_TOKEN = session['OAUTH_TOKEN'] OAUTH_TOKEN_SECRET = session['OAUTH_TOKEN_SECRET'] oauth_verifier = request.args['oauth_verifier'] # 임시로 받은 인증토큰을 이용하여 twitter 객체를 만들고 인증토큰을 검증한다. twitter = Twython(current_app.config['TWIT_APP_KEY'], current_app.config['TWIT_APP_SECRET'], OAUTH_TOKEN, OAUTH_TOKEN_SECRET) final_step = twitter.get_authorized_tokens(oauth_verifier) # oauth_verifier를 통해 얻은 최종 인증토큰을 이용하여 twitter 객체를 새로 생성한다. twitter = Twython(current_app.config['TWIT_APP_KEY'], current_app.config['TWIT_APP_SECRET'], final_step['oauth_token'], final_step['oauth_token_secret']) session['TWITTER'] = twitter # 파라미터로 받은 photolog_id를 이용하여 해당 사진과 커멘트를 트위터로 전송한다. photo_info = get_photo_info(photolog_id) download_filepath = photo_info[2] photo_comment = photo_info[3] photo = open(download_filepath, 'rb') twitter.update_status_with_media(status=photo_comment, media=photo) return redirect(url_for('.show_all'))
def login_form(): """아이디/패스워드 기반의 로그인 화면을 제공함 """ next_url = request.args.get('next', '') Log.info("(%s)next_url is %s" % (request.method, next_url)) form = LoginForm(request.form) return render_template('login.html', next_url=next_url, form=form)
def login_form(): next_url = request.args.get('next', '') regist_username = request.args.get('regist_username', '') update_username = request.args.get('update_username', '') Log.info('(%s)next_url is %s' % (request.method, next_url)) form = LoginForm(request.form) return render_template('../photolog/templates/login.html', next_url=next_url, form=form, regist_username=regist_username, update_username=update_username)
def login(): """아이디/비밀번호 기반의 로그인 기능을 제공함 로그인 성공 시 세션에 사용자 정보를 저장하여 사용함 """ form = LoginForm(request.form) next_url = form.next_url.data login_error = None if form.validate(): """ 세션 생성""" session.permanent = True username = form.username.data password = form.password.data next_url = form.next_url.data Log.info('(%s)next_url is %s' % (request.method, next_url)) try: user = dao.query(User). \ filter_by(username=username). \ first() except Exception as e: Log.error(str(e)) raise e if user: if not check_password_hash(user.password, password): login_error = 'Invalid password' else: # 세션에 추가할 정보를 session 객체의 값으로 추가함 # 가령, User 클래스 같은 사용자 정보를 추가하는 객체 생성하고 # 사용자 정보를 구성하여 session 객체에 추가 session['user_info'] = user if next_url != '': return redirect(next_url) else: return redirect(url_for('.index')) else: login_error = 'User does not exist!' return render_template('login.html', next_url=next_url, error=login_error, form=form)
def login_form(): """아이디/비밀번호 기반의 로그인 화면을 제공함 """ next_url = request.args.get('next', '') regist_username = request.args.get('regist_username', '') update_username = request.args.get('update_username', '') Log.info('(%s)next_url is %s' % (request.method, next_url)) form = LoginForm(request.form) return render_template('login.html', next_url=next_url, form=form, regist_username=regist_username, update_username=update_username)
def login(): """아이디/비밀번호 기반의 로그인 기능을 제공함 로그인 성공 시 세션에 사용자 정보를 저장하여 사용함 """ form = LoginForm(request.form) next_url = form.next_url.data login_error = None if form.validate(): session.permanent = True username = form.username.data password = form.password.data next_url = form.next_url.data Log.info('(%s)next_url is %s' % (request.method, next_url)) try: user = dao.query(User). \ filter_by(username=username). \ first() except Exception as e: Log.error(str(e)) raise e if user: if not check_password_hash(user.password, password): login_error = 'Invalid password' else: # 세션에 추가할 정보를 session 객체의 값으로 추가함 # 가령, User 클래스 같은 사용자 정보를 추가하는 객체 생성하고 # 사용자 정보를 구성하여 session 객체에 추가 session['user_info'] = user if next_url != '': return redirect(next_url) else: return redirect(url_for('.index')) else: login_error = 'User does not exist!' return render_template('login.html', next_url=next_url, error=login_error, form=form)
def login(): form = LoginForm(request.form) next_url = form.next_url.data login_error = None if form.validate(): session.permanent = True username = form.username.data password = form.password.data next_url = form.next_url.data Log.info('(%s)next_url is %s' % (request.method, next_url)) try: user = dao.query(User).filter_by(username=username).first() except Exception as e: Log.error(str(e)) raise e if user: if not check_password_hash(user.password, password): login_error = 'Invalid password' else: session['user_info'] = user if next_url != '': return redirect(next_url) else: return redirect(url_for('.index')) else: login_error = 'User does not exist!' return render_template('../photolog/templates/login.html', next_url=next_url, error=login_error, form=form)
# -*- coding: utf-8 -*- import flask import Blueprint from photolog.photolog_logger import Log photolog = Blueprint('photolog', __name__, template_folder='../templates', static_folder='../static') Log.info('static folder: %s' % photolog.static_folder) Log.info('template folder: %s' % photolog.template_folder)
# -*- coding: utf-8 -*- """ photolog.blueprint ~~~~~~~~~~~~~~~~~~ photolog 어플리케이션에 적용할 blueprint 모듈. :copyright: (c) 2013 by 4mba. :license: MIT LICENSE 2.0, see license for more details. """ from flask import Blueprint from photolog.photolog_logger import Log photolog = Blueprint('photolog', __name__, template_folder='../templates', static_folder='../static') Log.info('static folder : %s' % photolog.static_folder) Log.info('template folder : %s' % photolog.template_folder)
u"""blue_print?.""" # -*- coding: utf-8 -*- from flask import Blueprint from photolog.photolog_logger import Log photolog = Blueprint("photolog", __name__, template_folder="../templates", static_folder="../static") Log.info("static folder : %s" % photolog.static_folder) Log.info("template folder : %s" % photolog.template_folder)