def handle(self, *args, **options): """ Manage the command for : - delete the products and categories in database - populate the database with categories and products """ # If arg --delete if options['delete']: categories = Category.objects.all() products = Product.objects.all() if products: Product.objects.all().delete() if categories: Category.objects.all().delete() self.stdout.write( _('The products and their categories have been deleted')) else: self.stdout.write(_('The database is already empty.')) else: # Management categories self.stdout.write(_('Add the categories from api OpenfoodFact')) new_categories = self.api_food.get_categories() for categ in new_categories: category = Category.objects.filter(name=categ['name']) if not category.exists(): category = Category.objects.create( name=categ['name'], url_product=categ['url'], api_id=categ['id']) # Management products self.stdout.write(_('Add the products now')) new_products = self.api_food.get_products(Category.objects.all()) for prod in new_products: product = Product.objects.filter(name=prod['name']) if not product.exists(): product = Product() Product.create_product( name=prod['name'], description=prod['desc'], store=prod['store'], nutriscore=prod['nutriscore'], nutriscore_grade=prod['nutriscore_grade'], image=prod['image'], url_api=prod['url_api'], category_ids=prod['category_ids'], fat_level=prod['fat_level'], satured_fat_level=prod['satured_fat_level'], sugars_level=prod['sugars_level'], salt_level=prod['salt_level'], fat_g=prod['fat_g'], satured_fat_g=prod['satured_fat_g'], sugars_g=prod['sugars_g'], salt_g=prod['salt_g'])
def setUp(self): self.user = User.objects.create_user(username='******', first_name='test_first_name', last_name='test_last_name', email='*****@*****.**', password='******', subscribed=True) self.product = Product.create_product( name='Jus d\'orange', description='description', store='Auchan', nutriscore='1', nutriscore_grade='c', image= 'https://static.openfoodfacts.org/images/products/322/885/700/0852/front_fr.134.400.jpg', url_api= 'https://fr.openfoodfacts.org/produit/3502110009449/pur-jus-d-orange-sans-pulpe-tropicana', category_ids=[1], fat_level='low', satured_fat_level='low', sugars_level='moderate', salt_level='low', fat_g=0, satured_fat_g=0, sugars_g=8.9, salt_g=0) self.product.user_ids.add(self.user)
def post(request): form = ProductForm(request.POST) if form.errors: messages.add_message(request, messages.INFO, dict(form.errors.items())) if form.is_valid(): try: Product.create_product({ 'brand': form.cleaned_data.get('brand'), 'product_name': form.cleaned_data.get('product_name'), 'model_number': form.cleaned_data.get('model_number'), 'category': ProductCategory.get_by_id( form.cleaned_data.get('category')), 'jan_code': form.cleaned_data.get('jan_code'), }) return HttpResponseRedirect('/admin/products') except: pass categories = ProductCategory.get_all() return TemplateResponse( request, 'products_create.html', { 'categories': categories, 'form_data': form.cleaned_data, 'error_messages': get_error_message(request), })