From 11a8e061d7b96df22c4793cbbd79cb8dba686513 Mon Sep 17 00:00:00 2001
From: makefu <root@pigstarter.de>
Date: Fri, 25 Apr 2014 16:57:32 +0200
Subject: fix ranking in highest

watch out for same ranking of things
---
 Reaktor/titlebot/commands/highest | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

(limited to 'Reaktor')

diff --git a/Reaktor/titlebot/commands/highest b/Reaktor/titlebot/commands/highest
index 5ac9ba99..d0408ac0 100755
--- a/Reaktor/titlebot/commands/highest
+++ b/Reaktor/titlebot/commands/highest
@@ -8,15 +8,23 @@ import poll
 f = 'suggestions.json'
 title=" ".join(sys.argv[1:])
 db = poll.load_db(f)
+# only print the last N values (default 1)
 limit = int(sys.argv[1]) if len(sys.argv) > 1 else 1
-num = 1 
+num =  0
+last_vote = 9001
 # stolen from http://stackoverflow.com/questions/9647202/ordinal-numbers-replacement
 suffixes = ["th", "st", "nd", "rd", ] + ["th"] * 16
 
 for entry in poll.sort_by_votes(db):
+    # if two entries have the same number of upvotes, do not increment the rank
+    current_vote = sum(entry['votes'].values())
+    if current_vote < last_vote:
+        num = num + 1
+    last_vote = current_vote
+    # exit if we are above the limit
+    if num > limit:
+        sys.exit(0)
+    
     suffixed_num = str(num) + suffixes[num % 100]
     print("%s: '%s' (%d votes)" %
             (suffixed_num,entry['title'],sum(entry['votes'].values())))
-    num = num + 1
-    if num > limit:
-        sys.exit(0)
-- 
cgit v1.2.3