def home(): election_happening = getCurElection() if loggedIn(): voted = votedAlready(election_happening, session["id"]) else: voted = False return render_template("index.html", logged_in=loggedIn(), voted=voted, election_happening=election_happening)
def login(): # if user is logged in already, just send them to the home page if loggedIn(): return redirect("/") # validate POST data error = None result = False if not request.form["username"]: error = "Username must not be left blank." elif not request.form["password"]: error = "Password must not be left blank." else: result = tryLogin(request.form) if result: # valid login # get and setup various session data setupSession(request.form["username"]) curElection = getCurElection() # get today's election if curElection: voted = votedAlready(curElection, session["id"]) else: voted = False return render_template("index.html", logged_in=True, election_happening=curElection, voted=voted) else: # failed login if not error: error = "Invalid username/password combination. Try again." return render_template("index.html", error=error, logged_in=False)
def login(): #if user is logged in already, just send them to the home page if loggedIn(): return redirect("/") #validate POST data error = None result = False if not request.form["username"]: error = "Username must not be left blank." elif not request.form["password"]: error = "Password must not be left blank." else: result = tryLogin(request.form) if result: #valid login #get and setup various session data setupSession(request.form["username"]) curElection = getCurElection() #get today's election if curElection: voted = votedAlready(curElection, session["id"]) else: voted = False return render_template("index.html", logged_in=True, election_happening=curElection, voted=voted) else: #failed login if not error: error = "Invalid username/password combination. Try again." return render_template("index.html", error=error, logged_in=False)
def vote_page(): if not loggedIn(): #not logged in, make em register return redirect("/register") #setup voted variable voted = False if request.method == "GET": curElection = getCurElection() if curElection: voted = votedAlready(curElection, session["id"]) if not voted: #didn't vote yet candidates = getCandidates(curElection) return render_template("vote.html", logged_in=True, election_happening=True, listLen=len(candidates), ticket=candidates, voted=False) else: #already voted return render_template("vote.html", logged_in=True, election_happening=True, voted=True) elif request.method == "POST": #user voted, now we need to process the data if there's an election today curElection = getCurElection() #when this if statement is true, the election being voted in today is valid if curElection: voted = votedAlready(curElection, session["id"]) if not voted: #make sure they didn't vote yet candidates = getCandidates(curElection) error = None result = False candidate_id = request.form["candidate"] #user should also put their password in to vote data = {"username" : session["username"], "password" : request.form["password"]} if not tryLogin(data): error = "Invalid password." elif not validCandidateID(curElection, candidate_id): error = "Invalid candidate ID given. Voter fraud detected - not counting vote." voted = True else: result = vote(curElection, candidate_id, userid=session["id"]) if result: #vote is valid return redirect("/") else: #vote is invalid if not error: error = "There was a problem with your vote. Please try again." return render_template("vote.html", logged_in=True, error=error, voted=voted, election_happening=True, ticket=candidates, listLen=len(candidates)) #there is no election today or they already voted return render_template("vote.html", logged_in=True, election_happening=curElection, voted=voted)
def register_page(): #if user is logged in already, just send them to the home page if loggedIn(): return redirect("/") curElection = getCurElection() #get today's election if request.method == "GET": return render_template("register.html", logged_in=False) elif request.method == "POST": #validate POST data error = None result = False if not validUsername(request.form['username']): error = "You must supply a valid username. (no duplicates, no special characters, no spaces, up to 1 dash and/or underscore, at least 1 letter, not blank)" elif not validPass(request.form['password']): error = "Password is invalid. (upper, lower, number, min 8 chars)" elif request.form['password'] != request.form['password2']: error = "Passwords do not match!" elif not validFirst(request.form['first']): error = "You must supply a valid first name. (no numbers, no special characters, not blank)" elif not validLast(request.form['last']): error = "You must supply a valid last name. (no numbers, no special characters, not blank)" elif not validBirthday(request.form['birthday']): error = "You must be 18 years or older to vote." elif not validAddress(request.form['address']): error = "You must supply a valid address. (### street) " elif not validPhoneNumber(request.form['number']): error = "You must supply a valid phone number.(###-###-####)" elif not validSSN(request.form['ssn']): error = "You must supply a valid Social Security Number, no duplicates.(XXX-XX-XXXX)" else: result = registerUser(request.form) #if successful registration if result: #setup session and bring em back to the home page setupSession(request.form["username"]) return redirect("/") else: #failed registration if not error: error = "Registration failed. Please try again." return render_template("register.html", error=error, logged_in=False)
def register_page(): # if user is logged in already, just send them to the home page if loggedIn(): return redirect("/") curElection = getCurElection() # get today's election if request.method == "GET": return render_template("register.html", logged_in=False) elif request.method == "POST": # validate POST data error = None result = False if not validUsername(request.form["username"]): error = "You must supply a valid username. (no duplicates, no special characters, no spaces, up to 1 dash and/or underscore, at least 1 letter, not blank)" elif not validPass(request.form["password"]): error = "Password is invalid. (upper, lower, number, min 8 chars)" elif request.form["password"] != request.form["password2"]: error = "Passwords do not match!" elif not validFirst(request.form["first"]): error = "You must supply a valid first name. (no numbers, no special characters, not blank)" elif not validLast(request.form["last"]): error = "You must supply a valid last name. (no numbers, no special characters, not blank)" elif not validBirthday(request.form["birthday"]): error = "You must be 18 years or older to vote." elif not validAddress(request.form["address"]): error = "You must supply a valid address. (### street) " elif not validPhoneNumber(request.form["number"]): error = "You must supply a valid phone number.(###-###-####)" elif not validSSN(request.form["ssn"]): error = "You must supply a valid Social Security Number, no duplicates.(XXX-XX-XXXX)" else: result = registerUser(request.form) # if successful registration if result: # setup session and bring em back to the home page setupSession(request.form["username"]) return redirect("/") else: # failed registration if not error: error = "Registration failed. Please try again." return render_template("register.html", error=error, logged_in=False)
def election_page(): if not loggedIn(): #not logged in, make em register return redirect("/register") #get all previous election IDs and names prior = getElections() #if user has requested a certain election if "prior_election" in request.args.keys(): prior_election = request.args.get("prior_election") if validElectionID(prior_election): curElection = int(prior_election) else: #election id isn't a number error = "Election must be a valid number." return render_template("election.html", logged_in=True, prior_elections=prior, error=error, election_happening=getCurElection()) else: curElection = getLastElection() if curElection: electionName = getElectionName(curElection) #get name of selected/current election candidates = getCandidates(curElection) #get candidates in election #get votes for each candidate results = [] for cid,c in candidates: votes = int(getCandidateVotes(curElection, cid)) results.append((c, votes)) voted, notVoted = getVoters(curElection) return render_template("election.html", logged_in=True, current_election=electionName, results=results, voted=voted, notVoted=notVoted, prior_elections=prior, election_happening=getCurElection()) else: #election not found, return to home page #they gave us an id to find a given election but we didn't find it if request.args.get("election"): error = "Election not found." else: #there isn't an election today error = "No election today." return render_template("election.html", logged_in=True, error=error, election_happening=getCurElection(), prior_elections=prior)
def logout(): # clear session and put em back to the home page if loggedIn(): session.clear() return redirect("/")
def logout(): #clear session and put em back to the home page if loggedIn(): session.clear() return redirect("/")