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
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)
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
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('/')