def action(db: DBConnector, metadata: dict): serves_id = request.form["serves_id"] db.add_review(metadata["login_state"].user, request.form["rating"], request.form["comment"], serves_id) return redirect(f"/reviews/specific/{serves_id}")
def page_data(db: DBConnector, metadata: dict): return { "alert_subscriptions": db.alerts_for(metadata["login_state"].user), "all_menu_items": db.all_menu_items(("%" + request.args["search"] + "%") if "search" in request.args else "%") }
def preempt(db: DBConnector, metadata: dict, serves_id: int): served_item = db.served_item(serves_id) if served_item is None: return abort(404) if get_page() > 1 and len( page_of(db.reviews_for(served_item), get_page())[1]) == 0: return abort(404)
def preempt(db: DBConnector, metadata: dict): serves_id = request.form["serves_id"] if db.served_item( serves_id) is None or metadata["login_state"].user is None: return abort(404) if db.exists_review(serves_id, metadata["login_state"].user): return redirect( f"/reviews/specific/{serves_id}?warning=already_reviewed", 301)
def page_data(db: DBConnector, metadata: dict, serves_id: int): served_item = db.served_item(serves_id) assert served_item is not None reviews = db.reviews_for(served_item) page_size, paginated_reviews = page_of(reviews, get_page()) return { "served_item": served_item, "reviews": paginated_reviews, "total_num_pages": ceil(len(reviews) / page_size), "page": get_page() }
def preempt(db: DBConnector, metadata: dict): if metadata["login_state"].user is None or metadata[ "login_state"].user.role != "admin" or ( "inventory" in request.args and db.inventory_item(request.args["inventory"]) is None): return abort(404) return
def preempt(db: DBConnector, metadata: dict): review_id = request.form["review_id"] if metadata["login_state"].user is None or metadata[ "login_state"].user.role != "admin" or not db.exists_review_with_id( review_id): return abort(404) return None
def __login_from_cas_ticket(self, db: DBConnector, ticket: str): verState = self.client.verify_ticket(ticket) #if the login is valid, then use what CAS gave us to determine the current user and store it if verState[0] is not None: db_user = db.user_for(verState[1]["user"]) if db_user is None: self.user = objects.User(verState[1]["user"], verState[1]["displayName"]) self.user.add_to_db(db) else: self.user = db_user #since this could be the first time the user logs in, add an entry to them in the database if there isn't already one session[USER_SESSION_KEY] = self.user.to_dictionary() return
def page_data(db: DBConnector, metadata: dict): date = funcs.date_from_request() review_stats = db.average_daily_and_total_ratings(date) menu_item_names = [ "%s (%s, %s)" % (review_stat[0].menu_item.name, review_stat[0].dining_hall.name, review_stat[0].meal) for review_stat in review_stats ] dailies = [review_stat[0].average_rating for review_stat in review_stats] totals = [review_stat[1] for review_stat in review_stats] data = { "date": date, "menu_items": json.dumps(menu_item_names, use_decimal=True), "daily_food_ratings": json.dumps(dailies, use_decimal=True), "historical_food_ratings": json.dumps(totals, use_decimal=True), "all_inventory_items": db.all_inventory_items() } if "inventory" in request.args: data["hours"] = list(range(24)) inventory_item = db.inventory_item(request.args["inventory"]) historical_availibilities = db.average_inventory_availibility_by_hour( inventory_item) daily_availibilities = db.daily_inventory_availibility_by_hour( inventory_item, date) data["historical_availabilities"] = {} data["daily_availabilities"] = {} for dining_hall in db.dining_halls(): data["historical_availabilities"][dining_hall] = [ hourly_availibility_from_list(historical_availibilities, dining_hall, hour) for hour in range(0, 24) ] data["daily_availabilities"][dining_hall] = [ hourly_availibility_from_list(daily_availibilities, dining_hall, hour) for hour in range(0, 24) ] return data
def action(db: DBConnector, metadata: dict, alert_id: int): db.remove_alert(alert_id, metadata["login_state"].user) return redirect(f"/alerts")
def action(db: DBConnector, metadata: dict): review_id = request.form["review_id"] db.delete_review(review_id) return redirect(request.headers.get("Referer"))
def action(db : DBConnector, metadata : dict): db.add_alert(metadata["login_state"].user, request.form["food"]) return redirect(f"/alerts")
def preempt(db : DBConnector, metadata : dict): if db.menu_item(request.form["food"]) is None or db.menu_item(request.form["food"]) is None or metadata["login_state"].user is None: return abort(404)