Exemplo n.º 1
0
def home():
    """Return URL for home.html"""
    categories = [(c.id, c.name) for c in Tag.query.all()]
    recipeForm = AddRecipe()
    recipeForm.tags.choices = categories

    tagForm = AddTag()

    tagListForm = TagList()
    tagListForm.tags.choices = categories

    recipes = Recipe.query.all()
    if tagListForm.validate_on_submit():
        if tagListForm.search.data:
            tags_id = tagListForm.tags.data
            recipes = []
            for tag_id in tags_id:
                match = db.session.query(Recipe).filter(
                    Recipe.tags.any(id=tag_id)).all()
                recipes += match
        if tagListForm.delete.data:
            tags_id = tagListForm.tags.data
            for tag_id in tags_id:
                Tag.query.filter_by(id=tag_id).delete()
            db.session.commit()
            return redirect(url_for('home'))
    if recipeForm.validate_on_submit():
        recipe = Recipe()
        recipe.add_recipe(recipeForm.data)
        #add_new_recipe(recipeForm)
        return redirect(url_for('home'))
    if tagForm.validate_on_submit():
        add_tag(tagForm.name.data)
        return redirect(url_for('home'))
    return render_template('home.html',
                           title='Home',
                           tagListForm=tagListForm,
                           recipes=recipes,
                           recipeForm=recipeForm,
                           tagForm=tagForm)
def add_recipe():
    '''

        On a POST request with /add_recipe will add a new recipe
            for post, please supply 'name', 'instruction', 'mealType' and 'ingredients'

    '''
    name = request.json.get('name')
    instruction = request.json.get('instruction')
    mealType = request.json.get('mealType')
    ingredients = request.json.get('ingredients')
    user_id = g.user.id
    recipe = Recipe.add_recipe(name, instruction, mealType, ingredients,
                               user_id)
    return {
        'recipe_id': recipe.id,
        'message': 'Recipe has been added',
        'statusCode': 201,
        'status': 'success'
    }