diff --git a/shop/migrations/0003_alter_brand_creation_date_and_more.py b/shop/migrations/0003_alter_brand_creation_date_and_more.py new file mode 100644 index 0000000..e069fd8 --- /dev/null +++ b/shop/migrations/0003_alter_brand_creation_date_and_more.py @@ -0,0 +1,554 @@ +# Generated by Django 5.0.6 on 2024-06-02 19:47 + +import django.db.models.deletion +import django.utils.timezone +from decimal import Decimal +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("files", "0001_initial"), + ("shop", "0002_alter_productprice_options_alter_tax_options_and_more"), + ] + + operations = [ + migrations.AlterField( + model_name="brand", + name="creation_date", + field=models.DateTimeField( + auto_now_add=True, verbose_name="fecha de creación" + ), + ), + migrations.AlterField( + model_name="brand", + name="last_modification_date", + field=models.DateTimeField( + auto_now=True, verbose_name="fecha de última modificación" + ), + ), + migrations.AlterField( + model_name="brand", + name="name", + field=models.CharField(max_length=100, unique=True, verbose_name="nombre"), + ), + migrations.AlterField( + model_name="customer", + name="address", + field=models.CharField(max_length=255, verbose_name="dirección"), + ), + migrations.AlterField( + model_name="customer", + name="city", + field=models.CharField(max_length=64, verbose_name="ciudad"), + ), + migrations.AlterField( + model_name="customer", + name="country", + field=models.CharField(max_length=64, verbose_name="país"), + ), + migrations.AlterField( + model_name="customer", + name="creation_date", + field=models.DateTimeField( + auto_now_add=True, verbose_name="fecha de creación" + ), + ), + migrations.AlterField( + model_name="customer", + name="email", + field=models.EmailField(max_length=254, verbose_name="e-mail"), + ), + migrations.AlterField( + model_name="customer", + name="first_name", + field=models.CharField(max_length=64, verbose_name="nombre"), + ), + migrations.AlterField( + model_name="customer", + name="last_modification_date", + field=models.DateTimeField( + auto_now=True, verbose_name="fecha de última modificación" + ), + ), + migrations.AlterField( + model_name="customer", + name="last_name", + field=models.CharField(max_length=64, verbose_name="apellidos"), + ), + migrations.AlterField( + model_name="customer", + name="state", + field=models.CharField(max_length=64, verbose_name="región"), + ), + migrations.AlterField( + model_name="customer", + name="vat_id", + field=models.CharField( + max_length=32, unique=True, verbose_name="documento de identidad" + ), + ), + migrations.AlterField( + model_name="customer", + name="zip", + field=models.CharField(max_length=32, verbose_name="código postal"), + ), + migrations.AlterField( + model_name="order", + name="base_total", + field=models.DecimalField( + decimal_places=2, + default=Decimal("0"), + max_digits=13, + verbose_name="base imponible", + ), + ), + migrations.AlterField( + model_name="order", + name="billing_address", + field=models.CharField( + max_length=255, verbose_name="dirección de facturación" + ), + ), + migrations.AlterField( + model_name="order", + name="billing_city", + field=models.CharField(max_length=64, verbose_name="ciudad de facturación"), + ), + migrations.AlterField( + model_name="order", + name="billing_country", + field=models.CharField(max_length=64, verbose_name="país de facturación"), + ), + migrations.AlterField( + model_name="order", + name="billing_state", + field=models.CharField(max_length=64, verbose_name="región de facturación"), + ), + migrations.AlterField( + model_name="order", + name="billing_zip", + field=models.CharField( + max_length=32, verbose_name="código postal de facturación" + ), + ), + migrations.AlterField( + model_name="order", + name="contact_phone", + field=models.CharField( + blank=True, max_length=32, verbose_name="teléfono de contacto" + ), + ), + migrations.AlterField( + model_name="order", + name="creation_date", + field=models.DateTimeField( + auto_now_add=True, verbose_name="fecha de creación" + ), + ), + migrations.AlterField( + model_name="order", + name="customer", + field=models.ForeignKey( + on_delete=django.db.models.deletion.PROTECT, + to="shop.customer", + verbose_name="cliente", + ), + ), + migrations.AlterField( + model_name="order", + name="last_modification_date", + field=models.DateTimeField( + auto_now=True, verbose_name="fecha de última modificación" + ), + ), + migrations.AlterField( + model_name="order", + name="shipping_address", + field=models.CharField(max_length=255, verbose_name="dirección"), + ), + migrations.AlterField( + model_name="order", + name="shipping_city", + field=models.CharField(max_length=64, verbose_name="ciudad"), + ), + migrations.AlterField( + model_name="order", + name="shipping_country", + field=models.CharField(max_length=64, verbose_name="país"), + ), + migrations.AlterField( + model_name="order", + name="shipping_state", + field=models.CharField(max_length=64, verbose_name="región"), + ), + migrations.AlterField( + model_name="order", + name="shipping_zip", + field=models.CharField(max_length=32, verbose_name="código postal"), + ), + migrations.AlterField( + model_name="order", + name="status", + field=models.CharField(default="PEN", max_length=3, verbose_name="estado"), + ), + migrations.AlterField( + model_name="order", + name="total", + field=models.DecimalField( + decimal_places=2, + default=Decimal("0"), + max_digits=13, + verbose_name="total", + ), + ), + migrations.AlterField( + model_name="orderline", + name="base_total", + field=models.DecimalField( + decimal_places=4, + default=Decimal("0"), + max_digits=13, + verbose_name="total sin impuestos", + ), + ), + migrations.AlterField( + model_name="orderline", + name="creation_date", + field=models.DateTimeField( + auto_now_add=True, verbose_name="fecha de creación" + ), + ), + migrations.AlterField( + model_name="orderline", + name="last_modification_date", + field=models.DateTimeField( + auto_now=True, verbose_name="fecha de última modificación" + ), + ), + migrations.AlterField( + model_name="orderline", + name="order", + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="lines", + to="shop.order", + verbose_name="pedido", + ), + ), + migrations.AlterField( + model_name="orderline", + name="price", + field=models.DecimalField( + decimal_places=4, max_digits=13, verbose_name="precio" + ), + ), + migrations.AlterField( + model_name="orderline", + name="product", + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to="shop.product", + verbose_name="producto", + ), + ), + migrations.AlterField( + model_name="orderline", + name="quantity", + field=models.DecimalField( + decimal_places=4, + default=Decimal("1"), + max_digits=13, + verbose_name="cantidad", + ), + ), + migrations.AlterField( + model_name="orderline", + name="tax_value", + field=models.PositiveIntegerField(verbose_name="valor de impuestos"), + ), + migrations.AlterField( + model_name="orderline", + name="taxes", + field=models.DecimalField( + decimal_places=4, max_digits=13, verbose_name="impuestos" + ), + ), + migrations.AlterField( + model_name="orderline", + name="total", + field=models.DecimalField( + decimal_places=4, max_digits=13, verbose_name="total" + ), + ), + migrations.AlterField( + model_name="product", + name="brand", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to="shop.brand", + verbose_name="marca", + ), + ), + migrations.AlterField( + model_name="product", + name="creation_date", + field=models.DateTimeField( + auto_now_add=True, verbose_name="fecha de creación" + ), + ), + migrations.AlterField( + model_name="product", + name="description", + field=models.TextField(blank=True, default="", verbose_name="descripción"), + ), + migrations.AlterField( + model_name="product", + name="images", + field=models.ManyToManyField( + blank=True, to="files.fileupload", verbose_name="imágenes" + ), + ), + migrations.AlterField( + model_name="product", + name="is_digital_asset", + field=models.BooleanField( + default=False, verbose_name="es un activo digital" + ), + ), + migrations.AlterField( + model_name="product", + name="last_modification_date", + field=models.DateTimeField( + auto_now=True, verbose_name="fecha de última modificación" + ), + ), + migrations.AlterField( + model_name="product", + name="name", + field=models.CharField(max_length=96, verbose_name="nombre"), + ), + migrations.AlterField( + model_name="product", + name="sku", + field=models.CharField( + max_length=64, unique=True, verbose_name="código de referencia" + ), + ), + migrations.AlterField( + model_name="product", + name="stock", + field=models.DecimalField( + decimal_places=4, + default=Decimal("0"), + max_digits=13, + verbose_name="stock", + ), + ), + migrations.AlterField( + model_name="product", + name="tags", + field=models.ManyToManyField( + blank=True, to="shop.tag", verbose_name="etiquetas" + ), + ), + migrations.AlterField( + model_name="productbatch", + name="code", + field=models.CharField( + db_index=True, max_length=32, unique=True, verbose_name="código" + ), + ), + migrations.AlterField( + model_name="productbatch", + name="creation_date", + field=models.DateTimeField( + auto_now_add=True, verbose_name="fecha de creación" + ), + ), + migrations.AlterField( + model_name="productbatch", + name="expiration_date", + field=models.DateField( + blank=True, + null=True, + verbose_name="fecha de caducidad / consumo preferente", + ), + ), + migrations.AlterField( + model_name="productbatch", + name="last_modification_date", + field=models.DateTimeField( + auto_now=True, verbose_name="fecha de última modificación" + ), + ), + migrations.AlterField( + model_name="productbatch", + name="product", + field=models.ForeignKey( + on_delete=django.db.models.deletion.PROTECT, + to="shop.product", + verbose_name="producto", + ), + ), + migrations.AlterField( + model_name="productbatch", + name="provider", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to="shop.provider", + verbose_name="proveedor", + ), + ), + migrations.AlterField( + model_name="productbatch", + name="quantity", + field=models.DecimalField( + decimal_places=4, + default=Decimal("1"), + max_digits=13, + verbose_name="cantidad", + ), + ), + migrations.AlterField( + model_name="productprice", + name="creation_date", + field=models.DateTimeField( + auto_now_add=True, verbose_name="fecha de creación" + ), + ), + migrations.AlterField( + model_name="productprice", + name="current", + field=models.BooleanField( + default=False, verbose_name="es el precio actual" + ), + ), + migrations.AlterField( + model_name="productprice", + name="date", + field=models.DateTimeField( + default=django.utils.timezone.now, verbose_name="fecha" + ), + ), + migrations.AlterField( + model_name="productprice", + name="last_modification_date", + field=models.DateTimeField( + auto_now=True, verbose_name="fecha de última modificación" + ), + ), + migrations.AlterField( + model_name="productprice", + name="price", + field=models.DecimalField( + decimal_places=2, max_digits=11, verbose_name="precio" + ), + ), + migrations.AlterField( + model_name="productprice", + name="product", + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="prices", + to="shop.product", + verbose_name="producto", + ), + ), + migrations.AlterField( + model_name="productprice", + name="tax", + field=models.ForeignKey( + on_delete=django.db.models.deletion.PROTECT, + to="shop.tax", + verbose_name="impuesto aplicable", + ), + ), + migrations.AlterField( + model_name="provider", + name="address", + field=models.CharField(max_length=255, verbose_name="dirección"), + ), + migrations.AlterField( + model_name="provider", + name="city", + field=models.CharField(max_length=64, verbose_name="ciudad"), + ), + migrations.AlterField( + model_name="provider", + name="country", + field=models.CharField(max_length=64, verbose_name="país"), + ), + migrations.AlterField( + model_name="provider", + name="creation_date", + field=models.DateTimeField( + auto_now_add=True, verbose_name="fecha de creación" + ), + ), + migrations.AlterField( + model_name="provider", + name="email", + field=models.EmailField(max_length=254, verbose_name="e-mail de contacto"), + ), + migrations.AlterField( + model_name="provider", + name="last_modification_date", + field=models.DateTimeField( + auto_now=True, verbose_name="fecha de última modificación" + ), + ), + migrations.AlterField( + model_name="provider", + name="name", + field=models.CharField(max_length=64, verbose_name="nombre"), + ), + migrations.AlterField( + model_name="provider", + name="state", + field=models.CharField(max_length=64, verbose_name="región"), + ), + migrations.AlterField( + model_name="provider", + name="vat_id", + field=models.CharField( + max_length=32, unique=True, verbose_name="documento de identidad" + ), + ), + migrations.AlterField( + model_name="provider", + name="zip", + field=models.CharField(max_length=32, verbose_name="código postal"), + ), + migrations.AlterField( + model_name="tax", + name="code", + field=models.CharField( + max_length=8, unique=True, verbose_name="código de impuesto" + ), + ), + migrations.AlterField( + model_name="tax", + name="creation_date", + field=models.DateTimeField( + auto_now_add=True, verbose_name="fecha de creación" + ), + ), + migrations.AlterField( + model_name="tax", + name="last_modification_date", + field=models.DateTimeField( + auto_now=True, verbose_name="fecha de última modificación" + ), + ), + migrations.AlterField( + model_name="tax", + name="value", + field=models.PositiveIntegerField(verbose_name="valor entero (porcentaje)"), + ), + ] diff --git a/shop/models.py b/shop/models.py index 874c436..be8cbe7 100644 --- a/shop/models.py +++ b/shop/models.py @@ -8,10 +8,10 @@ from django.utils.text import gettext_lazy as _ class TimestampedModel(models.Model): creation_date = models.DateTimeField( - auto_now_add=True, verbose_name=_("Fecha de creación") + auto_now_add=True, verbose_name=_("fecha de creación") ) last_modification_date = models.DateTimeField( - auto_now=True, verbose_name=_("Fecha de última modificación") + auto_now=True, verbose_name=_("fecha de última modificación") ) class Meta: @@ -36,37 +36,39 @@ class Product(TimestampedModel): blank=False, null=False, unique=True, - verbose_name=_("Código de referencia"), + verbose_name=_("código de referencia"), ) name = models.CharField( max_length=96, blank=False, null=False, - verbose_name=_("Nombre"), + verbose_name=_("nombre"), ) description = models.TextField( blank=True, default="", - verbose_name=_("Descripción"), + verbose_name=_("descripción"), ) stock = models.DecimalField( max_digits=13, decimal_places=4, default=Decimal("0"), - verbose_name=_("Stock"), + verbose_name=_("stock"), + ) + is_digital_asset = models.BooleanField( + default=False, verbose_name=_("es un activo digital") ) - is_digital_asset = models.BooleanField(default=False) url = models.URLField(blank=True, verbose_name=_("URL de descarga")) images = models.ManyToManyField( - "files.FileUpload", blank=True, verbose_name=_("Imágenes") + "files.FileUpload", blank=True, verbose_name=_("imágenes") ) - tags = models.ManyToManyField("shop.Tag", blank=True, verbose_name=_("Etiquetas")) + tags = models.ManyToManyField("shop.Tag", blank=True, verbose_name=_("etiquetas")) brand = models.ForeignKey( "shop.Brand", blank=True, null=True, on_delete=models.SET_NULL, - verbose_name=_("Marca"), + verbose_name=_("marca"), ) def __str__(self): @@ -84,21 +86,21 @@ class Product(TimestampedModel): class ProductPrice(TimestampedModel): price = models.DecimalField( - max_digits=11, decimal_places=2, verbose_name=_("Precio") + max_digits=11, decimal_places=2, verbose_name=_("precio") ) - date = models.DateTimeField(default=timezone.now, verbose_name=_("Fecha")) + date = models.DateTimeField(default=timezone.now, verbose_name=_("fecha")) product = models.ForeignKey( "shop.Product", on_delete=models.CASCADE, - verbose_name=_("Producto"), + verbose_name=_("producto"), related_name="prices", ) tax = models.ForeignKey( "shop.Tax", on_delete=models.PROTECT, - verbose_name=_("Impuesto aplicable"), + verbose_name=_("impuesto aplicable"), ) - current = models.BooleanField(default=False, verbose_name=_("Es el precio actual")) + current = models.BooleanField(default=False, verbose_name=_("es el precio actual")) def __str__(self): return f"{self.price} - {self.tax.code}" @@ -111,31 +113,31 @@ class ProductPrice(TimestampedModel): class Meta: verbose_name = _("precio de producto") verbose_name_plural = _("precio de producto") - ordering = ("-date", ) + ordering = ("-date",) class ProductBatch(TimestampedModel): code = models.CharField( - max_length=32, unique=True, db_index=True, verbose_name=_("Código") + max_length=32, unique=True, db_index=True, verbose_name=_("código") ) product = models.ForeignKey( - "shop.Product", on_delete=models.PROTECT, verbose_name=_("Producto") + "shop.Product", on_delete=models.PROTECT, verbose_name=_("producto") ) quantity = models.DecimalField( max_digits=13, decimal_places=4, default=Decimal("1"), - verbose_name=_("Cantidad"), + verbose_name=_("cantidad"), ) expiration_date = models.DateField( - blank=True, null=True, verbose_name=_("Fecha de caducidad / consumo preferente") + blank=True, null=True, verbose_name=_("fecha de caducidad / consumo preferente") ) provider = models.ForeignKey( "shop.Provider", on_delete=models.SET_NULL, blank=True, null=True, - verbose_name=_("Proveedor"), + verbose_name=_("proveedor"), ) def __str__(self): @@ -148,10 +150,10 @@ class ProductBatch(TimestampedModel): class Tax(TimestampedModel): code = models.CharField( - max_length=8, blank=False, unique=True, verbose_name=_("Código de impuesto") + max_length=8, blank=False, unique=True, verbose_name=_("código de impuesto") ) value = models.PositiveIntegerField( - null=False, blank=False, verbose_name=_("Valor entero (porcentaje)") + null=False, blank=False, verbose_name=_("valor entero (porcentaje)") ) def __str__(self): @@ -160,7 +162,7 @@ class Tax(TimestampedModel): class Meta: verbose_name = _("impuesto") verbose_name_plural = _("impuestos") - ordering = ("id", ) + ordering = ("id",) class Customer(TimestampedModel): @@ -168,19 +170,19 @@ class Customer(TimestampedModel): max_length=32, blank=False, unique=True, - verbose_name=_("Documento de identidad"), + verbose_name=_("documento de identidad"), ) - first_name = models.CharField(max_length=64, blank=False, verbose_name=_("Nombre")) + first_name = models.CharField(max_length=64, blank=False, verbose_name=_("nombre")) last_name = models.CharField( - max_length=64, blank=False, verbose_name=_("Apellidos") + max_length=64, blank=False, verbose_name=_("apellidos") ) - email = models.EmailField(blank=False, verbose_name=_("E-mail")) + email = models.EmailField(blank=False, verbose_name=_("e-mail")) - address = models.CharField(max_length=255, blank=False, verbose_name=_("Dirección")) - city = models.CharField(max_length=64, blank=False, verbose_name=_("Ciudad")) - state = models.CharField(max_length=64, blank=False, verbose_name=_("Región")) - country = models.CharField(max_length=64, blank=False, verbose_name=_("País")) - zip = models.CharField(max_length=32, blank=False, verbose_name=_("Código postal")) + address = models.CharField(max_length=255, blank=False, verbose_name=_("dirección")) + city = models.CharField(max_length=64, blank=False, verbose_name=_("ciudad")) + state = models.CharField(max_length=64, blank=False, verbose_name=_("región")) + country = models.CharField(max_length=64, blank=False, verbose_name=_("país")) + zip = models.CharField(max_length=32, blank=False, verbose_name=_("código postal")) def __str__(self): return f"{self.vat_id} - {self.first_name} {self.last_name}" @@ -195,11 +197,11 @@ class Provider(TimestampedModel): max_length=32, blank=False, unique=True, - verbose_name=_("Documento de identidad"), + verbose_name=_("documento de identidad"), ) - name = models.CharField(max_length=64, blank=False, verbose_name=_("Nombre")) + name = models.CharField(max_length=64, blank=False, verbose_name=_("nombre")) - email = models.EmailField(blank=False, verbose_name=_("E-mail de contacto")) + email = models.EmailField(blank=False, verbose_name=_("e-mail de contacto")) phone = models.CharField( max_length=16, blank=True, @@ -208,11 +210,11 @@ class Provider(TimestampedModel): verbose_name=_("Teléfono de contacto"), ) - address = models.CharField(max_length=255, blank=False, verbose_name=_("Dirección")) - city = models.CharField(max_length=64, blank=False, verbose_name=_("Ciudad")) - state = models.CharField(max_length=64, blank=False, verbose_name=_("Región")) - country = models.CharField(max_length=64, blank=False, verbose_name=_("País")) - zip = models.CharField(max_length=32, blank=False, verbose_name=_("Código postal")) + address = models.CharField(max_length=255, blank=False, verbose_name=_("dirección")) + city = models.CharField(max_length=64, blank=False, verbose_name=_("ciudad")) + state = models.CharField(max_length=64, blank=False, verbose_name=_("región")) + country = models.CharField(max_length=64, blank=False, verbose_name=_("país")) + zip = models.CharField(max_length=32, blank=False, verbose_name=_("código postal")) def __str__(self): return f"{self.vat_id} - {self.name}" @@ -224,7 +226,7 @@ class Provider(TimestampedModel): class Brand(TimestampedModel): name = models.CharField( - max_length=100, unique=True, blank=False, null=False, verbose_name=_("Nombre") + max_length=100, unique=True, blank=False, null=False, verbose_name=_("nombre") ) class Meta: @@ -237,14 +239,14 @@ class OrderLine(TimestampedModel): "shop.Order", on_delete=models.CASCADE, related_name="lines", - verbose_name=_("Pedido"), + verbose_name=_("pedido"), ) product = models.ForeignKey( "shop.Product", on_delete=models.CASCADE, null=False, blank=False, - verbose_name=_("Producto"), + verbose_name=_("producto"), ) quantity = models.DecimalField( max_digits=13, @@ -252,12 +254,12 @@ class OrderLine(TimestampedModel): default=Decimal("1"), null=False, blank=False, - verbose_name=_("Cantidad"), + verbose_name=_("cantidad"), ) # Precio del producto en el momento en el que se crea el pedido price = models.DecimalField( - max_digits=13, decimal_places=4, verbose_name=_("Precio") + max_digits=13, decimal_places=4, verbose_name=_("precio") ) # base_total = quantity * price @@ -267,22 +269,22 @@ class OrderLine(TimestampedModel): default=Decimal("0"), null=False, blank=False, - verbose_name=_("Total sin impuestos"), + verbose_name=_("total sin impuestos"), ) # Valor entero del impuesto en el momento en el que se crea el pedido tax_value = models.PositiveIntegerField( - null=False, blank=False, verbose_name=_("Valor de impuestos") + null=False, blank=False, verbose_name=_("valor de impuestos") ) # taxes = price * quantity * (tax_value / 100) taxes = models.DecimalField( - max_digits=13, decimal_places=4, verbose_name=_("Impuestos") + max_digits=13, decimal_places=4, verbose_name=_("impuestos") ) # total = base_total + taxes total = models.DecimalField( - max_digits=13, decimal_places=4, verbose_name=_("Total") + max_digits=13, decimal_places=4, verbose_name=_("total") ) def __str__(self): @@ -295,72 +297,72 @@ class OrderLine(TimestampedModel): class Order(TimestampedModel): class Statuses(models.TextChoices): - STATUS_PENDING = "PEN", _("Pendiente de pago") - STATUS_PAID = "PAI", _("Pagado") - STATUS_READY = "RDY", _("Preparado") - STATUS_TO_BE_SENT = "TBS", _("Listo para ser enviado") - STATUS_SENT = "SNT", _("Enviado") - STATUS_DELIVERED = "DLV", _("Entregado") - STATUS_FINISHED = "FIN", _("Finalizado") - STATUS_CANCELED = "CAN", _("Cancelado") - STATUS_RETURNED = "RTN", _("Devuelto") + STATUS_PENDING = "PEN", _("pendiente de pago") + STATUS_PAID = "PAI", _("pagado") + STATUS_READY = "RDY", _("preparado") + STATUS_TO_BE_SENT = "TBS", _("listo para ser enviado") + STATUS_SENT = "SNT", _("enviado") + STATUS_DELIVERED = "DLV", _("entregado") + STATUS_FINISHED = "FIN", _("finalizado") + STATUS_CANCELED = "CAN", _("cancelado") + STATUS_RETURNED = "RTN", _("devuelto") uuid = models.UUIDField(default=uuid4, verbose_name=_("UUID"), db_index=True) status = models.CharField( - max_length=3, default=Statuses.STATUS_PENDING, verbose_name=_("Estado") + max_length=3, default=Statuses.STATUS_PENDING, verbose_name=_("estado") ) base_total = models.DecimalField( default=Decimal("0"), max_digits=13, decimal_places=2, - verbose_name=_("Base imponible"), + verbose_name=_("base imponible"), ) total = models.DecimalField( - default=Decimal("0"), max_digits=13, decimal_places=2, verbose_name=_("Total") + default=Decimal("0"), max_digits=13, decimal_places=2, verbose_name=_("total") ) # Customer reference customer = models.ForeignKey( - "shop.Customer", on_delete=models.PROTECT, verbose_name=_("Cliente") + "shop.Customer", on_delete=models.PROTECT, verbose_name=_("cliente") ) # Billing information billing_address = models.CharField( - max_length=255, blank=False, verbose_name=_("Dirección de facturación") + max_length=255, blank=False, verbose_name=_("dirección de facturación") ) billing_city = models.CharField( - max_length=64, blank=False, verbose_name=_("Ciudad de facturación") + max_length=64, blank=False, verbose_name=_("ciudad de facturación") ) billing_state = models.CharField( - max_length=64, blank=False, verbose_name=_("Región de facturación") + max_length=64, blank=False, verbose_name=_("región de facturación") ) billing_country = models.CharField( - max_length=64, blank=False, verbose_name=_("País de facturación") + max_length=64, blank=False, verbose_name=_("país de facturación") ) billing_zip = models.CharField( - max_length=32, blank=False, verbose_name=_("Código postal de facturación") + max_length=32, blank=False, verbose_name=_("código postal de facturación") ) # Shipping information shipping_address = models.CharField( - max_length=255, blank=False, verbose_name=_("Dirección") + max_length=255, blank=False, verbose_name=_("dirección") ) shipping_city = models.CharField( - max_length=64, blank=False, verbose_name=_("Ciudad") + max_length=64, blank=False, verbose_name=_("ciudad") ) shipping_state = models.CharField( - max_length=64, blank=False, verbose_name=_("Región") + max_length=64, blank=False, verbose_name=_("región") ) shipping_country = models.CharField( - max_length=64, blank=False, verbose_name=_("País") + max_length=64, blank=False, verbose_name=_("país") ) shipping_zip = models.CharField( - max_length=32, blank=False, verbose_name=_("Código postal") + max_length=32, blank=False, verbose_name=_("código postal") ) contact_phone = models.CharField( - max_length=32, blank=True, verbose_name=_("Teléfono de contacto") + max_length=32, blank=True, verbose_name=_("teléfono de contacto") ) def calculate_total_from_lines(self): diff --git a/shop/tests/test_api_products.py b/shop/tests/test_api_products.py index 9a8fc4c..a142d63 100644 --- a/shop/tests/test_api_products.py +++ b/shop/tests/test_api_products.py @@ -22,7 +22,7 @@ class TestProductsAPI(APITestCase, TestUserAuthenticationMixin): self.tag = Tag.objects.create(name="Alimentos") def get_random_sku(self): - return ''.join(random.choices(string.ascii_uppercase, k=16)) + return "".join(random.choices(string.ascii_uppercase, k=16)) def create_products(self): self.product = Product.objects.create( diff --git a/shop/tests/test_shop_models.py b/shop/tests/test_shop_models.py index 849abb2..dbfd884 100644 --- a/shop/tests/test_shop_models.py +++ b/shop/tests/test_shop_models.py @@ -14,17 +14,17 @@ class ShopModelsTest(TestCase): def create_products(self): self.potatoes = Product.objects.create( - sku='0000001', + sku="0000001", name="Patatas", stock=Decimal("100.00"), ) self.gasoline = Product.objects.create( - sku='0000002', + sku="0000002", name="Gasolina", stock=Decimal("800.00"), ) self.usb_c = Product.objects.create( - sku='0000003', + sku="0000003", name="Cable USB-C", stock=Decimal("5.00"), )