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")
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)
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")
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")
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")
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
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)
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)
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)
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)
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"))
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)
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")
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")