예제 #1
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)
예제 #2
0
def reviews():
    # pagination
    num_per_page = 10
    page = int(request.args['page'] if 'page' in request.args else 1)

    reviews = Review.get_reviews(page, num_per_page)
    for r in reviews:
        r['Time'] = time_diff(r['Time'])

    # page paras
    reviews_num = Review.get_reviews_num()
    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

    reviewers = Review.get_hot_reviewers(8)
    return render_template('reviews.html',
                           reviews=reviews,
                           reviewers=reviewers,
                           page=page,
                           total_page=total_page,
                           pre_page=pre_page,
                           next_page=next_page)
예제 #3
0
def people_reviews(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)

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

	reviews_num = Review.get_reviews_num_by_user(people['UserID'])

	# 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('people_reviews.html', people=people, reviews=reviews, user_name=user_name, page=page, total_page=total_page, pre_page=pre_page, next_page=next_page)
예제 #4
0
def add_comment_to_review(review_id):
    form = CommentForm(request.form)
    if form.validate():
        comment = cgi.escape(form.comment.data)

        # add comment
        replyer_id = session['user_id']
        replyee_id = get_comment_replyee_id(comment)    # check if @people exist
        if replyee_id != -1:
            comment = rebuild_comment(comment, replyee_id)
        new_comment_id = Comment.add_comment_to_review(review_id, replyer_id, comment)

        Review.add_comment_num(review_id)

        # add inform
        review_user_id = Review.get_review(review_id)['UserID']
        inform_title = build_review_inform_title(replyer_id, review_id)
        # if the review not add by me
        if  replyer_id != review_user_id:
            Inform.add(replyer_id, review_user_id, inform_title, comment)
        # if replyee exist,
        # and the topic not add by me,
        # and not review_user_id, because if so, the inform has already been sended above
        if replyee_id != -1 and replyee_id != replyer_id and replyee_id != review_user_id:
            Inform.add(replyer_id, replyee_id, inform_title, comment)
        return redirect(url_for('single_review', review_id=review_id) + "#" + str(new_comment_id))
    else:
        return redirect(url_for('single_review', review_id=review_id))
예제 #5
0
def add_comment_to_review(review_id):
    check_login()

    form = CommentForm(request.form)
    if form.validate():
        comment = cgi.escape(form.comment.data)

        # add comment
        replyer_id = session['user_id']
        replyee_id = get_comment_replyee_id(comment)  # check if @people exist
        if replyee_id != -1:
            comment = rebuild_comment(comment, replyee_id)
        new_comment_id = Comment.add_comment_to_review(review_id, replyer_id,
                                                       comment)

        # plus comment num by 1
        Review.add_comment_num(review_id)

        # add inform
        review_user_id = Review.get_review(review_id)['UserID']
        inform_title = build_review_inform_title(replyer_id, review_id)
        # if the review not add by me
        if replyer_id != review_user_id:
            Inform.add(replyer_id, review_user_id, inform_title, comment)
        # if replyee exist,
        # and the topic not add by me,
        # and not review_user_id, because if so, the inform has already been sended above
        if replyee_id != -1 and replyee_id != replyer_id and replyee_id != review_user_id:
            Inform.add(replyer_id, replyee_id, inform_title, comment)
        return redirect(
            url_for('single_review', review_id=review_id) + "#" +
            str(new_comment_id))
    else:
        return redirect(url_for('single_review', review_id=review_id))
예제 #6
0
def edit_review(review_id):
	if request.method == 'GET':
		review = Review.get_review(review_id)
		return render_template('edit_review.html', review=review)
	elif request.method == 'POST':
		title = request.form['title']
		content = request.form['content']
		Review.edit_review(review_id, title, content)
		return redirect(url_for('single_review', review_id=review_id))
