def post(self, request, born): if born == 'phone': form = PhoneCreationForm(request.POST or None, request.FILES or None) elif born == 'accessory': form = AccessoryCreationForm(request.POST or None, request.FILES or None) else: raise PermissionDenied() formset = ProductImageFormset(request.POST or None, request.FILES or None) if form.is_valid() and formset.is_valid(): product = form.save(commit=False) product.main_image = request.FILES['main_image'] product.category = born product.save() print(formset.total_form_count()) print(formset.initial_form_count()) for f in formset: try: image = ProductImage(product=product, image=f.cleaned_data['image']) image.save() except KeyError as e: break except Exception as e: raise e return redirect('administrations:admin-products')
def update_product(request, id): instance = get_object_or_404(Product, pk=id) id_list=[] if not request.user.is_superuser: return redirect('/products') if request.method == 'POST': form = ProductUpdateForm(data=request.POST,instance=instance) if form.is_valid(): product = form.save() product_image = ProductImage(image=request.POST['image'], product=product) print('image',type(product_image)) if len(product_image.image)>0: product_image.save() for x in ProductImage.objects.filter(product_id=id): id_list.append(x.id) if len(id_list)==3: min_id=min(id_list) old_image=get_object_or_404(ProductImage, pk=min_id) old_image.delete() return redirect('product_details', id=id) else: form = ProductUpdateForm(instance=instance) return render(request,'product/update_product.html',{ 'form': form, 'id': id })
def _upload(request): product_id = request.POST.get('product_id', None) product = get_object_or_404(Product, id=product_id) uploaded_file = request.FILES.get('file', None) chunk = request.POST.get('chunk', '0') chunks = request.POST.get('chunks', '0') name = request.POST.get('name', '') if not name : name = uploaded_file.name if uploaded_file: filepath = '%s/%s' % (settings.FILE_UPLOAD_TEMP_DIR, name) filepath = filepath.encode('utf-8') with open(filepath, ('wb' if chunk == '0' else 'ab')) as f: for content in uploaded_file.chunks(): f.write(content) if int(chunk) + 1 >= int(chunks): f = open(filepath) image_file = ContentFile(f.read()) f.close() image = ProductImage() image.product = product image.image.save(name, image_file, save=False) image.small_width = image.image['small'].width image.small_height = image.image['small'].height image.medium_width = image.image['medium'].width image.medium_height = image.image['medium'].height image.large_width = image.image['large'].width image.large_height = image.image['large'].height image.save() return JsonResponse({'success': True, 'image_id': image.id, 'image_url': image.image['small'].url }) return JsonResponse({'success': True})
def create_product(request): if request.method == 'POST': form = ProductCreateForm(data=request.POST) if form.is_valid(): product = form.save() product_image = ProductImage(image=request.POST['image'], product=product) product_image.save() return redirect('product_index') else: form = ProductCreateForm() return render(request, 'product/create_product.html', {'form': form})
def create_game(request): if request.method == "POST": form = ProductCreateForm(data=request.POST) if form.is_valid(): product = form.save() product_image = ProductImage(image=request.POST['image'], product=product) product_image.save() return redirect('products/' + str(product.type_id)) else: form = ProductCreateForm() return render(request, 'admin/create_game.html', {'form': form})
def edit_product(request, id): instance = get_object_or_404(Product, pk=id) if request.method == 'POST': form = ProductUpdateForm(data=request.POST, instance=instance) if form.is_valid(): product = form.save() product_image = ProductImage(image=request.POST['image'], product=product) if product_image.image is not '': product_image.save() else: form = ProductUpdateForm(instance=instance) return render(request, 'admin/edit_product.html', {'form': form, 'id': id})
def create_product(request): if request.method == 'POST': form = ConsoleCreateForm(data=request.POST) if form.is_valid(): console = form.save() console_image = ProductImage(image=request.POST['image'], console=console) console_image.save() return redirect('console-index') else: form = ConsoleCreateForm() return render(request, 'console/create_console.html', { 'form': form })
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)
def add_product(request): user = request.user # only verified sellers can add products if not hasattr(user, 'seller') or not user.seller.is_verified: messages.info(request, 'You must be a verified seller to add products!') return redirect('home') if request.method == 'POST': form = ProductCreationForm(request.POST, request.FILES) formset = VariantFormset(request.POST, request.FILES) if formset.is_valid() and form.is_valid(): # tags = form.cleaned_data['tag_s'] # print(tags) product = form.save(commit=False) product.seller = user.seller product.save() for file in request.FILES.getlist('images'): instance = ProductImage( product=product, image=file ) instance.save() if product.has_variants: # has_variants => multiple saved for variant_form in formset: variant = variant_form.save(commit=False) variant.product = product variant.save() else: variant = formset[0].save(commit=False) variant.product = product variant.save() return redirect('tags', product.pk) else: form = ProductCreationForm() qs = Variant.objects.none() formset = VariantFormset(queryset=qs) context = { 'form': form, 'formset': formset, } return render(request, 'product/add_product.html', context)
def create_product(request): if not request.user.is_superuser: # Gaetud sett 404 sidu her og alstadar i svona return redirect('/products') if request.method == 'POST': form = ProductCreateForm(data=request.POST) if form.is_valid(): product = form.save() product_image = ProductImage(image = request.POST['image'], product=product) product_image.save() return redirect('/products') else: form = ProductCreateForm(data=request.GET) return render(request, 'product/create_product.html', { 'form': form })
def add_product_image(request): uid = request.session.get('_auth_user_id') product_id = request.POST.get('product_id') try: product = Product.objects.get(pk=int(product_id)) form = ProductImageForm(request.POST, request.FILES) if form.is_valid(): json = [] for image in request.FILES.values(): instance = ProductImage(product_photo=image) instance.product = product instance.save() json.append(instance.get_detailed_json()) return JsonResponse({'images': json}) else: context = {'success': False} except ObjectDoesNotExist: context = {'success': False} return JsonResponse(context)
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)
def manage_images(request, pk): user = request.user try: product = Product.objects.get(pk=pk) images = product.productimage_set.all() except: return HttpResponseNotFound('Page not found') if not (hasattr(user, 'seller') and product.seller == user.seller): return HttpResponseNotAllowed('You are not allowed to view this page.') if request.method == 'POST': for file in request.FILES.getlist('images'): instance = ProductImage( product=product, image=file ) instance.save() context = { 'product': product, 'images': images } return render(request, 'product/manage_images.html', context)