Example #1
0
def publish(request):
    if request.method == 'GET':
        return render(request, 'publish.html')
    elif request.method == 'POST':
        app_name = request.POST['app_name']
        description = request.POST['description']
        app_link = request.POST['app_link']

        try:
            app_icon = request.FILES['app_icon']
            screen_shot = request.FILES['app_screen_shot']

            product = Product()
            product.app_name = app_name
            product.description = description
            product.app_link = app_link
            product.app_icon = app_icon
            product.screen_shot = screen_shot

            product.publish_date = timezone.datetime.now()
            product.hunter = request.user

            product.save()

            return redirect('home')
        except Exception as err:
            return render(request, 'publish.html',
                          {'image_error': 'Please upload images.'})
Example #2
0
 def create(self, validated_data):
     obj = Discount.objects.create(**validated_data)
     obj.save()
     if Product.objects.filter(
             id=obj.discount_related_parent_id).count() > 0:
         related_product_instance = Product.objects.filter(
             id=obj.discount_related_parent_id)[0]
         if Product.objects.filter(
                 related_parent=obj.discount_related_parent,
                 is_new=True,
                 delete_flag=False).count() == 0:
             product_instance = Product.objects.filter(
                 id=obj.discount_related_parent_id)[0]
             product_update_instance = Product()
             product_update_instance.title = product_instance.title
             product_update_instance.description = product_instance.description
             product_update_instance.brand = product_instance.brand
             product_update_instance.product_related_store = product_instance.product_related_store
             product_update_instance.product_related_category = product_instance.product_related_category
             product_update_instance.related_parent = product_instance
             product_update_instance.product_related_user = related_product_instance.product_related_user
             product_update_instance.made_in_iran = True
             product_update_instance.is_new = True
             product_update_instance.save()
     return obj
Example #3
0
    def post(self, request):
        productForm = ProductForm(request.POST)

        if productForm.is_valid():
            # form = productForm.save(commit=False)
            # form.shop = request.user.shop
            # form.product_code = product_code_format(request.user.shop.id)
            # form.save()

            product = Product()

            product.shop = request.user.shop
            product.product_code = product_code_format(request.user.shop.id)
            product.category = productForm.cleaned_data.get('category')
            product.brand = productForm.cleaned_data.get('brand')
            product.product_name = productForm.cleaned_data.get('product_name')
            product.subTitle = productForm.cleaned_data.get('subTitle')
            product.original_price = productForm.cleaned_data.get(
                'original_price')
            product.price = productForm.cleaned_data.get('price')
            product.cost = productForm.cleaned_data.get('cost')
            product.publish_status = productForm.cleaned_data.get(
                'publish_status')
            product.description = productForm.cleaned_data.get('description')
            product.is_freeShipping = productForm.cleaned_data.get(
                'is_freeShipping')

            product.save()

            # modelform保存后获取model?
            for pimage in request.FILES.getlist('pimage'):

                image = ProductImage(product=product,
                                     image=pimage,
                                     type='image')

                image.save()

            for dimage in request.FILES.getlist('dimage'):

                image = ProductImage(product=product,
                                     image=dimage,
                                     type='detailImage')
                image.save()

            for property in product.category.propertys.all():
                propertyValue = Propertyvalue()
                propertyValue.property = property
                propertyValue.product = product
                propertyValue.value = ''
                propertyValue.save()

            return render(request, 'salers/amz/propertysForm.html',
                          {'product': product})

        else:
            print(productForm.errors)
            return render(request, 'salers/amz/product-add.html',
                          {"productForm": productForm})
