Exemplo n.º 1
0
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,
        },
    )
Exemplo n.º 2
0
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
        }
    )
Exemplo n.º 3
0
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})
Exemplo n.º 4
0
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,
        },
    )
Exemplo n.º 5
0
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
        })
Exemplo n.º 6
0
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])))
Exemplo n.º 7
0
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
        })
Exemplo n.º 8
0
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])))