Home > Representation > Elections > Archive > Main 2011 > Technical Information

Voting Technical Information

Information about how the election is run can be found within this page.

Electronic Voting

All electronic voting is handled by a company under contract called Nudge Digital (fka Bristol Developers), who provide a voting service for KUSU.

Permenant staff within KUSU download all current students off the student records system prior to voting and anonmyise the data. The anonomisation step is required due to the Unviersity data protection policy dictates that no student data may be handed to an outside firm.

A student has a random number generated as their voter ID, KUSU passes these voter ID's to the voting provider who generates a random token for each of these Voter ID's.

KUSU then emails each student directly with their voter ID and token, at no time do KUSU have any ability to modify any votes on the system. KUSU are also unable to inspect the state of voting until an election is closed.

Results

After an election is finished, results are downloaded from the voting provider in the presence of two members of KUSU permenant staff and at least two members of the student staff (including returning officer).

Results are provided in OpenSTV format, the candidate ID that relates to RON is replaced with the word RON for the algorithm purposes.

Counting

Due to KUSU Bye-Law H16. "The candidate with the lowest number of votes, excluding Re-Open Nominations in
relevant elections, shall be removed from the candidate list. " the ERS97 STV algorithm must be modified to not exclude RON at any stage.

For full transparency, we have provided the ammended algorithm used with OpenSTV.

KUSUAV.py

"Plugin module for KUSUAV"

## Copyright (C) 2011 Peter Brooks, Andrew Hartley
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2 of the License, or
## (at your option) any later version.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
## GNU General Public License for more details.

__revision__ = "$Id: KUSUAV.py 1 2011-03-02 17:00:55Z Peter Brooks,Andrew Hartley $"

from openstv.MethodPlugins.ERS97STV import ERS97STV
from openstv.plugins import MethodPlugin

##################################################################

class KUSUAV(ERS97STV, MethodPlugin):
  "KUSUAV"

  methodName = "KUSUAV"
  longMethodName = "KUSUAV"
  status = 1

  def __init__(self, b): 
    ERS97STV.__init__(self,b)
    

  def getSureLosers(self, R=None):
    losers = ERS97STV.getSureLosers(self, R=None)
    try:
		ronIndex = self.b.names.index('RON')
    except ValueError:
		return losers
    if ronIndex in losers:
		losers.remove(ronIndex)
    return losers

  def breakWeakTie(self, R, candidateList, mostfewest, what=""):
    try:
		ronIndex = self.b.names.index('RON')
    except ValueError:
		return ERS97STV.breakWeakTie(self, R, candidateList, mostfewest, what)

    if ronIndex in candidateList:
		candidateList.remove(ronIndex)
    return ERS97STV.breakWeakTie(self, R, candidateList, mostfewest, what)