Example #1
0
def rebuild_comment(comment, replyee_id):
    replyee_name = User.get_name_by_id(replyee_id)
    replyee_abbr = User.get_abbr_by_id(replyee_id)
    comment = "@" + "<a href=" + url_for(
        'user', user_abbr=replyee_abbr
    ) + ">" + replyee_name + "</a>" + "&nbsp;&nbsp;" + comment.split(' ')[1]
    return comment
Example #2
0
def get_comment_replyee_id(comment):
	replyee_id = -1
	header = comment.split(' ')[0]
	if header.find('@') == 0:
		if User.check_exist_by_name(header.lstrip('@')):
			replyee_name = header.lstrip('@')
			replyee_id = User.get_id_by_name(replyee_name)
	return replyee_id
Example #3
0
def get_comment_replyee_id(comment):
    replyee_id = -1
    header = comment.split(' ')[0]
    if header.find('@') == 0:
        if User.check_exist_by_name(header.lstrip('@')):
            replyee_name = header.lstrip('@')
            replyee_id = User.get_id_by_name(replyee_name)
    return replyee_id
Example #4
0
def verify_email(user_id, verify_code):
	user_name = User.get_name(user_id)
	if verify_code == hashlib.sha1(user_name).hexdigest():
		User.active_user(user_id)
		session['user_id'] = user_id
		session['user_name'] = user_name
		return redirect(url_for('verify_email_callback', state='active_succ'))
	else:
		return redirect(url_for('verify_email_callback', state='active_failed'))
Example #5
0
def verify_email(user_id, verify_code):
    user_name = User.get_name(user_id)
    if verify_code == hashlib.sha1(user_name).hexdigest():
        User.active_user(user_id)
        session['user_id'] = user_id
        session['user_name'] = user_name
        return redirect(url_for('verify_email_callback', state='active_succ'))
    else:
        return redirect(url_for('verify_email_callback',
                                state='active_failed'))
Example #6
0
def auth():
    code = request.args['code']

    # get access token and userID
    url = "https://www.douban.com/service/auth2/token"
    data = {
        'client_id': '0cf909cba46ce67526eb1d62ed46b35f',
        'client_secret': '4c87a8ef33e6c6be',
        'redirect_uri': 'http://localhost:5000/login/douban',
        'grant_type': 'authorization_code',
        'code': code
    }
    data = urllib.urlencode(data)
    req = urllib2.Request(url, data)
    response = urllib2.urlopen(req)
    info = eval(response.read())
    user_id = int(info['douban_user_id'])

    # if user exist
    if User.check_user_exist(user_id):
        # if user unactive
        if not User.check_user_active(user_id):
            return redirect(
                url_for('verify_email_callback',
                        state='unactive',
                        user_id=user_id))
        else:
            # set session
            session['user_id'] = user_id
            session['user_name'] = User.get_name(user_id)
            return redirect(url_for('index'))
    # if not exist
    else:
        # get user info
        url = "https://api.douban.com/v2/user/" + str(user_id)
        req = urllib2.Request(url)
        response = urllib2.urlopen(req)
        user_info = eval(response.read().replace(
            '\\', ''))  # remove '\' and convert str to dict

        # add user
        user_id = int(user_info['id'])
        user_name = user_info['name']
        avatar = user_info['avatar']
        signature = user_info['signature']
        desc = user_info['desc']
        location_id = int(user_info['loc_id'])
        location = user_info['loc_name']
        User.add_user(user_id, user_name, avatar, signature, desc, location_id,
                      location)

        # go to the verify email page
        return redirect(url_for('send_verify_email', user_id=user_id))
