Ejemplo n.º 1
0
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')
Ejemplo n.º 2
0
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.')
Ejemplo n.º 3
0
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)