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())
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>')
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'])
def test_valid_recipe_form(self): form = RecipeForm(data=self.default_data, files=self.files, collect_ing=[]) self.assertTrue(form.is_valid())