def checkout():
    user = get_user()
    page = Page()

    if request.method == "POST":
        req = request.form
        user = get_user()
        email = req.get("email")
        one_sitting = req.get("one_sitting")
        task1_like = req.get("task1_like")
        task2_like = req.get("task2_like")

        if email != user.email or one_sitting != user.one_sitting or task1_like != user.task1_like or task2_like != user.task2_like:
            user.update_user_checkout_Info(email, one_sitting, task1_like,
                                           task2_like)
            flash("Email saved successfully", "success")

        if request.form['dir'] == 'back':
            return redirect(url_for(page.page_handler('back', user)))
        else:
            return redirect(url_for(page.page_handler('next', user)))

    # add action to user log
    user_log = UserLog(user.id, "checkout",
                       datetime.now().replace(microsecond=0))
    user_log.add()

    return render_template(
        "public/checkout.html",
        email=user.email if user.email is not None else '',
        one_sitting=user.one_sitting,
        task1_like=user.task1_like if user.task1_like is not None else '',
        task2_like=user.task2_like if user.task2_like is not None else '',
        page=page.get_page_number(user))
Example #2
0
def signin():

    if request.method == "POST":
        req = request.form
        username = req.get("username")
        password = req.get("password")
        print(username, password)

        user = User()

        if user.check_password(username, password):
            user = User()
            user = user.get_user(username)

            # update last time logged in
            user.update_last_time_loggedin(
                datetime.now().replace(microsecond=0))

            session["SECRETKEY"] = user.secret_key
            flash("Signed in", "success")

            # add action to user history
            user_log = UserLog(user.id, "signin",
                               datetime.now().replace(microsecond=0))
            user_log.add()

            return redirect(url_for("welcome"))
        else:
            flash("Wrong credentials", "danger")

    return render_template("public/signin.html")
def data_preview():
    user = get_user()
    page = Page()

    data_type = ""
    df3_html = ""
    if request.method == "POST":
        req = request.form
        data_type = req.get("data_type")
        # add action to user log
        user_log = UserLog(user.id, "data_preview",
                           datetime.now().replace(microsecond=0))
        user_log.add()

        # convert obs file to df
        path = os.path.join(app.config["OBS_FILES_DIR"]
                            )  #+ ("/{}".format(user.username)) + ("/obs")
        files = [
            name for name in os.listdir(path)
            if os.path.isfile(os.path.join(path, name))
        ]

        obs_file_1 = path + '/' + 'file1.obs'
        obs_file_2 = path + '/' + 'file2.obs'

        df1 = converttoDF(obs_file_1)
        df2 = converttoDF(obs_file_2)
        df1[df1.columns[1]] = df1[df1.columns[1]].astype(float)
        df1[df1.columns[2]] = df1[df1.columns[2]].astype(float)
        df1[df1.columns[3]] = df1[df1.columns[3]].astype(float)
        df2[df2.columns[1]] = df2[df2.columns[1]].astype(float)
        df2[df2.columns[2]] = df2[df2.columns[2]].astype(float)
        df2[df2.columns[3]] = df2[df2.columns[3]].astype(float)

        #df1['SWE(1) 1'] = df1['SWE(1) 1'].astype(float)
        #df1_style = df1.style.apply(highlight_diff_2,threshold=0,column_1=df1.columns, column_2=df2.columns, axis=1)

        #df1_html = df1_style.render(classes="table table-hover table-striped table-sm table-bordered")
        #df1.to_html(classes="table table-hover table-striped table-sm table-bordered")

        #df2_html = df2.to_html(classes="table table-hover table-striped table-sm table-bordered")

        df3 = df1.merge(df2, on='time', how='outer')

        df3_style = df3.style.apply(highlight_diff,
                                    threshold=1.0,
                                    column=df3.columns,
                                    axis=1)
        df3_html = df3_style.render(
            classes="table table-hover table-striped table-sm table-bordered")

        #df4 = df1.merge(df2, how ='outer', left_index=True, right_index=True)
        #df4_html = df4.to_html(classes="table table-hover table-striped table-sm table-bordered")

    return render_template("public/data_preview.html",
                           data_type=data_type,
                           df3=df3_html,
                           page=page.get_page_number(user))
def plot():
    user = get_user()

    # add action to user log
    user_log = UserLog(user.id, "plot", datetime.now().replace(microsecond=0))
    user_log.add()
    page = Page()

    return render_template("public/plot.html", page=page.get_page_number(user))
