Exemple #1
0
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)
Exemple #2
0
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())
Exemple #3
0
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)
Exemple #4
0
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'))
Exemple #5
0
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)
Exemple #6
0
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)
Exemple #7
0
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)
Exemple #8
0
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())
Exemple #9
0
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'))
Exemple #10
0
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)
Exemple #11
0
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
Exemple #12
0
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)
Exemple #13
0
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)
Exemple #14
0
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)
Exemple #15
0
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)
Exemple #16
0
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)
Exemple #17
0
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)
Exemple #18
0
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)
Exemple #19
0
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) 
Exemple #20
0
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)
Exemple #21
0
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)
Exemple #22
0
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'))
Exemple #23
0
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'))
Exemple #24
0
def __get_user(name):
    try:
        return dao.query(User).filter_by(username=name).first()
    except Exception as e:
        print str(e)
        raise e