Example #1
0
def answer(question_id):
    user = get_current_user()

    if not user:
        return redirect(url_for("login"))

    if not user["expert"]:  # only expert can answer questions
        return redirect(
            url_for("index",
                    error="You don't permission to access this page!"))

    db = dbcon.get_db()

    if request.method == "POST":
        db.execute("update questions set answer_text = %s where id=%s", (
            request.form["answer"],
            question_id,
        ))

        return redirect(url_for("unanswered"))

    db.execute("select id, question_text from questions where id=%s",
               (question_id, ))
    question = db.fetchone()

    return render_template("answer.html", user=user, question=question)
def get_entry(
    request
):  # this method returns specific entry using the object id from database
    try:

        if request.method == 'POST':
            action = request.POST.get("action", None)
            if action == 'get_entry':
                li = ()
                customer_dict1 = dict()
                request_body = request.POST
                customer_dict1["_id"] = request_body.get("oid")
                li = database.customer_info.find(
                    {"_id": ObjectId(customer_dict1["_id"])})
                return HttpResponse(dumps(li), content_type='application/json')

            else:
                return HttpResponse("wrong logic")
                # customer_dict = dict()
                # request_body = request.POST
                # customer_dict["name"] = request_body.get("Name")
                # customer_dict["Mobile_num"] = request_body.get("Mobile_num")
                # customer_dict["Gender"] = request_body.get("Gender")
                # result = database.customer_info.insert(customer_dict)
                # result = str(result)
                # return HttpResponse(dumps({"_id":result,"name" : customer_dict['name'], "Mobile_num" : customer_dict['Mobile_num'],
                #                            "Gender" : customer_dict['Gender']}), content_type='application/json')
        else:
            result = get_db()
            print result
            return render(request, 'dashboard/register.html',
                          {"result": result})
        return render(request, 'dashboard/register.html')
    except Exception as e:
        return HttpResponse("failed")
Example #3
0
def unanswered():
    user = get_current_user()

    if not user:
        return redirect(url_for("login"))

    if not user["expert"]:  #only expert can access this route
        return redirect(
            url_for("index",
                    error="You don't permission to access this page!"))

    unanswered_q = get_unanswered_question(user["id"])

    db = dbcon.get_db()

    db.execute(
        '''select questions.id, questions.question_text, 
                        questions.asked_by_id, users.name 
                    from questions 
                    join users on users.id = questions.asked_by_id
                    where answer_text is null and expert_id = %s''',
        (user["id"], ))

    question_result = db.fetchall()

    return render_template("unanswered.html",
                           user=user,
                           questions=question_result,
                           unanswered_q=unanswered_q)
Example #4
0
def food():

    db = dbcon.get_db()

    if request.method == "POST":
        food_name = request.form.get("food-name")
        protein = int(request.form.get("protein"))
        carbohydrates = int(request.form.get("carbohydrates"))
        fat = int(request.form.get("fat"))

        calories = protein * 4 + carbohydrates * 4 + fat * 9
        db.execute(
            "insert into food (name, protein, carbohydrates, fat, calories)\
                    values (%s,%s,%s,%s,%s)", (
                food_name,
                protein,
                carbohydrates,
                fat,
                calories,
            ))

    db.execute("select * from food")
    results = db.fetchall()

    return render_template("add_food.html", results=results)
def register(request):

    try:

        if request.method == 'POST':
            action = request.POST.get("action", None)
            if action == 'delete':  # this part of code is redundant there is different method for deleting record
                customer_dict1 = dict()
                request_body = request.POST
                customer_dict1["_id"] = request_body.get("oid")
                database.customer_info.remove(
                    {"_id": ObjectId(customer_dict1["_id"])})
                return HttpResponse("deleted")

            customer_dict = dict()  #main part of register method starts here
            request_body = request.POST
            customer_dict["name"] = request_body.get("Name")
            customer_dict["Mobile_num"] = request_body.get("Mobile_num")
            customer_dict["Gender"] = request_body.get("Gender")
            result = database.customer_info.insert(
                customer_dict
            )  #gets the details of customer from front end and then
            #it is stored in the database
            result = str(result)  #redundant line of code
            return HttpResponse(dumps(customer_dict),
                                content_type='application/json')
        else:
            result = get_db(
            )  #this part of code is not used there's different method "display" to do this
            print result
            return render(request, 'dashboard/register.html',
                          {"result": result})
        return render(request, 'dashboard/register.html')
    except Exception as e:
        return HttpResponse("failed")
Example #6
0
def index():
    user = get_current_user()
    error = request.args.get('error')  #get the error message from argument

    # Get unanswered question count (only for expert)
    unanswered_q = None
    if user is not None:
        unanswered_q = get_unanswered_question(user["id"])

    db = dbcon.get_db()

    db.execute(''' select questions.id, questions.question_text, 
                        asker.name as asker_name, expert.name as expert_name
                    from questions 
                    join users as asker on asker.id = questions.asked_by_id
                    join users as expert on expert.id = questions.expert_id 
                    where answer_text is not null  ''')

    questions_results = db.fetchall()

    return render_template("home.html",
                           user=user,
                           questions=questions_results,
                           unanswered_q=unanswered_q,
                           error=error)
