Пример #1
0
    def post(self, request, id):
        context = {}
        recipe = Recipe.objects.get(id=id)
        recipe_instance = recipe
        user = request.user
        IngredientFormSet = modelformset_factory(
            Ingredient, fields=('name', 'unit', 'quantity'), extra=1)
        ingredients = IngredientFormSet(
            queryset=Ingredient.objects.filter(recipe=recipe))
        if request.method == 'POST':
            formset = IngredientFormSet(request.POST)
            recipe_form = RecipeForm(request.POST, instance=recipe)
            if recipe_form.is_valid():
                recipe = recipe_form.save(commit=False)
                recipe.creator = user
                cleaned_time = clean_time(self, request)
                recipe.time = cleaned_time

                recipe.save()
            if formset.is_valid():
                forms = formset.save(commit=False)
                for form in forms:
                    form.recipe = recipe_instance
                    form.save()
                return redirect('main:recipe_details', id)

        return redirect('main/recipes.html')
Пример #2
0
    def post(self, request):
        context = {}
        # Makes a model formset based off of the Ingredient Model
        IngredientFormSet = modelformset_factory(
            Ingredient, fields=('name', 'unit', 'quantity'), extra=2)
        # sets the queryset to none so it isn't pulling in all ingredients
        ingredients = IngredientFormSet(queryset=Ingredient.objects.none())
        context['form'] = RecipeForm
        context['ingredients'] = ingredients
        if request.method == 'POST':
            formset = IngredientFormSet(request.POST)
            recipe_form = RecipeForm(request.POST)
            if recipe_form.is_valid():
                recipe = recipe_form.save(commit=False)
                recipe.creator = request.user

                cleaned_time = clean_time(self, request)
                recipe.time = cleaned_time

                recipe.save()
                if formset.is_valid():
                    forms = formset.save(commit=False)
                    for form in forms:
                        form.recipe = recipe
                        form.save()
                else:
                    context['ingredient_errors'] = formset.errors
                    formset = IngredientFormSet()
            else:
                context['form'] = recipe_form
                context['ingredients'] = formset
                context['recipe_errors'] = recipe_form.errors
        return render(request, 'main/create-recipe.html', context)
Пример #3
0
def update_recipe(request,pk):
    recipe=get_object_or_404(Recipe,pk=pk)
    if request.user == recipe.user:
        ImageFormSet=modelformset_factory(Image,form=ImageForm,max_num=5)
        recipe_form=RecipeForm(request.POST or None,instance=recipe)
        formset=ImageFormSet(request.POST or None,request.FILES or None,queryset=Image.objects.filter(recipe=recipe))
        if recipe_form.is_valid() and formset.is_valid():
            recipe=recipe_form.save()
            for form in formset:
                image=form.save(commit=False)
                image.recipe=recipe
                image.save()
            return redirect(recipe.get_absolute_url())

        return render(request,'update-recipe.html',locals())
    else:
        return HttpResponse('<h1>403 Forbidden</h1>')
Пример #4
0
    def test_invalid_duplicate_name(self):
        """
        Create recipe which will be occupying chosen name to trigger clean_recipe_name
        """

        User.objects.create_superuser('Necessary Evil', '*****@*****.**',
                                      'SomeP5WD-40')
        Recipe(recipe_name=self.default_data['recipe_name'],
               accepted=True,
               preparation_time=50,
               recipe_image='tree.JPG',
               directions='blablablab').save()
        form = RecipeForm(data=self.default_data,
                          files=self.files,
                          collect_ing=[])
        self.assertFalse(form.is_valid())
        self.assertIn(
            'This title has already been used. Please type another one.',
            dict(form.errors)['recipe_name'])
Пример #5
0
def add_recipe(request):
    ImageFormSet=modelformset_factory(Image,form=ImageForm,max_num=5)
    if request.method=='POST':
        recipe_form=RecipeForm(request.POST)
        formset=ImageFormSet(request.POST,request.FILES,queryset=Image.objects.none())
        if recipe_form.is_valid() and formset.is_valid() :
            recipe=recipe_form.save(commit=False)
            recipe.user = request.user
            recipe.save()
            for form in formset.cleaned_data:
                image=form['image']
                Image.objects.create(image=image,recipe=recipe)
            return redirect(recipe.get_absolute_url())
    else:
        recipe_form=RecipeForm()
        formset=ImageFormSet(queryset=Image.objects.none())

    return render(request,'add-recipe.html',locals())
Пример #6
0
 def test_valid_recipe_form(self):
     form = RecipeForm(data=self.default_data,
                       files=self.files,
                       collect_ing=[])
     self.assertTrue(form.is_valid())