Example #1
0
class VotingSystem(object):
    __metaclass__ = ABCMeta

    @abstractmethod
    def __init__(self, ballots, tie_breaker=None):
        self.ballots = ballots
        for ballot in self.ballots:
            if "count" not in ballot:
                ballot["count"] = 1
        self.tie_breaker = tie_breaker
        if type(self.tie_breaker) == types.ListType:
            self.tie_breaker = TieBreaker(self.tie_breaker)
        self.calculate_results()

    @abstractmethod
    def as_dict(self):
        data = dict()
        data["candidates"] = self.candidates
        if self.tie_breaker and self.tie_breaker.ties_broken:
            data["tie_breaker"] = self.tie_breaker.as_list()
        return data

    def break_ties(self, tied_objects, reverse_order=False):
        if self.tie_breaker == None:
            self.tie_breaker = TieBreaker(self.candidates)
        return self.tie_breaker.break_ties(tied_objects, reverse_order)
Example #2
0
 def __init__(self, ballots, tie_breaker=None):
     self.ballots = ballots
     for ballot in self.ballots:
         if "count" not in ballot:
             ballot["count"] = 1
     self.tie_breaker = tie_breaker
     if type(self.tie_breaker) == types.ListType:
         self.tie_breaker = TieBreaker(self.tie_breaker)
     self.calculate_results()
Example #3
0
 def __init__(self, ballots, tie_breaker=None):
     self.preferences = []
     self.ballots = ballots
     for ballot in self.ballots:
         if "count" not in ballot:
             ballot["count"] = 1
     self.tie_breaker = tie_breaker
     if isinstance(self.tie_breaker, types.ListType):
         self.tie_breaker = TieBreaker(self.tie_breaker)
     self.calculate_results()
Example #4
0
 def break_ties(self, tied_objects, reverse_order=False):
     if self.tie_breaker == None:
         self.tie_breaker = TieBreaker(self.candidates)
     return self.tie_breaker.break_ties(tied_objects, reverse_order)