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 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 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 product_image_create(request, product_pk): product = get_object_or_404(Product, pk=product_pk) product_image = ProductImage(product=product) form = ProductImageForm(request.POST or None, request.FILES or None, instance=product_image) if form.is_valid(): product_image = form.save() msg = pgettext_lazy('Dashboard message', 'Added image %s') % (product_image.image.name, ) messages.success(request, msg) return redirect('dashboard:product-image-list', product_pk=product.pk) ctx = {'form': form, 'product': product, 'product_image': product_image} return TemplateResponse(request, 'dashboard/product/product_image/form.html', ctx)
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 save_imgs_by_skus(skus): msg = '' for the_sku in skus: try: p = Product.objects.get(choies_sku=the_sku) p_images = ProductImage.objects.filter( product__choies_sku=the_sku).first() if p_images: try: file_size = os.path.getsize('media/' + str(p_images.image)) except Exception, e: photo = p_images file_size = 0 if file_size: continue else: photo = p_images else: photo = ProductImage() photo.product_id = p.id try: the_url = ws_img_url(the_sku) photo.choies_url = the_url name = urlparse(the_url).path.split('/')[-1] content = ContentFile( urllib2.urlopen(the_url, timeout=5).read()) photo.image.save(name, content, save=True) except Exception, e: try: the_url = tribute_img_url(the_sku) photo.choies_url = the_url name = urlparse(the_url).path.split('/')[-1] content = ContentFile( urllib2.urlopen(the_url, timeout=5).read()) photo.image.save(name, content, save=True) except Exception, e: print str(e) continue
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)
def setUp(self): self.client = Client() category_group_top = CategoryGroupTop.objects.create(name='일상') category_group_medium = CategoryGroupMedium.objects.create( name='액티비티', category_group_top=category_group_top) category_group_bottom = CategoryGroupBottom.objects.create( name='아웃도어', category_group_medium=category_group_medium) self.category = Category.objects.create( name='서핑', category_group_bottom=category_group_bottom) host_grade = HostGrade.objects.create(name="일반 판매자") Host(name='homer', host_grade=host_grade).save() Host(name='bart', host_grade=host_grade).save() discount = Discount.objects.create(name=10, percentage=0.1) self.homer_surfing = Product.objects.create( name="homer surfing", subtitle="D'oh!", price=50000, activity_address='스프링필드 에버그린 테라스 742', stock=100, discount=discount, category=Category.objects.get(name='서핑'), host=Host.objects.get(name='homer'), ) self.bart_surfing = Product.objects.create( name="bart surfing", subtitle="(Ay Caramba", price=100000, activity_address='스프링필드 에버그린 테라스 742', stock=100, discount=discount, category=Category.objects.get(name='서핑'), host=Host.objects.get(name='bart')) ProductImage(product=self.homer_surfing, image_url='homer_surfing_image_url').save() ProductImage(product=self.bart_surfing, image_url='bart_surfing_image_url').save() self.homer_surfing = Product.objects.create( name="homer surfing", subtitle="D'oh!", price=50000, activity_address='스프링필드 에버그린 테라스 742', stock=100, discount=discount, category=Category.objects.get(name='서핑'), host=Host.objects.get(name='homer'), ) self.bart_surfing = Product.objects.create( name="bart surfing", subtitle="(Ay Caramba", price=100000, activity_address='스프링필드 에버그린 테라스 742', stock=100, discount=discount, category=Category.objects.get(name='서핑'), host=Host.objects.get(name='bart'))
def setUp(self): client = Client() Category.objects.create(id=1, name='스니커즈') Brand.objects.create( id=1, name='Jordan', image_url= 'https://heuream-images.s3.ap-northeast-2.amazonaws.com/heuream-brand_image/heuream-brand_image/d_5_dc2727e24e2f4741b4afde50f4f4a5f0.png' ) BrandLine.objects.create(id=1, name='1', brand=Brand.objects.get(id=1)) Product.objects.bulk_create([ Product(id=1, korean_name='엄청 이쁜 조던 1', english_name='Ultra Super Jordan 1', models_number='WO123on', best_color='REALRED', release_date='2222-12-01', release_price=1299999.00, sell_count=0, category=Category.objects.get(id=1), brand=Brand.objects.get(id=1), brand_line=BrandLine.objects.get(id=1)), Product(id=2, korean_name='조던 1 레트로 하이 OG 유니버시티 블루', english_name='Jordan 1 Retro High OG University Blue', models_number='555088-134', best_color='WHITE/UNIVERSITY', release_date='2222-12-01', release_price=1299999.00, sell_count=10, category=Category.objects.get(id=1), brand=Brand.objects.get(id=1), brand_line=BrandLine.objects.get(id=1)), Product(id=3, korean_name='조던 6 레트로 카마인 2021', english_name='Jordan 6 Retro Carmine 2021', models_number='CT8529-106', best_color='WHITE/BLACK-CARMINE', release_date='2222-12-01', release_price=1299999.00, sell_count=5, category=Category.objects.get(id=1), brand=Brand.objects.get(id=1), brand_line=BrandLine.objects.get(id=1)) ]) ProductImage.objects.bulk_create([ ProductImage( id=1, image_url= 'https://kream-phinf.pstatic.net/MjAyMTAyMDNfMjY2/MDAxNjEyMzE3NDQ1NTAx.Oejtk7Y6zAvCrjhtND50c7JClIDq5g75DlJ391D3Rfkg.nukMbPmTeoKRGgSvfzBM9ZoF0JaqIw6Ge5TkWfncHHUg.PNG/p_56ffd2340d6c476da2f58c151e0205c2.png?type=m', product=Product.objects.get(id=1)), ProductImage( id=2, image_url= 'https://kream-phinf.pstatic.net/MjAyMTAxMjlfMjY1/MDAxNjExOTExMDk2MTk3.1MZuTEku1jlLYcE_HdTcgrqTDj-lTgnDxBnZG2kJem0g.oYV3sKYXXx6s9BV9RxJCu73ImL4ALZrGpqE6v_aanOcg.PNG/p_6e61fca4282c4d84ab532ba227686965.png?type=m', product=Product.objects.get(id=2)), ProductImage( id=3, image_url= 'https://kream-phinf.pstatic.net/MjAyMTAzMDhfMjQ4/MDAxNjE1MTMwODIxNTgy.VS50ej9g1IPn3FflN2ypdEkK09xTg2g6-UJWBdYs3sYg.NN0qISq4PfRzWFqqzRelxjWxQz9XTyZf7Ji3tGyyxQwg.PNG/p_6249c81c28db4270b9aa79d93ef4f245.png?type=m', product=Product.objects.get(id=3)) ])