def home_m(request): # load the featured elections featured_elections = Election.get_featured() user = get_user(request) create_p = can_create_election(request) officiate_p = True elections_officiated = Election.objects.filter(election_officers=user) if user: elections_voted = Election.get_by_user_as_voter(user, limit=5) else: elections_voted = None auth_systems = copy.copy(settings.AUTH_ENABLED_AUTH_SYSTEMS) login_box = auth_views.login_box_raw( request, return_url=request.GET.get("return_url", "/"), auth_systems=auth_systems ) return render_template( request, "index", { "elections": featured_elections, "elections_administered": elections_officiated, "elections_voted": elections_voted, "create_p": create_p, "officiate_p": officiate_p, "login_box": login_box, }, )
def home(request): # Load the featured elections featured_elections = Election.get_featured() user = get_user(request) create_p = can_create_election(request) if create_p: elections_administered = Election.get_by_user_as_admin(user, archived_p=False, limit=5) else: elections_administered = None if user: elections_voted = Election.get_by_user_as_voter(user, limit=5) else: elections_voted = None auth_systems = copy.copy(settings.AUTH_ENABLED_AUTH_SYSTEMS) try: auth_systems.remove('password') except: pass login_box = auth_views.login_box_raw(request, return_url='/', auth_systems=auth_systems) return render_template(request, 'index', { 'elections': featured_elections, 'elections_administered': elections_administered, 'elections_voted': elections_voted, 'create_p': create_p, 'login_box': login_box } )
def home(request): from helios.models import Election import heliosinstitution user = get_user(request) if user and user.user_type == 'shibboleth': return HttpResponseRedirect(reverse(heliosinstitution.views.home)) # load the featured elections featured_elections = Election.get_featured() create_p = can_create_election(request) if create_p: elections_administered = Election.get_by_user_as_admin(user, archived_p=False, limit=5) else: elections_administered = None if user: elections_voted = Election.get_by_user_as_voter(user, limit=5) else: elections_voted = None auth_systems = copy.copy(settings.AUTH_ENABLED_AUTH_SYSTEMS) try: auth_systems.remove('password') except: pass login_box = auth_views.login_box_raw(request, return_url="/", auth_systems=auth_systems) return render_template(request, "index", {'elections': featured_elections, 'elections_administered' : elections_administered, 'elections_voted' : elections_voted, 'create_p':create_p, 'login_box' : login_box})
def home(request): # load the featured elections featured_elections = Election.get_featured() user = get_user(request) create_p = can_create_election(request) if create_p: elections_administered = Election.get_by_user_as_admin(user, archived_p=False, limit=5) else: elections_administered = None if user: elections_voted = Election.get_by_user_as_voter(user, limit=5) else: elections_voted = None auth_systems = copy.copy(settings.AUTH_ENABLED_AUTH_SYSTEMS) try: auth_systems.remove("password") except: pass login_box = auth_views.login_box_raw(request, return_url="/", auth_systems=auth_systems) return render_template( request, "index", { "elections": featured_elections, "elections_administered": elections_administered, "elections_voted": elections_voted, "create_p": create_p, "login_box": login_box, }, )
def home(request): # load the featured elections featured_elections = Election.get_featured() user = get_user(request) create_p = can_create_election(request) if create_p: elections_administered = Election.get_by_user_as_admin( user, archived_p=False, limit=5) else: elections_administered = None if user: elections_voted = Election.get_by_user_as_voter(user, limit=5) else: elections_voted = None auth_systems = copy.copy(settings.AUTH_ENABLED_AUTH_SYSTEMS) try: auth_systems.remove('password') except: pass login_box = auth_views.login_box_raw(request, return_url="/", auth_systems=auth_systems) return render_template( request, "index", { 'elections': featured_elections, 'elections_administered': elections_administered, 'elections_voted': elections_voted, 'create_p': create_p, 'login_box': login_box })
def one_election_cast_confirm(request, election): user = get_user(request) # if no encrypted vote, the user is reloading this page or otherwise getting here in a bad way if not request.session.has_key('encrypted_vote'): return HttpResponseRedirect(settings.URL_HOST) voter = get_voter(request, user, election) # auto-register this person if the election is openreg if user and not voter and election.openreg: voter = _register_voter(election, user) # tallied election, no vote casting if election.encrypted_tally or election.result: return render_template(request, 'election_tallied', {'election': election}) encrypted_vote = request.session['encrypted_vote'] vote_fingerprint = cryptoutils.hash_b64(encrypted_vote) # if this user is a voter, prepare some stuff if voter: vote = datatypes.LDObject.fromDict(utils.from_json(encrypted_vote), type_hint='legacy/EncryptedVote').wrapped_obj # prepare the vote to cast cast_vote_params = { 'vote' : vote, 'voter' : voter, 'vote_hash': vote_fingerprint, 'cast_at': datetime.datetime.utcnow() } cast_vote = CastVote(**cast_vote_params) else: cast_vote = None if request.method == "GET": if voter: past_votes = CastVote.get_by_voter(voter) if len(past_votes) == 0: past_votes = None else: past_votes = None if cast_vote: # check for issues issues = cast_vote.issues(election) else: issues = None bad_voter_login = (request.GET.get('bad_voter_login', "0") == "1") # status update this vote if voter and voter.user.can_update_status(): status_update_label = voter.user.update_status_template() % "your smart ballot tracker" status_update_message = "I voted in %s - my smart tracker is %s.. #heliosvoting" % (get_election_url(election),cast_vote.vote_hash[:10]) else: status_update_label = None status_update_message = None # do we need to constrain the auth_systems? if election.eligibility: auth_systems = [e['auth_system'] for e in election.eligibility] else: auth_systems = None password_only = False if auth_systems == None or 'password' in auth_systems: show_password = True password_login_form = forms.VoterPasswordForm() if auth_systems == ['password']: password_only = True else: show_password = False password_login_form = None return_url = reverse(one_election_cast_confirm, args=[election.uuid]) login_box = auth_views.login_box_raw(request, return_url=return_url, auth_systems = auth_systems) return render_template(request, 'election_cast_confirm', { 'login_box': login_box, 'election' : election, 'vote_fingerprint': vote_fingerprint, 'past_votes': past_votes, 'issues': issues, 'voter' : voter, 'return_url': return_url, 'status_update_label': status_update_label, 'status_update_message': status_update_message, 'show_password': show_password, 'password_only': password_only, 'password_login_form': password_login_form, 'bad_voter_login': bad_voter_login}) if request.method == "POST": check_csrf(request) # voting has not started or has ended if (not election.voting_has_started()) or election.voting_has_stopped(): return HttpResponseRedirect(settings.URL_HOST) # if user is not logged in # bring back to the confirmation page to let him know if not voter: return HttpResponseRedirect(settings.SECURE_URL_HOST + reverse(one_election_cast_confirm, args=[election.uuid])) # don't store the vote in the voter's data structure until verification cast_vote.save() # status update? if request.POST.get('status_update', False): status_update_message = request.POST.get('status_update_message') else: status_update_message = None # launch the verification task tasks.cast_vote_verify_and_store.delay( cast_vote_id = cast_vote.id, status_update_message = status_update_message) # remove the vote from the store del request.session['encrypted_vote'] return HttpResponseRedirect("%s%s" % (settings.URL_HOST, reverse(one_election_cast_done, args=[election.uuid])))
def home(request): # load the featured elections featured_elections = Election.get_featured() user = get_user(request) create_p = can_create_election(request) if create_p: elections_administered = Election.get_by_user_as_admin( user, archived_p=False, limit=5) else: elections_administered = None if user: elections_voted = Election.get_by_user_as_voter(user, limit=5) else: elections_voted = None auth_systems = copy.copy(settings.AUTH_ENABLED_AUTH_SYSTEMS) try: #auth_systems.remove('password') pass except: pass """ ssl_client_s_dn = request.META['SSL_CLIENT_S_DN'] ssl_client_s_dn = ssl_client_s_dn.replace('\,', 'XXXCOMAXXX') params = dict(u.split("=") for u in ssl_client_s_dn.split(",")) for param in params: params[param] = params[param].replace('XXXCOMAXXX', ',') return DNIe(params['CN'], params['GN'], params['SN'], params['serialNumber'], params['C']) """ import logging logger = logging.getLogger("home") try: for meta in request.META: if (str(meta).find('SSL') > -1): logger.debug(meta + ': ' + request.META[meta]) else: logger.debug(meta + ': --') except Exception: logger.debug("Pues no") try: ssl_client_s_dn = request.META['SSL_CLIENT_S_DN'] logger.debug('1: ' + str(ssl_client_s_dn)) ssl_client_s_dn = ssl_client_s_dn.replace('\,', 'XXXCOMAXXX') logger.debug('2: ' + str(ssl_client_s_dn)) sd = dict(u.split("=") for u in ssl_client_s_dn.split(",")) logger.debug('3: ' + str(sd)) for fff in sd: # logger.debug('4: ' + str(fff)) sd[fff] = sd[fff].replace('XXXCOMAXXX', ',') # logger.debug('5: ' + str(sd[fff]) dni = sd['serialNumber'] # logger.debug('6: ' + str(dni)) except KeyError: dni = None """ if dni and not user: logger.debug("dni and not user") if len(settings.AUTH_ENABLED_AUTH_SYSTEMS) == 1: logger.debug('redirect desde home ----------------- ' + settings.AUTH_ENABLED_AUTH_SYSTEMS[0]) return HttpResponseRedirect(reverse(auth_views.start, args=[settings.AUTH_ENABLED_AUTH_SYSTEMS[0]])+ '?return_url=' + request.GET.get('return_url', '')) """ login_box = auth_views.login_box_raw(request, return_url="/", auth_systems=auth_systems) return render_template( request, "index", { 'elections': featured_elections, 'elections_administered': elections_administered, 'elections_voted': elections_voted, 'create_p': create_p, 'login_box': login_box, 'dni': dni })
def one_election_cast_confirm(request, election): user = get_user(request) # if no encrypted vote, the user is reloading this page or otherwise getting here in a bad way if not request.session.has_key('encrypted_vote'): return HttpResponseRedirect(settings.URL_HOST) # election not frozen or started if not election.voting_has_started(): return render_template(request, 'election_not_started', {'election': election}) voter = get_voter(request, user, election) # auto-register this person if the election is openreg if user and not voter and election.openreg: voter = _register_voter(election, user) # tallied election, no vote casting if election.encrypted_tally or election.result: return render_template(request, 'election_tallied', {'election': election}) encrypted_vote = request.session['encrypted_vote'] vote_fingerprint = cryptoutils.hash_b64(encrypted_vote) # if this user is a voter, prepare some stuff if voter: vote = datatypes.LDObject.fromDict(utils.from_json(encrypted_vote), type_hint='legacy/EncryptedVote').wrapped_obj # prepare the vote to cast cast_vote_params = { 'vote' : vote, 'voter' : voter, 'vote_hash': vote_fingerprint, 'cast_at': datetime.datetime.utcnow() } cast_vote = CastVote(**cast_vote_params) else: cast_vote = None if request.method == "GET": if voter: past_votes = CastVote.get_by_voter(voter) if len(past_votes) == 0: past_votes = None else: past_votes = None if cast_vote: # check for issues issues = cast_vote.issues(election) else: issues = None bad_voter_login = (request.GET.get('bad_voter_login', "0") == "1") # status update this vote if voter and voter.user.can_update_status(): status_update_label = voter.user.update_status_template() % "your smart ballot tracker" status_update_message = "I voted in %s - my smart tracker is %s.. #heliosvoting" % (get_election_url(election),cast_vote.vote_hash[:10]) else: status_update_label = None status_update_message = None # do we need to constrain the auth_systems? if election.eligibility: auth_systems = [e['auth_system'] for e in election.eligibility] else: auth_systems = None password_only = False if auth_systems == None or 'password' in auth_systems: show_password = True password_login_form = forms.VoterPasswordForm() if auth_systems == ['password']: password_only = True else: show_password = False password_login_form = None return_url = reverse(one_election_cast_confirm, args=[election.uuid]) login_box = auth_views.login_box_raw(request, return_url=return_url, auth_systems = auth_systems) return render_template(request, 'election_cast_confirm', { 'login_box': login_box, 'election' : election, 'vote_fingerprint': vote_fingerprint, 'past_votes': past_votes, 'issues': issues, 'voter' : voter, 'return_url': return_url, 'status_update_label': status_update_label, 'status_update_message': status_update_message, 'show_password': show_password, 'password_only': password_only, 'password_login_form': password_login_form, 'bad_voter_login': bad_voter_login}) if request.method == "POST": check_csrf(request) # voting has not started or has ended if (not election.voting_has_started()) or election.voting_has_stopped(): return HttpResponseRedirect(settings.URL_HOST) # if user is not logged in # bring back to the confirmation page to let him know if not voter: return HttpResponseRedirect(settings.SECURE_URL_HOST + reverse(one_election_cast_confirm, args=[election.uuid])) # don't store the vote in the voter's data structure until verification cast_vote.save() # status update? if request.POST.get('status_update', False): status_update_message = request.POST.get('status_update_message') else: status_update_message = None # launch the verification task tasks.cast_vote_verify_and_store.delay( cast_vote_id = cast_vote.id, status_update_message = status_update_message) # remove the vote from the store del request.session['encrypted_vote'] return HttpResponseRedirect("%s%s" % (settings.URL_HOST, reverse(one_election_cast_done, args=[election.uuid])))