Exemplo n.º 1
0
 def setUp(self) -> None:
     num_routes = 7
     routes = ['r{}'.format(i) for i in range(1, num_routes + 1)]
     self.test_election = ElectionResult(
         routes, [
             Voter('Ike', ['r1', 'r6', 'r2', 'r3', 'r5', 'r4', 'r7']),
             Voter('Jochem', ['r3', 'r4', 'r6', 'r1', 'r2', 'r7', 'r5']),
             Voter('Jesse', ['r2', 'r1', 'r5', 'r3', 'r4', 'r7', 'r6']),
             Voter('Piotr', ['r3', 'r5', 'r2', 'r4', 'r7', 'r1', 'r6']),
             Voter('Melina', ['r4', 'r1', 'r5', 'r6', 'r3', 'r2', 'r7']),
         ]
     )
Exemplo n.º 2
0
 def __init__(self, user, postingKey):
     self.steem = Steem(keys=[postingKey], nodes=steemd_nodes)
     self.user = user
     self.voter = Voter(self.steem, user)
     self.last_update_duration = 0
     super().__init__(None)
     self.daemon = True
Exemplo n.º 3
0
def election_result_from_file(filename: str):
    with open(filename, newline='') as csvFile:
        data_list = list(csv.DictReader(csvFile))

    # simplify the route names
    old_keys = list(data_list[0].keys())
    new_keys = old_keys.copy()
    for i, key in enumerate(new_keys):
        new_keys[i] = key.replace('Which route would you prefer? Pick an order in which you prefer routes. '
                                        'MAKE SURE THAT YOU RANK ALL ROUTES AT DIFFERENT PRIORITIES. ', '')

    routes = new_keys[2:]
    # update all keys (=questions) for the enquete answers
    for row in data_list:
        for i in range(len(new_keys)):
            row[new_keys[i]] = row.pop(old_keys[i])
    voters = []
    
    for row in data_list:
        name = row['What is your name?']
        ranking = ['']*12
        for route in row:
            if route == 'Tijdstempel' or route == 'What is your name?' : 
                continue
            route_index = int(row[route][:-7]) - 1
            ranking[route_index] = route
        if has_empty_element(ranking): 
            raise Exception("Input is wrong or interpretation is wrong. Ranking of voter {} has empty element."
                            .format(name))
        voter = Voter(name, ranking)
        voters.append(voter)
    return ElectionResult(routes, voters)
Exemplo n.º 4
0
 def generate_voter_instances(self, submissions):
     all_voters = []
     for submission in submissions:
         voter_data = self.client.get_submission_details(submission)
         voter = Voter(voter_data['first_name'], voter_data['last_name'], voter_data['views'], voter_data['submission_id'])
         all_voters.append(voter)
     return all_voters
Exemplo n.º 5
0
def register(min_age = 18,city= 'New Brunswick',state= 'NJ') -> None:
    print('---------Voter Registration---------\n')
    
    first_name = input("Enter First Name: ").upper()
    last_name = input("Enter Last Name: ").upper()
    dob = get_dob()
    age = (datetime.date.today() - dob).days/365
    print(age)
    if age < min_age:
        print("Too Young to Register")
        return 

    address = get_address()
    #FOR now voter id will just be a numbering system
    with open('voterid.txt','r') as file:
        voter_id = int(file.readline())
    voter_id += 1
    with open('voterid.txt','w') as file:
        file.write(str(voter_id))
        
    registered_voter = Voter(voter_id,first_name,last_name,dob,address)

    with open('voters.csv','a') as file:
        writer = csv.writer(file, delimiter = ',')
        writer.writerow([str(voter_id),repr(registered_voter)])
Exemplo n.º 6
0
def create_voters_from_input_data():
    rows = load_csv(URL_INPUT_CSV)
    if rows is None:
        return
    for row in rows:
        input_voter_list.append(
            Voter(row['row'], row['name'], row['birth_year'], row['address'],
                  row['city'], row['state'], row['zip']))
    return input_voter_list
Exemplo n.º 7
0
 def _convert_dataset_into_id2voter(cls, dataset,
                                    possible_indecision_levels):
     """ Convert a Dataset object into a id2voter """
     voter_id_count = 0
     id2voter = dict()
     for strict, count in zip(dataset.preferences, dataset.counts):
         for _ in range(count):
             partial = PartialOrder.generate_from_strict(
                 strict, np.random.choice(possible_indecision_levels))
             voter = Voter(partial, strict)
             id2voter[voter_id_count] = voter
             voter_id_count += 1
     return id2voter
Exemplo n.º 8
0
def submit_vote():
    message = 'Success!'
    try:
        t = ClientTallier(random.choice(tallier_endpoints))
        voter = Voter(session['username'], r, t, e)
        success = voter.vote(request.form['evote'], json.loads(request.form['proof']))
        if not success:
            message = "Something went wrong, please try again"

    except Exception:
        message = 'Something went wrong, please try again'

    return message
