Exemplo n.º 1
0
 def election_admin_wrapper(request, election_uuid=None, *args, **kw):
   election = get_election_by_uuid(election_uuid)
   
   user = get_user(request)
   
   if 'perm_needed' in checks:
       perm = Permission.objects.get(codename=checks['perm_needed'])
   
   #user is an Election Officer
   if not user_can_officiate_election(user, election):
       messages.error(request, "You don't have the required permission (%s) to execute that activity." % (perm))
       return HttpResponseRedirect(get_referer_view(request))
       #raise PermissionDenied()
   
   #user should at least have the required permission
   if 'perm_needed' in checks:
       kw['perm_needed'] = checks['perm_needed'] 
       if not user_has_perm(user, election, checks['perm_needed'], request=request):
           messages.error(request, "You don't have the required permission (%s) to execute that activity." % (perm))
           return HttpResponseRedirect(get_referer_view(request))
           #raise PermissionDenied()
   #if the view does not explicitly put any required permission,
   #then the view must have required an admin user by default
   #else:
   #    if not user_can_admin_election(user, election):
   #        raise PermissionDenied()
     
   # do checks, ok means it's alright to proceed with the action
   ok = do_election_checks(election, checks, request)
   if not ok:
       return HttpResponseRedirect(get_referer_view(request))
     
   return func(request, election, *args, **kw)
Exemplo n.º 2
0
    def election_view_wrapper(request, election_uuid=None, *args, **kw):
      
      #add content of checks to kw
      #kw = checks
      
      
      election = get_election_by_uuid(election_uuid)
      
      if not election:
        raise Http404

      # do checks
      ok = do_election_checks(election, checks, request)
      
      if not ok:
          return HttpResponseRedirect(get_referer_view(request))
      
      # if private election, only logged in voters
      if election.private_p and not checks.get('allow_logins',False):
        from views import password_voter_login
        if not user_can_see_election(request, election):
          return_url = request.get_full_path()
          if 'admin' in return_url:
              from server_ui.views import home_m
              return HttpResponseRedirect("%s?%s" % (reverse(home_m), urllib.urlencode({'return_url' : return_url})))
          else:
              return HttpResponseRedirect("%s?%s" % (reverse(password_voter_login, args=[election.uuid]), urllib.urlencode({
                  'return_url' : return_url})))
      
      return func(request, election, *args, **kw)