You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@steve.apache.org by hu...@apache.org on 2015/03/23 10:26:29 UTC

svn commit: r1668570 - in /steve/trunk/pysteve/www/cgi-bin: lib/election.py rest_admin.py

Author: humbedooh
Date: Mon Mar 23 09:26:28 2015
New Revision: 1668570

URL: http://svn.apache.org/r1668570
Log:
add a shuffle feature (do we want that by default or not?)

Modified:
    steve/trunk/pysteve/www/cgi-bin/lib/election.py
    steve/trunk/pysteve/www/cgi-bin/rest_admin.py

Modified: steve/trunk/pysteve/www/cgi-bin/lib/election.py
URL: http://svn.apache.org/viewvc/steve/trunk/pysteve/www/cgi-bin/lib/election.py?rev=1668570&r1=1668569&r2=1668570&view=diff
==============================================================================
--- steve/trunk/pysteve/www/cgi-bin/lib/election.py (original)
+++ steve/trunk/pysteve/www/cgi-bin/lib/election.py Mon Mar 23 09:26:28 2015
@@ -17,6 +17,7 @@
 import hashlib
 import json
 import os
+import random
 
 from __main__ import homedir, config
 
@@ -175,7 +176,7 @@ def getproportion(votes, winners, step,
     return prop
 
 
-def stv(candidates, votes, numseats):
+def stv(candidates, votes, numseats, shuffle = False):
     """ Calculate N winners using STV
     :param candidates:
     :param votes:
@@ -261,6 +262,8 @@ def stv(candidates, votes, numseats):
 
     # Compile list of winner names
     winnernames = []
+    if shuffle:
+        random.shuffle(winners)
     for c in winners:
         i = ord(c) - ord('a')
         winnernames.append(candidates[i]['name'])

Modified: steve/trunk/pysteve/www/cgi-bin/rest_admin.py
URL: http://svn.apache.org/viewvc/steve/trunk/pysteve/www/cgi-bin/rest_admin.py?rev=1668570&r1=1668569&r2=1668570&view=diff
==============================================================================
--- steve/trunk/pysteve/www/cgi-bin/rest_admin.py (original)
+++ steve/trunk/pysteve/www/cgi-bin/rest_admin.py Mon Mar 23 09:26:28 2015
@@ -499,7 +499,7 @@ else:
                     if issuedata and votes:
                         if issuedata['type'].startswith("stv"):
                             numseats = int(issuedata['type'][3])
-                            winners, winnernames, debug = election.stv(issuedata['candidates'], votes, numseats)
+                            winners, winnernames, debug = election.stv(issuedata['candidates'], votes, numseats, shuffle = True)
                             response.respond(200, {'votes': len(votes), 'winners': winners, 'winnernames': winnernames, 'debug': debug})
                         elif issuedata['type'] == "yna":
                             yes, no, abstain = election.yna(votes)