def questions():
    user = get_user()

    # add action to user log
    user_log = UserLog(user.id, "questions",
                       datetime.now().replace(microsecond=0))
    user_log.add()

    return render_template("public/questions.html")
def profile():
    user = get_user()

    # add action to user log
    user_log = UserLog(user.id, "profile",
                       datetime.now().replace(microsecond=0))
    user_log.add()

    return render_template("public/profile.html", user=user)
Example #7
0
def plot():
    user = get_user()
    if user is None:
        return redirect(url_for("signin"))

    # add action to user log
    user_log = UserLog(user.id, "plot", datetime.now().replace(microsecond=0))
    user_log.add()

    return render_template("public/plot.html", username=user.username)
Example #8
0
def signout():
    user = get_user()
    session.pop("SECRETKEY", None)

    # add action to user log
    user_log = UserLog(user.id, "signout",
                       datetime.now().replace(microsecond=0))
    user_log.add()

    return redirect(url_for("signin"))
def signout():
    user = get_user()
    logout_user()

    # add action to user log
    user_log = UserLog(user.id, "signout",
                       datetime.now().replace(microsecond=0))
    user_log.add()

    return redirect(url_for("users.signin"))
def download_obs(file_name):
    user = get_user()
    # add action to user history
    user_log = UserLog(user.id, "download_" + file_name,
                       datetime.now().replace(microsecond=0))
    user_log.add()
    try:
        return send_from_directory(app.config["OBS_FILES_DIR"],
                                   filename=file_name,
                                   as_attachment=True)
    except:
        abort(404)
def download_crhm():
    user = get_user()
    # add action to user history
    user_log = UserLog(user.id, "download_crhm",
                       datetime.now().replace(microsecond=0))
    user_log.add()
    try:
        return send_from_directory(app.config["CRHM_APP_DIR"],
                                   filename='crhm.zip',
                                   as_attachment=True)
    except:
        abort(404)
Example #12
0
def data_preview():
    user = get_user()
    if user is None:
        return redirect(url_for("signin"))
    data_type = ""
    df1_html = ""
    df2_html = ""
    df3_html = ""
    df4_html = ""
    if request.method == "POST":
        req = request.form
        data_type = req.get("data_type")
        print('*************', data_type)
        # add action to user log
        user_log = UserLog(user.id, "data_preview",
                           datetime.now().replace(microsecond=0))
        user_log.add()

        # convert obs file to df
        path = os.path.join(app.config["FILE_UPLOADS"]) + ("/{}".format(
            user.username)) + ("/obs")
        files = [
            name for name in os.listdir(path)
            if os.path.isfile(os.path.join(path, name))
        ]

        obs_file_1 = path + '/' + files[0]
        obs_file_2 = path + '/' + files[1]

        df1 = converttoDF(obs_file_1)
        df1_html = df1.to_html(
            classes="table table-hover table-striped table-sm table-bordered")

        df2 = converttoDF(obs_file_2)
        df2_html = df2.to_html(
            classes="table table-hover table-striped table-sm table-bordered")

        df3 = df1.merge(df2, on='time', how='outer')
        df3_html = df3.to_html(
            classes="table table-hover table-striped table-sm table-bordered")

        df4 = df1.merge(df2, how='outer', left_index=True, right_index=True)
        df4_html = df4.to_html(
            classes="table table-hover table-striped table-sm table-bordered")

    return render_template("public/data_preview.html",
                           username=user.username,
                           data_type=data_type,
                           df1=df1_html,
                           df2=df2_html,
                           df3=df3_html,
                           df4=df4_html)
def new_intro():
    user = get_user()

    # add action to user history
    user_log = UserLog(user.id, "new_intro",
                       datetime.now().replace(microsecond=0))
    user_log.add()
    page = Page()
    if request.method == "POST":
        return redirect(url_for(page.page_handler('back', user)))

    return render_template("public/new_intro.html",
                           page=page.get_page_number(user))
def download():
    user = get_user()

    # add action to user log
    user_log = UserLog(user.id, "download",
                       datetime.now().replace(microsecond=0))
    user_log.add()
    page = Page()

    if request.method == "POST":
        return redirect(url_for(page.page_handler('back', user)))

    return render_template("public/download.htm",
                           page=page.get_page_number(user))
