コード例 #1
0
ファイル: views.py プロジェクト: Gairat13/python9_shop
 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)
コード例 #2
0
ファイル: views.py プロジェクト: Gairat13/python9_shop
 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)
コード例 #3
0
ファイル: views.py プロジェクト: mahdisaami/Shop
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
        })
コード例 #4
0
ファイル: views.py プロジェクト: abduadyl/python9_shop
 def get(self, request, pk):
     product = get_object_or_404(Product, pk=pk)
     form = CreateProductForm(instance=product)
     formset = ImagesFormSet(queryset=product.images.all())
     return render(request, 'product/edit.html', locals())
コード例 #5
0
ファイル: views.py プロジェクト: abduadyl/python9_shop
 def get(self, request):
     form = CreateProductForm()
     formset = ImagesFormSet(queryset=ProductImage.objects.none())
     return render(request, 'product/create.html', locals())
コード例 #6
0
def createProduct(request):
    if request.method == 'GET':
        form = CreateProductForm()
        return render(request, 'products/create.html', {'form': form})
    if request.method == 'POST':
        form = CreateProductForm(request.POST, request.FILES)
        if form.is_valid():
            if form.cleaned_data['ubicaciones'] == None and form.cleaned_data[
                    'nombreComercio'] == "":
                form.errors.nombreComercio = "El campo Nombre del Comercio no puede estar vacío si añade una ubicación nueva"
                return render(request, 'products/create.html', {'form': form})
            path = default_storage.save(
                form.cleaned_data['foto'].name,
                ContentFile(form.cleaned_data['foto'].read()))

            nombre = form.cleaned_data["nombre"]
            descripcion = form.cleaned_data["descripcion"]
            precio = form.cleaned_data["precio"]
            dieta = form.cleaned_data['dieta']
            ubicacion = form.cleaned_data['ubicaciones']
            categoria = form.cleaned_data['categoria']

            # Valores nutricionales
            calorias = form.cleaned_data['calorias']
            grasas = form.cleaned_data['grasas']
            grasas_saturadas = form.cleaned_data['grasas_saturadas']
            hidratos = form.cleaned_data['hidratos']
            azucares = form.cleaned_data['azucares']
            fibra = form.cleaned_data['fibra']
            proteinas = form.cleaned_data['proteinas']
            sal = form.cleaned_data['sal']
            mayorEdad = form.cleaned_data['mayorEdad']

            producto = Producto(titulo=nombre,
                                descripcion=descripcion,
                                foto=path,
                                precioMedio=precio,
                                estado="Pendiente",
                                calorias=calorias,
                                grasas=grasas,
                                grasas_saturadas=grasas_saturadas,
                                hidratos=hidratos,
                                azucares=azucares,
                                fibra=fibra,
                                proteinas=proteinas,
                                sal=sal,
                                mayorEdad=mayorEdad,
                                user=get_object_or_404(Perfil,
                                                       user=request.user))
            producto.save()

            for d in dieta:
                producto.dietas.add(get_object_or_404(Dieta, nombre=d))

            for c in categoria:
                producto.categorias.add(get_object_or_404(Categoria, nombre=c))

            # Por cada pequemercado crear tabla intermedia
            if (form.cleaned_data['nombreComercio'] != ''
                    and form.cleaned_data['lat'] != ''
                    and form.cleaned_data['lon'] != ''):
                ubicacion = Ubicacion(
                    nombre=form.cleaned_data['nombreComercio'],
                    latitud=form.cleaned_data['lat'],
                    longitud=form.cleaned_data['lon'])
                ubicacion.save()
                ubicacionProducto = UbicacionProducto(producto=producto,
                                                      ubicacion=ubicacion,
                                                      user=get_object_or_404(
                                                          Perfil,
                                                          user=request.user),
                                                      precio=precio)
                ubicacionProducto.save()

            # Por cada supermercado crear tabla intermedia
            else:
                ubicacionProducto = UbicacionProducto(
                    producto=producto,
                    ubicacion=ubicacion,
                    user=get_object_or_404(Perfil, user=request.user),
                    precio=form.cleaned_data['precio'])
                ubicacionProducto.save()

            producto.save()

            return redirect('product:list')
        else:
            return render(request, 'products/create.html', {'form': form})