예제 #7
0
def single_review(review_id):
	form = CommentForm()

	# check exist
	review = Review.get_review(review_id)
	if not review:
		abort(404)

	review['Content'] = markdown2.markdown(review['Content'])
	review['Time'] = time_diff(review['Time'])
	Review.add_click_num(review_id)
	comments = Comment.get_comments_by_review(review_id)
	for c in comments:
		c['Time'] = time_diff(c['Time'])

	return render_template('single_review.html', review=review, comments=comments, form=form)
예제 #8
0
def edit_review(review_id):
	review = Review.get_review(review_id)
	check_private(review['UserID'])

	if request.method == 'GET':
		form = ReviewForm(title=review['Title'], content=review['Content'])
		return render_template('edit_review.html', review=review, form=form)
	elif request.method == 'POST':
		form = ReviewForm(request.form)
		if form.validate():
			title = cgi.escape(form.title.data)
			content = cgi.escape(form.content.data)
			Review.edit_review(review_id, title, content)
			return redirect(url_for('single_review', review_id=review_id))
		else:
			return render_template('edit_review.html', review=review, form=form)
예제 #9
0
def single_work(work_id):
	work = Work.get_work(work_id)
	if not work:
		abort(404)

	# add comment, split ci, gene paragraph
	work['Content'] = re.sub(r'<([^<^b]+)>', r"<sup title='\1'></sup>", work['Content'])
	work['Content'] = work['Content'].replace('%', "&nbsp;&nbsp;")
	work['Content'] = markdown2.markdown(work['Content'])

	# check if is collected
	if 'user_id' in session:
		is_collected = Collect.check(session['user_id'], work_id)
		tags = Collect.get_tags(session['user_id'], work_id) if is_collected else ""
		my_tags = Tag.get_user_tags(session['user_id'], 20)
		popular_tags = Tag.get_work_tags(work_id, 20)
	else:
		is_collected = False
		tags = ""
		my_tags = []
		popular_tags = []

	reviews = Review.get_reviews_by_work(work_id)
	for r in reviews:
		r['Time'] = time_diff(r['Time'])

	product = Product.get_product_by_random()

	other_works = Work.get_other_works_by_author(work['AuthorID'], work_id, 5)
	for ow in other_works:
		ow['Content'] = content_clean(ow['Content'])

	collectors = Collect.get_users_by_work(work_id, 4)

	return render_template('work/single_work.html', work=work, tags=tags, my_tags=my_tags, popular_tags=popular_tags, reviews=reviews, is_collected=is_collected, product=product, other_works=other_works, collectors=collectors)
예제 #10
0
파일: site.py 프로젝트: imgugu/xichuangzhu
def index():
    works = Work.get_works_by_random(4)
    for work in works:
        work['Content'] = content_clean(work['Content'])

    work_images = Work.get_images_by_random(9)

    reviews = Review.get_reviews_by_random(4)
    for r in reviews:
        r['Time'] = time_diff(r['Time'])

    authors = Author.get_authors_by_random(5)
    for a in authors:
        quote = Quote.get_quote_by_random(a['AuthorID'])
        a['Quote'] = quote['Quote'] if quote else ""
        a['QuoteID'] = quote['QuoteID'] if quote else 0

    dynasties = Dynasty.get_dynasties()
    topics = Topic.get_topics(8)
    return render_template('site/index.html',
                           works=works,
                           work_images=work_images,
                           reviews=reviews,
                           authors=authors,
                           dynasties=dynasties,
                           topics=topics)
