def get_rooms(obj): """get list of all rooms""" email = obj.get("email") pager = obj.get("pager") if not pager: pager = 0 qry = "where _id>?" val = [pager] if email: qry += " and u_email=?" val.append(email) res = [{ "rid": rm["_id"], "name": rm["name"], "email": rm["u_email"], "range": rm["weekRange"], "avail": rm["numAvailable"], "imgs": [ img["link"] for img in dbase.select("images", "where r_id=?", [rm["_id"]]) ] } for rm in dbase.select("rooms", qry, val)] return res
def room_edit(): """authenticated user can edit details of room""" usr = verify_user() if not usr: raise EXCEPTION_UNAUTHORIZED r_id = get_req("rm") name = get_req("name") vacy = get_req("vacancy") aval = get_req("weekRange") if not r_id: raise EXCEPTION_MALFORMED qry = "where _id=? and u_email=?" res = dbase.select("rooms", qry, [r_id, usr["email"]]) if not res: raise EXCEPTION_UNAUTHORIZED return room.update_room({ "rmId": r_id, "name": name, "vacy": vacy, "aval": aval })
def get_room(rm_id): """get room by the id""" res = dbase.select("rooms", "where _id=?", [rm_id]) if not res: raise EXCEPTION_ROOM_NOT_EXIST return res[0]
def del_img(obj): """remove image from room""" rm_id = obj.get("rm_id") img_id = obj.get("imgurId") if not rm_id or not get_room(rm_id) or not imgur: raise EXCEPTION_MALFORMED img = dbase.select("images", "where imgur=? and r_id=?", [img_id, rm_id]) if not img: raise EXCEPTION_IMAGE_NOT_EXIST img = img[0] return imgur.delete_img(img["dhash"])
def room_del_img(): """authenticated user can remove image from room""" usr = verify_user() if not usr: raise EXCEPTION_UNAUTHORIZED r_id = get_req("rm") img_id = get_req("imgId") if not r_id or not img_id: raise EXCEPTION_MALFORMED qry = "where _id=? and u_email=?" res = dbase.select("rooms", qry, [r_id, usr["email"]]) if not res: raise EXCEPTION_UNAUTHORIZED return room.del_img({"rmId": r_id, "imgurId": img_id})
def room_new_img(): """authenticated user can add img to room""" usr = verify_user() if not usr: raise EXCEPTION_UNAUTHORIZED r_id = get_req("rm") data = dict(bottle.request.files).get("img").file.read() if not r_id or not data: raise EXCEPTION_MALFORMED qry = "where _id=? and u_email=?" res = dbase.select("rooms", qry, [r_id, usr["email"]]) if not res: raise EXCEPTION_UNAUTHORIZED res = room.add_img({"rmId": r_id, "picData": data}) return "%s %s" % (res["link"], res["imgur"])
def get_template(key): """get text template from dbase""" return dbase.select("vals", "where key=?", [key])[0].get("val")
def is_admin(email): """check if an email has admin rights""" res = dbase.select("admins", "where email=?", [email]) return len(res) == 1
def get_users(): """return list of users""" return dbase.select("users")
def get_user(email): """get user object from db""" res = dbase.select("users", "where email=?", [email]) return res[0] if res else None