Skip to content

Commit f54f359

Browse files
committed
Merge pull request #84 from dongweiming/finished_comment
finished topic comment
2 parents 2d34a42 + 1bd2b15 commit f54f359

File tree

6 files changed

+43
-59
lines changed

6 files changed

+43
-59
lines changed

firefly/static/javascripts/create_comment.js

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -58,24 +58,15 @@ define(['jquery', 'sweetAlert'], function($, sweetAlert) {
5858
},
5959

6060
reply : function(){
61-
var title = $('#reply-title').val();
6261
var _this = this;
63-
var params, content = [];
64-
var category = $('#reply-category').val();
62+
var params, text, content = [];
6563
$('.CodeMirror-code pre span[style]').each(
6664
function () {
6765
text = $(this).text();
6866
content.push(text);
6967
}
7068
);
7169

72-
if (!title.length) {
73-
sweetAlert({
74-
title: "标题没有内容",
75-
type: "error"
76-
});
77-
return
78-
}
7970
if (!content.length) {
8071
sweetAlert({
8172
title: "正文内容太少",
@@ -84,19 +75,20 @@ define(['jquery', 'sweetAlert'], function($, sweetAlert) {
8475
return
8576
}
8677
params = {
87-
'title': title,
88-
'content': content.join('\n'),
89-
'category': category
78+
'ref_id': $('.reply-to').data('comment-id'),
79+
'content': content.join('\n')
9080
};
9181
$.ajax({
9282
type: 'POST',
93-
url: '/create',
83+
url: '/create/comment',
9484
traditional: true,
9585
data: params,
9686
dataType: "json",
9787
success: function(res) {
9888
if (!res.ok) {
99-
alert('发表成功');
89+
sweetAlert({
90+
title: "发表成功"
91+
});
10092
_this.closeModal();
10193
location.reload();
10294
}

firefly/static/javascripts/create_topic.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ define(['jquery', 'sweetAlert', 'select2', 'listItems'], function(
138138
};
139139
$.ajax({
140140
type: 'POST',
141-
url: '/create',
141+
url: '/create/topic',
142142
traditional: true,
143143
data: params,
144144
dataType: "json",

firefly/templates/widgets/markdown_editor.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@
5555
div.reply-to data-comment-id=''
5656
span
5757
回应
58-
a.avatar href="/t/6"
59-
img.avatar alt="" width="20" height="20"
58+
a#reply-topic.avatar href="/t/6"
59+
img.avatar.reply-author alt="" width="20" height="20"
6060
span
6161
div.wmd-controls style="top: 56px; bottom: 45px;"
6262
div.textarea-wrapper

firefly/views/home.py

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from flask_login import login_user, current_user, login_required
88

99
from firefly.forms.user import LoginForm, RegisterForm
10-
from firefly.models.topic import Category, Post
10+
from firefly.models.topic import Category, Post, Comment
1111
from firefly.models.user import User
1212

1313

@@ -20,7 +20,7 @@ def get(self):
2020
return render_template('index.html', posts=posts)
2121

2222

23-
class CreateView(MethodView):
23+
class CreateTopicView(MethodView):
2424
decorators = [login_required]
2525

2626
def post(self):
@@ -40,6 +40,28 @@ def post(self):
4040
return jsonify(ok=0, html=html)
4141

4242

43+
class CreateCommentView(MethodView):
44+
decorators = [login_required]
45+
46+
def post(self):
47+
ref_id = request.form.get('ref_id', 0)
48+
content = request.form.get('content')
49+
author = User.objects.get_or_404(id=current_user.id)
50+
c = Comment(ref_id=ref_id, content=content, author=author)
51+
c.save()
52+
context = Post.objects(id=int(ref_id))
53+
if not context:
54+
context = Comment.objects(id=int(ref_id))
55+
if not context:
56+
return jsonify(ok=1, msg='not exists')
57+
else:
58+
context = context[0]
59+
context.comments.append(c)
60+
context.save()
61+
62+
return jsonify(ok=0)
63+
64+
4365
class LoginView(MethodView):
4466
def get(self):
4567
return redirect(url_for('home.index'))
@@ -65,6 +87,9 @@ def post(self):
6587

6688

6789
bp.add_url_rule('/', view_func=HomeView.as_view('index'))
68-
bp.add_url_rule('create', view_func=CreateView.as_view('create'))
90+
bp.add_url_rule('create/topic',
91+
view_func=CreateTopicView.as_view('create_topic'))
92+
bp.add_url_rule('create/comment',
93+
view_func=CreateCommentView.as_view('create_comment'))
6994
bp.add_url_rule('login', view_func=LoginView.as_view('login'))
7095
bp.add_url_rule('register', view_func=RegisterView.as_view('register'))

firefly/views/post.py

Lines changed: 2 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
# coding=utf-8
22
from __future__ import absolute_import
3-
from flask import request, redirect, url_for, abort
43
from flask.views import MethodView
54
from flask.blueprints import Blueprint
65
from flask_mako import render_template
76
from flask_mongoengine.wtf import model_form
8-
from flask_login import current_user
97

10-
from firefly.models.user import User
118
from firefly.models.topic import Post, Comment
129

1310

@@ -18,39 +15,9 @@ class DetailView(MethodView):
1815

1916
form = model_form(Comment, exclude=['created_at', 'author', 'id'])
2017

21-
def get_context(self, id):
22-
post = Post.objects.get_or_404(id=id)
23-
form = self.form(request.form)
24-
25-
context = {
26-
"post": post,
27-
"form": form
28-
}
29-
return context
30-
3118
def get(self, id):
32-
context = self.get_context(id)
19+
post = Post.objects.get_or_404(id=id)
3320
Post.objects(id=id).update_one(inc__views=1)
34-
return render_template('posts/detail.html', **context)
35-
36-
def post(self, id):
37-
if not current_user.is_authenticated():
38-
abort(403)
39-
40-
context = self.get_context(id)
41-
form = context.get('form')
42-
43-
if form.validate():
44-
comment = Comment()
45-
form.populate_obj(comment)
46-
comment.author = User.objects.get_or_404(id=current_user.id)
47-
comment.save()
48-
49-
post = context.get('post')
50-
post.comments.append(comment)
51-
post.save()
52-
53-
return redirect(url_for('post.detail', id=id))
54-
return render_template('posts/detail.html', **context)
21+
return render_template('posts/detail.html', post=post)
5522

5623
bp.add_url_rule('/<int:id>/', view_func=DetailView.as_view('detail'))

tests/test_post.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def setup(self):
2222
def test_create(self):
2323

2424
category = Category.objects.first()
25-
url = url_for('home.create')
25+
url = url_for('home.create_topic')
2626
form = {
2727
'title': '标题',
2828
'content': '内容喜喜喜喜喜喜',
@@ -43,10 +43,10 @@ def test_detail(self):
4343

4444
def test_comment(self):
4545
post = Post.objects.first()
46-
url = url_for('post.detail', id=post.id)
46+
url = url_for('home.create_comment')
4747
form = {
4848
'content': '评论测试',
49-
'ref_id': 0,
49+
'ref_id': post.id,
5050
}
5151
self.client.post(url, data=form, follow_redirects=False)
5252
post.reload()

0 commit comments

Comments
 (0)