def update_photo(photolog_id): """ 사진 업로드 화면에서 사용자가 수정한 내용을 DB에 업데이트 한다. """ form = PhotoUploadForm(request.form) if form.validate(): #: 업데이트 대상 항목들 tag = form.tag.data comment = form.comment.data lat = form.lat.data lng = form.lng.data try: #: 변경전 원래의 photo 테이블 값을 읽어 온다. photo = dao.query(Photo).filter_by(id=photolog_id).first() #: 업데이트 값 셋팅 photo.tag = tag photo.comment = comment photo.geotag_lat = lat photo.geotag_lng = lng dao.commit() except Exception as e: dao.rollback() Log.error("Update DB error : " + str(e)) raise e return redirect(url_for('.show_all')) else: return render_template('upload.html', photo=photo, form=form)
def show_map(): user_id = session['user_info'].id return render_template( 'map.html', photos=dao.query(Photo).filter_by(user_id=user_id).order_by( Photo.taken_date.desc()).all())
def update_photo_form(photolog_id): """ 업로드폼에서 입력한 값들을 수정하기 위해 DB값을 읽어와 업로드폼 화면으로 전달한다. """ photo = dao.query(Photo).filter_by(id=photolog_id).first() form = PhotoUploadForm(request.form, photo) return render_template('upload.html', photo=photo, form=form)
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 update_photo(photolog_id): """ 사진 업로드 화면에서 사용자가 수정한 내용을 DB에 업데이트 한다. """ form = PhotoUploadForm(request.form) if form.validate(): #: 업데이트 대상 항목들 tag = form.tag.data comment = form.comment.data lat = form.lat.data lng = form.lng.data try : #: 변경전 원래의 photo 테이블 값을 읽어 온다. photo = dao.query(Photo).filter_by(id=photolog_id).first() #: 업데이트 값 셋팅 photo.tag = tag photo.comment = comment photo.geotag_lat = lat photo.geotag_lng = lng dao.commit() except Exception as e: dao.rollback() Log.error("Update DB error : " + str(e)) raise e return redirect(url_for('.show_all')) else: return render_template('upload.html', photo=photo, form=form)
def login_action(): form = LoginForm(request.form) login_error = None if form.validate(): session.permanent = True username = form.username.data password = form.password.data try: user = dao.query(User).filter_by(username=username).first() except Exception as e: print str(e) raise e if user: if not check_password_hash(user.password, password): login_error = '비밀번호가 틀렸습니다.' else: #session작업 완료 후 로그인 완료 login_error = "session처리 후 로그인 완료" session['user_info'] = username return redirect(url_for('.index')) else: login_error = "ID가 존재하지 않습니다." return render_template('/login.html', error=login_error, form=form) return render_template('/login.html', error=login_error, form=form)
def show_map(): user_id = session['user_info'].id return render_template('map.html', photos=dao.query(Photo). filter_by(user_id=user_id). order_by(Photo.taken_date.desc()).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 show_all(): user_id = session['user_info'].id return render_template( 'entry_all.html', photos=dao.query(Photo).filter_by(user_id=user_id).order_by( Photo.upload_date.desc()).all(), sizeof_fmt=sizeof_fmt)
def __get_user(username): try: current_user = dao.query(User).filter_by(username=username).first() Log.debug(current_user) return current_user except Exception as e: Log.error(str(e)) raise e
def show_all(): user_id = session['user_info'].id return render_template('entry_all.html', photos=dao.query(Photo). filter_by(user_id=user_id). order_by(Photo.upload_date.desc()). all(), sizeof_fmt=sizeof_fmt)
def get_photo_info(photolog_id): """업로드된 사진 관련 정보(다운로드 폴더, 파일명, 전체 파일 경로, 코멘트 등)을 얻는다. 내부 함수인 __get_download_info()와 트위터 연동에 사용된다. """ photo = dao.query(Photo).filter_by(id=photolog_id).first() download_folder = os.path.join(current_app.root_path, current_app.config['UPLOAD_FOLDER']) download_filepath = os.path.join(download_folder, photo.filename) return (download_folder, photo.filename, download_filepath, photo.comment)
def search_photo(): search_word = request.form['search_word'] if (search_word == ''): return show_all() user_id = session['user_info'].id photos=dao.query(Photo).filter_by(user_id=user_id). \ filter(or_(Photo.comment.like("%" + search_word + "%"), Photo.tag.like("%" + search_word + "%"))). \ order_by(Photo.upload_date.desc()).all() return render_template('list.html', photos=photos, sizeof_fmt=sizeof_fmt)
def show_all(page=1): user_id = session['user_info'].id per_page = current_app.config['PER_PAGE'] photo_count = dao.query(Photo).count() pagination = Pagination(page, per_page, photo_count) if page != 1: offset = per_page * (page - 1) else: offset = 0 photo_pages = dao.query(Photo). \ filter_by(user_id=user_id). \ order_by(Photo.upload_date.desc()). \ limit(per_page). \ offset(offset). \ all() return render_template('list.html', pagination=pagination, photos=photo_pages, sizeof_fmt=sizeof_fmt)
def search_photo(): search_word = request.form['search_word']; if (search_word == ''): return show_all(); user_id = session['user_info'].id photos=dao.query(Photo).filter_by(user_id=user_id). \ filter(or_(Photo.comment.like("%" + search_word + "%"), Photo.tag.like("%" + search_word + "%"))). \ order_by(Photo.upload_date.desc()).all() return render_template('list.html', photos=photos, sizeof_fmt=sizeof_fmt)
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 클래스 같은 사용자 정보를 추가하는 객체 생성하고 # 사용자 정보를 구성하여 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)
def remove(photolog_id): """ DB에서 해당 데이터를 삭제하고 관련된 이미지파일을 함께 삭제한다.""" user_id = session['user_info'].id try: photo = dao.query(Photo).filter_by(id=str(photolog_id)).first() dao.delete(photo) dao.commit() upload_folder = os.path.join(current_app.root_path, current_app.config['UPLOAD_FOLDER']) os.remove(upload_folder + str(photo.filename)) os.remove(upload_folder + "thumb_"+str(photo.filename)) except Exception as e: dao.rollback() Log.error("Photo remove error => " + photolog_id + ":" + user_id + \ ", " + str(e)) raise e return redirect(url_for('.show_all'))
def remove(photolog_id): """ DB에서 해당 데이터를 삭제하고 관련된 이미지파일을 함께 삭제한다.""" user_id = session['user_info'].id try: photo = dao.query(Photo).filter_by(id=str(photolog_id)).first() dao.delete(photo) dao.commit() upload_folder = os.path.join(current_app.root_path, current_app.config['UPLOAD_FOLDER']) os.remove(upload_folder + str(photo.filename)) os.remove(upload_folder + "thumb_" + str(photo.filename)) except Exception as e: dao.rollback() Log.error("Photo remove error => " + photolog_id + ":" + user_id + \ ", " + str(e)) raise e return redirect(url_for('.show_all'))
def __get_user(name): try: return dao.query(User).filter_by(username=name).first() except Exception as e: print str(e) raise e