示例#1
0
 def post(self, request, variant_id):
     if request.is_ajax():
         data = request.POST
         if 'is_product_edited' in data and data['is_product_edited']:
             if not self.request.user.has_perm('product.change_product'):
                 return JsonResponse(
                     {'permission_denied': 'Permission denied'},
                     status=400,
                     safe=False)
             form = ProductForm(data)
             if form.is_valid():
                 cleaned_data = form.cleaned_data
                 Product.objects.update_product(data['id'], cleaned_data)
                 return JsonResponse("success", status=201, safe=False)
             else:
                 return JsonResponse(form.errors, status=400)
         elif 'is_variant_edited' in data and data['is_variant_edited']:
             if not self.request.user.has_perm(
                     'product.change_productvariant'):
                 return JsonResponse(
                     {'permission_denied': 'Permission denied'},
                     status=400,
                     safe=False)
             form = VariantForm(data)
             if form.is_valid():
                 cleaned_data = form.cleaned_data
                 ProductVariant.objects.update_variant(
                     variant_id, cleaned_data)
                 return JsonResponse("success", status=201, safe=False)
             else:
                 return JsonResponse(form.errors, status=400)
         else:
             if not self.request.user.has_perm(
                     'product.change_product'
             ) and self.request.user.has_perm(
                     'product.change_productvariant'):
                 return JsonResponse(
                     {'permission_denied': 'Permission denied'},
                     status=400,
                     safe=False)
             form = NewStockForm(data)
             if form.is_valid():
                 cleaned_data = form.cleaned_data
                 supplier = ProductVariant.objects.add_new_stock(
                     id=variant_id, form_data=cleaned_data)
                 date = datetime.strftime(supplier.date,
                                          '%d/%m/%Y %I:%M %p')
                 return JsonResponse(
                     {
                         'date': date,
                         'name': cleaned_data['supplier'].name,
                         'mobile_no': cleaned_data['supplier'].mobile_no,
                         'total_supplied': supplier.total_supplied,
                         'per_product_purchase_price':
                         supplier.per_product_purchase_price,
                         'address': cleaned_data['supplier'].address
                     },
                     status=201)
             else:
                 return JsonResponse(form.errors, status=400)
示例#2
0
def product_create(request, collection_id):
    collection = Collection.objects.get(id=collection_id)
    ChildProductFormSet = modelformset_factory(Product, form=ChildProductForm)
    if request.method == 'POST':
        product_form = ProductForm(request.POST)
        child_formset = ChildProductFormSet(request.POST, prefix='child')
        if product_form.data.has_key('has_options'):
            if child_formset.is_valid() and product_form.is_valid():
                check = True
            else:
                check = False
        else:
            if product_form.is_valid():
                check = True
            else:
                check = False
        if check:
            product = product_form.save(commit=False)
            product.collection = collection 
            product.category = collection.category
            product.brand = collection.brand
            product.save()
            product_form.save_m2m()

            if product.has_options:
                for (counter, form) in enumerate(child_formset.forms):
                    child = form.save(commit=False) 
                    child.parent = product
                    child.name = product.name
                    child.description = product.description
                    child.brand = product.brand
                    child.category = product.category
                    child.has_options = True
                    child.option_group = product.option_group
                    if not child.price:
                        child.price = product.price
                    child.collection = collection
                    child.slug = product.slug + '-' + child.option.name
                    child.save()
                    for gender in product.gender.all():
                        child.gender.add(gender)
            if 'add' in request.POST:   
                return redirect('staff-product-image', product.id)
            else:
                return redirect('staff-collection', collection_id=collection_id)
    else:
        product_form = ProductForm()
        child_formset = ChildProductFormSet(prefix='child', queryset=Product.objects.none())

    return render(request, 'staff/create-product.html', {
        'collection': collection,
        'product_form': product_form,
        'child_formset': child_formset,
    })
示例#3
0
    def post(self, request, *args, **kwargs):
        """
        Create product if form is valid
            or return status code 400
            and form with suggest errors.
        """

        form = ProductForm(request.POST)
        if form.is_valid():
            form.save()
            return render(
                request,
                self.__class__.TABLE_TEMPLATE,
                {
                    "object_list":
                    Product.objects.select_related("provider").all().order_by(
                        "created_at")
                },
            )

        return render(
            request,
            self.__class__.FORM_TEMPLATE,
            {"form": form},
            status=400,
        )