Example #4
0
def ListProductsHistory(request, pk):

    context = {}

    prod_obj = get_object_or_404(Product, pk=pk)

    api = ApiDomains()
    url = api.product + "/" + "history"
    #url = 'https://94q78vev60.execute-api.us-east-1.amazonaws.com/Prod/intellidataProductAPI/history'
    payload = {'ident': prod_obj.productid}

    resp = requests.get(url, params=payload)
    print(resp.status_code)
    obj = get_object_or_404(APICodes, http_response_code=resp.status_code)
    status_message = obj.http_response_message
    mesg = str(resp.status_code) + " - " + status_message

    if resp.status_code != 200:
        # This means something went wrong.
        #raise ApiError('GET /tasks/ {}'.format(resp.status_code))
        #raise APIError(resp.status_code)
        message = {'messages': mesg}
        return render(request, "messages.html", context=message)
    else:
        json_data = []
        dict_data = []
        obj_data = []
        json_data = resp.json()

        #print(json_data[0])
        #print(json_data[1])
        for ix in range(len(json_data)):
            obj = Product()
            #dict_data.append(json.loads(json_data[ix]))
            obj.pk = int(json_data[ix]["LOCAL_ID"])
            obj.productid = json_data[ix]["PRODUCT_ID"]
            obj.name = json_data[ix]["NAME"]
            obj.type = json_data[ix]["TYPE"]
            obj.coverage_limit = json_data[ix]["COVERAGE_LIMIT"]
            obj.price_per_1000_units = json_data[ix]["RATE"]
            obj.product_date = json_data[ix]["CREATE_DATE"]
            obj.description = json_data[ix]["DESCRIPTION"]
            obj.description_html = misaka.html(obj.description)
            #obj.photo = json_data[ix]["PHOTO"]
            obj.creator = User.objects.get(pk=int(json_data[ix]["CREATOR"]))
            obj.create_date = json_data[ix]["CREATE_DATE"]
            obj.backend_SOR_connection = json_data[ix]["CONNECTION"]
            obj.response = json_data[ix]["RESPONSE"]
            obj.record_status = json_data[ix]["RECORD_STATUS"]
            obj.commit_indicator = json_data[ix]["COMMIT_INDICATOR"]

            obj_data.append(obj)

        context = {'object_list': obj_data}

        return render(request, "products/product_list.html", context=context)
Example #5
0
def generate_products(request, times):
    for i in range(0, times):
        p = Product()
        p.title = random_text('t', 80)
        p.resume = random_text('t', 500)
        p.description = random_text('t')
        p.price = round(100 * random.random(), 2)
        #p.category = get_random_instance(ProductCategory)
        p.save()
    return HttpResponse(f'{times} Products created !')
Example #6
0
def ProductList(request):

    if request.method == 'GET':
        contacts = Product.objects.all()
        serializer = ProductSerializer(contacts, many=True)
        return Response(serializer.data)
    elif request.method == 'POST':
        serializer = ProductSerializer(data=request.data)

        serializer.is_valid(raise_exception=True)
        product = Product()
        event = Event()

        if serializer.data["productid"] == '':
            product.productid = str(uuid.uuid4())[26:36]
            event.EventTypeReason = "New product received via API"
        else:
            product.productid = serializer.data["productid"]
            event.EventTypeReason = "Product added via API"

        product.name = serializer.data["name"]
        product.slug = slugify(product.name),

        product.description = serializer.data["description"]
        product.description_html = misaka.html(product.description),
        product.coverage_limit = serializer.data["coverage_limit"]
        product.price_per_1000_units = serializer.data["price_per_1000_units"]

        product.source = "Post API"

        product.creator = get_object_or_404(User,
                                            pk=serializer.data["creator"])

        product.backend_SOR_connection = "Disconnected"
        product.response = ""
        product.commit_indicator = "Not Committed"
        product.record_status = ""
        product.bulk_upload_indicator = "Y"

        #Log events
        event.EventTypeCode = "PRW"
        event.EventSubjectId = product.productid
        event.EventSubjectName = product.name
        event.source = "Post API"
        event.creator = product.creator
        event.save()

        product.save()
        return Response(serializer.data)
Example #7
0
def saveProductData(request, productForm):
    product = Product()
    product.name = productForm.cleaned_data['name']
    product.description = productForm.cleaned_data['description']
    product.q_amount = productForm.cleaned_data['q_amount']
    user = request.user
    product.id_owner = user
    product.start_datetime = str(datetime.now())
    product.end_datetime = str(datetime.now())
    product.follower_qty = 0
    product.visit_qty = 0
    product.img = uuid.uuid1().hex
    product.featured_time = 0
    product.active = 1
    return product
