Ejemplo n.º 1
0
    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')
Ejemplo n.º 2
0
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
    })
Ejemplo n.º 3
0
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})
Ejemplo n.º 4
0
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})
Ejemplo n.º 5
0
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})
Ejemplo n.º 6
0
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})
Ejemplo n.º 7
0
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
        })
Ejemplo n.º 8
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)
Ejemplo n.º 9
0
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)
Ejemplo n.º 10
0
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
    })
Ejemplo n.º 11
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)
Ejemplo n.º 12
0
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
Ejemplo n.º 13
0
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)
Ejemplo n.º 14
0
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)
Ejemplo n.º 15
0
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)
Ejemplo n.º 16
0
    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))
        ])
    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'))