From 0d27c2f93f6bcec72dacaa8f1a882ca43e43744a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laur=C3=A9line=20Gu=C3=A9rin?= Date: Fri, 22 Mar 2024 15:16:34 +0100 Subject: [PATCH] backet: add information_message on top of basket (#88504) --- lingo/api/serializers.py | 1 + .../migrations/0007_information_messages.py | 7 ++- lingo/basket/models.py | 9 ++++ .../templates/lingo/basket/basket_cancel.html | 6 +-- .../templates/lingo/basket/basket_detail.html | 3 ++ tests/api/test_basket.py | 3 ++ tests/basket/test_basket.py | 50 +++++++++++++++++++ 7 files changed, 74 insertions(+), 5 deletions(-) diff --git a/lingo/api/serializers.py b/lingo/api/serializers.py index 11df777..4030fdc 100644 --- a/lingo/api/serializers.py +++ b/lingo/api/serializers.py @@ -487,6 +487,7 @@ class BasketLineSerializer(serializers.ModelSerializer): 'user_external_id', 'user_first_name', 'user_last_name', + 'information_message', 'cancel_information_message', 'group_items', 'form_url', diff --git a/lingo/basket/migrations/0007_information_messages.py b/lingo/basket/migrations/0007_information_messages.py index 6c8a601..cf08aba 100644 --- a/lingo/basket/migrations/0007_information_messages.py +++ b/lingo/basket/migrations/0007_information_messages.py @@ -1,4 +1,4 @@ -from django.db import migrations +from django.db import migrations, models class Migration(migrations.Migration): @@ -12,4 +12,9 @@ class Migration(migrations.Migration): old_name='information_message', new_name='cancel_information_message', ), + migrations.AddField( + model_name='basketline', + name='information_message', + field=models.TextField(blank=True), + ), ] diff --git a/lingo/basket/models.py b/lingo/basket/models.py index c8d5914..038044e 100644 --- a/lingo/basket/models.py +++ b/lingo/basket/models.py @@ -77,6 +77,14 @@ class Basket(models.Model): def lines(self): return self.basketline_set.filter(closed=True).order_by('pk') + def information_messages(self): + return sorted(list({li.information_message for li in self.lines if li.information_message})) + + def cancel_information_messages(self): + return sorted( + list({li.cancel_information_message for li in self.lines if li.cancel_information_message}) + ) + @classmethod def signal_paid_invoice(cls, invoice): basket = cls.objects.filter(invoice=invoice).first() @@ -193,6 +201,7 @@ class BasketLine(models.Model): user_first_name = models.CharField(max_length=250) user_last_name = models.CharField(max_length=250) + information_message = models.TextField(blank=True) cancel_information_message = models.TextField(blank=True) group_items = models.BooleanField(default=False) diff --git a/lingo/basket/templates/lingo/basket/basket_cancel.html b/lingo/basket/templates/lingo/basket/basket_cancel.html index f03f465..6cae9b6 100644 --- a/lingo/basket/templates/lingo/basket/basket_cancel.html +++ b/lingo/basket/templates/lingo/basket/basket_cancel.html @@ -11,10 +11,8 @@
{% csrf_token %}

{% trans "Are you sure you want to cancel this basket?" %}

- {% for line in basket.lines %} - {% if line.cancel_information_message %} -

{{ line.cancel_information_message }}

- {% endif %} + {% for message in basket.cancel_information_messages %} +

{{ message }}

{% endfor %}
diff --git a/lingo/basket/templates/lingo/basket/basket_detail.html b/lingo/basket/templates/lingo/basket/basket_detail.html index 103ab93..e1dd4c2 100644 --- a/lingo/basket/templates/lingo/basket/basket_detail.html +++ b/lingo/basket/templates/lingo/basket/basket_detail.html @@ -14,6 +14,9 @@ {% endif %}

{% trans "My basket" %}

+ {% for message in basket.information_messages %} +

{{ message }}

+ {% endfor %}