Example #8
0
def saveProductData(request, productForm):
    product = Product()
    product.name = productForm.cleaned_data['name']
    product.description = productForm.cleaned_data['description']
    product.q_amount = productForm.cleaned_data['q_amount']
    user = request.user
    product.id_owner = user
    product.start_datetime = str(datetime.now())
    product.end_datetime = str(datetime.now())
    product.follower_qty = 0
    product.visit_qty = 0
    product.img = uuid.uuid1().hex
    product.featured_time = 0;
    product.active = 1
    return product
Example #9
0
    def test_post_new_order_form_correct(self):

        # create client and log them in
        client = Client()
        client.login(username='******', password="******")

        # create product in database
        product = Product()
        product.id = 3
        product.price = 20
        product.num_in_stock = 10
        product.description = "description"
        product.tags = "tags"
        product.save()

        country = ShippingDestination.objects.create(country="US",
                                                     shipping_price=10)
        Order.objects.create(customer=self.user)

        # create session data for product
        session = client.session
        session['cart'] = {
            'orderItems': [{
                'listingId': 3,
                'quantity': 1
            }],
            'total': 20,
            'count': 1
        }
        session.save()

        client.post(
            '/cart/checkout/info/', {
                'full_name': 'John Wayne',
                'address_line_1': '1234 Test',
                'town_or_city': 'City',
                'state': 'State',
                'postcode': '12345',
                'country': country.id,
            })

        order = Order.objects.filter(customer=self.user).first()
        self.assertEqual(order.full_name, "John Wayne")
        self.assertEqual(order.state, "State")
        self.assertEqual(order.country, country)
        self.assertIsInstance(order, Order)
Example #10
0
def index(request, product_uuid=None):
    product = None if not product_uuid else Product.objects.get(uuid=product_uuid)
    if request.method == 'POST':
        p = Product()
        p.name = request.POST.get('name', None)
        p.description = request.POST.get('description', None)
        p.image_url = request.POST.get('image_url', None)
        p.url = request.POST.get('url', None)
        p.author = request.user if request.user.id else None
        p.save()
    if not product and Product.objects.count() != 0:
        product = Product.objects.order_by('-created')[0]
    ctx = {
        'product': product,
        'latest': Product.objects.order_by('-created')[:5],
    }
    return render_to_response('index.html', ctx, context_instance=RequestContext(request))
    def _product(self, item):
        try:
            product = Product.objects.get(wholesale_legacy_id=int(item['id']), is_visible=True)
        except Product.DoesNotExist:
            product = Product()
        except Product.MultipleObjectsReturned:
            print item['id']
            for p in Product.objects.filter(wholesale_legacy_id=int(item['id'])):
                print p.id, p.title, p.code, p.sku
            print '-----'
            raise

        quantity = int(item.get('qtyi', 0))
        if quantity < 0:
            quantity = 0

        weight = int(item.get('weight', 0))
        if weight < 0:
            weight = 0

        product.sku = item['article']
        product.weight = weight
        product.quantity = quantity
        product.code = item['link']
        product.title = item['name']
        product.description = item['descr']
        product.is_visible = bool(int(item['pub']))
        product.wholesale_legacy_id = item['id']
        product.created = TIMEZONE.localize(datetime.datetime.fromtimestamp(int(item['dt'])))

        size = None
        try:
            size = SIZE_RE.findall(u' '.join([item['name'], item.get('alt', ''), item['descr']]))[0]
        except IndexError:
            try:
                size = SIZE2_RE.findall(u' '.join([item['name'], item.get('alt', ''), item['descr']]))[0]
            except IndexError:
                pass

        if size:
            product.size = u'×'.join([str(x) for x in size])

        return product
