def process(self): self.processing_started_at = datetime.datetime.utcnow() self.save() voters = list(self.itervoters()) self.num_voters = len(voters) random.shuffle(voters) for voter in voters: if voter['voter_type'] == 'password': # does voter for this user already exist existing_voter = Voter.get_by_election_and_voter_id(self.election, voter['voter_id']) if existing_voter: continue # create the voter voter_uuid = str(uuid.uuid4()) new_voter = Voter(uuid=voter_uuid, user = None, voter_login_id = voter['voter_id'], voter_name = voter['name'], voter_email = voter['email'], election = self.election) new_voter.generate_password() election=self.election if election.use_voter_aliases: utils.lock_row(Election, election.id) alias_num = election.last_alias_num + 1 new_voter.alias = "V%s" % alias_num new_voter.save() else: user, _ = User.objects.get_or_create(user_type=voter['voter_type'], user_id=voter['voter_id'], defaults = {'name': voter['voter_id'], 'info': {}, 'token': None}) existing_voter = Voter.get_by_election_and_user(self.election, user) if not existing_voter: Voter.register_user_in_election(user, self.election) self.processing_finished_at = datetime.datetime.utcnow() self.save() return self.num_voters
def register_user_in_election(cls, user, election): voter_uuid = str(uuid.uuid4()) voter = Voter(uuid= voter_uuid, user = user, election = election) # do we need to generate an alias? if election.use_voter_aliases: heliosutils.lock_row(Election, election.id) alias_num = election.last_alias_num + 1 voter.alias = "V%s" % alias_num voter.save() return voter
def register_user_in_election(cls, user, election): voter_uuid = str(uuid.uuid4()) voter = Voter(uuid=voter_uuid, user=user, election=election) # do we need to generate an alias? if election.use_voter_aliases: heliosutils.lock_row(Election, election.id) alias_num = election.last_alias_num + 1 voter.alias = "V%s" % alias_num voter.save() # TODO: fix with proper data qr_code_content = "content" qr_code_base64 = heliosutils.create_qr_code_in_base64(qr_code_content) QrCode.objects.create( voter=voter, image_base64=qr_code_base64 ) return voter