Merge branch 'fix/reference-deleted-comment'

This commit is contained in:
Martin Zimmermann 2014-05-27 16:10:50 +02:00
commit f2aedff1a3
4 changed files with 20 additions and 13 deletions

View File

@ -197,16 +197,19 @@ class Comments:
return {'likes': likes + 1, 'dislikes': dislikes}
return {'likes': likes, 'dislikes': dislikes + 1}
def reply_count(self, url, after=0):
def reply_count(self, url, mode=5, after=0):
"""
Return comment count for main thread and all reply threads for one url.
"""
sql = [ 'SELECT comments.parent,count(*) FROM comments INNER JOIN threads ON',
' threads.uri=? AND comments.tid=threads.id',
' AND comments.mode = 1 AND comments.created>? GROUP BY comments.parent;']
sql = ['SELECT comments.parent,count(*)',
'FROM comments INNER JOIN threads ON',
' threads.uri=? AND comments.tid=threads.id AND',
' (? | comments.mode = ?) AND',
' comments.created > ?',
'GROUP BY comments.parent']
return dict(self.db.execute(sql, [url, after]).fetchall())
return dict(self.db.execute(sql, [url, mode, mode, after]).fetchall())
def count(self, *urls):
"""

View File

@ -41,15 +41,16 @@ require(["app/lib/ready", "app/config", "app/i18n", "app/api", "app/isso", "app/
}
var lastcreated = 0;
var total_count = rv.total_replies;
rv.replies.forEach(function(commentObject) {
isso.insert(commentObject, false);
if(commentObject.created > lastcreated) {
lastcreated = commentObject.created;
var count = rv.total_replies;
console.log(rv.replies);
rv.replies.forEach(function(comment) {
isso.insert(comment, false);
if(comment.created > lastcreated) {
lastcreated = comment.created;
}
total_count = total_count + commentObject.total_replies;
count = count + comment.total_replies;
});
$("#isso-thread > h4").textContent = i18n.pluralize("num-comments", total_count);
$("#isso-thread > h4").textContent = i18n.pluralize("num-comments", count);
if(rv.hidden_replies > 0) {
isso.insert_loader(rv, lastcreated);

View File

@ -223,6 +223,9 @@ class TestComments(unittest.TestCase):
self.assertEqual(loads(r.data)['mode'], 4)
self.assertIn('/path/', self.app.db.threads)
data = loads(client.get("/?uri=%2Fpath%2F").data)
self.assertEqual(data["total_replies"], 1)
self.assertEqual(self.get('/?uri=%2Fpath%2F&id=1').status_code, 200)
self.assertEqual(self.get('/?uri=%2Fpath%2F&id=2').status_code, 200)

View File

@ -374,7 +374,7 @@ class API(object):
plain = request.args.get('plain', '0') == '0'
reply_counts = self.comments.reply_count(uri, args['after'])
reply_counts = self.comments.reply_count(uri, after=args['after'])
if args['limit'] == 0:
root_list = []