Example #12
0
    def post(self, request):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        product = Product()
        product.user = request.user
        product.price = float(serializer.data.get('price'))
        product.currency = serializer.data.get('currency')
        product.title = serializer.data.get('title')
        product.description = serializer.data.get('description')
        product.category = Category.objects.get(id=1)
        product.time = serializer.data.get('time')
        product.length = 0
        product.width = 0
        product.height = 0
        product.weight = 0
        product.request = 1
        product.accept = 0
        product.save()

        requested = Request()
        requested.seller = serializer.validated_data['seller']
        requested.buyer = request.user
        requested.product = product
        requested.save()

        assets = serializer.data.get('assets')
        if assets:
            for url in assets:
                asset = Asset(product=product, url=url)
                asset.save()
        ItemRequest_Notification(requested.seller, request.user, product)
        ItemRequest_mail(requested.seller, request.user, product)

        return Response(
            {
                "result": True,
                "data": {
                    "Msg": "Item Request created",
                    "Request_id": requested.id,
                }
            },
            status=status.HTTP_201_CREATED)
Example #13
0
    def test_post_new_order_form_correct(self):
        """ Test that post request to checkout info view is received and processed into the database correctly """

        # create client and log them in
        client = Client()
        client.login(username='******', password="******")

        # create product in database
        product = Product()
        product.id = 3
        product.price = 20
        product.num_in_stock = 10
        product.description = "description"
        product.tags = "tags"
        product.save()
        
        country = ShippingDestination.objects.create(country="UK", shipping_price=10)
        Order.objects.create(customer=self.user)

        # create session data for product
        session = client.session
        session['cart'] = {'orderItems': [{'listingId': 3, 'quantity': 1}], 'total': 20, 'count': 1}
        session.save()

        client.post(
            '/cart/checkout/info/',
            {
                'full_name': 'Arthur Dent',
                'address_line_1': 'Street House 1',
                'town_or_city': 'City',
                'county': 'Devon',
                'postcode': '1234CB',
                'country': country.id,
            }
        )

        order = Order.objects.filter(customer=self.user).first()
        self.assertEqual(order.full_name, "Arthur Dent")
        self.assertEqual(order.county, "Devon")
        self.assertEqual(order.country, country)
        self.assertIsInstance(order, Order)
Example #14
0
    def post(self, request):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        product = Product()
        product.user = request.user
        product.category = serializer.validated_data['category']
        product.price = float(serializer.data.get('price'))
        product.currency = serializer.data.get('currency')
        product.title = serializer.data.get('title')
        product.description = serializer.data.get('description')
        product.time = serializer.data.get('time')
        product.length = serializer.data.get('length')
        product.width = serializer.data.get('width')
        product.height = serializer.data.get('height')
        product.weight = serializer.data.get('weight')
        product.save()

        assets = serializer.data.get('assets')
        if assets:
            for url in assets:
                asset = Asset(product=product, url=url)
                asset.save()

        tags = serializer.data.get('tag')
        if tags:
            for t in tags:
                tag = HashTags(product=product, tag=t)
                tag.save()
        # ProductPost_Notification(user)
        return Response(
            {
                "result": True,
                "data": {
                    "Msg": "product created",
                    "product_id": product.id,
                }
            },
            status=status.HTTP_201_CREATED)
    def _product(self, item):
        try:
            product = Product.objects.get(id=int(item['id']))
        except Product.DoesNotExist:
            product = Product(id=int(item['id']))

        quantity = int(item.get('qtyi', 0))
        if quantity < 0:
            quantity = 0

        weight = int(item.get('weight', 0))
        if weight < 0:
            weight = 0

        product.sku = item['article']
        product.weight = weight
        product.quantity = quantity
        product.code = item['link']
        product.title = item['name']
        product.description = item['descr']
        product.is_visible = bool(int(item['pub']))
        product.is_wholesale = False
        product.created = TIMEZONE.localize(datetime.datetime.fromtimestamp(int(item['dt'])))

        size = None
        try:
            size = SIZE_RE.findall(u' '.join([item['name'], item.get('alt', ''), item['descr']]))[0]
        except IndexError:
            try:
                size = SIZE2_RE.findall(u' '.join([item['name'], item.get('alt', ''), item['descr']]))[0]
            except IndexError:
                pass

        if size:
            product.size = u'×'.join([str(x) for x in size])

        return product
