From fef09baa3d3675c7836a2523f14c301ac44f04e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=AD=C3=B0ir=20Valberg=20Gu=C3=B0mundsson?= Date: Tue, 9 Jul 2019 10:07:00 +0200 Subject: [PATCH] Make review and pay button save changes made to order. Also move shop related templates back into shop app. --- .../templates}/creditnote_list.html | 0 .../shop => shop/templates}/order_detail.html | 8 +++--- .../shop => shop/templates}/order_list.html | 0 .../shop => shop/templates}/order_review.html | 4 +-- src/shop/tests.py | 26 +++++++++++++++++++ src/shop/views.py | 17 +++++++----- 6 files changed, 42 insertions(+), 13 deletions(-) rename src/{profiles/templates/shop => shop/templates}/creditnote_list.html (100%) rename src/{profiles/templates/shop => shop/templates}/order_detail.html (92%) rename src/{profiles/templates/shop => shop/templates}/order_list.html (100%) rename src/{profiles/templates/shop => shop/templates}/order_review.html (97%) diff --git a/src/profiles/templates/shop/creditnote_list.html b/src/shop/templates/creditnote_list.html similarity index 100% rename from src/profiles/templates/shop/creditnote_list.html rename to src/shop/templates/creditnote_list.html diff --git a/src/profiles/templates/shop/order_detail.html b/src/shop/templates/order_detail.html similarity index 92% rename from src/profiles/templates/shop/order_detail.html rename to src/shop/templates/order_detail.html index 50cd05eb..0444bebc 100644 --- a/src/profiles/templates/shop/order_detail.html +++ b/src/shop/templates/order_detail.html @@ -71,8 +71,8 @@ {% if not order.open == None %}

Comment:

- {% elif order.open == None and order.comment %} -
{{ order.comment|linebreaks }}
+ {% elif order.open == None and order.customer_comment %} +
{{ order.customer_comment|linebreaks }}
{% endif %} {% if not order.open == None %} @@ -90,9 +90,7 @@ {% bootstrap_button "Cancel order" button_type="submit" button_class="btn-danger" name="cancel_order" %} {% endif %} {% if not order.paid %} - - Review and pay - + {% bootstrap_button "Review and pay" button_type="submit" button_class="btn btn-success btn-lg pull-right" name="review_and_pay" %} {% endif %} diff --git a/src/profiles/templates/shop/order_list.html b/src/shop/templates/order_list.html similarity index 100% rename from src/profiles/templates/shop/order_list.html rename to src/shop/templates/order_list.html diff --git a/src/profiles/templates/shop/order_review.html b/src/shop/templates/order_review.html similarity index 97% rename from src/profiles/templates/shop/order_review.html rename to src/shop/templates/order_review.html index 17577151..9e4bb1ab 100644 --- a/src/profiles/templates/shop/order_review.html +++ b/src/shop/templates/order_review.html @@ -63,9 +63,9 @@ - {% if order.comment %} + {% if order.customer_comment %}

Comment:

-
{{ order.comment|linebreaks }}
+
{{ order.customer_comment|linebreaks }}
{% endif %} {% if order.invoice_address %} diff --git a/src/shop/tests.py b/src/shop/tests.py index c45a9dae..38607056 100644 --- a/src/shop/tests.py +++ b/src/shop/tests.py @@ -313,6 +313,32 @@ class TestOrderDetailView(TestCase): self.assertEquals(response.status_code, 200) self.assertIn("quantity", response.context["order_product_formset"].errors[0]) + def test_review_and_pay_saves_and_redirects(self): + self.client.force_login(self.user) + + opr = OrderProductRelationFactory(order=self.order) + + data = self.base_form_data + data["review_and_pay"] = "" + data["form-0-id"] = opr.pk + data["form-0-quantity"] = 5 + data["customer_comment"] = "A comment" + data["invoice_address"] = "An invoice address" + + response = self.client.post(self.path, data=data) + self.assertRedirects( + response, reverse("shop:order_review_and_pay", kwargs={"pk": self.order.pk}) + ) + + # Get the updated objects + opr.refresh_from_db() + self.order.refresh_from_db() + + # Check them + self.assertEqual(opr.quantity, 5) + self.assertEqual(self.order.invoice_address, "An invoice address") + self.assertEqual(self.order.customer_comment, "A comment") + class TestOrderReviewAndPay(TestCase): def setUp(self): diff --git a/src/shop/views.py b/src/shop/views.py index d6813045..7330f683 100644 --- a/src/shop/views.py +++ b/src/shop/views.py @@ -271,7 +271,7 @@ class ProductDetailView(FormView, DetailView): class OrderListView(LoginRequiredMixin, ListView): model = Order - template_name = "shop/order_list.html" + template_name = "order_list.html" context_object_name = "orders" def get_queryset(self): @@ -287,7 +287,7 @@ class OrderDetailView( DetailView, ): model = Order - template_name = "shop/order_detail.html" + template_name = "order_detail.html" context_object_name = "order" def get_context_data(self, **kwargs): @@ -336,8 +336,8 @@ class OrderDetailView( self.get_context_data(order_product_formset=formset) ) - # No stock issues, proceed to check if the user is updating the order. - if "update_order" in request.POST: + # No stock issues, proceed to check if the user is updating or proceeding to review and pay the order. + if "update_order" or "review_and_pay" in request.POST: # We have already made sure the formset is valid, so just save it to update quantities. formset.save() @@ -345,6 +345,11 @@ class OrderDetailView( order.invoice_address = request.POST.get("invoice_address") or "" order.save() + if "review_and_pay" in request.POST: + return HttpResponseRedirect( + reverse("shop:order_review_and_pay", kwargs={"pk": order.pk}) + ) + return super(OrderDetailView, self).get(request, *args, **kwargs) @@ -355,7 +360,7 @@ class OrderReviewAndPayView( EnsureOrderIsNotCancelledMixin, DetailView, ): - template_name = "shop/order_review.html" + template_name = "order_review.html" context_object_name = "order" def post(self, request, *args, **kwargs): @@ -415,7 +420,7 @@ class DownloadInvoiceView( class CreditNoteListView(LoginRequiredMixin, ListView): model = CreditNote - template_name = "shop/creditnote_list.html" + template_name = "creditnote_list.html" context_object_name = "creditnotes" def get_queryset(self):