def vote(electionID, candidateID): if 'voter' in session: voter = Voter.getVoter({'username': session['voter']}) election = Election.getElection({'_id': ObjectId(electionID)}) if election['date'].date() > datetime.datetime.now().date(): flash(f"Election not yet started. Come back on {election['date'].date()}", 'danger') elif election['date'].date() < datetime.datetime.now().date(): flash(f"Election ended on {election['date'].date()}", 'danger') elif election['date'].date() == datetime.datetime.now().date(): if str(datetime.datetime.now().time())[:5] > election['starttime'] and str(datetime.datetime.now().time())[:5] < election['endtime']: flash('Vote recorded successfully', 'success') vote = { 'timestamp': str(datetime.datetime.now()), 'electionID': electionID, 'candidateID': candidateID, 'voter': str(voter['_id']) } response = Blockchain.add_transaction(vote) flash(response, 'info') else: flash(f"You can vote between {election['starttime']} to {election['endtime']}", 'info') return redirect(url_for('home')) else: flash('You need to Login first!', 'warning') return redirect(url_for('login'))
def profile(): if 'voter' in session: username = session['voter'] voter = Voter.getVoter({'username': username}) return render_template('profile.html', Voter=voter) else: return redirect(url_for('login'))
def profile(): if 'voter' in session: username = session['voter'] voter = Voter.getVoter({'username':username}) return render_template('profile.html',Voter = voter) else: flash('You need to Login first!', 'warning') return redirect(url_for('login'))
def home(): if 'voter' in session: username = session['voter'] voter = Voter.getVoter({'username':username}) elections = Election.getElections() return render_template('home.html', Voter = voter, Elections = elections) else: flash('You need to Login first!', 'warning') return redirect(url_for('login'))
def voter_authenticate(): username = request.form['username'] password = request.form['password'] voter = Voter.getVoter({'username': username, 'password': password}) if voter is None: session.pop('voter', None) return redirect(url_for('login')) else: session['voter'] = username return redirect(url_for('home'))
def voter_register(): username = request.form['username'] password = request.form['password'] voter = Voter.getVoter({'username': username}) if voter is None: voter = Voter(username=username, password=password) voter.addVoter() session['voter'] = username return redirect(url_for('home')) else: return redirect(url_for('login'))
def voter_authenticate(): username = request.form['username'] password = request.form['password'] voter = Voter.getVoter({'username':username,'password':password}) if voter is None: session.pop('voter', None) flash('Username or Password is wrong! Try Again', 'danger') return redirect(url_for('login')) else: session['voter'] = username flash('Login successful', 'success') return redirect(url_for('home'))
def voter_register(): username = request.form['username'] password = request.form['password'] voter = Voter.getVoter({'username':username}) if voter is None: voter = Voter(username = username, password = password) voter.addVoter() session['voter'] = username flash('Registration successful. Update profile', 'info') return redirect(url_for('home')) else: flash('You need to Login first!', 'warning') return redirect(url_for('login'))
def login(): form = LoginForm() #if they submitted all the necessary features of the login form if form.validate_on_submit(): cleanSSN = re.sub(r"\D", "", form.ssn.data) cleanDOB = re.sub(r"\D", "", form.dob.data) #check if the user is in the database cleanFLN = re.sub(r"[A-Za-z']", "", form.fullName.data) user = Voter.getVoter(dbManager, connection, cleanFLN) #confirm users password if user is None or not user.check_password(cleanSSN, cleanDOB): #notify user authentication did not work return not_found('Either you have already voted or the information you entered did not match any on record. If you have not yet voted, please try again.') #login_user(user) return vote_page(user) return render_template('login.html', title='Sign In', form=form)
def landing_page(): startTime = ElectionTimespan.getStartTime(dbManager, connection) endTime = ElectionTimespan.getEndTime(dbManager, connection) if not startTime or not endTime: return not_found('GENERIC ERROR') form = LoginForm() #if they submitted all the necessary features of the login form if form.validate_on_submit(): #check if the user is in the database user = Voter.getVoter(dbManager, connection, form.fullName.data) #confirm users password if user is None or not user.check_password(form.ssn.data, form.dob.data): #notify user authentication did not work return not_found('Either you have already voted or the information you entered did not match any on record. If you have not yet voted, please try again.') #login_user(user) return vote_page(user) return render_template("login.html", title='Sign In', form=form, startTime=startTime, endTime=endTime)
def registerCandidate(): if 'voter' in session: voter = Voter.getVoter({'username':session['voter']}) electionID = request.form.get('electionID') election = Election.getElection({'_id':ObjectId(electionID)}) if datetime.datetime.now() + datetime.timedelta(days=2) >= election['date']: flash("Candiate Registration is closed", 'danger') else : candidate = { 'id' : str(uuid4()).replace('-', ''), 'voterID' : voter['_id'], 'name' : voter['name'], 'slogan' : request.form['slogan'], 'representing' : request.form['representing'], 'qualification' : request.form['qualification'], 'status' : False } Election.updateElection({'_id':ObjectId(electionID)}, {'$push': {'candidates': candidate}}) flash('Your registration details as candidate are successfully recorderd', 'info') return redirect(url_for('home')) else: flash('You need to Login first!', 'warning') return redirect(url_for('login'))
def view(voterID): if 'admin' in session: voter = Voter.getVoter({'_id': ObjectId(voterID)}) return render_template('viewVoter.html', Voter = voter) else: return redirect(url_for('admin'))