示例#4
0
文件: views.py 项目: jjacobson/Sahara
def update_item(request, pk):
    product = get_object_or_404(Product, pk=pk)
    user = product.seller
    if not user == request.user:
        return redirect('index')

    if request.method == "POST":
        form = ProductForm(request.POST, instance=product)
        if form.is_valid():
            updated_product = form.save(commit=False)
            updated_product.seller = request.user
            updated_product.save()
            return redirect('product', pk=updated_product.pk)
        else:
            print(request.POST)
    else:
        data = {
            'name': product.name,
            'price': product.price,
            "description": product.description,
            "height": product.height,
            "width": product.width,
            "depth": product.depth,
            "category": product.category
        }
        form = ProductForm(initial=data)

    return render(request, 'product/update-item.html', {
        'form': form,
        'product': product
    })
示例#5
0
def add_new_product(request):
    context = {}
    data = {}
    # if requets is post we need to store data to DB
    if request.method == 'POST':
        data = {}

        form = ProductForm(request.POST, request.FILES)
        if form.is_valid():
            new_product = form.save(commit=False)
            if 'image_name' in request.POST:
                file_name = str(request.POST['image_name'])
                image_path = os.path.join(settings.MEDIA_ROOT, file_name)
                with open(image_path, 'rb') as file_data:
                    data['file_name'] = image_path
                    new_product.product_image.save(file_name,
                                                   file_data,
                                                   save=True)
            new_product.save()
            new_product.product_parts.set(
                form.cleaned_data.get("product_parts"))
        else:
            context['form'] = form
            return render(request, 'product/add_new_product.html', context)
    form = ProductForm()
    context = {'form': form, 'page_title': 'Leadstracer-add new product '}

    return render(request, 'product/add_new_product.html', context)
示例#6
0
    def post(self, request, *args, **kwargs):
        category = Category.objects.all().order_by('order')

        a = AuctionForm(data=request.POST)
        p = ProductForm(data=request.POST, files=request.FILES)

        images = dict(request.FILES)

        if a.is_valid() and p.is_valid():
            auction = a.save(commit=False)
            product = p.save(commit=False)
            auction.owner = request.user
            auction.last_bet = auction.start_price
            auction.next_bet = auction.last_bet + decimal.Decimal(auction.start_price / 100 * auction.increment)

            auction.save()
            product.auction = auction
            product.save()

            for i in images:
                ImageModel.objects.create(image=images[i][0], product=product)

            return redirect('profile')

        return render(request, self.template_name, context={
            "category": category,
            "auctionform": a,
            "productform": p,

        })
示例#7
0
文件: views.py 项目: sebriois/bcg_lab
def item(request, product_id):
    product = get_object_or_404(Product, id = product_id)
    form = ProductForm(instance = product, provider = product.provider)
    url_args = request.GET.urlencode()

    if request.method == 'POST':
        data = request.POST.copy()
        url_args = data.pop('url_args')
        form = ProductForm(instance = product, data = data)
        if form.is_valid():
            if form.has_changed():
                orig_price = product.price
                product = form.save()
                if orig_price != product.price and product.has_expired():
                    product.expiry = datetime.strptime("31/12/%s" % timezone.now().year, "%d/%m/%Y")
                    product.save()

                info_msg(request, u"Produit modifié avec succès.")
            return redirect(reverse('product:list') + '?' + url_args[0])

    product_type = ContentType.objects.get_for_model(Product)
    return render(request, 'product/item.html', {
        'product': product,
        'product_type': product_type.id,
        'form': form,
        'url_args': url_args
    })