Exemplo n.º 9
0
def voter_register():
    username = request.form['username']
    password = request.form['password']

    voter = Voter.getVoter({'username': username})

    if voter is None:
        voter = Voter(username=username, password=password)
        voter.addVoter()
        session['voter'] = username
        return redirect(url_for('home'))
    else:
        return redirect(url_for('login'))
Exemplo n.º 10
0
def voter_register():
    username = request.form['username']
    password = request.form['password']

    voter = Voter.getVoter({'username':username})

    if voter is None:
        voter = Voter(username = username, password = password)
        voter.addVoter()
        session['voter'] = username
        flash('Registration successful. Update profile', 'info')
        return redirect(url_for('home'))
    else:
        flash('You need to Login first!', 'warning')
        return redirect(url_for('login'))
Exemplo n.º 11
0
    def populate_from_spreadsheet(self, input_file_name):
        """
        Grab voter data from the given spreadsheet
        (prepared by create_spreadsheet_from_voter_dictionary in create-voter-spreadsheet.py)
        and populate the Contest with the relevant Voters and Entries.
        """

        if self.verbose:
            print(f"Populating contest with voter data from {input_file_name}...",
                end="", flush=True)

        with open(input_file_name, "r", newline="") as spreadsheet:
            reader = csv.reader(spreadsheet, delimiter=",")

            header = next(reader)
            entry_names = header[1:]
            # If there n Entries, each voter can assign at most n distinct rankings.
            # (Really the number of Entries may be more than the number of distinct rankings.
            # For example, a poll could ask users to vote for the top 3 Entries out of 10.
            # It's fine to overestimate the number of distinct rankings though. It'll just lead to
            # some wasted space in each Voter, which doesn't really matter.)
            num_distinct_rankings = len(entry_names)

            # construct Entries
            for entry_name in entry_names:
                # self.entries[i] contains the entry from column i+1
                # (not column i because the leftmost column contains user info, not entry info)
                self.entries.append(Entry(entry_name))

            # construct Voters and record their votes
            for row in reader:
                voter_name = row[0]
                # voter_rankings[i] contains the voter's ranking for entry self.entries[i]
                voter_rankings = row[1:]

                voter = Voter(voter_name, num_distinct_rankings)

                for i, ranking in enumerate(voter_rankings):
                    if ranking:
                        # the ranks are stored in user_rankings as a list of strings, so cast them
                        # to ints for use as indexes
                        voter.rank(self.entries[i], int(ranking))

                self.voters.append(voter)

        if self.verbose:
            print(" done.")
Exemplo n.º 12
0
 def create_voter(self):
     print 'Alright, let\'s create a voter'
     first_name = raw_input('What is the voter\'s first name?').lower().capitalize()
     last_name = raw_input('Ok, what is the voter\'s last name?').lower().capitalize()
     print 'For this survey, please select one of the following views:'
     for view in self.VALID_VIEWS:
         print view
     views = raw_input().lower().capitalize()
     voter = Voter(first_name, last_name, views)
     response = self.submit_vote(first_name, last_name, views)
     if response == 200:
         print 'Submitting your survey. Please wait...'
         self.submissions_list = self.client.get_submissions_list()
         self.voters = self.generate_voter_instances(self.submissions_list)
         print 'Survey was submitted successfully'
     else:
         print 'There was an error submitting your survey, please try again later.'
     return
Exemplo n.º 13
0
def submit_vote():
    message = 'Success!'
    try:
        e, tallier_endpoints = r.get_election(int(request.form['eid']))
        if not e:
            message = 'Invalid Election ID'
            return render_template('voting_interface.html',
                                   submit_vote_msg=message)

        t = ClientTallier(random.choice(tallier_endpoints))
        voter = Voter(request.form['voter_id'], r, t, e)

        success = voter.vote(request.form['candidate'])
        if not success:
            message = 'Vote not cast: your vote was either invalid or already cast'
    except Exception:
        message = 'Something went wrong, please try again'

    return render_template('voting_interface.html', submit_vote_msg=message)
Exemplo n.º 14
0
 def fake_voter(self):
     fake = Faker('es_MX')
     select = (
         "SELECT electoral_key FROM user ORDER BY electoral_key DESC LIMIT 70"
     )
     self.cursor.execute(select)
     result = self.cursor.fetchall()
     for row in result:
         create_voter = Voter(self.connection, self.cursor)
         electoral_key = row[0]
         name = fake.first_name()
         middle_name = fake.first_name()
         flastname = fake.last_name()
         mlastname = fake.last_name()
         address = fake.simple_profile(sex=None)['address']
         birth_date = fake.simple_profile(sex=None)['birthdate']
         create_voter.create(electoral_key, name, middle_name, flastname,
                             mlastname, address, birth_date)
     return ("OK")
