Beispiel #1
0
def new_item():
    form = NewItemForm()
    form.category.choices = crud.get_categories()
    form.subcategory.choices = crud.get_subcategories()

    # POST
    if form.validate_on_submit() and \
            form.image.validate(form, extra_validators=(FileRequired(),)):
        filename = save_image_upload(form.image)

        # create data
        # escape()したデータはテンプレートでsafeフィルターを併用すること
        crud.create_item(
            title=escape(form.title.data),
            description=escape(form.description.data),
            price=float(form.price.data),
            image=filename,
            category_id=form.category.data,
            subcategory_id=form.subcategory.data,
        )

        # Redirect to some page
        flash(
            "Item {} has been successfully submitted".format(
                request.form.get("title")), "success")
        return redirect(url_for("home"))

    # GET
    return render_template("new_item.html", form=form)
def browse():
    """ load browse page  """
    categories = [{
        "name": category['category'],
        "badge_code": category['code'],
        "href": "/category/%s" % category['id']
    } for category in crud.get_categories()]
    return render_template('browse.html', items=categories)
Beispiel #3
0
def get_categories():
    """Get a list of category names from the database."""

    categories = []

    cat_data = crud.get_categories()

    for entry in cat_data:
        categories.append({'code': entry.cat_code, 'name': entry.name})

    return jsonify(categories)
Beispiel #4
0
def home():
    form = FilterForm(request.args, meta={"csrf": False})  # データ変更なしのためCSRF対策不要

    categories = crud.get_categories()
    categories.insert(0, (0, "---"))
    form.category.choices = categories

    subcategories = crud.get_subcategories()
    subcategories.insert(0, (0, "---"))
    form.subcategory.choices = subcategories

    if form.validate():
        items = crud.get_items(title=escape(form.title.data.strip()),
                               category_id=form.category.data,
                               subcategory_id=form.subcategory.data,
                               order=form.price.data)
    else:
        items = crud.get_items()

    # jQueryの場合は、"X-Requested-With: XMLHttpRequest"ヘッダーで判別する方法もある
    if request.args.get("ajax", type=int):  # MultiDict(TypeConversionDict)
        return render_template("_items.html", items=items)

    return render_template("home.html", items=items, form=form)
async def get_categories(skip: int = 0,
                         limit: int = 100,
                         db: Session = Depends(get_db)):
    return crud.get_categories(skip=skip, limit=limit, db=db)
Beispiel #6
0
def browse():
    """ load browse page  """
    return render_template('browse.html', categories=crud.get_categories())
Beispiel #7
0
def create_recipe():
    """Show create recipe page."""

    if request.method == "GET":

        cuisines = crud.get_cuisines()
        categories = crud.get_categories()
        ingredients = crud.get_ingredients()

        if session.get("user_id") == None:
            flash("Please log in to create a new recipe.")
            return redirect('/')

        return render_template("create_recipe.html",
                               cuisines=cuisines,
                               categories=categories,
                               ingredients=ingredients)

    elif request.method == "POST":

        kwargs = {
            "title": request.form.get("title"),
            "description": request.form.get("description"),
            "prep_time": request.form.get("prep_time"),
            "cook_time": request.form.get("cook_time"),
            "total_time": request.form.get("total_time"),
            "serving_qty": request.form.get("serving_qty"),
            "source": request.form.get("source"),
            "user_id": session.get("user_id"),
            "cuisine_id": request.form.get("cuisine_id")
        }

        recipe = crud.create_recipe(**kwargs)

        category_id = request.form.get("category_id")
        crud.create_recipe_category(recipe.recipe_id, category_id)

        # Get ingredient, measurement, and instruction items in a dictionary
        # If flat is False, returns all items as a list
        request_dict = request.form.to_dict(flat=False)

        for ingredient, measurement in zip(request_dict["ingredients"],
                                           request_dict["measurements"]):
            ingredient_object = crud.create_ingredient(ingredient)
            crud.create_recipe_ingredient(recipe.recipe_id,
                                          ingredient_object.ingredient_id,
                                          measurement)

        for step_num, instruction in enumerate(request_dict["instructions"]):
            crud.create_recipe_step(recipe.recipe_id, step_num + 1,
                                    instruction)

        # Get images from create recipe form
        for image in request_dict["images"]:
            image_object = crud.create_image(image)
            crud.create_recipe_image(recipe.recipe_id, image_object.image_id)

        if recipe:
            flash('Congrats! A new recipe was created.')

        else:
            flash('Error.')

        return redirect('/create_recipe')
Beispiel #8
0
def all_categories():
    """View all categories."""

    categories = crud.get_categories()

    return render_template('all_categories.html', categories=categories)
Beispiel #9
0
async def get_categories(db: Session = Depends(get_db)):
    return crud.get_categories(db)
Beispiel #10
0
def homepage():

    categories = crud.get_categories()
    return render_template('homepage.html', categories=categories)
 async def resolve_get_categories(root, info):
     try:
         categories = crud.get_categories(db=database.SessionLocal())
         return categories
     except:
         raise GraphQLError('Categories not found!')