Exemple #1
0
def create_product(request):
    ImageFormSet = modelformset_factory(Media, form=ImageForm, extra=3)
    AttributeFormSet = modelformset_factory(PrAttribute,
                                            form=CreatePrAttribute,
                                            extra=3)
    CatAttr = CatAttribute.objects.all()

    if request.method == 'POST':

        ProductForm = CreateProductForm(request.POST)
        AttributeForm = AttributeFormSet(request.POST,
                                         request.FILES,
                                         queryset=PrAttribute.objects.none())
        formset = ImageFormSet(request.POST,
                               request.FILES,
                               queryset=Media.objects.none())

        if ProductForm.is_valid() and formset.is_valid(
        ) and AttributeForm.is_valid():
            product_form = ProductForm.save(commit=False)
            product_form.user = request.user

            product_form.save()

            for form in formset.cleaned_data:
                # this helps to not crash if the user
                # do not upload all the photos
                if form:
                    image = form['media_file']
                    photo = Media(product=product_form, media_file=image)
                    photo.save()
            # use django messages framework
            messages.success(request, "Yeeew, check it out on the home page!")
            for form in AttributeForm.cleaned_data:
                if form:
                    value = form['value']
                    attr = PrAttribute(product=product_form,
                                       value=value,
                                       name=14)
                    attr.save()
            return HttpResponseRedirect("/")
        else:
            print(ProductForm.errors, formset.errors, AttributeForm.errors)
    else:
        ProductForm = CreateProductForm()
        formset = ImageFormSet(queryset=Media.objects.none())
        AttributeForm = AttributeFormSet(queryset=PrAttribute.objects.none())
    return render(
        request, 'product/create_product.html', {
            'ProductForm': ProductForm,
            'formset': formset,
            'Attribute': AttributeForm,
            'CatAttr': CatAttr
        })
Exemple #2
0
 def post(self, request):
     form = CreateProductForm(request.POST)
     formset = ImagesFormSet(request.POST, request.FILES, queryset=ProductImage.objects.none())
     if form.is_valid() and formset.is_valid():
         product = form.save()
         for form in formset.cleaned_data:
             image = form.get('image')
             if image is not None:
                 pic = ProductImage(product=product, image=image)
                 pic.save()
         return redirect(product.get_absolute_url())
     else:
         print(form.errors, formset.errors)
Exemple #3
0
 def post(self, request, pk):
     product = get_object_or_404(Product, pk=pk)
     form = CreateProductForm(instance=product, data=request.POST)
     formset = ImagesFormSet(request.POST, request.FILES, queryset=product.images.all())
     if form.is_valid() and formset.is_valid():
         product = form.save()
         print(formset.deleted_forms)
         for form in formset.cleaned_data:
             image = form.get('image')
             if image is not None and not ProductImage.objects.filter(product=product, image=image).exists():
                 pic = ProductImage(product=product, image=image)
                 pic.save()
         for form in formset.deleted_forms:
             print(form.cleaned_data)
             image = form.cleaned_data.get('id')
             if image is not None:
                 image.delete()
         return redirect(product.get_absolute_url())
     else:
         print(form.errors, formset.errors)