Example #7
0
def auth():
	code = request.args['code']

	# get access token and userID
	url = "https://www.douban.com/service/auth2/token"
	data = {
		'client_id': '0cf909cba46ce67526eb1d62ed46b35f',
		'client_secret': '4c87a8ef33e6c6be',
		'redirect_uri': 'http://localhost:5000/login/douban',
		'grant_type': 'authorization_code',
		'code': code
	}
	data = urllib.urlencode(data)
	req = urllib2.Request(url, data)
	response = urllib2.urlopen(req)
	info = eval(response.read())
	user_id = int(info['douban_user_id'])

	# if user exist
	if User.check_user_exist(user_id):
		# if user unactive
		if not User.check_user_active(user_id):
			return redirect(url_for('verify_email_callback', state='unactive', user_id=user_id))
		else:
			# set session
			session['user_id'] = user_id
			session['user_name'] = User.get_name(user_id)
			return redirect(url_for('index'))
	# if not exist
	else:
		# get user info
		url = "https://api.douban.com/v2/user/" + str(user_id)
		req = urllib2.Request(url)
		response = urllib2.urlopen(req)
		user_info = eval(response.read().replace('\\', ''))	# remove '\' and convert str to dict

		# add user
		user_id = int(user_info['id'])
		user_name = user_info['name']
		avatar = user_info['avatar']
		signature = user_info['signature']
		desc = user_info['desc']
		location_id = int(user_info['loc_id'])
		location = user_info['loc_name']
		User.add_user(user_id, user_name, avatar, signature, desc, location_id, location)

		# go to the verify email page
		return redirect(url_for('send_verify_email', user_id=user_id))
Example #8
0
def send_verify_email():
    if request.method == 'GET':
        user_id = int(request.args['user_id'])
        form = EmailForm(user_id=user_id)
        user_name = User.get_name_by_id(user_id)
        return render_template('sign/send_verify_email.html',
                               user_name=user_name,
                               form=form)
    else:
        form = EmailForm(request.form)

        if form.validate():

            # email
            t_addr = form.email.data

            # user info
            user_id = int(form.user_id.data)
            user_name = User.get_name_by_id(user_id)

            # add this email to user
            User.add_email(user_id, t_addr)

            # gene verify url
            verify_code = hashlib.sha1(user_name).hexdigest()
            verify_url = config.SITE_DOMAIN + "verify_email/douban/" + str(
                user_id) + "/" + verify_code

            # prepare email content
            msgText = '''<h3>点 <a href='%s'>这里</a>,激活你在西窗烛的帐号。</h3>''' % verify_url
            msg = MIMEText(msgText, 'html', 'utf-8')
            msg['From'] = "西窗烛 <" + config.SMTP_FROM + ">"
            msg['To'] = user_name + "<" + t_addr + ">"
            msg['Subject'] = "欢迎来到西窗烛!"

            # send email
            s = smtplib.SMTP(config.SMTP_SERVER, config.SMTP_PORT)
            s.login(config.SMTP_USER, config.SMTP_PASSWORD)
            s.sendmail(config.SMTP_FROM, t_addr, msg.as_string())

            return redirect(url_for('verify_email_callback',
                                    state='send_succ'))
        else:
            user_id = int(form.user_id.data)
            user_name = User.get_name_by_id(user_id)
            return render_template('sign/send_verify_email.html',
                                   user_name=user_name,
                                   form=form)
Example #9
0
def people_topics(user_abbr):
	people = User.get_user_by_abbr(user_abbr)
	user_name = '我' if "user_id" in session and session['user_id'] == people['UserID'] else people['Name']

	# pagination
	num_per_page = 10
	page = int(request.args['page'] if 'page' in request.args else 1)

	topics = Topic.get_topics_by_user(people['UserID'], page, num_per_page)
	for t in topics:
		t['Time'] = time_diff(t['Time'])

	topics_num = Topic.get_topics_num_by_user(people['UserID'])

	# page paras
	total_page = int(math.ceil(topics_num / num_per_page))
	pre_page = (page - 1) if page > 1 else 1
	if total_page == 0:
		next_page = 1
	elif page < total_page:
		next_page = page + 1
	else:
		next_page = total_page

	return render_template('people_topics.html', people=people, topics=topics, user_name=user_name, page=page, total_page=total_page, pre_page=pre_page, next_page=next_page)