Example #16
0
    def create(self, request):

        dic = request.data.dict()
        id_cat = dic.pop('category', None)

        cat = Category.objects.filter(pk=id_cat).first()
        print(cat)
        pro = Product()
        pro.category = cat
        pro.description = dic.pop('description', None)
        pro.display = dic.pop('display', None)
        pro.display_in_home = dic.pop('display_in_home', None)
        pro.name = dic.pop('name', None)
        pro.offer_discount = dic.pop('offer_discount', None)
        pro.order = dic.pop('order', None)
        pro.price = dic.pop('price', None)

        print(dic)

        colors = dic.getlist('color_stocks', None)

        print(colors)

        return Response('Hola :V')
Example #17
0
    def get_queryset(self, **kwargs):  # new
        query = self.request.GET.get('q', None)
        object_list = Product.objects.filter(
            Q(productid__icontains=query) | Q(name__icontains=query)
            | Q(type__icontains=query) | Q(description__icontains=query))

        #change start for remote SearchProductsForm
        if not object_list:
            api = ApiDomains()
            url = api.product + "/" + "refresh"
            #url = 'https://94q78vev60.execute-api.us-east-1.amazonaws.com/Prod/intellidataProductAPI/history'
            payload = {'ident': query}

            resp = requests.get(url, params=payload)
            print(resp.status_code)

            obj = get_object_or_404(APICodes,
                                    http_response_code=resp.status_code)
            status_message = obj.http_response_message
            mesg = str(resp.status_code) + " - " + status_message

            if resp.status_code != 200:
                # This means something went wrong.
                #raise ApiError('GET /tasks/ {}'.format(resp.status_code))
                #raise APIError(resp.status_code)
                #message={'messages':mesg}
                #return render(self.request, "messages.html", context=message)
                print("Status Code: " + str(resp.status_code))
            else:
                json_data = []

                json_data = resp.json()
                obj_data = []
                obj1 = Product()

                #OVERRIDE THE OBJECT WITH API data
                obj1.pk = int(json_data["LOCAL_ID"])
                obj1.productid = json_data["PRODUCT_ID"]
                obj1.name = json_data["NAME"]
                obj1.type = json_data["TYPE"]
                obj1.coverage_limit = json_data["COVERAGE_LIMIT"]
                obj1.price_per_1000_units = json_data["RATE"]
                obj1.product_date = json_data["CREATE_DATE"]
                obj1.description = json_data["DESCRIPTION"]
                obj1.description_html = misaka.html(obj1.description)
                #obj1.photo = json_data["PHOTO"]
                obj1.creator = User.objects.get(pk=int(json_data["CREATOR"]))
                #obj.crerator = get_object_or_404(User, pk=obj.creatorid)
                obj1.create_date = json_data["CREATE_DATE"]
                obj1.backend_SOR_connection = "Disconnected"
                obj1.response = "Pulled From Backend"
                obj1.commit_indicator = json_data["COMMIT_INDICATOR"]
                obj1.record_status = json_data["RECORD_STATUS"]

                obj1.save()

                #obj_data.append(obj1)
                #print(obj_data)

                #context = {'object_list':obj_data}

                #return render(self.request, "products/product_search_list.html", context=context)
                object_remote_list = Product.objects.filter(productid=query)
                print(object_remote_list)
                return object_remote_list

        else:
            #change end for remote SearchProductsForm

            return object_list
