def google_authorized(response):
    if not response:
        return u'Failed to login using google OAuth'

    if 'next' in session:
        next_url = session.pop('next')
    else:
        next_url = url_for('main.index')
    session[GOOGLE_TOKEN_NAME] = (response.get('access_token'), '')

    result = UserController.register_google(response)
    if result.get(u'ok', False):
        user = result.get(u'user')

        login_request = UserController.login(user_info=user)
        if login_request:
            if result.get(u'created', False):
                # 새로운 회원으로 가입 되었을때
                playlist = PlaylistController.create_default_playlist(user=user)
                flash(u'%s, 가입을 진심으로 환영합니다!' % user.id_str)
                if not playlist.get(u'ok', True):
                    flash(u'기본 플레이리스트가 생성되지 않았습니다.\n%s' % playlist.get(u'msg', u''))

            else:
                # 기존 회원일때
                flash(u'%s, 재방문을 진심으로 환영합니다!' % user.id_str)
        else:
            flash(u'로그인에 실패하였습니다.')

    else:
        # 뭔가 잘못됨.
        flash(result.get(u'msg'))

    return redirect(next_url)
def playlist(id_int=None):
    params = {}
    if id_int:
        requested_user = UserController.get_user_by_id_int(id_int)
        params['user'] = requested_user
    all_playlist = UserController.get_all_playlist(**params)

    opt = {
        'all_playlist': all_playlist,
        'requested_user': params.get('user', g.user),
    }

    return render_template("user/playlist.html", **opt)
def archived(id_int=None):
    params = {}
    if id_int:
        params['user'] = UserController.get_user_by_id_int(id_int)
    user_playlist = UserController.get_archived_playlist(**params)
    all_media = user_playlist.media_list

    opt = {
        'playlist': user_playlist,
        'media_list': all_media,
    }

    return render_template('playlist/medialist.html', **opt)
def context_processor():
    return {
        'user': g.user,
        'archived_playlist': UserController.get_archived_playlist(),
        'playlist_number': PlaylistController.get_playlist_number(),
        'today': datetime.now().replace(microsecond=0),
    }
def bookmarklet():
    opt = {
        'is_login': False,
        'is_active': False,
        'done': False,
    }

    if g.user:
        opt['is_login'] = True

        if g.user.active:
            opt['is_active'] = True

    if request.method == 'GET':
        opt['address'] = request.args.get('url', '')

        media_tuple = MediaController.inspect_url(form_data=opt)
        opt['result'] = MediaController.route_parser(media_tuple=media_tuple)

    elif request.method == 'POST':
        inspected_data = MediaController.inspect_url(request.form)
        created_media, created_flag = MediaController.get_or_create(inspected_data)

        playlist = UserController.get_archived_playlist()
        success = PlaylistController.add_media(playlist=playlist, media=created_media)
        if success:
            opt['done'] = True
        else:
            opt['fail'] = True

    return render_template("media/bookmarklet.html", **opt)
def archive():
    if request.method == 'GET':
        opt = {
            'bookmarklet_address': url_for('media.bookmarklet', _external=True),
        }
        return render_template("media/archive.html", **opt)

    else:
        inspected_data = MediaController.inspect_url(request.form)
        created_media, created_flag = MediaController.get_or_create(inspected_data)

        playlist = UserController.get_archived_playlist()
        success = PlaylistController.add_media(playlist=playlist, media=created_media)
        if not success:
            flash(u'failed to archive')

        return redirect(url_for('user.archived'))
def logout():
    UserController.logout()
    return redirect(url_for('main.index'))