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)