Sfoglia il codice sorgente

Move basket status constants onto the Basket class

It was a mistake to have them at module level as it meant it was a pain
to import them when they were needed for filtering.  Having them on
the basket is much nicer as they available whenever the Basket class is.

This commit may cause a few gremlins for people updating to 0.4 but I
think it's a necessary pain at this stage.  It's trivial to fix too.
master
David Winterbottom 13 anni fa
parent
commit
9226528afa

+ 18
- 16
oscar/apps/basket/abstract_models.py Vedi File

@@ -11,20 +11,21 @@ from django.core.exceptions import ObjectDoesNotExist, PermissionDenied
11 11
 from oscar.apps.basket.managers import OpenBasketManager, SavedBasketManager
12 12
 from oscar.templatetags.currency_filters import currency
13 13
 
14
-# Basket statuses
15
-# - Frozen is for when a basket is in the process of being submitted
16
-#   and we need to prevent any changes to it.
17
-OPEN, MERGED, SAVED, FROZEN, SUBMITTED = (
18
-    "Open", "Merged", "Saved", "Frozen", "Submitted")
19
-
20 14
 
21 15
 class AbstractBasket(models.Model):
22 16
     """
23 17
     Basket object
24 18
     """
25
-    # Baskets can be anonymously owned (which are merged if the user signs in)
19
+    # Baskets can be anonymously owned - hence this field is nullable.  When a
20
+    # anon user signs in, their two baskets are merged.
26 21
     owner = models.ForeignKey('auth.User', related_name='baskets',
27 22
                               null=True, verbose_name=_("Owner"))
23
+
24
+    # Basket statuses
25
+    # - Frozen is for when a basket is in the process of being submitted
26
+    #   and we need to prevent any changes to it.
27
+    OPEN, MERGED, SAVED, FROZEN, SUBMITTED = (
28
+    "Open", "Merged", "Saved", "Frozen", "Submitted")
28 29
     STATUS_CHOICES = (
29 30
         (OPEN, _("Open - currently active")),
30 31
         (MERGED, _("Merged - superceded by another basket")),
@@ -34,12 +35,13 @@ class AbstractBasket(models.Model):
34 35
     )
35 36
     status = models.CharField(_("Status"), max_length=128, default=OPEN,
36 37
                               choices=STATUS_CHOICES)
38
+
37 39
     vouchers = models.ManyToManyField('voucher.Voucher', null=True,
38 40
                                       verbose_name=_("Vouchers"))
39 41
 
