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)
示例#2
0
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)
示例#3
0
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)
示例#5
0
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)
示例#6
0
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)
示例#8
0
def logout():
    # clear session and put em back to the home page
    if loggedIn():
        session.clear()

    return redirect("/")
示例#9
0
def logout():
    #clear session and put em back to the home page
    if loggedIn():
        session.clear()

    return redirect("/")