Guest User

Untitled

a guest
Apr 20th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.47 KB | None | 0 0
  1. #dbhelper.py as below
  2. import pymongo
  3. from bson.objectid import ObjectId
  4.  
  5. DATABASE = "waitercaller"
  6.  
  7.  
  8. class DBHelper:
  9.  
  10. def __init__(self):
  11. client = pymongo.MongoClient()
  12. self.db = client[DATABASE]
  13.  
  14. def add_table(self, number, owner):
  15. new_id = self.db.tables.insert({"number": number, "owner": owner})
  16. return new_id
  17.  
  18. def update_table(self, _id, url):
  19. self.db.tables.update({"_id": _id}, {"$set": {"url": url}})
  20.  
  21. def get_tables(self, owner_id):
  22. return list(self.db.tables.find({"owner": owner_id}))
  23.  
  24. def get_table(self, table_id):
  25. return self.db.tables.find_one({"_id": ObjectId(table_id)})
  26.  
  27. def delete_table(self, table_id):
  28. self.db.tables.remove({"_id": ObjectId(table_id)})
  29.  
  30. def add_request(self, table_id, time):
  31. table = self.get_table(table_id)
  32. try:
  33. self.db.requests.insert({"owner": table['owner'], "table_number": table[
  34. 'number'], "table_id": table_id, "time": time})
  35. return True
  36. except pymongo.errors.DuplicateKeyError:
  37. return False
  38.  
  39. def get_requests(self, owner_id):
  40. return list(self.db.requests.find({"owner": owner_id}))
  41.  
  42. def delete_request(self, request_id):
  43. self.db.requests.remove({"_id": ObjectId(request_id)})
  44.  
  45. waitercaller.py
  46. ...
  47. @app.route("/")
  48. def home():
  49. #return "Under construction"
  50. #return render_template("home.html")
  51. #registrationform = RegistrationForm()
  52. return render_template("home.html", loginform=LoginForm(), registrationform=RegistrationForm())
  53.  
  54. @app.route("/dashboard")
  55. @login_required
  56. def dashboard():
  57. now = datetime.datetime.now()
  58. requests = DB.get_requests(current_user.get_id())
  59. for req in requests:
  60. deltaseconds = (now - req['time']).seconds
  61. req['wait_minutes'] = "{}.{}".format((deltaseconds/60), str(deltaseconds % 60).zfill(2))
  62. return render_template("dashboard.html", resolvesubmitform=ResolveForm(),requests=requests)
  63.  
  64. @app.route("/dashboard/resolve")
  65. @login_required
  66. def dashboard_resolve():
  67. form = ResolveForm(request.form)
  68. request_id = request.args.get("request_id")
  69. #if form.validate():
  70. DB.delete_request(request_id)
  71. return redirect(url_for('dashboard'))
  72. #return render_template("dashboard.html", resolvesubmitform=ResolveForm(),requests=DB.get_requests(request_id))
  73.  
  74. @app.route("/account")
  75. @login_required
  76. def account():
  77. tables = DB.get_tables(current_user.get_id())
  78. return render_template("account.html", createtableform=CreateTableForm(), tables=tables)
  79.  
  80. @app.route("/account/createtable", methods=["POST"])
  81. @login_required
  82. def account_createtable():
  83. form = CreateTableForm(request.form)
  84. if form.validate():
  85. tableid = DB.add_table(form.tablenumber.data, current_user.get_id())
  86. new_url = BH.shorten_url(config.base_url + "newrequest/" + str(tableid))
  87. DB.update_table(tableid, new_url)
  88. return redirect(url_for('account'))
  89. return render_template("account.html", createtableform=form, tables=DB.get_tables(current_user.get_id()))
  90.  
  91. @app.route("/account/deletetable")
  92. @login_required
  93. def account_deletetable():
  94. tableid = request.args.get("tableid")
  95. DB.delete_table(tableid)
  96. return redirect(url_for('account'))
  97.  
  98. @app.route("/newrequest/<tid>")
  99. def new_request(tid):
  100. DB.add_request(tid, datetime.datetime.now())
  101. return "Your request has been logged and a waiter will be with you shortly"
  102.  
  103.  
  104.  
  105. if __name__ == '__main__':
  106. app.run(port=5000, debug=True)
Add Comment
Please, Sign In to add comment