def process(self): self.processing_started_at = datetime.datetime.utcnow() self.save() election = self.election reader = unicode_csv_reader(open(self.voter_file.path, "rU")) last_alias_num = election.last_alias_num num_voters = 0 voter_uuids = [] for voter in reader: # bad line if len(voter) < 1: continue num_voters += 1 voter_id = voter[0] name = voter_id email = voter_id if len(voter) > 1: email = voter[1] if len(voter) > 2: name = voter[2] # create the user user = User.update_or_create( user_type="password", user_id=voter_id, info={"password": heliosutils.random_string(10), "email": email, "name": name}, ) user.save() # does voter for this user already exist voter = Voter.get_by_election_and_user(election, user) # create the voter if not voter: voter_uuid = str(uuid.uuid4()) voter = Voter(uuid=voter_uuid, voter_type="password", voter_id=voter_id, name=name, election=election) voter_uuids.append(voter_uuid) voter.save() if election.use_voter_aliases: voter_alias_integers = range(last_alias_num + 1, last_alias_num + 1 + num_voters) random.shuffle(voter_alias_integers) for i, voter_uuid in enumerate(voter_uuids): voter = Voter.get_by_election_and_uuid(election, voter_uuid) voter.alias = "V%s" % voter_alias_integers[i] voter.save() self.num_voters = num_voters self.processing_finished_at = datetime.datetime.utcnow() self.save() return num_voters
def create_user(username, password, name = None): from auth.models import User user = User.get_by_type_and_id('password', username) if user: raise Exception('user exists') info = {'password' : password, 'name': name} user = User.update_or_create(user_type='password', user_id=username, info = info) user.save()
def process(self): self.processing_started_at = datetime.datetime.utcnow() self.save() election = self.election reader = unicode_csv_reader(self.voter_file) num_voters_before = election.num_voters num_voters = 0 voter_uuids = [] for voter in reader: # bad line if len(voter) < 1: continue num_voters += 1 voter_id = voter[0] name = voter_id email = voter_id if len(voter) > 1: email = voter[1] if len(voter) > 2: name = voter[2] # create the user user = User.update_or_create(user_type='password', user_id=voter_id, info = {'password': heliosutils.random_string(10), 'email': email, 'name': name}) user.save() # does voter for this user already exist voter = Voter.get_by_election_and_user(election, user) # create the voter if not voter: voter_uuid = str(uuid.uuid1()) voter = Voter(uuid= voter_uuid, voter_type = 'password', voter_id = voter_id, name = name, election = election) voter_uuids.append(voter_uuid) voter.save() if election.use_voter_aliases: voter_alias_integers = range(num_voters_before+1, num_voters_before+1+num_voters) random.shuffle(voter_alias_integers) for i, voter_uuid in enumerate(voter_uuids): voter = Voter.get_by_election_and_uuid(election, voter_uuid) voter.alias = 'V%s' % voter_alias_integers[i] voter.save() self.num_voters = num_voters self.processing_finished_at = datetime.datetime.utcnow() self.save() return num_voters