Kaynağa Gözat

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 yıl önce
ebeveyn
işleme
9226528afa

+ 18
- 16
oscar/apps/basket/abstract_models.py Dosyayı Görüntüle

11
 from oscar.apps.basket.managers import OpenBasketManager, SavedBasketManager
11
 from oscar.apps.basket.managers import OpenBasketManager, SavedBasketManager
12
 from oscar.templatetags.currency_filters import currency
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
 class AbstractBasket(models.Model):
15
 class AbstractBasket(models.Model):
22
     """
16
     """
23
     Basket object
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
     owner = models.ForeignKey('auth.User', related_name='baskets',
21
     owner = models.ForeignKey('auth.User', related_name='baskets',
27
                               null=True, verbose_name=_("Owner"))
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
     STATUS_CHOICES = (
29
     STATUS_CHOICES = (
29
         (OPEN, _("Open - currently active")),
30
         (OPEN, _("Open - currently active")),
30
         (MERGED, _("Merged - superceded by another basket")),
31
         (MERGED, _("Merged - superceded by another basket")),
34
     )
35
     )
35
     status = models.CharField(_("Status"), max_length=128, default=OPEN,
36
     status = models.CharField(_("Status"), max_length=128, default=OPEN,
36
                               choices=STATUS_CHOICES)
37
                               choices=STATUS_CHOICES)
38
+
37
     vouchers = models.ManyToManyField('voucher.Voucher', null=True,
39
     vouchers = models.ManyToManyField('voucher.Voucher', null=True,
38
                                       verbose_name=_("Vouchers"))
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
                                           blank=True)
45
                                           blank=True)
44
 
46
 
45
     # Only if a basket is in one of these statuses can it be edited
47
     # Only if a basket is in one of these statuses can it be edited
103
 
105
 
104
     def flush(self):
106
     def flush(self):
105
         """Remove all lines from basket."""
107
         """Remove all lines from basket."""
106
-        if self.status == FROZEN:
108
+        if self.status == self.FROZEN:
107
             raise PermissionDenied("A frozen basket cannot be flushed")
109
             raise PermissionDenied("A frozen basket cannot be flushed")
108
         self.lines.all().delete()
110
         self.lines.all().delete()
109
         self._lines = None
111
         self._lines = None
201
         """
203
         """
202
         for line_to_merge in basket.all_lines():
204
         for line_to_merge in basket.all_lines():
203
             self.merge_line(line_to_merge, add_quantities)
205
             self.merge_line(line_to_merge, add_quantities)
204
-        basket.status = MERGED
206
+        basket.status = self.MERGED
205
         basket.date_merged = now()
207
         basket.date_merged = now()
206
         basket.save()
208
         basket.save()
207
         self._lines = None
209
         self._lines = None
210
         """
212
         """
211
         Freezes the basket so it cannot be modified.
213
         Freezes the basket so it cannot be modified.
212
         """
214
         """
213
-        self.status = FROZEN
215
+        self.status = self.FROZEN
214
         self.save()
216
         self.save()
215
 
217
 
216
     def thaw(self):
218
     def thaw(self):
217
         """
219
         """
218
         Unfreezes a basket so it can be modified again
220
         Unfreezes a basket so it can be modified again
219
         """
221
         """
220
-        self.status = OPEN
222
+        self.status = self.OPEN
221
         self.save()
223
         self.save()
222
 
224
 
223
     def set_as_submitted(self):
225
     def set_as_submitted(self):
224
         """Mark this basket as submitted."""
226
         """Mark this basket as submitted."""
225
-        self.status = SUBMITTED
227
+        self.status = self.SUBMITTED
226
         self.date_submitted = now()
228
         self.date_submitted = now()
227
         self.save()
229
         self.save()
228
 
230
 
428
             return 0
430
             return 0
429
 
431
 
430
     def is_submitted(self):
432
     def is_submitted(self):
431
-        return self.status == SUBMITTED
433
+        return self.status == self.SUBMITTED
432
 
434
 
433
 
435
 
434
 class AbstractLine(models.Model):
436
 class AbstractLine(models.Model):

+ 1
- 2
oscar/apps/basket/middleware.py Dosyayı Görüntüle

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

+ 1
- 2
oscar/apps/basket/models.py Dosyayı Görüntüle

1
 from oscar.apps.basket.abstract_models import (
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
 class InvalidBasketLineError(Exception):
5
 class InvalidBasketLineError(Exception):

+ 3
- 4
oscar/apps/basket/reports.py Dosyayı Görüntüle

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

+ 1
- 2
oscar/apps/dashboard/views.py Dosyayı Görüntüle

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

Loading…
İptal
Kaydet