40
-    date_created = models.DateTimeField(_("Date Created"), auto_now_add=True)
41
-    date_merged = models.DateTimeField(_("Date Merged"), null=True, blank=True)
42
-    date_submitted = models.DateTimeField(_("Date Submitted"), null=True,
42
+    date_created = models.DateTimeField(_("Date created"), auto_now_add=True)
43
+    date_merged = models.DateTimeField(_("Date merged"), null=True, blank=True)
44
+    date_submitted = models.DateTimeField(_("Date submitted"), null=True,
43 45
                                           blank=True)
44 46
 
45 47
     # Only if a basket is in one of these statuses can it be edited
@@ -103,7 +105,7 @@ class AbstractBasket(models.Model):
103 105
 
104 106
     def flush(self):
105 107
         """Remove all lines from basket."""
106
-        if self.status == FROZEN:
108
+        if self.status == self.FROZEN:
107 109
             raise PermissionDenied("A frozen basket cannot be flushed")
108 110
         self.lines.all().delete()
109 111
         self._lines = None
@@ -201,7 +203,7 @@ class AbstractBasket(models.Model):
201 203
         """
202 204
         for line_to_merge in basket.all_lines():
203 205
             self.merge_line(line_to_merge, add_quantities)
204
-        basket.status = MERGED
206
+        basket.status = self.MERGED
205 207
         basket.date_merged = now()
206 208
         basket.save()
207 209
         self._lines = None
@@ -210,19 +212,19 @@ class AbstractBasket(models.Model):
210 212
         """
211 213
         Freezes the basket so it cannot be modified.
212 214
         """
213
-        self.status = FROZEN
215
+        self.status = self.FROZEN
214 216
         self.save()
215 217
 
216 218
     def thaw(self):
217 219
         """
218 220
         Unfreezes a basket so it can be modified again
219 221
         """
220
-        self.status = OPEN
222
+        self.status = self.OPEN
221 223
         self.save()
222 224
 
223 225
     def set_as_submitted(self):
224 226
         """Mark this basket as submitted."""
225
-        self.status = SUBMITTED
227
+        self.status = self.SUBMITTED
226 228
         self.date_submitted = now()
227 229
         self.save()
228 230
 
@@ -428,7 +430,7 @@ class AbstractBasket(models.Model):
428 430
             return 0
429 431
 
430 432
     def is_submitted(self):
431
-        return self.status == SUBMITTED
433
+        return self.status == self.SUBMITTED
432 434
 
433 435
 
434 436
 class AbstractLine(models.Model):

+ 1
- 2
oscar/apps/basket/middleware.py Vedi File

@@ -4,7 +4,6 @@ from django.conf import settings
4 4
 from django.db.models import get_model
5 5
 
6 6
 from oscar.core.loading import get_class
7
-from oscar.apps.basket.abstract_models import OPEN
8 7
 
9 8
 Applicator = get_class('offer.utils', 'Applicator')
10 9
 Basket = get_model('basket', 'basket')
@@ -100,7 +99,7 @@ class BasketMiddleware(object):
100 99
             if basket_hash == self.get_basket_hash(basket_id):
101 100
                 try:
102 101
                     basket = Basket.objects.get(pk=basket_id, owner=None,
103
-                                                status=OPEN)
102
+                                                status=Basket.OPEN)
104 103
                 except Basket.DoesNotExist:
105 104
                     request.cookies_to_delete.append(cookie_key)
106 105
             else:

+ 1
- 2
oscar/apps/basket/models.py Vedi File

@@ -1,6 +1,5 @@
1 1
 from oscar.apps.basket.abstract_models import (
2
-    AbstractBasket, AbstractLine, AbstractLineAttribute,
3
-    OPEN, MERGED, SAVED, SUBMITTED)
2
+    AbstractBasket, AbstractLine, AbstractLineAttribute)
4 3
 
5 4
 
6 5
 class InvalidBasketLineError(Exception):

+ 3
- 4
oscar/apps/basket/reports.py Vedi File

@@ -2,7 +2,7 @@ import csv
2 2
 
3 3
 from django.db.models import get_model
4 4
 from django.utils.translation import gettext_lazy as _
5
-from oscar.core.loading import get_class, get_classes
5
+from oscar.core.loading import get_class
6 6
 
7 7
 ReportGenerator = get_class('dashboard.reports.reports', 'ReportGenerator')
8 8
 ReportCSVFormatter = get_class('dashboard.reports.reports',
@@ -10,7 +10,6 @@ ReportCSVFormatter = get_class('dashboard.reports.reports',
10 10
 ReportHTMLFormatter = get_class('dashboard.reports.reports',
11 11
                                 'ReportHTMLFormatter')
12 12
 Basket = get_model('basket', 'Basket')
13
-OPEN, SUBMITTED = get_classes('basket.models', ['OPEN', 'SUBMITTED'])
14 13
 
15 14
 
16 15
 class OpenBasketReportCSVFormatter(ReportCSVFormatter):
@@ -70,7 +69,7 @@ class OpenBasketReportGenerator(ReportGenerator):
70 69
         additional_data = {
71 70
             'start_date': self.start_date,
72 71
             'end_date': self.end_date}
73
-        baskets = Basket._default_manager.filter(status=OPEN)
72
+        baskets = Basket._default_manager.filter(status=Basket.OPEN)
74 73
         return self.formatter.generate_response(baskets, **additional_data)
75 74
 
76 75
 
@@ -125,5 +124,5 @@ class SubmittedBasketReportGenerator(ReportGenerator):
125 124
         additional_data = {
126 125
             'start_date': self.start_date,
127 126
             'end_date': self.end_date}
128
-        baskets = Basket._default_manager.filter(status=SUBMITTED)
127
+        baskets = Basket._default_manager.filter(status=Basket.SUBMITTED)
129 128
         return self.formatter.generate_response(baskets, **additional_data)

+ 1
- 2
oscar/apps/dashboard/views.py Vedi File

@@ -7,7 +7,6 @@ from django.db.models.loading import get_model
7 7
 from django.db.models import Avg, Sum, Count
8 8
 from django.contrib.auth.models import User
9 9
 
10
-from oscar.apps.basket.abstract_models import OPEN as basket_OPEN
11 10
 from oscar.apps.promotions.models import AbstractPromotion
12 11
 
13 12
 ConditionalOffer = get_model('offer', 'ConditionalOffer')
@@ -65,7 +64,7 @@ class IndexView(TemplateView):
65 64
         """
66 65
         if filters is None:
67 66
             filters = {}
68
-        filters['status'] = basket_OPEN
67
+        filters['status'] = Basket.OPEN
69 68
         return Basket.objects.filter(**filters)
70 69
 
71 70
     def get_hourly_report(self, hours=24, segments=10):

Loading…
Annulla
Salva