예제 #11
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)
예제 #12
0
def single_work(work_id):
	work = Work.get_work(work_id)
	# add comment
	work['Content'] = re.sub(r'<([^<^b]+)>', r"<sup title='\1'></sup>", work['Content'])
	work['Content'] = work['Content'].replace('%', "&nbsp;&nbsp;")

	# count the geci's padding left
	if work['Type'] == "geci":
		paras = work['Content'].split('/')[0].split('\r\n\r\n')
		total_word_len = 0
		total_row_num = 0
		for para in paras:
			if len(para) != 0:
				total_word_len += len(para)
				total_row_num += 1
		geci_padding_left = (36 - total_word_len / total_row_num) / 2 + 1
	else:
		geci_padding_left = '0'

	# gene paragraph
	work['Content'] = markdown2.markdown(work['Content'])

	# add bank row
	work['Content'] = work['Content'].replace('<p>/</p>', "<div class='bank'></div>")

	reviews = Review.get_reviews_by_work(work_id)
	
	widgets = Widget.get_widgets('work', work_id)

	# check is loved
	if 'user_id' in session:
		is_loved = Love.check_love(session['user_id'], work_id)
	else:
		is_loved = False
	return render_template('single_work.html', work=work, reviews=reviews, widgets=widgets, is_loved=is_loved, geci_padding_left=geci_padding_left)
예제 #13
0
def edit_review(review_id):
    review = Review.get_review(review_id)
    check_private(review['UserID'])

    if request.method == 'GET':
        form = ReviewForm(title=review['Title'], content=review['Content'])
        return render_template('edit_review.html', review=review, form=form)
    elif request.method == 'POST':
        form = ReviewForm(request.form)
        if form.validate():
            title = cgi.escape(form.title.data)
            content = cgi.escape(form.content.data)
            Review.edit_review(review_id, title, content)
            return redirect(url_for('single_review', review_id=review_id))
        else:
            return render_template('edit_review.html',
                                   review=review,
                                   form=form)
예제 #14
0
def edit_review(review_id):
    review = Review.get_review(review_id)
    if review['UserID'] != session['user_id']:
        abort(404)

    if request.method == 'GET':
        form = ReviewForm(title=review['Title'], content=review['Content'])
        return render_template('review/edit_review.html', review=review, form=form)
    else:
        form = ReviewForm(request.form)
        if form.validate():
            title = cgi.escape(form.title.data)
            content = cgi.escape(form.content.data)
            is_publish = 1 if 'publish' in request.form else 0
            Review.edit_review(review_id, title, content, is_publish)
            return redirect(url_for('single_review', review_id=review_id))
        else:
            return render_template('review/edit_review.html', review=review, form=form)
예제 #15
0
def index():
	works = Work.get_works_by_random(4)
	for work in works:
		work['Content'] = re.sub(r'<([^<]+)>', '', work['Content'])
		work['Content'] = work['Content'].replace('%', '')
	reviews = Review.get_reviews_by_random(5)
	authors = Author.get_authors_by_random(5)
	dynasties = Dynasty.get_dynasties()
	return render_template('index.html', works=works, reviews=reviews, authors=authors, dynasties=dynasties)
예제 #16
0
파일: utils.py 프로젝트: imgugu/xichuangzhu
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
예제 #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)
예제 #18
0
def add_review(work_id):
	if request.method == 'GET':
		work = Work.get_work(work_id)
		return render_template('add_review.html', work=work)
	elif request.method == 'POST':
		user_id = int(request.form['user_id'])
		title = request.form['title']
		content = request.form['content']
		new_review_id = Review.add_review(work_id, user_id, title, content)
		return redirect(url_for('single_review', review_id=new_review_id))
예제 #19
0
def single_review(review_id):
    form = CommentForm()

    # check exist
    review = Review.get_review(review_id)
    if not review:
        abort(404)

    review['Content'] = markdown2.markdown(review['Content'])
    review['Time'] = time_diff(review['Time'])
    Review.add_click_num(review_id)
    comments = Comment.get_comments_by_review(review_id)
    for c in comments:
        c['Time'] = time_diff(c['Time'])

    return render_template('single_review.html',
                           review=review,
                           comments=comments,
                           form=form)
