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)
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()
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()
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)