diff --git a/shop/migrations/0003_order_shipping_method_alter_payment_order.py b/shop/migrations/0003_order_shipping_method_alter_payment_order.py new file mode 100644 index 0000000..e9f9a9a --- /dev/null +++ b/shop/migrations/0003_order_shipping_method_alter_payment_order.py @@ -0,0 +1,35 @@ +# Generated by Django 5.1.4 on 2025-01-12 22:15 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("shop", "0002_shopsettings_order_code_order_shipping_status_and_more"), + ] + + operations = [ + migrations.AddField( + model_name="order", + name="shipping_method", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to="shop.shippingmethod", + verbose_name="método de envío", + ), + ), + migrations.AlterField( + model_name="payment", + name="order", + field=models.ForeignKey( + on_delete=django.db.models.deletion.PROTECT, + related_name="payments", + to="shop.order", + verbose_name="pedido", + ), + ), + ] diff --git a/shop/models.py b/shop/models.py index 16f4550..00ae41b 100644 --- a/shop/models.py +++ b/shop/models.py @@ -429,6 +429,14 @@ class Order(TimestampedModel): max_length=32, blank=True, verbose_name=_("teléfono de contacto") ) + shipping_method = models.ForeignKey( + "shop.ShippingMethod", + blank=True, + null=True, + on_delete=models.SET_NULL, + verbose_name=_("método de envío"), + ) + def calculate_total_from_lines(self): self.base_total = self.lines.aggregate(base_total=models.Sum("base_total")).get( "base_total" diff --git a/shop/signals.py b/shop/signals.py new file mode 100644 index 0000000..92d3d99 --- /dev/null +++ b/shop/signals.py @@ -0,0 +1,5 @@ +from django.core.signals import Signal + + +clear_cart = Signal() +send_order_email = Signal() diff --git a/shop/utils.py b/shop/utils.py index 68ca12e..ab97de2 100644 --- a/shop/utils.py +++ b/shop/utils.py @@ -111,6 +111,7 @@ def create_order_from_cart( shipping_state=shipping_address_state, shipping_country=shipping_address_country, shipping_zip=shipping_address_zip, + shipping_method=shipping_method, user=cart.user, email=email, ) diff --git a/web/signals.py b/web/signals.py new file mode 100644 index 0000000..f01e2dc --- /dev/null +++ b/web/signals.py @@ -0,0 +1,15 @@ +from django.dispatch import receiver + +from shop.models import Cart, CartItem +from shop.signals import clear_cart, send_order_email + + +@receiver(clear_cart, dispatch_uid="clear_cart") +def create_payment_from_redsys(sender, **kwargs): + cart = Cart.objects.get(hash=kwargs.get("cart_id")) + CartItem.objects.filter(cart=cart).delete() + + +@receiver(send_order_email, dispatch_uid="send_order_email") +def create_payment_from_redsys(sender, **kwargs): + pass diff --git a/web/templates/web/list_products.html b/web/templates/web/list_products.html index e194afa..53763bf 100644 --- a/web/templates/web/list_products.html +++ b/web/templates/web/list_products.html @@ -1,6 +1,5 @@ {% load i18n %} {% load static %} -{{ page }}