def delete(
    request
):  # this method is used for deleting the entry from the databse using object id
    try:

        if request.method == 'POST':
            action = request.POST.get("action", None)
            if action == 'delete':
                customer_dict1 = dict()
                request_body = request.POST
                customer_dict1["_id"] = request_body.get("oid")
                database.customer_info.remove(
                    {"_id": ObjectId(customer_dict1["_id"])})
                return HttpResponse(request)

            else:
                return HttpResponse("wrong logic")
                # customer_dict = dict()
                # request_body = request.POST
                # customer_dict["name"] = request_body.get("Name")
                # customer_dict["Mobile_num"] = request_body.get("Mobile_num")
                # customer_dict["Gender"] = request_body.get("Gender")
                # result = database.customer_info.insert(customer_dict)
                # result = str(result)
                # return HttpResponse(dumps({"_id":result,"name" : customer_dict['name'], "Mobile_num" : customer_dict['Mobile_num'],
                #                            "Gender" : customer_dict['Gender']}), content_type='application/json')
        else:
            result = get_db()
            print result
            return render(request, 'dashboard/register.html',
                          {"result": result})
        return render(request, 'dashboard/register.html')
    except Exception as e:
        return HttpResponse("failed")
Example #8
0
def get_unanswered_question(expert_user_id):
    db = dbcon.get_db()
    db.execute(
        '''select id from questions 
                                 where answer_text is null and expert_id=%s''',
        (expert_user_id, ))

    question_result = db.fetchall()

    return len(question_result)
def display(
    request
):  #it passes all the data from database in form of the list in JSON form
    try:
        if request.method == 'POST':
            li = get_db()
            return HttpResponse(dumps(li), content_type='application/json')

    except Exception as e:
        return HttpResponse("failed")
Example #10
0
def get_current_user():
    user_result = None

    if 'user' in session:
        user = session["user"]

        db = dbcon.get_db()
        db.execute("select * from users where name = %s", (user, ))
        user_result = db.fetchone()

    return user_result
Example #11
0
def view(date):
    db = dbcon.get_db()

    # get the id of date
    db.execute("select * from log_date where entry_date=%s", (date, ))
    date_result = db.fetchone()

    if request.method == "POST":
        food_id = request.form.get("food-select")
        db.execute(
            "insert into food_date (food_id, log_date_id) values (%s,%s)", (
                food_id,
                date_result["id"],
            ))

    db.execute("select * from log_date where entry_date=%s", (date, ))
    result = db.fetchone()

    d = datetime.strptime(str(result["entry_date"]), "%Y-%m-%d")
    pretty_date = datetime.strftime(d, "%B %d, %Y")

    db.execute("select id, name from food")
    food_results = db.fetchall()

    db.execute(
        '''select food.name, food.protein, food.carbohydrates, food.fat, food.calories
                            from log_date
                            join food_date on food_date.log_date_id = log_date.id 
                            join food on food.id = food_date.food_id 
                            where log_date.entry_date = %s ''', (date, ))
    log_results = db.fetchall()

    totals = {}
    totals['protein'] = 0
    totals["carbohydrates"] = 0
    totals["fat"] = 0
    totals["calories"] = 0

    for food in log_results:
        totals["protein"] += food["protein"]
        totals["carbohydrates"] += food["carbohydrates"]
        totals["fat"] += food["fat"]
        totals["calories"] += food["calories"]

    return render_template("day.html",
                           entry_date=result["entry_date"],
                           pretty_date=pretty_date,
                           food_results=food_results,
                           log_results=log_results,
                           totals=totals)
Example #12
0
def question(question_id):
    user = get_current_user

    db = dbcon.get_db()
    db.execute(
        '''select questions.question_text, questions.answer_text, 
                                    asker.name as asker_name, expert.name as expert_name
                                from questions 
                                join users as asker on asker.id = questions.asked_by_id
                                join users as expert on expert.id = questions.expert_id 
                                where questions.id = %s''', (question_id, ))

    question_result = db.fetchone()

    return render_template("question.html", question=question_result)
Example #13
0
def users():
    user = get_current_user()

    if not user:
        return redirect(url_for('login'))

    if not user["admin"]:  #only admin can manage user
        return redirect(
            url_for("index",
                    error="You don't permission to access this page!"))

    db = dbcon.get_db()
    db.execute("select id, name, expert, admin from users")
    users_results = db.fetchall()

    return render_template("users.html", user=user, users=users_results)