コード例 #7
0
ファイル: views.py プロジェクト: mtschiggfrie/storewebsite
def products(request):
	queryset = CreateProduct.objects.all()
	deleteform = DeleteProductForm(request.POST or None)
	lookupform = ProductLookUpForm(request.POST or None)
	updateform = UpdateProductForm(request.POST or None)
	createform = CreateProductForm(request.POST or None)
	context = {
		"deleteform": deleteform,
		"queryset": queryset,
		"updateform": updateform,
		"lookupform": lookupform,
		"createform": createform,

	}

	if 'delete' in request.POST:
		if deleteform.is_valid():
			cd = deleteform.cleaned_data
			a = cd.get('deleteProduct')

			#need to make sure not used in last 30 days
			ContainsProductToDeleteQuery = Contains.objects.filter(orderId=a)
			LatestDate = CreateOrder.objects.filter(OrderId__in=ContainsProductToDeleteQuery).latest('date')
			DaysSinceLastOrder = datetime.date.today() - LatestDate.date

			if DaysSinceLastOrder.days > 30:
				CreateProduct.objects.filter(id=a).delete()
				context = {
					"deleteform": DeleteProductForm(request.POST or None),
					"queryset": queryset,
					"updateform": updateform,
					"lookupform": lookupform,
					"createform": createform,

				}

	if 'lookup' in request.POST:
		if lookupform.is_valid():
			cd = lookupform.cleaned_data
			a = cd.get('ProductId')
			if CreateProduct.objects.filter(id=a).exists():
				obj = CreateProduct.objects.get(id=a)
				updateform = UpdateProductForm(initial={'id': a, 'name': obj.name, 'price': obj.price, 'stock': obj.stock, 'description': obj.description, 'active': obj.active})
				context = {
					"deleteform": deleteform,
					"queryset": queryset,
					"updateform": updateform,
					"lookupform": ProductLookUpForm(request.POST or None),
					"createform": createform,

				}

	if 'update' in request.POST:
		if updateform.is_valid():
			cd = updateform.cleaned_data
			CreateProduct.objects.filter(id=cd.get('id')).update(name=cd.get('name'), price=cd.get('price'), stock=cd.get('stock'), description=cd.get('description'), active=cd.get('active'))
			context = {
				"deleteform": deleteform,
				"queryset": queryset,
				"updateform": UpdateProductForm(request.POST or None),
				"lookupform": lookupform,
				"createform": createform,

			}

	if 'create' in request.POST:
		if createform.is_valid():
			instance = createform.cleaned_data
			query = CreateProduct.objects.filter(name=instance.get('name')).count()
			if query == 0:
				entry = CreateProduct(name=instance.get('name'), price=instance.get('price'), stock=instance.get('stock'), description=instance.get('description'), active=instance.get('active'))
				entry.save()
				doesSupplierExist = Supplier.objects.filter(name=instance.get('supplier')).count()
				if doesSupplierExist > 0:
					supplierquery = Supplier.objects.get(name=instance.get('supplier'))
					addSupplys = Supplys(supplierId=supplierquery.id , productId=entry.id)
					addSupplys.save()
				else:
					newSupplier = Supplier(name=instance.get('supplier'))
					newSupplier.save()
					newSupplys = Supplys(supplierId=newSupplier.id , productId=entry.id)
					newSupplys.save()

			context = {
				"deleteform": deleteform,
				"queryset": queryset,
				"updateform": updateform,
				"lookupform": lookupform,
				"createform": CreateProductForm(request.POST or None),

			}


			

	return render(request, "manageproducts.html", context)