Esempio n. 1
0
    def process_item(self, item, spider):
        if isinstance(item, ProductItem):
            name = item["name"]
            group = item["group"]
            category = item["category"]
            subcategory = item["subcategory"]
            # description = item["description"]
            # technical_data = item["technical_data"]
            product_image_url = item["product_image_url"]
            brand_image_url = item["brand_image_url"]
            url_source = item["url_source"]

            try:
                group_instance = None
                if group is not None:
                    group_instance, created = GroupProduct.objects.get_or_create(name=group)

                create_product = Product.objects.get(name=name, group=group_instance)
            except BaseException:
                create_product = Product(
                    name=name,
                    group=group_instance,
                    category=category,
                    subcategory=subcategory,
                    product_image_url=product_image_url,
                    brand_image_url=brand_image_url,
                    url_source=url_source
                )

                create_product.save()

        return True
Esempio n. 2
0
    def post(self, request, format=None):
        """
        Creates a new product
        """
        if request.user.is_admin:
            serializer = self.serializer_class(data=request.data)
            if serializer.is_valid():
                # Getting serialized data
                request_data = serializer.data
                if not Product.objects.filter(name=request_data['name']):
                    try:
                        with transaction.atomic():

                            # Creating product
                            product = Product()
                            product.name = request_data['name']
                            product.category = Category.objects.get(
                                pk=request_data['category'])
                            product.purchase_price = request_data[
                                'purchase_price']
                            product.sale_price = request_data['sale_price']

                            if 'description' in request_data and request_data[
                                    'description']:
                                product.description = request_data[
                                    'description']

                            product.save()
                            return Response({"id": product.id},
                                            status=status.HTTP_201_CREATED)

                    except Exception as e:
                        return Response(
                            {
                                "type": "internal_server_error",
                                "detail": str(e)
                            },
                            status=status.HTTP_500_INTERNAL_SERVER_ERROR)
                else:
                    return Response({"type": "product_already_exist"},
                                    status=status.HTTP_409_CONFLICT)
            else:
                return Response(
                    {
                        "type": "validation_error",
                        "errors": serializer.errors
                    },
                    status=status.HTTP_400_BAD_REQUEST)
        else:
            return Response({"type": "unauthorized"},
                            status=status.HTTP_401_UNAUTHORIZED)
Esempio n. 3
0
 def execute(self):
     try:
         scrape_obj = scrape(self._link)
         product = Product(
             link=self._link,
             price=scrape_obj['price'],
             description=scrape_obj['name'],
             image_urls=json.dumps(scrape_obj['images'])
         )
         product.save()
         return product
     except Exception as error:
         print('Caught this error: ' + repr(error))
         # log to honeybadger or kibana
         return None
    def create_product(self, row, org):
        if "blog" in row.get("Source Type"):
            ptype = ProductType.objects.get_or_create(name="Blog")[0]
        else:
            ptype = ProductType.objects.get_or_create(name="Website")[0]

        p = Product(
            name=row.get("Source Name"),
            homepage=row.get("Home Page URL"),
            # XXX: ew
            product_type=ptype,
            organization=org,
            modified_by=User.objects.get(username="******"),
        )
        p.save()
        Activity(user=p.modified_by, content_object=p).save()
        return p
Esempio n. 5
0
def create(request):
  p = Product(brand=request.POST['brand'], name=request.POST['name'], price=request.POST['price'], created_at=timezone.now(), updated_at=timezone.now())
  p.save()
  return HttpResponseRedirect('/')