예제 #20
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)
예제 #21
0
def single_review(review_id):
	form = CommentForm()

	# check exist
	review = Review.get_review(review_id)
	if not review:
		abort(404)

	# the others cannot see draft 
	is_me = True if "user_id" in session and session['user_id'] == review['UserID'] else False
	if not is_me and review['IsPublish'] == 0: 
		abort(404)

	review['Content'] = markdown2.markdown(review['Content'])
	review['Time'] = time_diff(review['Time'])
	Review.add_click_num(review_id)
	comments = Comment.get_comments_by_review(review_id)
	for c in comments:
		c['Time'] = time_diff(c['Time'])

	return render_template('review/single_review.html', review=review, comments=comments, form=form)
예제 #22
0
def reviews():
    # pagination
    num_per_page = 10
    page = int(request.args['page'] if 'page' in request.args else 1)

    reviews = Review.get_reviews(page, num_per_page)
    for r in reviews:
        r['Time'] = time_diff(r['Time'])

    # page paras
    reviews_num = Review.get_reviews_num()
    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

    reviewers = Review.get_hot_reviewers(8)
    return render_template('review/reviews.html', reviews=reviews, reviewers=reviewers, page=page, total_page=total_page, pre_page=pre_page, next_page=next_page)
예제 #23
0
def index():
    works = Work.get_works_by_random(4)
    for work in works:
        work['Content'] = re.sub(r'<([^<]+)>', '', work['Content'])
        work['Content'] = work['Content'].replace('%', '')
    reviews = Review.get_reviews_by_random(5)
    authors = Author.get_authors_by_random(5)
    dynasties = Dynasty.get_dynasties()
    return render_template('index.html',
                           works=works,
                           reviews=reviews,
                           authors=authors,
                           dynasties=dynasties)
예제 #24
0
def single_work(work_id):
    work = Work.get_work(work_id)

    if not work:
        abort(404)

    # add comment, split ci, gene paragraph
    work['Content'] = re.sub(r'<([^<^b]+)>', r"<sup title='\1'></sup>",
                             work['Content'])
    work['Content'] = work['Content'].replace('%', "&nbsp;&nbsp;")
    work['Content'] = markdown2.markdown(work['Content'])

    # check is loved
    if 'user_id' in session:
        is_loved = Love_work.check_love(session['user_id'], work_id)
        tags = Love_work.get_tags(session['user_id'],
                                  work_id) if is_loved else ""
        my_tags = Tag.get_user_tags(session['user_id'], 20)
        popular_tags = Tag.get_work_tags(work_id, 20)
    else:
        is_loved = False
        tags = ""
        my_tags = []
        popular_tags = []

    reviews = Review.get_reviews_by_work(work_id)
    for r in reviews:
        r['Time'] = time_diff(r['Time'])

    widgets = Widget.get_widgets('work', work_id)

    product = Product.get_product_by_random()

    other_works = Work.get_other_works_by_author(work['AuthorID'], work_id, 5)
    for ow in other_works:
        ow['Content'] = content_clean(ow['Content'])

    lovers = Love_work.get_users_by_work(work_id, 4)

    return render_template('single_work.html',
                           work=work,
                           tags=tags,
                           my_tags=my_tags,
                           popular_tags=popular_tags,
                           reviews=reviews,
                           widgets=widgets,
                           is_loved=is_loved,
                           product=product,
                           other_works=other_works,
                           lovers=lovers)
예제 #25
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)
예제 #26
0
def add_review(work_id):
    work = Work.get_work(work_id)
    if request.method == 'GET':
        form = ReviewForm()
        return render_template('review/add_review.html', work=work, form=form)
    else:
        form = ReviewForm(request.form)
        if form.validate():
            user_id = session['user_id']
            title = cgi.escape(form.title.data)
            content = cgi.escape(form.content.data)
            is_publish = 1 if 'publish' in request.form else 0
            new_review_id = Review.add_review(work_id, user_id, title, content, is_publish)
            return redirect(url_for('single_review', review_id=new_review_id))
        else:
            return render_template('review/add_review.html', work=work, form=form)
