Преглед на файлове

Remove several quirks related to offer ranges

* Removed unused _save method. It's not called anywhere.
* Simplified comment and logic for display_order
* Reordered imports
* Used items() instead of six.iteritems() because create_range does not
  get complex kwargs
* Removed a duplicate test
* Test for the correct exception
master
Maik Hoepfel преди 11 години
родител
ревизия
7c4ddb820b
променени са 4 файла, в които са добавени 8 реда и са изтрити 25 реда
  1. 1
    4
      oscar/apps/offer/custom.py
  2. 5
    16
      oscar/apps/offer/models.py
  3. 0
    4
      tests/integration/offer/range_tests.py
  4. 2
    1
      tests/unit/offer/custom_range_tests.py

+ 1
- 4
oscar/apps/offer/custom.py Целия файл

@@ -1,5 +1,3 @@
1
-from django.utils import six
2
-
3 1
 from django.core import exceptions
4 2
 
5 3
 from oscar.apps.offer.models import Range, Condition, Benefit
@@ -36,8 +34,7 @@ def create_range(range_class):
36 34
     except Range.DoesNotExist:
37 35
         obj = Range(**values)
38 36
     else:
39
-        # Using iteritems because the range could potentially be rather big
40
-        for key, value in six.iteritems(values):
37
+        for key, value in values.items():
41 38
             setattr(obj, key, value)
42 39
     obj.save()
43 40
 

+ 5
- 16
oscar/apps/offer/models.py Целия файл

@@ -1,6 +1,5 @@
1 1
 import os
2 2
 import re
3
-from django.utils import six
4 3
 import operator
5 4
 from decimal import Decimal as D, ROUND_DOWN, ROUND_UP
6 5
 
@@ -11,6 +10,7 @@ from django.utils.encoding import python_2_unicode_compatible
11 10
 from django.utils.timezone import now, get_current_timezone
12 11
 from django.utils.translation import ungettext, ugettext_lazy as _
13 12
 from django.utils.importlib import import_module
13
+from django.utils import six
14 14
 from django.core.exceptions import ValidationError
15 15
 from django.core.urlresolvers import reverse
16 16
 from django.conf import settings
@@ -806,11 +806,8 @@ class Range(models.Model):
806 806
         return self.name
807 807
 
808 808
     def get_absolute_url(self):
809
-        return reverse('catalogue:range', kwargs={
810
-            'slug': self.slug})
811
-
812
-    def _save(self, *args, **kwargs):
813
-        super(Range, self).save(*args, **kwargs)
809
+        return reverse(
810
+            'catalogue:range', kwargs={'slug': self.slug})
814 811
 
815 812
     def add_product(self, product, display_order=None):
816 813
         """ Add product to the range
@@ -818,18 +815,10 @@ class Range(models.Model):
818 815
         When adding product that is already in the range, prevent re-adding it.
819 816
         If display_order is specified, update it.
820 817
 
821
-        Standard display_order for a new product in the range (0) puts
818
+        Default display_order for a new product in the range is 0; this puts
822 819
         the product at the top of the list.
823
-
824
-        display_order needs to be tested for None because
825
-
826
-          >>> display_order = 0
827
-          >>> not display_order
828
-          True
829
-          >>> display_order is None
830
-          False
831 820
         """
832
-        initial_order = 0 if display_order is None else display_order
821
+        initial_order = display_order or 0
833 822
         relation, __ = RangeProduct.objects.get_or_create(
834 823
             range=self, product=product,
835 824
             defaults={'display_order': initial_order})

+ 0
- 4
tests/integration/offer/range_tests.py Целия файл

@@ -14,10 +14,6 @@ class TestWholeSiteRange(TestCase):
14 14
     def test_all_products_range(self):
15 15
         self.assertTrue(self.range.contains_product(self.prod))
16 16
 
17
-    def test_all_products_range_with_exception(self):
18
-        self.range.excluded_products.add(self.prod)
19
-        self.assertFalse(self.range.contains_product(self.prod))
20
-
21 17
     def test_whitelisting(self):
22 18
         self.range.add_product(self.prod)
23 19
         self.assertTrue(self.range.contains_product(self.prod))

+ 2
- 1
tests/unit/offer/custom_range_tests.py Целия файл

@@ -1,3 +1,4 @@
1
+from django.core.exceptions import ValidationError
1 2
 from django.test import TestCase
2 3
 from oscar.test.factories import create_product
3 4
 from django.db import IntegrityError
@@ -39,7 +40,7 @@ class TestACustomRange(TestCase):
39 40
     def test_must_have_a_text_name(self):
40 41
         try:
41 42
             custom.create_range(CustomRangeLazy)
42
-        except Exception:
43
+        except ValidationError:
43 44
             pass
44 45
         else:
45 46
             self.fail("Range can't have ugettext titles")

Loading…
Отказ
Запис