Example #10
0
def people_love_works(user_abbr):
	people = User.get_user_by_abbr(user_abbr)
	user_name = '我' if "user_id" in session and session['user_id'] == people['UserID'] else people['Name']

	# pagination
	num_per_page = 10
	page = int(request.args['page'] if 'page' in request.args else 1)

	works = Love_work.get_works_by_user(people['UserID'], page, num_per_page)
	for work in works:
		work['Content'] = content_clean(work['Content'])

	works_num = Love_work.get_works_num_by_user(people['UserID'])

	# page paras
	total_page = int(math.ceil(works_num / num_per_page))
	pre_page = (page - 1) if page > 1 else 1
	if total_page == 0:
		next_page = 1
	elif page < total_page:
		next_page = page + 1
	else:
		next_page = total_page

	return render_template('people_love_works.html', people=people, works=works, user_name=user_name, page=page, total_page=total_page, pre_page=pre_page, next_page=next_page)
Example #11
0
def user(user_abbr):
    user = User.get_user_by_abbr(user_abbr)
    is_me = True if "user_id" in session and session['user_id'] == user[
        'UserID'] else False

    # works
    works = Collect.get_works_by_user(user['UserID'], 1, 3)
    for work in works:
        work['Content'] = content_clean(work['Content'])
    works_num = Collect.get_works_num_by_user(user['UserID'])

    # reivews
    reviews = Review.get_reviews_by_user(user['UserID'], 1, 3, is_me)
    for r in reviews:
        r['Time'] = time_diff(r['Time'])
    reviews_num = Review.get_reviews_num_by_user(user['UserID'], is_me)

    # topics
    topics = Topic.get_topics_by_user(user['UserID'], 1, 3)
    for t in topics:
        t['Time'] = time_diff(t['Time'])
    topics_num = Topic.get_topics_num_by_user(user['UserID'])

    return render_template('user/user.html',
                           user=user,
                           works=works,
                           works_num=works_num,
                           reviews=reviews,
                           reviews_num=reviews_num,
                           topics=topics,
                           topics_num=topics_num)
Example #12
0
def user_reviews(user_abbr):
	user = User.get_user_by_abbr(user_abbr)
	is_me = True if "user_id" in session and session['user_id'] == user['UserID'] else False
	user_name = '我' if is_me else user['Name']

	# pagination
	num_per_page = 10
	page = int(request.args['page'] if 'page' in request.args else 1)

	reviews = Review.get_reviews_by_user(user['UserID'], page, num_per_page, is_me)
	for r in reviews:
		r['Time'] = time_diff(r['Time'])
		
	reviews_num = Review.get_reviews_num_by_user(user['UserID'], is_me)

	# page paras
	total_page = int(math.ceil(reviews_num / num_per_page))
	pre_page = (page - 1) if page > 1 else 1
	if total_page == 0:
		next_page = 1
	elif page < total_page:
		next_page = page + 1
	else:
		next_page = total_page

	return render_template('user/user_reviews.html', user=user, reviews=reviews, reviews_num=reviews_num, user_name=user_name, page=page, total_page=total_page, pre_page=pre_page, next_page=next_page)
Example #13
0
def people(user_id):
	people = User.get_people(user_id)
	works = Love.get_works_by_user_love(user_id)
	for work in works:
		work['Content'] = re.sub(r'<([^<]+)>', '', work['Content'])
	reviews = Review.get_reviews_by_user(user_id)
	return render_template('people.html', people=people, works=works, reviews=reviews)
Example #14
0
def send_verify_email():
    if request.method == 'GET':
        user_id = int(request.args['user_id'])
        form = EmailForm(user_id=user_id)
        user_name = User.get_name_by_id(user_id)
        return render_template('sign/send_verify_email.html', user_name=user_name, form=form)
    else:
        form = EmailForm(request.form)

        if form.validate():

            # email
            t_addr = form.email.data

            # user info
            user_id = int(form.user_id.data)
            user_name = User.get_name_by_id(user_id)

            # add this email to user
            User.add_email(user_id, t_addr)

            # gene verify url
            verify_code = hashlib.sha1(user_name).hexdigest()
            verify_url = config.SITE_DOMAIN + "verify_email/douban/" + str(user_id) + "/" + verify_code

            # prepare email content
            msgText = '''<html>
                <h1>点击下面的链接,激活你在西窗烛的帐号:</h1>
                <a href='%s'>%s</a>
                </html>''' % (verify_url, verify_url)
            msg = MIMEText(msgText, 'html', 'utf-8')
            msg['From'] = "西窗烛 <" + config.SMTP_FROM + ">"
            msg['To'] = user_name + "<" + t_addr + ">"
            msg['Subject'] = "欢迎来到西窗烛!"

            # send email
            s = smtplib.SMTP(config.SMTP_SERVER, config.SMTP_PORT)
            s.login(config.SMTP_USER, config.SMTP_PASSWORD)
            s.sendmail(config.SMTP_FROM, t_addr, msg.as_string())

            return redirect(url_for('verify_email_callback', state='send_succ'))
        else:
            user_id = int(form.user_id.data)
            user_name = User.get_name_by_id(user_id)
            return render_template('sign/send_verify_email.html', user_name=user_name, form=form)
