Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #dbhelper.py as below
- import pymongo
- from bson.objectid import ObjectId
- DATABASE = "waitercaller"
- class DBHelper:
- def __init__(self):
- client = pymongo.MongoClient()
- self.db = client[DATABASE]
- def add_table(self, number, owner):
- new_id = self.db.tables.insert({"number": number, "owner": owner})
- return new_id
- def update_table(self, _id, url):
- self.db.tables.update({"_id": _id}, {"$set": {"url": url}})
- def get_tables(self, owner_id):
- return list(self.db.tables.find({"owner": owner_id}))
- def get_table(self, table_id):
- return self.db.tables.find_one({"_id": ObjectId(table_id)})
- def delete_table(self, table_id):
- self.db.tables.remove({"_id": ObjectId(table_id)})
- def add_request(self, table_id, time):
- table = self.get_table(table_id)
- try:
- self.db.requests.insert({"owner": table['owner'], "table_number": table[
- 'number'], "table_id": table_id, "time": time})
- return True
- except pymongo.errors.DuplicateKeyError:
- return False
- def get_requests(self, owner_id):
- return list(self.db.requests.find({"owner": owner_id}))
- def delete_request(self, request_id):
- self.db.requests.remove({"_id": ObjectId(request_id)})
- waitercaller.py
- ...
- @app.route("/")
- def home():
- #return "Under construction"
- #return render_template("home.html")
- #registrationform = RegistrationForm()
- return render_template("home.html", loginform=LoginForm(), registrationform=RegistrationForm())
- @app.route("/dashboard")
- @login_required
- def dashboard():
- now = datetime.datetime.now()
- requests = DB.get_requests(current_user.get_id())
- for req in requests:
- deltaseconds = (now - req['time']).seconds
- req['wait_minutes'] = "{}.{}".format((deltaseconds/60), str(deltaseconds % 60).zfill(2))
- return render_template("dashboard.html", resolvesubmitform=ResolveForm(),requests=requests)
- @app.route("/dashboard/resolve")
- @login_required
- def dashboard_resolve():
- form = ResolveForm(request.form)
- request_id = request.args.get("request_id")
- #if form.validate():
- DB.delete_request(request_id)
- return redirect(url_for('dashboard'))
- #return render_template("dashboard.html", resolvesubmitform=ResolveForm(),requests=DB.get_requests(request_id))
- @app.route("/account")
- @login_required
- def account():
- tables = DB.get_tables(current_user.get_id())
- return render_template("account.html", createtableform=CreateTableForm(), tables=tables)
- @app.route("/account/createtable", methods=["POST"])
- @login_required
- def account_createtable():
- form = CreateTableForm(request.form)
- if form.validate():
- tableid = DB.add_table(form.tablenumber.data, current_user.get_id())
- new_url = BH.shorten_url(config.base_url + "newrequest/" + str(tableid))
- DB.update_table(tableid, new_url)
- return redirect(url_for('account'))
- return render_template("account.html", createtableform=form, tables=DB.get_tables(current_user.get_id()))
- @app.route("/account/deletetable")
- @login_required
- def account_deletetable():
- tableid = request.args.get("tableid")
- DB.delete_table(tableid)
- return redirect(url_for('account'))
- @app.route("/newrequest/<tid>")
- def new_request(tid):
- DB.add_request(tid, datetime.datetime.now())
- return "Your request has been logged and a waiter will be with you shortly"
- if __name__ == '__main__':
- app.run(port=5000, debug=True)
Add Comment
Please, Sign In to add comment