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)
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)
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)
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))
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))
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))
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)
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)
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('%', " ") 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)
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)
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)
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('%', " ") # 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)
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)
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)
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> 在评论 " + "<a href=" + url_for( 'single_review', review_id=review_id ) + ">" + review['Title'] + "</a>" + " 中回复了你" return inform_title
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))
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)
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)
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)
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('%', " ") 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)
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)
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)
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)
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)
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> 在评论 " + "<a href=" + url_for('single_review', review_id=review_id) + ">" + review['Title'] + "</a>" + " 中回复了你" return inform_title
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'))
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)
def reviews(): reviews = Review.get_hot_reviews() return render_template('reviews.html', reviews=reviews)