Example #15
0
def build_topic_inform_title(replyer_id, topic_id):
    replyer = User.get_user_by_id(replyer_id)
    topic = Topic.get_topic(topic_id)
    inform_title = "<a href=" + url_for(
        'user', user_abbr=replyer['Abbr']) + ">" + replyer[
            'Name'] + "</a>&nbsp;&nbsp;在话题&nbsp;&nbsp;" + "<a href=" + url_for(
                'single_topic', topic_id=topic_id
            ) + ">" + topic['Title'] + "</a>" + "&nbsp;&nbsp;中回复了你"
    return inform_title
Example #16
0
def build_review_inform_title(replyer_id, review_id):
    replyer = User.get_user_by_id(replyer_id)
    review = Review.get_review(review_id)
    inform_title = "<a href=" + url_for(
        'user', user_abbr=replyer['Abbr']) + ">" + replyer[
            'Name'] + "</a>&nbsp;&nbsp;在评论&nbsp;&nbsp;" + "<a href=" + url_for(
                'single_review', review_id=review_id
            ) + ">" + review['Title'] + "</a>" + "&nbsp;&nbsp;中回复了你"
    return inform_title
Example #17
0
def people(user_id):
    people = User.get_people(user_id)
    works = Love.get_works_by_user_love(user_id)
    for work in works:
        work['Content'] = re.sub(r'<([^<]+)>', '', work['Content'])
    reviews = Review.get_reviews_by_user(user_id)
    return render_template('people.html',
                           people=people,
                           works=works,
                           reviews=reviews)
Example #18
0
def send_verify_email():
    if request.method == 'GET':
        user_id = int(request.args['user_id'])
        user_name = User.get_name(user_id)
        return render_template('send_verify_email.html',
                               user_id=user_id,
                               user_name=user_name)
    elif request.method == 'POST':
        # email
        f_addr = "*****@*****.**"
        t_addr = request.form['email']

        # user info
        user_id = int(request.form['user_id'])
        user_name = User.get_name(user_id)

        # add this email to user
        User.add_email(user_id, t_addr)

        # gene verify url
        verify_code = hashlib.sha1(user_name).hexdigest()
        verify_url = "http://*****:*****@qq.com', 'xiaowang2013qqzi')
        s.sendmail('*****@*****.**', t_addr, msg.as_string())

        return redirect(url_for('verify_email_callback', state='send_succ'))
Example #19
0
def send_verify_email():
	if request.method == 'GET':
		user_id = int(request.args['user_id'])
		user_name = User.get_name(user_id)
		return render_template('send_verify_email.html', user_id=user_id, user_name=user_name)
	elif request.method == 'POST':
		# email
		f_addr = "*****@*****.**"
		t_addr = request.form['email']

		# user info
		user_id = int(request.form['user_id'])
		user_name = User.get_name(user_id)

		# add this email to user
		User.add_email(user_id, t_addr)

		# gene verify url
		verify_code = hashlib.sha1(user_name).hexdigest()
		verify_url = "http://*****:*****@qq.com', 'xiaowang2013qqzi')
		s.sendmail('*****@*****.**', t_addr, msg.as_string())

		return redirect(url_for('verify_email_callback', state='send_succ'))
