diff --git a/tienda_ilusion/don_confiao/example_products.csv b/tienda_ilusion/don_confiao/example_products.csv index 092a32f..46228a7 100644 --- a/tienda_ilusion/don_confiao/example_products.csv +++ b/tienda_ilusion/don_confiao/example_products.csv @@ -1,4 +1,4 @@ "producto","unidad","precio","categorias" -"Aceite de Coco Artesanal 500ml","Unidad", 50000,"Aceites&Alimentos" -"Café 500ml","Unidad", 14000,"Cafes&Alimentos" -"Café 250ml","Unidad", 7000,"Cafes&Alimentos" +"Aceite","Unidad", 50000,"Aceites&Alimentos" +"Café","Unidad", 14000,"Cafes&Alimentos" +"Arroz","Unidad", 7000,"Cafes&Alimentos" diff --git a/tienda_ilusion/don_confiao/example_products2.csv b/tienda_ilusion/don_confiao/example_products2.csv new file mode 100644 index 0000000..f46428b --- /dev/null +++ b/tienda_ilusion/don_confiao/example_products2.csv @@ -0,0 +1,4 @@ +"producto","unidad","precio","categorias" +"Aceite","Unidad", 50000,"Aceites&Alimentos" +"Café","Unidad", 15000,"Cafes&Alimentos" +"Arroz","Unidad", 6000,"Cafes&Alimentos" diff --git a/tienda_ilusion/don_confiao/migrations/0011_alter_product_name.py b/tienda_ilusion/don_confiao/migrations/0011_alter_product_name.py new file mode 100644 index 0000000..9a6a092 --- /dev/null +++ b/tienda_ilusion/don_confiao/migrations/0011_alter_product_name.py @@ -0,0 +1,18 @@ +# Generated by Django 5.0.6 on 2024-06-29 21:48 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('don_confiao', '0010_alter_productcategory_name'), + ] + + operations = [ + migrations.AlterField( + model_name='product', + name='name', + field=models.CharField(max_length=100, unique=True), + ), + ] diff --git a/tienda_ilusion/don_confiao/models.py b/tienda_ilusion/don_confiao/models.py index dc51642..6d40cac 100644 --- a/tienda_ilusion/don_confiao/models.py +++ b/tienda_ilusion/don_confiao/models.py @@ -27,7 +27,7 @@ class ProductCategory(models.Model): return self.name class Product(models.Model): - name = models.CharField(max_length=100) + name = models.CharField(max_length=100, unique=True) price = models.DecimalField(max_digits=9, decimal_places=2) measuring_unit = models.CharField( max_length=20, diff --git a/tienda_ilusion/don_confiao/test_products.py b/tienda_ilusion/don_confiao/test_products.py index 89dc1e4..a522b28 100644 --- a/tienda_ilusion/don_confiao/test_products.py +++ b/tienda_ilusion/don_confiao/test_products.py @@ -34,6 +34,13 @@ class TestProducts(TestCase): categories_on_csv ) + def test_update_products(self): + self._import_csv() + first_products = self._get_products() + self._import_csv('example_products2.csv') + seconds_products = self._get_products() + self.assertCountEqual(first_products, seconds_products) + def _get_products(self): products_response = self.client.get("/don_confiao/productos") return json.loads(products_response.content.decode('utf-8')) diff --git a/tienda_ilusion/don_confiao/views.py b/tienda_ilusion/don_confiao/views.py index a542a51..9daaf49 100644 --- a/tienda_ilusion/don_confiao/views.py +++ b/tienda_ilusion/don_confiao/views.py @@ -59,8 +59,10 @@ def handle_import_products_file(csv_file): data = io.StringIO(csv_file.read().decode('utf-8')) reader = csv.DictReader(data, quotechar='"') for row in reader: - product = Product() - product.name = row['producto'] + product, _ = Product.objects.get_or_create( + name=row['producto'], + defaults={'price': row['precio']} + ) product.price = row['precio'] product.measuring_unit = row['unidad'] product.save()