def upload():
    user = get_user()

    # add action to user history
    user_log = UserLog(user.id, "upload",
                       datetime.now().replace(microsecond=0))
    user_log.add()
    page = Page()

    try:
        path = os.path.join(app.config["FILE_UPLOADS"]) + ("/{}".format(
            user.username)) + ("/obs")
        files = [
            f for f in os.listdir(path)
            if os.path.isfile(os.path.join(path, f))
        ]
    except:
        files = []

    # add action to user log
    user_log = UserLog(user.id, "upload",
                       datetime.now().replace(microsecond=0))
    user_log.add()
    return render_template("public/upload.html",
                           files=files,
                           file_count=len(files))
def update_password():

    user = get_user()
    # add action to user history
    user_log = UserLog(user.id, "update_password",
                       datetime.now().replace(microsecond=0))
    user_log.add()

    if request.method == "POST":

        req = request.form
        password = req.get("password")
        re_password = req.get("re_password")
        if password != re_password:
            flash("Passwords don't match", "danger")
        else:
            user.update_password(req.get("password"))
            flash("Password updated", "success")

    return render_template("public/profile.html")
def upload_obs():
    user = get_user()

    # add action to user history
    user_log = UserLog(user.id, "upload_obs",
                       datetime.now().replace(microsecond=0))
    user_log.add()

    path = os.path.join(app.config["FILE_UPLOADS"]) + ("/{}".format(
        user.username)) + ("/obs")

    # create a directory for user
    if not os.path.exists(path):
        os.makedirs(path)

    if request.method == "POST":
        if request.files:
            obs = request.files["obs_input"]
            if obs.filename == "":
                flash("Select a file", "danger")
                return redirect(url_for("users.dashboard"))

            if not allowed_file(obs.filename):
                flash("File extention not allowed", "danger")
                return redirect(url_for("users.dashboard"))
            else:
                path = os.path.join(app.config["OBS_FILES_DIR"]) + (
                    "/{}".format(user.username)) + ("/obs")
                number_of_files = len([
                    name for name in os.listdir(path)
                    if os.path.isfile(os.path.join(path, name))
                ])
                if number_of_files >= 2:
                    flash("Too many files!", "danger")
                    return redirect(url_for("users.dashboard"))
                else:
                    filename = secure_filename(obs.filename)
                    obs.save(os.path.join(path, filename))
                    flash("File uploaded", "success")
                    return redirect(url_for("users.dashboard"))
def show_plot():
    user = get_user()

    # add action to user history
    user_log = UserLog(user.id, "show_plot",
                       datetime.now().replace(microsecond=0))
    user_log.add()

    path = os.path.join(app.config["OBS_FILES_DIR"]) + ("/{}".format(
        user.username)) + ("/obs")
    html_path = os.path.join(app.config["HTML_FILE_PATH"]) + ("/{}".format(
        user.username))
    if not os.path.exists(html_path):
        os.makedirs(html_path)
    files = [
        name for name in os.listdir(path)
        if os.path.isfile(os.path.join(path, name))
    ]

    if len(files) == 1:
        obs_file_1 = path + '/' + files[0]
        df1 = converttoDF(obs_file_1)
        plot_go(df1, os.path.basename(obs_file_1), html_path)

    elif len(files) == 2:
        obs_file_1 = path + '/' + files[0]
        obs_file_2 = path + '/' + files[1]
        df1 = converttoDF(obs_file_1)
        df2 = converttoDF(obs_file_2)
        df3 = df1.merge(df2, on='time', how='outer')
        plot_go(
            df3,
            os.path.basename(obs_file_1) + ' and ' +
            os.path.basename(obs_file_2), html_path)

    return render_template('public/user_html/' + user.username +
                           '/temp-plot.html')