Example #20
0
def auth():
    code = request.args['code']

    # get access token and userID
    url = "https://www.douban.com/service/auth2/token"
    data = {
        'client_id': config.DOUBAN_CLIENT_ID,
        'client_secret': config.DOUBAN_SECRET,
        'redirect_uri': config.DOUBAN_REDIRECT_URI,
        'grant_type': 'authorization_code',
        'code': code
    }
    data = urllib.urlencode(data)
    req = urllib2.Request(url, data)
    response = urllib2.urlopen(req)
    info = eval(response.read())
    user_id = int(info['douban_user_id'])

    # if user exist
    if User.check_exist_by_id(user_id):
        # if user unactive
        if not User.check_active(user_id):
            return redirect(url_for('verify_email_callback', state='unactive', user_id=user_id))
        else:
            # set session
            session.permanent = True
            session['user_id'] = user_id
            session['user_name'] = User.get_name_by_id(user_id)
            session['user_abbr'] = User.get_abbr_by_id(user_id)
            return redirect(url_for('index'))
    # if not exist
    else:
        # get user info
        url = "https://api.douban.com/v2/user/" + str(user_id)
        req = urllib2.Request(url)
        response = urllib2.urlopen(req)
        user_info = eval(response.read().replace('\\', '')) # remove '\' and convert str to dict

        # add user
        user_id = int(user_info['id'])
        user_name = user_info['name']
        abbr = user_info['uid']
        avatar = user_info['avatar']
        signature = user_info['signature']
        desc = user_info['desc']
        location_id = int(user_info['loc_id']) if 'loc_id' in user_info else 0
        location = user_info['loc_name']
        User.add_user(user_id, user_name, abbr, avatar, signature, desc, location_id, location)

        # go to the verify email page
        return redirect(url_for('send_verify_email', user_id=user_id))
Example #21
0
def auth():
	code = request.args['code']

	# get access token and userID
	url = "https://www.douban.com/service/auth2/token"
	data = {
		'client_id': config.DOUBAN_CLIENT_ID,
		'client_secret': config.DOUBAN_SECRET,
		'redirect_uri': config.DOUBAN_REDIRECT_URI,
		'grant_type': 'authorization_code',
		'code': code
	}
	data = urllib.urlencode(data)
	req = urllib2.Request(url, data)
	response = urllib2.urlopen(req)
	info = eval(response.read())
	user_id = int(info['douban_user_id'])

	# if user exist
	if User.check_exist_by_id(user_id):
		# if user unactive
		if not User.check_active(user_id):
			return redirect(url_for('verify_email_callback', state='unactive', user_id=user_id))
		else:
			# set session
			session.permanent = True
			session['user_id'] = user_id
			session['user_name'] = User.get_name_by_id(user_id)
			session['user_abbr'] = User.get_abbr_by_id(user_id)
			return redirect(url_for('index'))
	# if not exist
	else:
		# get user info
		url = "https://api.douban.com/v2/user/" + str(user_id)
		req = urllib2.Request(url)
		response = urllib2.urlopen(req)
		user_info = eval(response.read().replace('\\', ''))	# remove '\' and convert str to dict

		# add user
		user_id = int(user_info['id'])
		user_name = user_info['name']
		abbr = user_info['uid']
		avatar = user_info['avatar']
		signature = user_info['signature']
		desc = user_info['desc']
		location_id = int(user_info['loc_id']) if 'loc_id' in user_info else 0
		location = user_info['loc_name']
		User.add_user(user_id, user_name, abbr, avatar, signature, desc, location_id, location)

		# go to the verify email page
		return redirect(url_for('send_verify_email', user_id=user_id))
Example #22
0
def people(user_abbr):
	people = User.get_user_by_abbr(user_abbr)
	user_name = '我' if "user_id" in session and session['user_id'] == people['UserID'] else people['Name']

	works = Love_work.get_works_by_user(people['UserID'], 1, 3)
	for work in works:
		work['Content'] = content_clean(work['Content'])
	works_num = Love_work.get_works_num_by_user(people['UserID'])

	reviews = Review.get_reviews_by_user(people['UserID'], 1, 3)
	for r in reviews:
		r['Time'] = time_diff(r['Time'])
	reviews_num = Review.get_reviews_num_by_user(people['UserID'])

	topics = Topic.get_topics_by_user(people['UserID'], 1, 3)
	for t in topics:
		t['Time'] = time_diff(t['Time'])
	topics_num = Topic.get_topics_num_by_user(people['UserID'])

	return render_template('people.html', people=people, works=works, works_num=works_num, reviews=reviews, reviews_num=reviews_num, topics=topics, topics_num=topics_num, user_name=user_name)