示例#8
0
文件: views.py 项目: sebriois/bcg_lab
def new(request):
    provider = None
    form = ProductForm()

    if request.method == 'GET':
        provider_id = request.GET.get('provider_id', None)
        if provider_id:
            provider = get_object_or_404(Provider, id = provider_id)
            form = ProductForm(provider = provider)
        elif request.user.has_perm("order.custom_view_local_provider"):
            provider = get_object_or_404(Provider, name = 'MAGASIN', is_local = True)
            form = ProductForm(provider = provider)
    elif request.method == 'POST':
        if 'provider' in request.POST and request.POST['provider']:
            provider = get_object_or_404(Provider, id = request.POST['provider'])
            form = ProductForm(provider = provider, data = request.POST)
        else:
            provider = None
            form = ProductForm(data = request.POST)

        if form.is_valid():
            p = form.save()
            if p.provider.reseller:
                p.origin = p.provider.name
                p.provider = p.provider.reseller
                p.save()

            info_msg(request, u"Produit ajouté avec succès.")
            return redirect(reverse('product:list') + "?reference=%s&connector=OR" % p.reference)

    return render(request, 'product/new.html', {
        'provider': provider,
        'form': form
    })
示例#9
0
 def post(self, request):
     form = ProductForm(data=request.POST, files=request.FILES)
     if form.is_valid():
         form.save()
         return redirect('/manager/')
     else:
         return HttpResponse("Sai cu phap")
示例#10
0
def product_add(request):
    form = ProductForm(request.POST or None)
    if form.is_valid():
        form.save()
        return HttpResponseRedirect(reverse("product:product_list"))
    context = {"form": form}
    return render(request, "form.html", context)
示例#11
0
def item(request, product_id):
    product = get_object_or_404(Product, id=product_id)
    if request.method == 'GET':
        form = ProductForm(instance=product, provider=product.provider)
        url_args = request.GET.urlencode()
    elif request.method == 'POST':
        data = request.POST.copy()
        url_args = data.pop('url_args')
        form = ProductForm(instance=product, data=data)
        if form.is_valid():
            if form.has_changed():
                orig_price = product.price
                product = form.save()
                if orig_price != product.price and product.has_expired():
                    product.expiry = datetime("31/12/%s" % datetime.now().year,
                                              "%d/%m/%Y")
                    product.save()

                info_msg(request, u"Produit modifié avec succès.")
            return redirect(reverse('product_index') + '?' + url_args[0])

    product_type = ContentType.objects.get_for_model(Product)
    return render(
        request, 'product/item.html', {
            'product': product,
            'product_type': product_type.id,
            'form': form,
            'url_args': url_args
        })
示例#12
0
def update(request, id):
    product = Product.objects.get(id=id)
    form = ProductForm(request.POST, instance=product)
    if form.is_valid():
        form.save()
        return redirect("/show")
    return render(request, 'edit.html', {'product': product})