def participants_info():
    user = get_user()

    # add action to user history
    user_log = UserLog(user.id, "participants_info",
                       datetime.now().replace(microsecond=0))
    user_log.add()
    page = Page()

    if request.method == "POST":
        req = request.form
        age = req.get("age")
        gender = req.get("genderRadios")
        crhm_exp = req.get("crhmRadios")
        dev_exp = req.get("dev_exp")
        test_exp = req.get("test_exp")
        role_exp = req.get("role_exp")
        degree = req.get("degree")

        if degree == user.degree and age == user.age and crhm_exp == user.crhm_exp and gender == user.gender and dev_exp == user.dev_exp_years and test_exp == user.test_exp_years and role_exp == user.role_exp:
            return redirect(url_for(page.page_handler('next', user)))
        else:
            user.update_userInfo(age, crhm_exp, gender, dev_exp, test_exp,
                                 role_exp, degree)
            flash("Information saved successfully", "success")
            return redirect(url_for(page.page_handler('next', user)))

    return render_template(
        "public/participants_info.html",
        crhm_exp=user.crhm_exp,
        gender=user.gender,
        age=user.age,
        dev_exp=user.dev_exp_years,
        test_exp=user.test_exp_years,
        role=user.role_exp if user.role_exp is not None else '',
        degree=user.degree,
        page=page.get_page_number(user))
def signin():

    if request.method == "POST":
        req = request.form
        username = req.get("username").lower()
        password = req.get("password")

        user = User()

        if user.check_password(username, password):
            user = User()
            user = user.get_user(username)

            if user.check_active(username):

                # update last time logged in
                user.update_last_time_loggedin(
                    datetime.now().replace(microsecond=0))

                login_user(user)

                # add action to user history
                user_log = UserLog(user.id, "signin",
                                   datetime.now().replace(microsecond=0))
                user_log.add()

                return redirect(url_for("users.dashboard"))
            else:
                flash("Your user has been deactivated.", "danger")
                return redirect(url_for("users.signin"))

        else:
            flash("Wrong credentials", "danger")
            return redirect(url_for("users.signin"))

    return render_template("public/signin.html")
def new_tlx():
    user = get_user()

    # add action to user history
    user_log = UserLog(user.id, "new_txl",
                       datetime.now().replace(microsecond=0))
    user_log.add()
    page = Page()

    tlx = NasaTLX.get_user_tlx(userId=user.id, page='new')

    questions = [
        ['How mental demanding was the task?', 'mental_demanding'],
        ['How physically demanding was the task?', 'physically_demanding'],
        ['How hurried or rushed was the pace of the task?', 'hurried_rushed'],
        [
            'How successful were you in accomplishing what you were asked to do?',
            'successful_accomplishing'
        ],
        [
            'How hard did you have to work to accomplish your level of performance?',
            'hard_performance'
        ],
        [
            'How insecure, discouraged, irritated stressed and annoyed were you?',
            'insecure_discouraged'
        ]
    ]
    answers = range(1, 11)

    if tlx is not None:
        questions = [
            [
                'How mental demanding was the task?', 'mental_demanding',
                int(tlx.mental_demanding)
            ],
            [
                'How physically demanding was the task?',
                'physically_demanding',
                int(tlx.physically_demanding)
            ],
            [
                'How hurried or rushed was the pace of the task?',
                'hurried_rushed',
                int(tlx.hurried_rushed)
            ],
            [
                'How successful were you in accomplishing what you were asked to do?',
                'successful_accomplishing',
                int(tlx.successful_accomplishing)
            ],
            [
                'How hard did you have to work to accomplish your level of performance?',
                'hard_performance',
                int(tlx.hard_performance)
            ],
            [
                'How insecure, discouraged, irritated stressed and annoyed were you?',
                'insecure_discouraged',
                int(tlx.insecure_discouraged)
            ]
        ]
        answers = range(1, 11)

    if request.method == "POST":
        req = request.form
        new_nasa_tlx = NasaTLX(user.id, 'new', req.get("mental_demanding"),
                               req.get("physically_demanding"),
                               req.get("hurried_rushed"),
                               req.get("successful_accomplishing"),
                               req.get("hard_performance"),
                               req.get("insecure_discouraged"),
                               req.get("new_time"), req.get("new_mismatch"))
        if tlx is None:
            new_nasa_tlx.add()
        else:
            tlx.update_user_tlx(req.get("mental_demanding"),
                                req.get("physically_demanding"),
                                req.get("hurried_rushed"),
                                req.get("successful_accomplishing"),
                                req.get("hard_performance"),
                                req.get("insecure_discouraged"),
                                req.get("new_time"), req.get("new_mismatch"))

        return redirect(url_for(page.page_handler('next', user)))

    return render_template("public/new_tlx.html",
                           answers=answers,
                           questions=questions,
                           time=tlx.time if tlx is not None else '',
                           mismatch=tlx.mismatch if tlx is not None else '',
                           page=page.get_page_number(user))