def login(): try: if session['email'] is not None: return redirect('/workspace') except: pass try: form = LoginForm() if form.validate_on_submit(): dbase = './troops-to-task/user_db.sqlite' sql = t2t_sqlite.getUser(form.email.data) check = callSQL(dbase, sql) if bcrypt.hashpw(form.pwd.data, check[0][4]) == check[0][4]: debug('User Logged In! ') session['remember_me'] = form.remember_me.data session['email'] = check[0][3] return redirect('/workspace') else: flash('Your username or password was not correct. :(') return render_template('login.html', title='Sign In', form=form) except: return show_error_page('Error during login route')
def view_workspace(): try: if session['email'] is not None: debug('User: '******'email']) else: return redirect('/login') except: return redirect('/login') htmlTable = '' csql = None formAddTroop = AddTroopForm() formAddEvent = AddEventForm() formAddTask = AddTaskForm() formEditTask = EditTaskForm() dbase = './troops-to-task/user_db.sqlite' sql = t2t_sqlite.getUser(session['email']) check = callSQL(dbase, sql) usersdb = './troops-to-task/userdb/' + check[0][5] + '.sqlite' if formAddTroop.validate_on_submit(): sql = t2t_sqlite.addTroop(formAddTroop.troopid.data, formAddTroop.rank.data, formAddTroop.first_name.data, formAddTroop.last_name.data) callSQL(usersdb, sql) if formAddEvent.validate_on_submit(): sql = t2t_sqlite.addEvent(formAddEvent.title.data, formAddEvent.startDTG.data, formAddEvent.endDTG.data) callSQL(usersdb, sql) if formAddTask.validate_on_submit(): sql = t2t_sqlite.addTask(formAddTask.troopid.data, formAddTask.eventid.data) callSQL(usersdb, sql) #render the page for the user's workspace tblreq = request.args.get('show') rmreq = request.args.get('rm') edreq = request.args.get('ed') item = request.args.get('i') try: if tblreq is None: try: sql = t2t_sqlite.listCurrentTroopstoTask() except: flash('Error loading the Current Troops to Task Table.') elif tblreq == 'troops': sql = t2t_sqlite.shortList('troops') elif tblreq == 'events': sql = t2t_sqlite.shortList('events') elif tblreq == 'tasks': sql = t2t_sqlite.shortList('tasks') if rmreq is None: csql = None elif rmreq == 'e': csql = t2t_sqlite.removeEvent(item) elif rmreq == 'tr': csql = t2t_sqlite.removeTroop(item) elif rmreq == 'ta': csql = t2t_sqlite.removeTask(item) if edreq is None: csql = None elif edreq == 'e': csql = t2t_sqlite.editEvent(item, request.args.get('title'), request.args.get('startDTG'), request.args.get('endDTG')) elif edreq == 'tr': csql = t2t_sqlite.editTroop(item, request.args.get('troopid'), request.args.get('eventid')) elif edreq == 'ta': csql = t2t_sqlite.editTask(item, request.args.get('rank'), request.args.get('firstName'), request.args.get('lastName')) if csql is not None: debug(csql) debug(callSQL(usersdb, csql)) debug(sql) theReturn = selectTable(usersdb, sql) if theReturn == []: htmlTable = 'There are no current Troops to Task.' else: table = print_table(theReturn[0], theReturn[1]) htmlTable = table.get_html_string(attributes = {"class": "table table-striped"}) return render_template('workspace.html', user=check[0][1], table=htmlTable, AddTroopForm=formAddTroop, AddEventForm=formAddEvent, AddTaskForm=formAddTask, EditTaskForm=formEditTask) except: return show_error_page('Workspace failed to load correctly.')
def new(): form = NewAccount() if form.validate_on_submit(): check_userdb() pwdHash = bcrypt.hashpw(form.pwd.data, bcrypt.gensalt()) usersDB = bcrypt.hashpw(form.first_name.data + form.last_name.data + form.email.data, bcrypt.gensalt()) dbase = './troops-to-task/user_db.sqlite' try: sql = t2t_sqlite.addUser(form.first_name.data, form.last_name.data, form.email.data, pwdHash, usersDB) debug(sql) except: flash('Error in generating SQL for new account.') try: theReturn = callSQL(dbase, sql) debug(theReturn) except: flash('Error Calling SQL: ' + sql) sql = t2t_sqlite.getUser(form.email.data) check = callSQL(dbase, sql) if bcrypt.hashpw(form.pwd.data, check[0][4]) == check[0][4]: usersdb = './troops-to-task/userdb/' + check[0][5] + '.sqlite' init_sql = ''' CREATE TABLE troops ( troopid char(10) NOT NULL PRIMARY KEY, rank char(5) NOT NULL, first_name char(50), last_name char(50) NOT NULL, timestamp DATETIME DEFAULT CURRENT_TIMESTAMP); CREATE TABLE tasks ( taskid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, troop_id INTEGER NOT NULL, event_id INTEGER NOt NULL, timestamp DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY(troop_id) REFERENCES troops(dodid), FOREIGN KEY(event_id) REFERENCES events(eventid)); CREATE TABLE log ( logid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, event text, timestamp DATETIME DEFAULT CURRENT_TIMESTAMP); CREATE TABLE events ( eventid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, title char(50) NOT NULL, startDTG DATETIME NOT NULL, endDTG DATETIME NOT NULL, timestamp DATETIME DEFAULT CURRENT_TIMESTAMP); ''' try: connect_db(usersdb) # SQLite3 auto-creates on connect if it does not exists except: flash('Error connecting to user''s database.') try: cursor.executescript(init_sql) # initialize except: flash('Error creating user''s database.') try: disconnect_db() except: flash('Error disconnecting from user''s database.') flash('Account created successfully!') #account created, proceed to login the user else: flash('Sorry, there was an error creating your account. :(') return redirect('/index') return render_template('new.html', title='Sign Up!', form=form)