Example #23
0
def auth():
    # get current authed userID
    code = request.args['code']
    url = "https://www.douban.com/service/auth2/token"
    data = {
        'client_id': config.DOUBAN_CLIENT_ID,
        'client_secret': config.DOUBAN_SECRET,
        'redirect_uri': config.DOUBAN_REDIRECT_URI,
        'grant_type': 'authorization_code',
        'code': code
    }
    r = requests.post(url, data=data).json()
    user_id = int(r['douban_user_id'])

    # if user exist
    if User.check_exist_by_id(user_id):
        # if user unactive
        if not User.check_active(user_id):
            return redirect(
                url_for('verify_email_callback',
                        state='unactive',
                        user_id=user_id))
        else:
            # set session
            session.permanent = True
            session['user_id'] = user_id
            session['user_name'] = User.get_name_by_id(user_id)
            session['user_abbr'] = User.get_abbr_by_id(user_id)
            return redirect(url_for('index'))
    # if not exist
    else:
        # get user info
        url = "https://api.douban.com/v2/user/" + str(user_id)
        user_info = requests.get(url).json()

        # add user
        user_id = int(user_info['id'])
        user_name = user_info['name']
        abbr = user_info['uid']
        avatar = user_info['avatar']
        signature = user_info['signature']
        desc = user_info['desc']
        location_id = int(user_info['loc_id']) if 'loc_id' in user_info else 0
        location = user_info['loc_name']
        User.add_user(user_id, user_name, abbr, avatar, signature, desc,
                      location_id, location)

        # go to the verify email page
        return redirect(url_for('send_verify_email', user_id=user_id))
Example #24
0
def user(user_abbr):
	user = User.get_user_by_abbr(user_abbr)
	is_me = True if "user_id" in session and session['user_id'] == user['UserID'] else False

	# works
	works = Collect.get_works_by_user(user['UserID'], 1, 3)
	for work in works:
		work['Content'] = content_clean(work['Content'])
	works_num = Collect.get_works_num_by_user(user['UserID'])

	# reivews
	reviews = Review.get_reviews_by_user(user['UserID'], 1, 3, is_me)
	for r in reviews:
		r['Time'] = time_diff(r['Time'])
	reviews_num = Review.get_reviews_num_by_user(user['UserID'], is_me)

	# topics
	topics = Topic.get_topics_by_user(user['UserID'], 1, 3)
	for t in topics:
		t['Time'] = time_diff(t['Time'])
	topics_num = Topic.get_topics_num_by_user(user['UserID'])

	return render_template('user/user.html', user=user, works=works, works_num=works_num, reviews=reviews, reviews_num=reviews_num, topics=topics, topics_num=topics_num)
Example #25
0
def auth():
    # get current authed userID
    code = request.args['code']
    url = "https://www.douban.com/service/auth2/token"
    data = {
        'client_id': config.DOUBAN_CLIENT_ID,
        'client_secret': config.DOUBAN_SECRET,
        'redirect_uri': config.DOUBAN_REDIRECT_URI,
        'grant_type': 'authorization_code',
        'code': code
    }
    r = requests.post(url, data=data).json()
    user_id = int(r['douban_user_id'])

    # if user exist
    if User.check_exist_by_id(user_id):
        # if user unactive
        if not User.check_active(user_id):
            return redirect(url_for('verify_email_callback', state='unactive', user_id=user_id))
        else:
            # set session
            session.permanent = True
            session['user_id'] = user_id
            session['user_name'] = User.get_name_by_id(user_id)
            session['user_abbr'] = User.get_abbr_by_id(user_id)
            return redirect(url_for('index'))
    # if not exist
    else:
        # get user info
        url = "https://api.douban.com/v2/user/" + str(user_id)
        user_info = requests.get(url).json()

        # add user
        user_id = int(user_info['id'])
        user_name = user_info['name']
        abbr = user_info['uid']
        avatar = user_info['avatar']
        signature = user_info['signature']
        desc = user_info['desc']
        location_id = int(user_info['loc_id']) if 'loc_id' in user_info else 0
        location = user_info['loc_name']
        User.add_user(user_id, user_name, abbr, avatar, signature, desc, location_id, location)

        # go to the verify email page
        return redirect(url_for('send_verify_email', user_id=user_id))