示例#13
0
def createproduct(request):
    product_form = ProductForm()
    if request.method == "POST":
        form = ProductForm(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(reverse('product:productlist'))
    return render(request, 'product/createview.html', {"form":product_form})
示例#14
0
def createProduct(request):
    form = ProductForm(data=request.POST or None, files=request.FILES or None)
    if request.method == "POST":
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/list_edit/')

    return render(request, 'product_create.html', {'form': form})
示例#15
0
 def post(self, request):
     form = ProductForm(data=request.POST, files=request.FILES)
     form.price = request.POST["price"]
     if form.is_valid():
         form.save()
         return redirect('manager:product_control')
     else:
         return HttpResponse("Sai cu phap")
示例#16
0
def save_product(request):
    form = ProductForm(request.POST or None, request.FILES or None)
    if form.is_valid():
        product = form.save(commit=False)
        product.user = request.user
        product.save()
        return HttpResponseRedirect(reverse("product:product_list"))
    context = {"form": form}
    return render(request, "form.html", context)
示例#17
0
def create(request):
    form = ProductForm(request.POST or None)
    if form.is_valid():
        post = form.save(commit=False)
        post.slug = slugify(post.name)
        post.save()
        form = ProductForm()

    return render(request, "form.html", {'form': form, 'name': "Produto"})
示例#18
0
def edit_product(request, id):
    product = get_object_or_404(Product, id=id)
    form = ProductForm(request.POST or None,
                       request.FILES or None,
                       instance=product)
    if form.is_valid():
        form.save()
        return HttpResponseRedirect(reverse("product:product_list"))
    context = {"form": form}
    return render(request, "form.html", context)
示例#19
0
def add(request):
    if request.method == 'POST':
        form = ProductForm(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/')
    else:
        form = ProductForm()

    return render(request, 'product/form.html', {'form': form})
示例#20
0
    def post(self, request, action_id):
        if action_id == 1:
            form = ProductForm(data=request.POST, files=request.FILES)
        if action_id == 2:
            form = CategoryForm(request.POST)

        if form.is_valid():
            form.save()
            return redirect('http://127.0.0.1:8000/manage/')
        else:
            return HttpResponse("Sai cu phap")
示例#21
0
def add_product(request):
    form = ProductForm(data=request.POST or None, files=request.FILES or None)
    if request.method == "POST":
        if form.is_valid():
            product = form.save()
            messages.success(
                request, f"{product.title} is added successfully.")
            return redirect(product.get_absolute_url())

    context = {'form': form}
    return render(request, 'dashboard/add_product.html', context)
示例#22
0
def productedit(request, pk):
    product = Product.objects.get(id=pk)
    form = ProductForm(instance=product)
    if request.method == 'POST':
        form = ProductForm(request.POST, instance=product)
        if form.is_valid():
            form.save()
            return redirect('product')

    context = {'form': form, 'product': product}
    return render(request, 'edit.html', context)
示例#23
0
def add_view(request, *args, **kwargs):
    if request.method == 'POST':
        form = ProductForm(data=request.POST, files=request.FILES)
        if form.is_valid():
            form = form.save(commit=False)
            form.company = request.user.seller_set.all().first()
            form.save()
            return redirect('seller:products')
    else:
        form = ProductForm()
    return render(request, 'sellers/add_product.html', {'form': form})
    def post(self, *args, **kwargs):
        context = {}

        form = ProductForm(self.request.POST, self.request.FILES)
        if form.is_valid():
            new_product = form.save()
            new_product.user = self.request.user
            new_product.save()
            context["products"] = Product.objects.filter(availability=True,
                                                         delete=False)
            context["message"] = "Товар добавлен"
            return render(self.request, "product/products.html", context)
示例#25
0
def product_creation(request):
    if request != 'POST':
        form = ProductForm()
    else:
        # post has been filled, ready for processing
        form = ProductForm(request.POST, request.FILES)

        if form.is_valid():
            form.save()

    context = {"form": form}
    return render(request, 'product/product_creation.html', context)
示例#26
0
def product(request):
    if request.method == "POST":
        form = ProductForm(request.POST)
        if form.is_valid():
            try:
                form.save()
                return redirect('/show')
            except:
                pass
    else:
        form = ProductForm()
    return render(request,'add_product.html',{'form':form})
示例#27
0
def add(request):
    if request.method == 'POST':
        form = ProductForm(request.POST)
        if form.is_valid():
            form.save()
            return render(request, 'product/goods-list.html', {'products': Product.objects.all()})
        else:
            pass
    else:
        form = ProductForm()
    content = {'form': form}
    return render(request, 'product/good-create.html', content)
示例#28
0
 def post(self, request):
     """Save product and redirect to product list."""
     form = ProductForm(request.POST)
     if form.is_valid():
         new_product = form.save()
         return redirect('product:product_images_add',
                         product_id=new_product.id)
     else:
         return render(request, 'product/add-product.html', {
             'form': form,
             'func': 'Add'
         })
示例#29
0
 def test_invalid_form(self):
     image = InMemoryUploadedFile(
         StringIO(TEST_IMAGE),
         field_name='image',
         name='1.JPG',
         content_type='image/jpg',
         size=len(TEST_IMAGE),
         charset='utf-8',
     )
     data ={'name':'','description':'descripcion','price':'100.00'}
     form = ProductForm(data=data, files={'image':image})
     self.assertFalse(form.is_valid())
示例#30
0
def product(request):
    if request.method == "POST":
        form = ProductForm(request.POST)
        if form.is_valid():
            try:
                form.save()
                return redirect('/show')
            except:
                pass

    form = ProductForm()
    csrfContext = RequestContext(request)
    return render(request, 'index_product.html', {'form': form}, csrfContext)
示例#31
0
def productCreate(request):
    template = 'product/productCreateUpdate.html'
    if request.method == 'GET':
        return render(request, template, {'productForm': ProductForm()})

    # POST
    productForm = ProductForm(request.POST)
    if not productForm.is_valid():
        return render(request, template, {'productForm': productForm})

    productForm.save()
    messages.success(request, '產品已新增')
    return redirect('product:product')
示例#32
0
def add_to_cart(request, product_id):
	products = Product.objects.all()
	product = get_object_or_404(products, pk=product_id)
	response = views.product(request, product.get_slug,  product_id)
	cart = get_or_create_cart(request)
	form = ProductForm(request.POST)
	if form.is_valid():
		quantity = form.cleaned_data['quantity']
		if not form.cleaned_data['quantity']:
			quantity = 1
		save_to_cart(cart, product, quantity)
	if not request.user.is_authenticated:
		set_cart_cookie(cart, response)
	return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
示例#33
0
def edit(request, id):
    product = Product.objects.get(id=id)
    if request.POST:
        form = ProductForm(request.POST, instance=product)
        if form.is_valid():
            post = form.save(commit=False)
            post.slug = slugify(post.name)
            post.save()
            return redirect(product.get_absolute_url())
    else:
        form = ProductForm(instance=product)
    request.session['product_id'] = id

    return render(request, "form.html", {'form': form, 'name': "Produto"})
示例#34
0
文件: views.py 项目: jjacobson/Sahara
def sell_item(request):
    if request.method == "POST":
        form = ProductForm(request.POST)
        if form.is_valid():
            product = form.save(commit=False)
            product.seller = request.user
            product.save()
            return redirect('product', pk=product.pk)
        else:
            print(form.errors)
            print(request.POST)
    else:
        form = ProductForm()
    return render(request, 'product/list-item.html', {'form': form})
示例#35
0
def add_product(request):
	user = request.user
	merchant = Merchant.objects.get(user=user)
	if request.method == 'POST':
		form = ProductForm(request.POST, request.FILES)
		if form.is_valid():
			product = Product(merchant=merchant,name=form.cleaned_data['name'],
							  category=form.cleaned_data['category'],
							  selling_price=form.cleaned_data['selling_price'],
							  original_price=form.cleaned_data['original_price'],
							  quantity=form.cleaned_data['quantity'],
							  photo = request.FILES['photo'])
			product.save()
			return HttpResponseRedirect('/merchant')

		else:
			pass
	else:
		form = ProductForm()
	variables = RequestContext(request, {'form': form})
	return render_to_response('product/add_product.html', variables)
示例#36
0
def product_edit(request, collection_id, product_id):
    from django.http import HttpResponse
    product = get_object_or_404(Product, id=product_id)
    collection = Collection.objects.get(id=collection_id)
    children = Product.objects.filter(parent=product)
    if children:
        ChildProductFormSet = modelformset_factory(Product, form=ChildProductForm, extra=0)
    else:
        ChildProductFormSet = modelformset_factory(Product, form=ChildProductForm)

    product_form = ProductForm(request.POST or None, instance=product)
    if request.method == 'POST':
        child_formset = ChildProductFormSet(request.POST, prefix='child')

        if product_form.data.has_key('has_options'):
            if child_formset.is_valid() and product_form.is_valid():
                check = True
            else:
                check = False
        else:
            if product_form.is_valid():
                check = True
            else:
                check = False

        if check:
            product = product_form.save()
            if product.has_options:
                for (counter, form) in enumerate(child_formset.forms):
                    child = form.save(commit=False)
                    child.parent = product
                    child.name = product.name
                    child.description = product.description
                    child.brand = product.brand
                    child.category = product.category
                    child.has_options = True
                    child.option_group = product.option_group
                    if not child.price:
                        child.price = product.price
                    child.collection = collection
                    child.slug = product.slug + '-' + child.option.name
                    child.save()
                    child.gender.clear()
                    for gender in product.gender.all():
                        child.gender.add(gender)

                    children = children.exclude(id=child.id)

                children.delete()

            if 'add' in request.POST:   
                return redirect('staff-product-image', product.id)
            else:
                return redirect('staff-collection', collection_id)

    child_formset = ChildProductFormSet(prefix='child', queryset=children)

    return render(request, 'staff/edit-product.html', {
        'collection': collection,
        'product_form': product_form,
        'child_formset': child_formset,
    })