From a548fbf45b2e8cb992842edbd9c0385780674f24 Mon Sep 17 00:00:00 2001 From: Lucas Cimon Date: Fri, 17 Apr 2020 19:06:46 +0200 Subject: [PATCH] Add warnings on Comments.vote failures (#635) --- isso/db/comments.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/isso/db/comments.py b/isso/db/comments.py index ac39e3f..9eb91f5 100644 --- a/isso/db/comments.py +++ b/isso/db/comments.py @@ -1,11 +1,18 @@ # -*- encoding: utf-8 -*- +import logging import time from isso.utils import Bloomfilter from isso.compat import buffer +logger = logging.getLogger("isso") + + +MAX_LIKES_AND_DISLIKES = 142 + + class Comments: """Hopefully DB-independend SQL to store, modify and retrieve all comment-related actions. Here's a short scheme overview: @@ -280,13 +287,18 @@ class Comments: if rv is None: return None + operation_name = 'Upvote' if upvote else 'Downvote' likes, dislikes, voters = rv - if likes + dislikes >= 142: - return {'likes': likes, 'dislikes': dislikes} + if likes + dislikes >= MAX_LIKES_AND_DISLIKES: + message = '{} denied due to a "likes + dislikes" total too high ({} >= {})'.format(operation_name, likes + dislikes, MAX_LIKES_AND_DISLIKES) + logger.debug('Comments.vote(id=%s): %s', id, message) + return {'likes': likes, 'dislikes': dislikes, 'message': message} bf = Bloomfilter(bytearray(voters), likes + dislikes) if remote_addr in bf: - return {'likes': likes, 'dislikes': dislikes} + message = '{} denied because a vote has already been registered for this remote address: {}'.format(operation_name, remote_addr) + logger.debug('Comments.vote(id=%s): %s', id, message) + return {'likes': likes, 'dislikes': dislikes, 'message': message} bf.add(remote_addr) self.db.execute([