Просмотр исходного кода

Updated extra-views to later revision which changes the classnames to follow Django's conventions, eg FormSetView rather than FormsetView.

Fixed issue with modelformsets not saving because we weren't calling the superclass' form_valid method.
master
Andrew Ingram 14 лет назад
Родитель
Сommit
d4e6e6cc6f
2 измененных файлов: 18 добавлений и 9 удалений
  1. 17
    8
      oscar/apps/basket/views.py
  2. 1
    1
      requirements-dev.txt

+ 17
- 8
oscar/apps/basket/views.py Просмотреть файл

@@ -5,12 +5,12 @@ from django.http import HttpResponseRedirect, Http404
5 5
 from django.views.generic import ListView, FormView
6 6
 from django.forms.models import modelformset_factory
7 7
 
8
-from extra_views import ModelFormsetView
8
+from extra_views import ModelFormSetView
9 9
 from oscar.apps.basket.forms import BasketLineForm, AddToBasketForm, \
10 10
     BasketVoucherForm, SavedLineForm
11 11
 
12 12
 
13
-class BasketView(ModelFormsetView):
13
+class BasketView(ModelFormSetView):
14 14
     model = get_model('basket', 'Line')
15 15
     basket_model = get_model('basket', 'Basket')
16 16
     form_class = BasketLineForm
@@ -35,6 +35,9 @@ class BasketView(ModelFormsetView):
35 35
             except self.basket_model.DoesNotExist:
36 36
                 pass
37 37
         return context
38
+    
39
+    def get_success_url(self):
40
+        return self.request.META.get('HTTP_REFERER', reverse('basket:summary'))
38 41
 
39 42
     def formset_valid(self, formset):
40 43
         needs_auth = False
@@ -49,11 +52,11 @@ class BasketView(ModelFormsetView):
49 52
                     needs_auth = True
50 53
         if needs_auth:
51 54
             messages.error(self.request, "You can't save an item for later if you're not logged in!")     
52
-        return HttpResponseRedirect(self.request.META.get('HTTP_REFERER', reverse('basket:summary')))
55
+        return super(BasketView, self).formset_valid(formset)
53 56
 
54 57
     def formset_invalid(self, formset):
55 58
         messages.info(self.request, "There was a problem updating your basket, please check that all quantities are numbers")
56
-        return HttpResponseRedirect(self.request.META.get('HTTP_REFERER', reverse('basket:summary')))
59
+        return super(BasketView, self).formset_invalid(formset)
57 60
 
58 61
 
59 62
 class BasketAddView(FormView):
@@ -75,6 +78,9 @@ class BasketAddView(FormView):
75 78
             raise Http404()
76 79
         kwargs['instance'] = product
77 80
         return kwargs
81
+    
82
+    def get_success_url(self):
83
+        return self.request.META.get('HTTP_REFERER',reverse('basket:summary'))
78 84
 
79 85
     def form_valid(self, form):
80 86
         options = []
@@ -84,7 +90,7 @@ class BasketAddView(FormView):
84 90
         self.request.basket.add_product(form.instance, form.cleaned_data['quantity'], options)
85 91
         messages.info(self.request, "'%s' (quantity %d) has been added to your basket" %
86 92
                       (form.instance.get_title(), form.cleaned_data['quantity']))
87
-        return HttpResponseRedirect(self.request.META.get('HTTP_REFERER',reverse('basket:summary')))
93
+        return super(BasketAddView, self).form_valid(form)
88 94
     
89 95
     def form_invalid(self, form):
90 96
         return HttpResponseRedirect(self.request.META.get('HTTP_REFERER',reverse('basket:summary')))
@@ -137,7 +143,7 @@ class VoucherAddView(FormView):
137 143
         return HttpResponseRedirect(reverse('basket:summary'))
138 144
 
139 145
 
140
-class SavedView(ModelFormsetView):
146
+class SavedView(ModelFormSetView):
141 147
     model = get_model('basket', 'line')
142 148
     basket_model = get_model('basket', 'basket')
143 149
     form_class = SavedLineForm
@@ -153,6 +159,9 @@ class SavedView(ModelFormsetView):
153 159
             return saved_basket.lines.all().select_related('product', 'product__stockrecord')
154 160
         except self.basket_model.DoesNotExist:
155 161
             return []
162
+        
163
+    def get_success_url(self):
164
+        return self.request.META.get('HTTP_REFERER', reverse('basket:summary'))
156 165
 
157 166
     def formset_valid(self, formset):
158 167
         for form in formset:
@@ -161,8 +170,8 @@ class SavedView(ModelFormsetView):
161 170
                 messages.info(self.request, msg)                
162 171
                 real_basket = self.request.basket
163 172
                 real_basket.merge_line(form.instance)
164
-        return HttpResponseRedirect(self.request.META.get('HTTP_REFERER', reverse('basket:summary')))
165
-    
173
+        return super(SavedView, self).formset_valid(formset)
174
+
166 175
     def formset_invalid(self, formset):
167 176
         return HttpResponseRedirect(self.request.META.get('HTTP_REFERER', reverse('basket:summary')))
168 177
 

+ 1
- 1
requirements-dev.txt Просмотреть файл

@@ -10,4 +10,4 @@ pysolr==2.0.13
10 10
 PyZen==0.3.1
11 11
 mock==0.7.0
12 12
 twill==0.9
13
--e git://github.com/AndrewIngram/django-extra-views.git@b2290b2ca1bc5ee4c08af2b7a9f268d48d3cefd7#egg=django_extra_views-0.1.0-py2.6-dev
13
+-e git://github.com/AndrewIngram/django-extra-views.git@0f10416082c174275836a37141ce797b6caa2896#egg=django_extra_views-0.1.0-py2.6-dev

Загрузка…
Отмена
Сохранить