Example #14
0
def ask():
    user = get_current_user()

    if not user:
        return redirect(url_for("login"))

    db = dbcon.get_db()

    if request.method == "POST":
        db.execute(
            '''insert into questions (question_text, asked_by_id, expert_id)
                      values (%s,%s,%s)''',
            (request.form["question"], user["id"], request.form["expert"]))

        return redirect(url_for("index"))

    db.execute("select id, name from users where expert = True")
    expert_result = db.fetchall()

    return render_template("ask.html", user=user, experts=expert_result)
Example #15
0
def promote(user_id):
    user = get_current_user()

    if not user:
        return redirect(url_for("login"))

    if not user["admin"]:  # only admin can promote user
        return redirect(
            url_for("index",
                    error="You don't permission to access this page!"))

    db = dbcon.get_db()
    db.execute("select expert from users where id = %s", (user_id, ))
    user_result = db.fetchone()

    if user_result["expert"]:  # if user expert, set user to non expert
        db.execute("update users set expert = False where id = %s",
                   (user_id, ))
    else:  # if user is not expert, set user to expert
        db.execute("update users set expert = True where id = %s", (user_id, ))

    return redirect(url_for("users"))
Example #16
0
def index():
    db = dbcon.get_db()

    if request.method == "POST":
        date = request.form["date"]  # the format will be yyyy-mm-dd

        dt = datetime.strptime(date, "%Y-%m-%d")
        database_date = datetime.strftime(dt, "%Y%m%d")

        db.execute("insert into log_date (entry_date) values (%s)",
                   (database_date, ))

    db.execute('''select log_date.entry_date, sum(food.protein) as protein, 
                        sum(food.carbohydrates) as carbohydrates , 
                        sum(food.fat) as fat, sum(food.calories) as calories
                    from log_date
                    left join food_date on food_date.log_date_id = log_date.id
                    left join food on food.id = food_date.food_id
                    group by log_date.id order by log_date.entry_date desc''')

    results = db.fetchall()

    date_result = []

    for r in results:
        single_date = {}

        single_date["entry_date"] = r["entry_date"]
        single_date["protein"] = r["protein"]
        single_date["carbohydrates"] = r["carbohydrates"]
        single_date["fat"] = r["fat"]
        single_date["calories"] = r["calories"]

        d = datetime.strptime(str(r["entry_date"]), '%Y-%m-%d')
        single_date["pretty_date"] = datetime.strftime(
            d, "%B %d, %Y")  #%B for month in word
        date_result.append(single_date)

    return render_template('home.html', results=date_result)
Example #17
0
def register():
    db = dbcon.get_db()

    if request.method == "POST":
        username = request.form["username"]
        password = request.form["password"]

        db.execute("select id from users where name=%s", (username, ))
        existing_user = db.fetchone()

        if existing_user:
            return render_template("register.html",
                                   error="User already exist!")

        hashed_password = generate_password_hash(password, method='sha256')
        db.execute(
            ''' insert into users (name, password, expert, admin)
                       values (%s, %s, %s, %s)''',
            (username, hashed_password, '0', '0'))

        session["user"] = username
        return redirect(url_for('index'))

    return render_template("register.html")
def update(request
           ):  #this method updates the entry in database using the object id
    try:

        if request.method == 'POST':
            customer_dict1 = dict()
            request_body = request.POST
            customer_dict1["_id"] = request_body.get("_id")
            customer_dict1["name"] = request_body.get("Name")
            customer_dict1["Mobile_num"] = request_body.get("Mobile_num")
            customer_dict1["Gender"] = request_body.get("Gender")
            result = database.customer_info.update(
                {"_id": ObjectId(customer_dict1["_id"])}, {
                    "$set": {
                        "name": customer_dict1["name"],
                        "Mobile_num": customer_dict1["Mobile_num"],
                        "Gender": customer_dict1["Gender"]
                    }
                })
            return HttpResponse("successfully updated")

            # customer_dict = dict()
            # request_body = request.POST

            # result = database.customer_info.insert(customer_dict)
            # result = str(result)
            # return HttpResponse(dumps({"_id":result,"name" : customer_dict['name'], "Mobile_num" : customer_dict['Mobile_num'],
            #                            "Gender" : customer_dict['Gender']}), content_type='application/json')
        else:
            result = get_db()
            print result
            return render(request, 'dashboard/register.html',
                          {"result": result})
        return render(request, 'dashboard/register.html')
    except Exception as e:
        return HttpResponse("failed")
Example #19
0
def login():
    db = dbcon.get_db()

    if request.method == "POST":
        username = request.form["username"]
        password = request.form["password"]

        db.execute("select id, name, password from users where name = %s ",
                   (username, ))
        user = db.fetchone()

        if not user:  # if the user is not in database
            return render_template("login.html",
                                   error="Username & Password not match!")

        if check_password_hash(user["password"], password):
            session["user"] = user["name"]
            return redirect(url_for("index"))

        else:  # if the password is wrong
            return render_template("login.html",
                                   error="Username & Password not match!")

    return render_template("login.html")