예제 #27
0
def index():
	works = Work.get_works_by_random(4)
	for work in works:
		work['Content'] = content_clean(work['Content'])

	reviews = Review.get_reviews_by_random(4)
	for r in reviews:
		r['Time'] = time_diff(r['Time'])
	
	authors = Author.get_authors_by_random(5)
	for a in authors:
		quote = Quote.get_quote_by_random(a['AuthorID'])
		a['Quote'] = quote['Quote'] if quote else ""
	
	dynasties = Dynasty.get_dynasties()
	topics = Topic.get_topics(8)
	return render_template('index.html', works=works, reviews=reviews, authors=authors, dynasties=dynasties, topics=topics)
예제 #28
0
def add_review(work_id):
    check_login()
    work = Work.get_work(work_id)

    if request.method == 'GET':
        form = ReviewForm()
        return render_template('add_review.html', work=work, form=form)
    elif request.method == 'POST':
        form = ReviewForm(request.form)
        if form.validate():
            user_id = session['user_id']
            title = cgi.escape(form.title.data)
            content = cgi.escape(form.content.data)
            new_review_id = Review.add_review(work_id, user_id, title, content)
            return redirect(url_for('single_review', review_id=new_review_id))
        else:
            return render_template('add_review.html', work=work, form=form)
예제 #29
0
def add_review(work_id):
	check_login()
	work = Work.get_work(work_id)
	
	if request.method == 'GET':
		form = ReviewForm()
		return render_template('add_review.html', work=work, form=form)
	elif request.method == 'POST':
		form = ReviewForm(request.form)
		if form.validate():
			user_id = session['user_id']
			title = cgi.escape(form.title.data)
			content = cgi.escape(form.content.data)
			new_review_id = Review.add_review(work_id, user_id, title, content)
			return redirect(url_for('single_review', review_id=new_review_id))
		else:
			return render_template('add_review.html', work=work, form=form)
예제 #30
0
def single_work(work_id):
    work = Work.get_work(work_id)
    # add comment
    work['Content'] = re.sub(r'<([^<^b]+)>', r"<sup title='\1'></sup>",
                             work['Content'])
    work['Content'] = work['Content'].replace('%', "&nbsp;&nbsp;")

    # count the geci's padding left
    if work['Type'] == "geci":
        paras = work['Content'].split('/')[0].split('\r\n\r\n')
        total_word_len = 0
        total_row_num = 0
        for para in paras:
            if len(para) != 0:
                total_word_len += len(para)
                total_row_num += 1
        geci_padding_left = (36 - total_word_len / total_row_num) / 2 + 1
    else:
        geci_padding_left = '0'

    # gene paragraph
    work['Content'] = markdown2.markdown(work['Content'])

    # add bank row
    work['Content'] = work['Content'].replace('<p>/</p>',
                                              "<div class='bank'></div>")

    reviews = Review.get_reviews_by_work(work_id)

    widgets = Widget.get_widgets('work', work_id)

    # check is loved
    if 'user_id' in session:
        is_loved = Love.check_love(session['user_id'], work_id)
    else:
        is_loved = False
    return render_template('single_work.html',
                           work=work,
                           reviews=reviews,
                           widgets=widgets,
                           is_loved=is_loved,
                           geci_padding_left=geci_padding_left)
예제 #31
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
예제 #32
0
def delete_review(review_id):
    review = Review.get_review(review_id)
    if review['UserID'] != session['user_id']:
        abort(404)
    Review.delete(review_id)
    return redirect(url_for('index'))
예제 #33
0
def single_review(review_id):
	review = Review.get_review(review_id)
	review['Content'] = markdown2.markdown(review['Content'])
	comments = Comment.get_comments_by_review(review_id)
	return render_template('single_review.html', review=review, comments=comments)
예제 #34
0
def reviews():
	reviews = Review.get_hot_reviews()
	return render_template('reviews.html', reviews=reviews)