Beispiel #1
0
def update_menu_item(restaurant_id, menu_item_id):
    if not g.is_admin:
        raise UserNotAdmin()
    menu_item = db.session.query(MenuItem).get_or_404(
        (restaurant_id, menu_item_id))
    for k, v in request.form.items():
        setattr(menu_item, k, v)
    db.session.commit()
    return jsonify(marshmallow_schema.MenuItemSchema().dump(menu_item).data)
Beispiel #2
0
def get_pending_images():
    if not g.is_admin:
        raise UserNotAdmin()

    return jsonify([{
        "item":
        marshmallow_schema.MenuItemSchema().dump(item).data,
        "image":
        marshmallow_schema.ItemImageSchema().dump(image).data,
        "submitter":
        marshmallow_schema.FBUserSchemaNoSubmissions().dump(submitter).data
    } for item, image, submitter in database.get_all_pending_images()])
Beispiel #3
0
def query_items(query, pagination_limit):
    item_image_pairs = [
        {
            "item":
            marshmallow_schema.MenuItemSchema().dump(item).data,
            "image":
            marshmallow_schema.ItemImageSchema().dump(image).data,
            "restaurant":
            marshmallow_schema.RestaurantSchema().dump(restaurant).data
        } for item, image, restaurant in search.find_menu_item(query)
        if approved_or_admin(image) and approved_or_admin(restaurant)
    ]
    if pagination_limit:
        return paginate_results(item_image_pairs, int(pagination_limit))
    else:
        return item_image_pairs
Beispiel #4
0
def get_recently_updated_images():
    if not g.is_admin:
        raise UserNotAdmin()

    if "updated_since" in request.args:
        updated_since = datetime.datetime.utcfromtimestamp(
            int(request.args["updated_since"]))
    else:
        updated_since = None

    return jsonify([{
        "item":
        marshmallow_schema.MenuItemSchema().dump(item).data,
        "image":
        marshmallow_schema.ItemImageSchema().dump(image).data,
        "submitter":
        marshmallow_schema.FBUserSchemaNoSubmissions().dump(submitter).data
    } for item, image, submitter in database.get_recently_updated_images(
        updated_since)])
Beispiel #5
0
def get_restaurant_menu_items(restaurant_id):
    menu_sections = database.get_restaurant_menu_items(restaurant_id)
    section_list = [(menu_section.name if menu_section is not None else '', [
        (marshmallow_schema.MenuItemSchema().dump(item).data,
         marshmallow_schema.ItemImageSchema().dump(image).data)
        for item, image in item_list if approved_or_admin(image)
    ]) for menu_section, item_list in menu_sections]
    grouped_sections = []
    for menu_section, item_list in section_list:
        grouped_items = {}
        for item, item_image in item_list:
            if item['name'] in grouped_items:
                grouped_items[item['name']]['item_images'].append(item_image)
            else:
                grouped_items[item['name']] = {
                    'item': item,
                    'item_images': [item_image]
                }
        grouped_sections.append([menu_section, list(grouped_items.values())])
    return grouped_sections
Beispiel #6
0
def upload_menu_item(restaurant_id):
    '''insert a new menu item for a restaurant'''
    menu_item = database.insert_new_item(
        restaurant_id, submitter_id=submitter_id_or_error(),
        **request.form)  # TODO request level form validation
    return jsonify(marshmallow_schema.MenuItemSchema().dump(menu_item).data)