Example #26
0
def signin():
    # get current authed userID
    code = request.args['code']
    url = "https://www.douban.com/service/auth2/token"
    data = {
        'client_id': config.DOUBAN_CLIENT_ID,
        'client_secret': config.DOUBAN_SECRET,
        'redirect_uri': config.DOUBAN_REDIRECT_URI,
        'grant_type': 'authorization_code',
        'code': code
    }
    r = requests.post(url, data=data).json()
    user_id = int(r['douban_user_id'])

    # if user exist
    if User.query.get(user_id):
        # if user unactive
        if User.query.filter(User.is_active==False).filter(User.id==user_id).first():
            return redirect(url_for('active_state', state='unactive', user_id=user_id))
        else:
            # set session
            session.permanent = True
            user = User.query.get_or_404(user_id)
            session['user_id'] = user_id
            session['user_name'] = user.name
            session['user_abbr'] = user.abbr
            return redirect(url_for('index'))
    # if not exist
    else:
        # get user info
        url = "https://api.douban.com/v2/user/" + str(user_id)
        user_info = requests.get(url).json()

        user = User(id=user_id, name=user_info['name'], abbr=user_info['uid'], avatar=user_info['avatar'], signature=user_info['signature'])
        db.session.add(user)
        db.session.commit()
        return redirect(url_for('send_active_email', user_id=user_id))
Example #27
0
def user_reviews(user_abbr):
    user = User.get_user_by_abbr(user_abbr)
    is_me = True if "user_id" in session and session['user_id'] == user[
        'UserID'] else False
    user_name = '我' if is_me else user['Name']

    # pagination
    num_per_page = 10
    page = int(request.args['page'] if 'page' in request.args else 1)

    reviews = Review.get_reviews_by_user(user['UserID'], page, num_per_page,
                                         is_me)
    for r in reviews:
        r['Time'] = time_diff(r['Time'])

    reviews_num = Review.get_reviews_num_by_user(user['UserID'], is_me)

    # page paras
    total_page = int(math.ceil(reviews_num / num_per_page))
    pre_page = (page - 1) if page > 1 else 1
    if total_page == 0:
        next_page = 1
    elif page < total_page:
        next_page = page + 1
    else:
        next_page = total_page

    return render_template('user/user_reviews.html',
                           user=user,
                           reviews=reviews,
                           reviews_num=reviews_num,
                           user_name=user_name,
                           page=page,
                           total_page=total_page,
                           pre_page=pre_page,
                           next_page=next_page)
Example #28
0
def rebuild_comment(comment, replyee_id):
	replyee_name = User.get_name_by_id(replyee_id)
	replyee_abbr = User.get_abbr_by_id(replyee_id)
	comment = "@" + "<a href=" + url_for('people', user_abbr=replyee_abbr) + ">" + replyee_name + "</a>" + "&nbsp;&nbsp;" + comment.split(' ')[1]
	return comment
Example #29
0
def build_topic_inform_title(replyer_id, topic_id):
	replyer = User.get_user_by_id(replyer_id)
	topic = Topic.get_topic(topic_id)
	inform_title = "<a href=" + url_for('people', user_abbr=replyer['Abbr']) + ">" + replyer['Name'] + "</a>&nbsp;&nbsp;在话题&nbsp;&nbsp;" + "<a href=" + url_for('single_topic', topic_id=topic_id) + ">" + topic['Title'] + "</a>" + "&nbsp;&nbsp;中回复了你"
	return inform_title
Example #30
0
def build_review_inform_title(replyer_id, review_id):
	replyer = User.get_user_by_id(replyer_id)
	review = Review.get_review(review_id)
	inform_title = "<a href=" + url_for('people', user_abbr=replyer['Abbr']) + ">" + replyer['Name'] + "</a>&nbsp;&nbsp;在评论&nbsp;&nbsp;" + "<a href=" + url_for('single_review', review_id=review_id) + ">" + review['Title'] + "</a>" + "&nbsp;&nbsp;中回复了你"
	return inform_title