Browse Source

Use entire queryset for offer report download rather than paginated one (#4105)

* Use entire queryset for offer report download rather than paginated queryset

* Add offer order report test

* Specify order number in create_order factory
master
Joey 2 years ago
parent
commit
9aa30727ac
No account linked to committer's email address

+ 1
- 1
src/oscar/apps/dashboard/offers/views.py View File

407
     def render_to_response(self, context):
407
     def render_to_response(self, context):
408
         if self.request.GET.get('format') == 'csv':
408
         if self.request.GET.get('format') == 'csv':
409
             formatter = OrderDiscountCSVFormatter()
409
             formatter = OrderDiscountCSVFormatter()
410
-            return formatter.generate_response(context['order_discounts'],
410
+            return formatter.generate_response(self.get_queryset(),
411
                                                offer=self.offer)
411
                                                offer=self.offer)
412
         return super().render_to_response(context)
412
         return super().render_to_response(context)

+ 15
- 0
tests/functional/dashboard/test_offer.py View File

2
 from django.utils import timezone
2
 from django.utils import timezone
3
 
3
 
4
 from oscar.apps.offer import models
4
 from oscar.apps.offer import models
5
+from oscar.apps.order.models import OrderDiscount
5
 from oscar.test import factories, testcases
6
 from oscar.test import factories, testcases
6
 
7
 
7
 
8
 
248
 
249
 
249
         self.assertNotIn(offer_a, offer_b.combinations.all())
250
         self.assertNotIn(offer_a, offer_b.combinations.all())
250
 
251
 
252
+    def test_create_offer_order_report(self):
253
+        order1 = factories.create_order(number="100001")
254
+        order2 = factories.create_order(number="100002")
255
+        offer = factories.create_offer()
256
+        OrderDiscount.objects.create(order=order1, offer_id=offer.id)
257
+        OrderDiscount.objects.create(order=order2, offer_id=offer.id)
258
+
259
+        report_url = "%s%s" % (reverse("dashboard:offer-detail", kwargs={'pk': offer.pk}), "?format=csv")
260
+        response = self.get(report_url)
261
+        self.assertEqual(response.status_code, 200)
262
+        self.assertEqual(response.headers["Content-Type"], "text/csv")
263
+        self.assertIn("100001", response.content.decode("utf-8"))
264
+        self.assertIn("100002", response.content.decode("utf-8"))
265
+
251
 
266
 
252
 class TestOfferListSearch(testcases.WebTestCase):
267
 class TestOfferListSearch(testcases.WebTestCase):
253
     is_staff = True
268
     is_staff = True

Loading…
Cancel
Save