Exemple #1
0
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 "%")
    }
Exemple #3
0
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)
Exemple #4
0
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)
Exemple #5
0
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()
    }
Exemple #6
0
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
Exemple #8
0
    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
Exemple #9
0
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"))
Exemple #12
0
def action(db : DBConnector, metadata : dict):
    db.add_alert(metadata["login_state"].user, request.form["food"])
    
    return redirect(f"/alerts")
Exemple #13
0
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)