def process(self): self.processing_started_at = datetime.datetime.utcnow() self.save() election = self.election last_alias_num = election.last_alias_num num_voters = 0 new_voters = [] for voter in self.itervoters(): # does voter for this user already exist existing_voter = Voter.get_by_election_and_voter_id(election, voter['voter_id']) # create the voter if not existing_voter: num_voters += 1 user = None if 'user_type' in voter.keys(): if 'email' in voter.keys(): user = User.update_or_create(voter['user_type'], voter['voter_id'], voter['name'], {'email': voter['email']}) else: user = User.update_or_create(voter['user_type'], voter['voter_id'], voter['name'], {}) voter_uuid = str(uuid.uuid4()) if 'email' in voter.keys(): new_voter = Voter(uuid=voter_uuid, user=user, voter_name=voter['name'], voter_email=voter['email'], election=election) else: new_voter = Voter(uuid=voter_uuid, user=user, voter_name=voter['name'], election=election) new_voter.voter_login_id = voter['voter_id'] if not user: new_voter.generate_password() new_voters.append(new_voter) new_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, new_voter in enumerate(new_voters): new_voter.alias = 'V%s' % voter_alias_integers[i] new_voter.save() self.num_voters = num_voters self.processing_finished_at = datetime.datetime.utcnow() self.save() return num_voters
def login_view(request): # imports are here because putting them in the header prevents # initialization of the database from helios_auth.view_utils import render_template from helios_auth.views import after from helios_auth.models import User if request.method == "GET": form = LoginForm() else: form = LoginForm(request.POST) request.session['auth_system_name'] = 'dummy' if request.POST.has_key('return_url'): request.session['auth_return_url'] = request.POST.get('return_url') if form.is_valid(): name = form.cleaned_data['username'].strip() admin_p = form.cleaned_data['admin_p'] user_obj = User.update_or_create(user_type='dummy', user_id=name, name=name, info={}) if user_obj.admin_p != admin_p: user_obj.admin_p = admin_p user_obj.save() request.session['dummy_user'] = name return HttpResponseRedirect(reverse(after)) return render_template(request, 'dummy/login', {'form': form})
def load_eligible_voters(self): """ try to load voters by eligibility constraints """ if self.eligibility == None: return if self.openreg == False: return total_load = True for eligibility_case in self.eligibility: print eligibility_case auth_system = eligibility_case['auth_system'] if not eligibility_case.has_key('constraint'): total_load = False else: if hasattr(AUTH_SYSTEMS[auth_system], 'can_list_category_members'): for constraint in eligibility_case['constraint']: category_id = AUTH_SYSTEMS[auth_system].eligibility_category_id(constraint) for u in AUTH_SYSTEMS[auth_system].list_category_members(category_id): user = User.update_or_create(user_type = u['type'], user_id = u['id'], name = u['name'], info = u['info'], token = u['token']) Voter.register_user_in_election(user, self) else: total_load = False if total_load: self.openreg = False
def create_user(username, password, name = None): from helios_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 create_user(username, password, name=None): from helios_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 create_user(username, password, name = None): from helios_auth.models import User from django.db import models try: user = User.get_by_type_and_id('password', username) raise Exception('user exists') except User.DoesNotExist: pass info = {'password' : password, 'name': name} user = User.update_or_create(user_type='password', user_id=username, info = info) user.save()
def create_user(username, password, name=None): from helios_auth.models import User from django.db import models try: user = User.get_by_type_and_id('password', username) raise Exception('user exists') except User.DoesNotExist: pass info = {'password': password, 'name': name} user = User.update_or_create(user_type='password', user_id=username, info=info) user.save()
def load_eligible_voters(self): """ try to load voters by eligibility constraints """ if self.eligibility == None: return if self.openreg == False: return total_load = True for eligibility_case in self.eligibility: print eligibility_case auth_system = eligibility_case['auth_system'] if not eligibility_case.has_key('constraint'): total_load = False else: if hasattr(AUTH_SYSTEMS[auth_system], 'can_list_category_members'): for constraint in eligibility_case['constraint']: category_id = AUTH_SYSTEMS[ auth_system].eligibility_category_id(constraint) user_list = AUTH_SYSTEMS[ auth_system].list_category_members(category_id) if self.use_voter_aliases: random.shuffle(user_list) for u in user_list: user = User.update_or_create(user_type=u['type'], user_id=u['id'], name=u['name'], info=u['info'], token=u['token']) Voter.register_user_in_election(user, self) else: total_load = False if total_load: self.openreg = False
def after(request): # which auth system were we using? if not request.session.has_key('auth_system_name'): do_local_logout(request) return HttpResponseRedirect("/") system = AUTH_SYSTEMS[request.session['auth_system_name']] # get the user info user = system.get_user_info_after_auth(request) if user: # get the user and store any new data about him user_obj = User.update_or_create(user['type'], user['user_id'], user['name'], user['info'], user['token']) request.session['user'] = user else: return HttpResponseRedirect( "%s?%s" % (reverse(perms_why), urllib.parse.urlencode( {'system_name': request.session['auth_system_name']}))) # does the auth system want to present an additional view? # this is, for example, to prompt the user to follow @heliosvoting # so they can hear about election results if hasattr(system, 'user_needs_intervention'): intervention_response = system.user_needs_intervention( user['user_id'], user['info'], user['token']) if intervention_response: return intervention_response # go to the after intervention page. This is for modularity return HttpResponseRedirect(reverse(after_intervention))