Explorar el Código

Made payment method form field into ChoiceField for searching orders.

master
David Winterbottom hace 13 años
padre
commit
6df60a5a03

+ 5
- 1
oscar/apps/dashboard/orders/forms.py Ver fichero

4
 Order = get_model('order', 'Order')
4
 Order = get_model('order', 'Order')
5
 OrderNote = get_model('order', 'OrderNote')
5
 OrderNote = get_model('order', 'OrderNote')
6
 ShippingAddress = get_model('order', 'ShippingAddress')
6
 ShippingAddress = get_model('order', 'ShippingAddress')
7
+SourceType = get_model('payment', 'SourceType')
7
 
8
 
8
 
9
 
9
 class OrderSearchForm(forms.Form):
10
 class OrderSearchForm(forms.Form):
20
     date_to = forms.DateField(required=False, label="Date to", input_formats=date_formats)
21
     date_to = forms.DateField(required=False, label="Date to", input_formats=date_formats)
21
 
22
 
22
     voucher = forms.CharField(required=False, label="Voucher code")
23
     voucher = forms.CharField(required=False, label="Voucher code")
23
-    payment_method = forms.CharField(label="Payment method", required=False)
24
+
25
+    method_choices = (('', '---------'),) + tuple([(src.code, src.name) for src in SourceType.objects.all()])
26
+    payment_method = forms.ChoiceField(label="Payment method", required=False,
27
+                                       choices=method_choices)
24
 
28
 
25
     format_choices = (('html', 'HTML'),
29
     format_choices = (('html', 'HTML'),
26
                       ('csv', 'CSV'),)
30
                       ('csv', 'CSV'),)

+ 5
- 5
oscar/apps/dashboard/orders/tests.py Ver fichero

1
 import httplib
1
 import httplib
2
-from django_dynamic_fixture import new, get, F
3
 
2
 
4
 from django.test import TestCase
3
 from django.test import TestCase
5
-from django.test.client import Client
6
 from django.contrib.auth.models import User
4
 from django.contrib.auth.models import User
7
 from django.core.urlresolvers import reverse
5
 from django.core.urlresolvers import reverse
8
 from django.template import Template, Context
6
 from django.template import Template, Context
7
+from django_dynamic_fixture import get
8
+
9
 
9
 
10
 from oscar.test import ClientTestCase
10
 from oscar.test import ClientTestCase
11
 from oscar.test.helpers import create_order
11
 from oscar.test.helpers import create_order
12
 from oscar.apps.order.models import Order, OrderNote
12
 from oscar.apps.order.models import Order, OrderNote
13
-from oscar.apps.dashboard.orders.forms import OrderSearchForm
14
-from oscar.templatetags.dashboard_tags import get_num_user_orders
15
 
13
 
16
 
14
 
17
 class OrderSummaryTests(ClientTestCase):
15
 class OrderSummaryTests(ClientTestCase):
29
     is_staff = True
27
     is_staff = True
30
 
28
 
31
     def test_searching_for_valid_order_number_redirects_to_order_page(self):
29
     def test_searching_for_valid_order_number_redirects_to_order_page(self):
30
+        # Importing here as the import makes DB queries
31
+        from oscar.apps.dashboard.orders.forms import OrderSearchForm
32
         order = create_order()
32
         order = create_order()
33
         fields = OrderSearchForm.base_fields.keys()
33
         fields = OrderSearchForm.base_fields.keys()
34
         pairs = dict(zip(fields, ['']*len(fields)))
34
         pairs = dict(zip(fields, ['']*len(fields)))
65
     def test_order_status_change_creates_system_note(self):
65
     def test_order_status_change_creates_system_note(self):
66
         params = {'order_action': 'change_order_status',
66
         params = {'order_action': 'change_order_status',
67
                   'new_status': 'B'}
67
                   'new_status': 'B'}
68
-        response = self.client.post(self.url, params)
68
+        self.client.post(self.url, params)
69
         notes = self.order.notes.all()
69
         notes = self.order.notes.all()
70
         self.assertEqual(1, len(notes))
70
         self.assertEqual(1, len(notes))
71
         self.assertEqual(OrderNote.SYSTEM, notes[0].note_type)
71
         self.assertEqual(OrderNote.SYSTEM, notes[0].note_type)

+ 3
- 3
oscar/apps/dashboard/orders/views.py Ver fichero

1
 import csv
1
 import csv
2
+import datetime
2
 from decimal import Decimal as D, InvalidOperation
3
 from decimal import Decimal as D, InvalidOperation
3
 
4
 
4
 from django.contrib import messages
5
 from django.contrib import messages
11
 from django.template.defaultfilters import date as format_date
12
 from django.template.defaultfilters import date as format_date
12
 from django.utils.datastructures import SortedDict
13
 from django.utils.datastructures import SortedDict
13
 from django.views.generic import ListView, DetailView, UpdateView, FormView
14
 from django.views.generic import ListView, DetailView, UpdateView, FormView
14
-from django.contrib import messages
15
 
15
 
16
 from oscar.core.loading import get_class
16
 from oscar.core.loading import get_class
17
 from oscar.apps.dashboard.orders import forms
17
 from oscar.apps.dashboard.orders import forms
75
     current_view = 'dashboard:order-list'
75
     current_view = 'dashboard:order-list'
76
 
76
 
77
     def get(self, request, *args, **kwargs):
77
     def get(self, request, *args, **kwargs):
78
-        if 'order_number' in request.GET:
78
+        if 'order_number' in request.GET and request.GET.get('response_format', None) == 'html':
79
             try:
79
             try:
80
                 order = Order.objects.get(number=request.GET['order_number'])
80
                 order = Order.objects.get(number=request.GET['order_number'])
81
             except Order.DoesNotExist:
81
             except Order.DoesNotExist:
384
         except InvalidOperation:
384
         except InvalidOperation:
385
             messages.error(request, "Please choose a valid amount")
385
             messages.error(request, "Please choose a valid amount")
386
             return self.reload_page_response()
386
             return self.reload_page_response()
387
-        return self._create_payment_event(request, order)
387
+        return self._create_payment_event(request, order, amount)
388
 
388
 
389
     def _create_payment_event(self, request, order, amount, lines=None,
389
     def _create_payment_event(self, request, order, amount, lines=None,
390
                               quantities=None):
390
                               quantities=None):

+ 0
- 1
run_tests.py Ver fichero

1
 #!/usr/bin/env python
1
 #!/usr/bin/env python
2
 import sys
2
 import sys
3
-import os
4
 import logging
3
 import logging
5
 from optparse import OptionParser
4
 from optparse import OptionParser
6
 from coverage import coverage
5
 from coverage import coverage

+ 1
- 0
tests/config.py Ver fichero

14
             DATABASES={
14
             DATABASES={
15
                 'default': {
15
                 'default': {
16
                     'ENGINE': 'django.db.backends.sqlite3',
16
                     'ENGINE': 'django.db.backends.sqlite3',
17
+                    'NAME': ':memory:',
17
                     }
18
                     }
18
                 },
19
                 },
19
             INSTALLED_APPS=[
20
             INSTALLED_APPS=[

Loading…
Cancelar
Guardar