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)
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)