Exemplo n.º 15
0
 def create_voters(self):
     self.voters = []
     for i in range(self.voter_count):
         self.voters.append(Voter(self))
Exemplo n.º 16
0
    r_endpoint = entity_locations.get_registrar_endpoint()
    r = ClientRegistrar(r_endpoint)
    eid = r.register_election(voter_ids, candidates)
    print("Got Election ID", eid)
    if eid == False:
        print("Could not get an election")
        sys.exit(0)

    e, tallier_endpoints = r.get_election(eid)

    print("Connected to Talliers:")
    for endpoint in tallier_endpoints:
        print(endpoint.hostname, str(endpoint.port))

    voters = [
        Voter(voter_ids[i], r,
              ClientTallier(tallier_endpoints[i % len(tallier_endpoints)]), e)
        for i in range(NUM_VOTERS)
    ]
    expected_vote_totals = {candidates[i]: 0 for i in range(NUM_CANDIDATES)}

    current_votes = 0
    for voter in voters:
        candidate = candidates[random.randint(0, NUM_CANDIDATES - 1)]
        expected_vote_totals[candidate] += 1

        voter.vote(candidate)
        if current_votes % FREQUENCY == 0:
            print("Completed Processing Vote:", current_votes)
        current_votes += 1

    r.end_election(eid)
Exemplo n.º 17
0
def get_random_voter_on(routes):
    random_name = ''.join(choices(string.ascii_uppercase + string.digits, k=7))
    return Voter(random_name, sample(routes, k=5))
Exemplo n.º 18
0
 def generate_voters(self, n):
     for i in range(n):
         self.voters.append(Voter(self))
     self.log.write("Created {} voters".format(n, "d"))
Exemplo n.º 19
0
    # progress bar
    with tqdm(total=args.experiments**2, leave=False) as pbar:
        for _ in range(args.experiments):
            id2voter = {}

            random.shuffle(all_types)
            type_list = all_types[:type_num]

            for i in range(type_num):
                t = type_list[i]
                for j in range(i * args.clique_size, (i + 1) * args.clique_size):
                    strict = generator.generate(list(t))
                    # strict = list(t)
                    partial = PartialOrder.generate_from_strict(strict, random.choice(possible_indecision_levels))
                    voter = Voter(partial, strict)
                    id2voter[j] = voter

            SN = SocialNetwork(strategy='from_voter_graph', id2voter=id2voter, graph=graph)

            true_preferences, true_counts = get_counts(id2voter)

            for _ in range(args.experiments):
                for paradigm in paradigms:

                    # get the preferences
                    SN_preferences, SN_counts = SN.get_preferences(paradigm)

                    # and get the winner for every rule
                    for rule in VotingRules.rules:
                        # this corresponds to random tie breaking
Exemplo n.º 20
0
 def __init__(self, Voter_id):
     self.key = hashlib.sha256(Voter_id.encode('utf-8')).hexdigest()
     self.voter = Voter(self.key)
Exemplo n.º 21
0
 def _generate_voters(self):
     for i in range(NUM_OF_VOTER):
         short_private_key = UmbralPrivateKey.gen_key()
         short_public_key = short_private_key.get_pubkey()
         voter = Voter(short_public_key, short_private_key)
         self.voters.append(voter)
Exemplo n.º 22
0
 def test_decide_vote_should_return_null(self):
     voter = Voter('first_name', 'last_name', 'Liberal', '12345')
     voter.decide_vote(mocked_democrat_for_null, 0.99)
     self.failUnless(voter.vote == 'null')
Exemplo n.º 23
0
 def test_decide_vote_should_return_democrat(self):
     voter = Voter('first_name', 'last_name', 'Liberal', '12345')
     voter.decide_vote(mocked_democrat, 0.70)
     self.failUnless(voter.vote == 'Democrat')
Exemplo n.º 24
0
 def test_decide_vote_should_return_republican(self):
     voter = Voter('first_name', 'last_name', 'Liberal', '12345')
     voter.decide_vote(mocked_republican, 0.20)
     self.failUnless(voter.vote == 'Republican')
Exemplo n.º 25
0
 def __init__(self, user, postingKey):
   self.client = Hive(keys=[postingKey],nodes=config.nodes)
   self.user = user
   self.voter = Voter(self.client, config.nodes, user)
   self.last_update_duration = 0
Exemplo n.º 26
0
from results import Results
from voter import Voter

import json

# with open('results.json', 'r') as f:
#     date = json.load(f)
#     for p in date:
#         my_result = Results(p['Center Name'], p['Center Number'], p['Valid Votes'], None)
#         my_result.save_to_db()
#

# my_result = Voter('1', '2', '3', '4', '2018-09-15 ', '6', '7', '8', '9', '10', 1212, '12', 212, 21, None)
# my_result.save_to_db()

my_result = Voter('1', '2', '3', None)
my_result.save_to_db()