Example #18
0
def RefreshProduct(request, pk):
    # fetch the object related to passed id
    context = {}
    prod_obj = get_object_or_404(Product, pk=pk)

    api = ApiDomains()
    url = api.product + "/" + "refresh"
    #url = 'https://94q78vev60.execute-api.us-east-1.amazonaws.com/Prod/intellidataProductAPI/history'
    payload = {'ident': prod_obj.productid}

    resp = requests.get(url, params=payload)
    print(resp.status_code)

    obj = get_object_or_404(APICodes, http_response_code=resp.status_code)
    status_message = obj.http_response_message
    mesg = str(resp.status_code) + " - " + status_message

    if resp.status_code != 200:
        # This means something went wrong.
        #raise ApiError('GET /tasks/ {}'.format(resp.status_code))
        #raise APIError(resp.status_code)
        message = {'messages': mesg}
        return render(request, "messages.html", context=message)
    else:
        json_data = []

        json_data = resp.json()
        obj1 = Product()

        #OVERRIDE THE OBJECT WITH API data
        obj1.pk = int(json_data["LOCAL_ID"])
        obj1.productid = json_data["PRODUCT_ID"]
        obj1.name = json_data["NAME"]
        obj1.type = json_data["TYPE"]
        obj1.coverage_limit = json_data["COVERAGE_LIMIT"]
        obj1.price_per_1000_units = json_data["RATE"]
        obj1.product_date = json_data["CREATE_DATE"]
        obj1.description = json_data["DESCRIPTION"]
        obj1.description_html = misaka.html(obj1.description)
        #obj1.photo = json_data["PHOTO"]
        obj1.creator = User.objects.get(pk=int(json_data["CREATOR"]))
        #obj.crerator = get_object_or_404(User, pk=obj.creatorid)
        obj1.create_date = json_data["CREATE_DATE"]
        obj1.backend_SOR_connection = "Disconnected"
        obj1.response = json_data["RESPONSE"]
        obj1.commit_indicator = json_data["COMMIT_INDICATOR"]
        obj1.record_status = json_data["RECORD_STATUS"]

        #Log events
        event = Event()
        event.EventTypeCode = "PRR"
        event.EventSubjectId = obj1.productid
        event.EventSubjectName = obj1.name
        event.EventTypeReason = "Product refreshed from ODS"
        event.source = "Online Transaction"
        event.creator = obj1.creator
        event.save()

        obj1.save()

        context = {'product_details': obj1}

        return render(request, "products/product_detail.html", context=context)
def product_add_view(request):
    if request.POST.get('book_id'):
        product = Product.objects.get(id=request.POST.get('book_id'))
        if request.POST.get('username'):
            product.price = request.POST.get('username')
        else:
            product.price = '0'
        if request.POST.get('email'):
            product.title = request.POST.get('email')
        else:
            product.title = 'No Title'
        if not request.POST.get('name'):
            product.currency = '$'
        else:
            product.currency = request.POST.get('name')
        if request.POST.get('active'):
            product.available = request.POST.get('active')
        else:
            product.available = 'True'
        if request.POST.get('address'):
            product.description = request.POST.get('address')
        else:
            product.description = 'No Description'
        product.user.email = request.POST.get('over')
        if request.POST.get('create'):
            product.created_at = request.POST.get('create')
        else:
            product.created_at = datetime.datetime.now()
        if request.POST.get('last'):
            product.updated_at = request.POST.get('last')
        else:
            product.updated_at = datetime.datetime.now()
        product.save()
        return HttpResponseRedirect('/admin/products-list')

    else:
        product = Product()
        if request.POST.get('username'):
            product.price = request.POST.get('username')
        else:
            product.price = '0'
        if request.POST.get('email'):
            product.title = request.POST.get('email')
        else:
            product.title = 'No Title'
        if not request.POST.get('name'):
            product.currency = '$'
        else:
            product.currency = request.POST.get('name')
        product.available = 'True'
        if request.POST.get('address'):
            product.description = request.POST.get('address')
        else:
            product.description = 'No Description'
        product.user.email = request.POST.get('over')
        if request.POST.get('create'):
            product.created_at = request.POST.get('create')
        else:
            product.created_at = datetime.datetime.now()
        if request.POST.get('last'):
            product.updated_at = request.POST.get('last')
        else:
            product.updated_at = datetime.datetime.now()
        product.save()
        return HttpResponseRedirect('/admin/products-list')
    return HttpResponseRedirect('/admin/products-list')