Browse Source

Add local order app to demo site

- Fix payment event reference issue
- Upgrade django-oscar-datacash
- Handle changes to bankcard obj
master
David Winterbottom 12 years ago
parent
commit
902c4fa8fa
21 changed files with 5160 additions and 22 deletions
  1. 17
    16
      oscar/apps/checkout/mixins.py
  2. 8
    0
      oscar/apps/payment/abstract_models.py
  3. 1
    1
      requirements_demo.txt
  4. 4
    3
      sites/demo/apps/checkout/views.py
  5. 0
    0
      sites/demo/apps/order/__init__.py
  6. 602
    0
      sites/demo/apps/order/migrations/0001_initial.py
  7. 367
    0
      sites/demo/apps/order/migrations/0002_auto__add_field_order_guest_email.py
  8. 374
    0
      sites/demo/apps/order/migrations/0003_auto__del_field_ordernote_date__add_field_ordernote_date_created__add_.py
  9. 369
    0
      sites/demo/apps/order/migrations/0004_auto__add_field_line_upc.py
  10. 373
    0
      sites/demo/apps/order/migrations/0005_auto__add_field_orderdiscount_offer_name.py
  11. 383
    0
      sites/demo/apps/order/migrations/0006_update_offer_name_field.py
  12. 375
    0
      sites/demo/apps/order/migrations/0007_auto__add_field_orderdiscount_frequency.py
  13. 377
    0
      sites/demo/apps/order/migrations/0008_auto__add_field_orderdiscount_category.py
  14. 378
    0
      sites/demo/apps/order/migrations/0009_auto__add_field_orderdiscount_message.py
  15. 383
    0
      sites/demo/apps/order/migrations/0010_auto__chg_field_billingaddress_postcode__chg_field_shippingaddress_pos.py
  16. 377
    0
      sites/demo/apps/order/migrations/0011_auto__del_field_paymentevent_date__add_field_paymentevent_date_created.py
  17. 380
    0
      sites/demo/apps/order/migrations/0012_auto__add_field_paymentevent_reference.py
  18. 381
    0
      sites/demo/apps/order/migrations/0013_auto__add_field_paymentevent_shipping_event.py
  19. 0
    0
      sites/demo/apps/order/migrations/__init__.py
  20. 1
    0
      sites/demo/apps/order/models.py
  21. 10
    2
      sites/demo/settings.py

+ 17
- 16
oscar/apps/checkout/mixins.py View File

@@ -61,12 +61,18 @@ class OrderPlacementMixin(CheckoutSessionMixin):
61 61
             self._payment_sources = []
62 62
         self._payment_sources.append(source)
63 63
 
64
-    def add_payment_event(self, event_type_name, amount):
64
+    def add_payment_event(self, event_type_name, amount, reference=None):
65
+        """
66
+        Record a payment event for creation once the order is placed
67
+        """
65 68
         event_type, __ = PaymentEventType.objects.get_or_create(
66 69
             name=event_type_name)
70
+        # We keep a local cache of payment events
67 71
         if self._payment_events is None:
68 72
             self._payment_events = []
69
-        event = PaymentEvent(event_type=event_type, amount=amount)
73
+        event = PaymentEvent(
74
+            event_type=event_type, amount=amount,
75
+            reference=reference)
70 76
         self._payment_events.append(event)
71 77
 
72 78
     def handle_successful_order(self, order):
@@ -119,19 +125,16 @@ class OrderPlacementMixin(CheckoutSessionMixin):
119 125
         # Set guest email address for anon checkout.   Some libraries (eg
120 126
         # PayPal) will pass this explicitly so we take care not to clobber.
121 127
         if (not self.request.user.is_authenticated() and 'guest_email'
122
-            not in kwargs):
128
+                not in kwargs):
123 129
             kwargs['guest_email'] = self.checkout_session.get_guest_email()
124 130
 
125
-        order = OrderCreator().place_order(basket=basket,
126
-                                           total_incl_tax=total_incl_tax,
127
-                                           total_excl_tax=total_excl_tax,
128
-                                           user=user,
129
-                                           shipping_method=shipping_method,
130
-                                           shipping_address=shipping_address,
131
-                                           billing_address=billing_address,
132
-                                           order_number=order_number,
133
-                                           status=status,
134
-                                           **kwargs)
131
+        order = OrderCreator().place_order(
132
+            basket=basket, total_incl_tax=total_incl_tax,
133
+            total_excl_tax=total_excl_tax, user=user,
134
+            shipping_method=shipping_method,
135
+            shipping_address=shipping_address,
136
+            billing_address=billing_address, order_number=order_number,
137
+            status=status, **kwargs)
135 138
         self.save_payment_details(order)
136 139
         return order
137 140
 
@@ -224,9 +227,7 @@ class OrderPlacementMixin(CheckoutSessionMixin):
224 227
         # We assume all lines are involved in the initial payment event
225 228
         for line in order.lines.all():
226 229
             PaymentEventQuantity.objects.create(
227
-                event=event,
228
-                line=line,
229
-                quantity=line.quantity)
230
+                event=event, line=line, quantity=line.quantity)
230 231
 
231 232
     def save_payment_sources(self, order):
232 233
         """

+ 8
- 0
oscar/apps/payment/abstract_models.py View File

@@ -47,6 +47,7 @@ class AbstractTransaction(models.Model):
47 47
         abstract = True
48 48
         verbose_name = _("Transaction")
49 49
         verbose_name_plural = _("Transactions")
50
+        ordering = ['-date_created']
50 51
 
51 52
 
52 53
 class AbstractSource(models.Model):
@@ -279,6 +280,13 @@ class AbstractBankcard(models.Model):
279 280
         self.number = u"XXXX-XXXX-XXXX-%s" % self.number[-4:]
280 281
         self.start_date = self.issue_number = self.ccv = None
281 282
 
283
+    @property
284
+    def card_number(self):
285
+        import warnings
286
+        warnings.warn(("The `card_number` property is deprecated in favour of "
287
+                       "`number` on the Bankcard model"), DeprecationWarning)
288
+        return self.number
289
+
282 290
     @property
283 291
     def cvv(self):
284 292
         return self.ccv

+ 1
- 1
requirements_demo.txt View File

@@ -1,7 +1,7 @@
1 1
 # Osar extensions
2 2
 django-oscar-stores>=0.4,<0.5
3 3
 django-oscar-paypal>=0.4,<0.5
4
-django-oscar-datacash>=0.4,<0.5
4
+django-oscar-datacash>=0.4.2,<0.5
5 5
 
6 6
 # We need PostGIS as the stores extension uses GeoDjango.
7 7
 psycopg2==2.5

+ 4
- 3
sites/demo/apps/checkout/views.py View File

@@ -48,14 +48,14 @@ class PaymentDetailsView(views.PaymentDetailsView):
48 48
         # Call oscar's submit method, passing through the bankcard object so it
49 49
         # gets passed to the 'handle_payment' method and can be used for the
50 50
         # submission to Datacash.
51
-        bankcard = bankcard_form.get_bankcard_obj()
51
+        bankcard = bankcard_form.bankcard
52 52
         return self.submit(request.basket,
53 53
                            payment_kwargs={'bankcard': bankcard})
54 54
 
55 55
     def handle_payment(self, order_number, total_incl_tax, **kwargs):
56 56
         # Make request to DataCash - if there any problems (eg bankcard
57 57
         # not valid / request refused by bank) then an exception would be
58
-        # raised ahd handled)
58
+        # raised and handled by the parent PaymentDetail view)
59 59
         facade = Facade()
60 60
         datacash_ref = facade.pre_authorise(
61 61
             order_number, total_incl_tax, kwargs['bankcard'])
@@ -71,4 +71,5 @@ class PaymentDetailsView(views.PaymentDetailsView):
71 71
         self.add_payment_source(source)
72 72
 
73 73
         # Also record payment event
74
-        self.add_payment_event('pre-auth', total_incl_tax)
74
+        self.add_payment_event(
75
+            'pre-auth', total_incl_tax, reference=datacash_ref)

+ 0
- 0
sites/demo/apps/order/__init__.py View File


+ 602
- 0
sites/demo/apps/order/migrations/0001_initial.py View File

@@ -0,0 +1,602 @@
1
+# encoding: utf-8
2
+import datetime
3
+from south.db import db
4
+from south.v2 import SchemaMigration
5
+from django.db import models
6
+
7
+class Migration(SchemaMigration):
8
+    depends_on = (
9
+        ('catalogue', '0001_initial'),
10
+        ('customer', '0001_initial'),
11
+        ('partner', '0001_initial'),
12
+        ('address', '0001_initial'),
13
+    )
14
+
15
+    def forwards(self, orm):
16
+        
17
+        # Adding model 'PaymentEventQuantity'
18
+        db.create_table('order_paymenteventquantity', (
19
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
20
+            ('event', self.gf('django.db.models.fields.related.ForeignKey')(related_name='line_quantities', to=orm['order.PaymentEvent'])),
21
+            ('line', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['order.Line'])),
22
+            ('quantity', self.gf('django.db.models.fields.PositiveIntegerField')()),
23
+        ))
24
+        db.send_create_signal('order', ['PaymentEventQuantity'])
25
+
26
+        # Adding model 'ShippingEventQuantity'
27
+        db.create_table('order_shippingeventquantity', (
28
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
29
+            ('event', self.gf('django.db.models.fields.related.ForeignKey')(related_name='line_quantities', to=orm['order.ShippingEvent'])),
30
+            ('line', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['order.Line'])),
31
+            ('quantity', self.gf('django.db.models.fields.PositiveIntegerField')()),
32
+        ))
33
+        db.send_create_signal('order', ['ShippingEventQuantity'])
34
+
35
+        # Adding model 'Order'
36
+        db.create_table('order_order', (
37
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
38
+            ('number', self.gf('django.db.models.fields.CharField')(max_length=128, db_index=True)),
39
+            ('site', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['sites.Site'])),
40
+            ('basket_id', self.gf('django.db.models.fields.PositiveIntegerField')(null=True, blank=True)),
41
+            ('user', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='orders', null=True, to=orm['auth.User'])),
42
+            ('billing_address', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['order.BillingAddress'], null=True, blank=True)),
43
+            ('total_incl_tax', self.gf('django.db.models.fields.DecimalField')(max_digits=12, decimal_places=2)),
44
+            ('total_excl_tax', self.gf('django.db.models.fields.DecimalField')(max_digits=12, decimal_places=2)),
45
+            ('shipping_incl_tax', self.gf('django.db.models.fields.DecimalField')(default=0, max_digits=12, decimal_places=2)),
46
+            ('shipping_excl_tax', self.gf('django.db.models.fields.DecimalField')(default=0, max_digits=12, decimal_places=2)),
47
+            ('shipping_address', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['order.ShippingAddress'], null=True, blank=True)),
48
+            ('shipping_method', self.gf('django.db.models.fields.CharField')(max_length=128, null=True, blank=True)),
49
+            ('status', self.gf('django.db.models.fields.CharField')(max_length=100, null=True, blank=True)),
50
+            ('date_placed', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, db_index=True, blank=True)),
51
+        ))
52
+        db.send_create_signal('order', ['Order'])
53
+
54
+        # Adding model 'OrderNote'
55
+        db.create_table('order_ordernote', (
56
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
57
+            ('order', self.gf('django.db.models.fields.related.ForeignKey')(related_name='notes', to=orm['order.Order'])),
58
+            ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], null=True)),
59
+            ('note_type', self.gf('django.db.models.fields.CharField')(max_length=128, null=True)),
60
+            ('message', self.gf('django.db.models.fields.TextField')()),
61
+            ('date', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
62
+        ))
63
+        db.send_create_signal('order', ['OrderNote'])
64
+
65
+        # Adding model 'CommunicationEvent'
66
+        db.create_table('order_communicationevent', (
67
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
68
+            ('order', self.gf('django.db.models.fields.related.ForeignKey')(related_name='communication_events', to=orm['order.Order'])),
69
+            ('event_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['customer.CommunicationEventType'])),
70
+            ('date', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
71
+        ))
72
+        db.send_create_signal('order', ['CommunicationEvent'])
73
+
74
+        # Adding model 'ShippingAddress'
75
+        db.create_table('order_shippingaddress', (
76
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
77
+            ('title', self.gf('django.db.models.fields.CharField')(max_length=64, null=True, blank=True)),
78
+            ('first_name', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
79
+            ('last_name', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)),
80
+            ('line1', self.gf('django.db.models.fields.CharField')(max_length=255)),
81
+            ('line2', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
82
+            ('line3', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
83
+            ('line4', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
84
+            ('state', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
85
+            ('postcode', self.gf('django.db.models.fields.CharField')(max_length=64)),
86
+            ('country', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['address.Country'])),
87
+            ('search_text', self.gf('django.db.models.fields.CharField')(max_length=1000)),
88
+            ('phone_number', self.gf('django.db.models.fields.CharField')(max_length=32, null=True, blank=True)),
89
+            ('notes', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
90
+        ))
91
+        db.send_create_signal('order', ['ShippingAddress'])
92
+
93
+        # Adding model 'BillingAddress'
94
+        db.create_table('order_billingaddress', (
95
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
96
+            ('title', self.gf('django.db.models.fields.CharField')(max_length=64, null=True, blank=True)),
97
+            ('first_name', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
98
+            ('last_name', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)),
99
+            ('line1', self.gf('django.db.models.fields.CharField')(max_length=255)),
100
+            ('line2', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
101
+            ('line3', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
102
+            ('line4', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
103
+            ('state', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
104
+            ('postcode', self.gf('django.db.models.fields.CharField')(max_length=64)),
105
+            ('country', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['address.Country'])),
106
+            ('search_text', self.gf('django.db.models.fields.CharField')(max_length=1000)),
107
+        ))
108
+        db.send_create_signal('order', ['BillingAddress'])
109
+
110
+        # Adding model 'Line'
111
+        db.create_table('order_line', (
112
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
113
+            ('order', self.gf('django.db.models.fields.related.ForeignKey')(related_name='lines', to=orm['order.Order'])),
114
+            ('partner', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='order_lines', null=True, to=orm['partner.Partner'])),
115
+            ('partner_name', self.gf('django.db.models.fields.CharField')(max_length=128)),
116
+            ('partner_sku', self.gf('django.db.models.fields.CharField')(max_length=128)),
117
+            ('title', self.gf('django.db.models.fields.CharField')(max_length=255)),
118
+            ('product', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['catalogue.Product'], null=True, blank=True)),
119
+            ('quantity', self.gf('django.db.models.fields.PositiveIntegerField')(default=1)),
120
+            ('line_price_incl_tax', self.gf('django.db.models.fields.DecimalField')(max_digits=12, decimal_places=2)),
121
+            ('line_price_excl_tax', self.gf('django.db.models.fields.DecimalField')(max_digits=12, decimal_places=2)),
122
+            ('line_price_before_discounts_incl_tax', self.gf('django.db.models.fields.DecimalField')(max_digits=12, decimal_places=2)),
123
+            ('line_price_before_discounts_excl_tax', self.gf('django.db.models.fields.DecimalField')(max_digits=12, decimal_places=2)),
124
+            ('unit_cost_price', self.gf('django.db.models.fields.DecimalField')(null=True, max_digits=12, decimal_places=2, blank=True)),
125
+            ('unit_price_incl_tax', self.gf('django.db.models.fields.DecimalField')(null=True, max_digits=12, decimal_places=2, blank=True)),
126
+            ('unit_price_excl_tax', self.gf('django.db.models.fields.DecimalField')(null=True, max_digits=12, decimal_places=2, blank=True)),
127
+            ('unit_retail_price', self.gf('django.db.models.fields.DecimalField')(null=True, max_digits=12, decimal_places=2, blank=True)),
128
+            ('partner_line_reference', self.gf('django.db.models.fields.CharField')(max_length=128, null=True, blank=True)),
129
+            ('partner_line_notes', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
130
+            ('status', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
131
+            ('est_dispatch_date', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
132
+        ))
133
+        db.send_create_signal('order', ['Line'])
134
+
135
+        # Adding model 'LinePrice'
136
+        db.create_table('order_lineprice', (
137
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
138
+            ('order', self.gf('django.db.models.fields.related.ForeignKey')(related_name='line_prices', to=orm['order.Order'])),
139
+            ('line', self.gf('django.db.models.fields.related.ForeignKey')(related_name='prices', to=orm['order.Line'])),
140
+            ('quantity', self.gf('django.db.models.fields.PositiveIntegerField')(default=1)),
141
+            ('price_incl_tax', self.gf('django.db.models.fields.DecimalField')(max_digits=12, decimal_places=2)),
142
+            ('price_excl_tax', self.gf('django.db.models.fields.DecimalField')(max_digits=12, decimal_places=2)),
143
+            ('shipping_incl_tax', self.gf('django.db.models.fields.DecimalField')(default=0, max_digits=12, decimal_places=2)),
144
+            ('shipping_excl_tax', self.gf('django.db.models.fields.DecimalField')(default=0, max_digits=12, decimal_places=2)),
145
+        ))
146
+        db.send_create_signal('order', ['LinePrice'])
147
+
148
+        # Adding model 'LineAttribute'
149
+        db.create_table('order_lineattribute', (
150
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
151
+            ('line', self.gf('django.db.models.fields.related.ForeignKey')(related_name='attributes', to=orm['order.Line'])),
152
+            ('option', self.gf('django.db.models.fields.related.ForeignKey')(related_name='line_attributes', null=True, to=orm['catalogue.Option'])),
153
+            ('type', self.gf('django.db.models.fields.CharField')(max_length=128)),
154
+            ('value', self.gf('django.db.models.fields.CharField')(max_length=255)),
155
+        ))
156
+        db.send_create_signal('order', ['LineAttribute'])
157
+
158
+        # Adding model 'ShippingEvent'
159
+        db.create_table('order_shippingevent', (
160
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
161
+            ('order', self.gf('django.db.models.fields.related.ForeignKey')(related_name='shipping_events', to=orm['order.Order'])),
162
+            ('event_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['order.ShippingEventType'])),
163
+            ('notes', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
164
+            ('date', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
165
+        ))
166
+        db.send_create_signal('order', ['ShippingEvent'])
167
+
168
+        # Adding model 'ShippingEventType'
169
+        db.create_table('order_shippingeventtype', (
170
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
171
+            ('name', self.gf('django.db.models.fields.CharField')(unique=True, max_length=255)),
172
+            ('code', self.gf('django.db.models.fields.SlugField')(unique=True, max_length=128, db_index=True)),
173
+            ('is_required', self.gf('django.db.models.fields.BooleanField')(default=True)),
174
+            ('sequence_number', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
175
+        ))
176
+        db.send_create_signal('order', ['ShippingEventType'])
177
+
178
+        # Adding model 'PaymentEvent'
179
+        db.create_table('order_paymentevent', (
180
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
181
+            ('order', self.gf('django.db.models.fields.related.ForeignKey')(related_name='payment_events', to=orm['order.Order'])),
182
+            ('amount', self.gf('django.db.models.fields.DecimalField')(max_digits=12, decimal_places=2)),
183
+            ('event_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['order.PaymentEventType'])),
184
+            ('date', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
185
+        ))
186
+        db.send_create_signal('order', ['PaymentEvent'])
187
+
188
+        # Adding model 'PaymentEventType'
189
+        db.create_table('order_paymenteventtype', (
190
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
191
+            ('name', self.gf('django.db.models.fields.CharField')(unique=True, max_length=128)),
192
+            ('code', self.gf('django.db.models.fields.SlugField')(unique=True, max_length=128, db_index=True)),
193
+            ('sequence_number', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
194
+        ))
195
+        db.send_create_signal('order', ['PaymentEventType'])
196
+
197
+        # Adding model 'OrderDiscount'
198
+        db.create_table('order_orderdiscount', (
199
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
200
+            ('order', self.gf('django.db.models.fields.related.ForeignKey')(related_name='discounts', to=orm['order.Order'])),
201
+            ('offer_id', self.gf('django.db.models.fields.PositiveIntegerField')(null=True, blank=True)),
202
+            ('voucher_id', self.gf('django.db.models.fields.PositiveIntegerField')(null=True, blank=True)),
203
+            ('voucher_code', self.gf('django.db.models.fields.CharField')(max_length=128, null=True, db_index=True)),
204
+            ('amount', self.gf('django.db.models.fields.DecimalField')(default=0, max_digits=12, decimal_places=2)),
205
+        ))
206
+        db.send_create_signal('order', ['OrderDiscount'])
207
+
208
+
209
+    def backwards(self, orm):
210
+        
211
+        # Deleting model 'PaymentEventQuantity'
212
+        db.delete_table('order_paymenteventquantity')
213
+
214
+        # Deleting model 'ShippingEventQuantity'
215
+        db.delete_table('order_shippingeventquantity')
216
+
217
+        # Deleting model 'Order'
218
+        db.delete_table('order_order')
219
+
220
+        # Deleting model 'OrderNote'
221
+        db.delete_table('order_ordernote')
222
+
223
+        # Deleting model 'CommunicationEvent'
224
+        db.delete_table('order_communicationevent')
225
+
226
+        # Deleting model 'ShippingAddress'
227
+        db.delete_table('order_shippingaddress')
228
+
229
+        # Deleting model 'BillingAddress'
230
+        db.delete_table('order_billingaddress')
231
+
232
+        # Deleting model 'Line'
233
+        db.delete_table('order_line')
234
+
235
+        # Deleting model 'LinePrice'
236
+        db.delete_table('order_lineprice')
237
+
238
+        # Deleting model 'LineAttribute'
239
+        db.delete_table('order_lineattribute')
240
+
241
+        # Deleting model 'ShippingEvent'
242
+        db.delete_table('order_shippingevent')
243
+
244
+        # Deleting model 'ShippingEventType'
245
+        db.delete_table('order_shippingeventtype')
246
+
247
+        # Deleting model 'PaymentEvent'
248
+        db.delete_table('order_paymentevent')
249
+
250
+        # Deleting model 'PaymentEventType'
251
+        db.delete_table('order_paymenteventtype')
252
+
253
+        # Deleting model 'OrderDiscount'
254
+        db.delete_table('order_orderdiscount')
255
+
256
+
257
+    models = {
258
+        'address.country': {
259
+            'Meta': {'ordering': "('-is_highlighted', 'name')", 'object_name': 'Country'},
260
+            'is_highlighted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
261
+            'is_shipping_country': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
262
+            'iso_3166_1_a2': ('django.db.models.fields.CharField', [], {'max_length': '2', 'primary_key': 'True'}),
263
+            'iso_3166_1_a3': ('django.db.models.fields.CharField', [], {'max_length': '3', 'null': 'True', 'db_index': 'True'}),
264
+            'iso_3166_1_numeric': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'db_index': 'True'}),
265
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
266
+            'printable_name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
267
+        },
268
+        'auth.group': {
269
+            'Meta': {'object_name': 'Group'},
270
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
271
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
272
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
273
+        },
274
+        'auth.permission': {
275
+            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
276
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
277
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
278
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
279
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
280
+        },
281
+        'auth.user': {
282
+            'Meta': {'object_name': 'User'},
283
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
284
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
285
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
286
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
287
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
288
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
289
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
290
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
291
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
292
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
293
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
294
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
295
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
296
+        },
297
+        'catalogue.attributeentity': {
298
+            'Meta': {'object_name': 'AttributeEntity'},
299
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
300
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
301
+            'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'}),
302
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'entities'", 'to': "orm['catalogue.AttributeEntityType']"})
303
+        },
304
+        'catalogue.attributeentitytype': {
305
+            'Meta': {'object_name': 'AttributeEntityType'},
306
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
307
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
308
+            'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'})
309
+        },
310
+        'catalogue.attributeoption': {
311
+            'Meta': {'object_name': 'AttributeOption'},
312
+            'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'options'", 'to': "orm['catalogue.AttributeOptionGroup']"}),
313
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
314
+            'option': ('django.db.models.fields.CharField', [], {'max_length': '255'})
315
+        },
316
+        'catalogue.attributeoptiongroup': {
317
+            'Meta': {'object_name': 'AttributeOptionGroup'},
318
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
319
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
320
+        },
321
+        'catalogue.category': {
322
+            'Meta': {'ordering': "['name']", 'object_name': 'Category'},
323
+            'depth': ('django.db.models.fields.PositiveIntegerField', [], {}),
324
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
325
+            'full_name': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'db_index': 'True'}),
326
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
327
+            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
328
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
329
+            'numchild': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
330
+            'path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
331
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '1024', 'db_index': 'True'})
332
+        },
333
+        'catalogue.option': {
334
+            'Meta': {'object_name': 'Option'},
335
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
336
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
337
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
338
+            'type': ('django.db.models.fields.CharField', [], {'default': "'Required'", 'max_length': '128'})
339
+        },
340
+        'catalogue.product': {
341
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'Product'},
342
+            'attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.ProductAttribute']", 'through': "orm['catalogue.ProductAttributeValue']", 'symmetrical': 'False'}),
343
+            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Category']", 'through': "orm['catalogue.ProductCategory']", 'symmetrical': 'False'}),
344
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
345
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
346
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
347
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
348
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'variants'", 'null': 'True', 'to': "orm['catalogue.Product']"}),
349
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductClass']", 'null': 'True'}),
350
+            'product_options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
351
+            'recommended_products': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Product']", 'symmetrical': 'False', 'through': "orm['catalogue.ProductRecommendation']", 'blank': 'True'}),
352
+            'related_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'relations'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
353
+            'score': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'db_index': 'True'}),
354
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'db_index': 'True'}),
355
+            'status': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'null': 'True', 'blank': 'True'}),
356
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
357
+            'upc': ('django.db.models.fields.CharField', [], {'max_length': '64', 'unique': 'True', 'null': 'True', 'blank': 'True'})
358
+        },
359
+        'catalogue.productattribute': {
360
+            'Meta': {'ordering': "['code']", 'object_name': 'ProductAttribute'},
361
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
362
+            'entity_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntityType']", 'null': 'True', 'blank': 'True'}),
363
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
364
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
365
+            'option_group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOptionGroup']", 'null': 'True', 'blank': 'True'}),
366
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'attributes'", 'null': 'True', 'to': "orm['catalogue.ProductClass']"}),
367
+            'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
368
+            'type': ('django.db.models.fields.CharField', [], {'default': "'text'", 'max_length': '20'})
369
+        },
370
+        'catalogue.productattributevalue': {
371
+            'Meta': {'object_name': 'ProductAttributeValue'},
372
+            'attribute': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductAttribute']"}),
373
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
374
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attribute_values'", 'to': "orm['catalogue.Product']"}),
375
+            'value_boolean': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
376
+            'value_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
377
+            'value_entity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntity']", 'null': 'True', 'blank': 'True'}),
378
+            'value_float': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
379
+            'value_integer': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
380
+            'value_option': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOption']", 'null': 'True', 'blank': 'True'}),
381
+            'value_richtext': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
382
+            'value_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
383
+        },
384
+        'catalogue.productcategory': {
385
+            'Meta': {'ordering': "['-is_canonical']", 'object_name': 'ProductCategory'},
386
+            'category': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Category']"}),
387
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
388
+            'is_canonical': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
389
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
390
+        },
391
+        'catalogue.productclass': {
392
+            'Meta': {'ordering': "['name']", 'object_name': 'ProductClass'},
393
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
394
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
395
+            'options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
396
+            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'})
397
+        },
398
+        'catalogue.productrecommendation': {
399
+            'Meta': {'object_name': 'ProductRecommendation'},
400
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
401
+            'primary': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'primary_recommendations'", 'to': "orm['catalogue.Product']"}),
402
+            'ranking': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
403
+            'recommendation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
404
+        },
405
+        'contenttypes.contenttype': {
406
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
407
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
408
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
409
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
410
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
411
+        },
412
+        'customer.communicationeventtype': {
413
+            'Meta': {'object_name': 'CommunicationEventType'},
414
+            'category': ('django.db.models.fields.CharField', [], {'default': "'Order related'", 'max_length': '255'}),
415
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
416
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
417
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
418
+            'email_body_html_template': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
419
+            'email_body_template': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
420
+            'email_subject_template': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
421
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
422
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
423
+            'sms_template': ('django.db.models.fields.CharField', [], {'max_length': '170', 'blank': 'True'})
424
+        },
425
+        'order.billingaddress': {
426
+            'Meta': {'object_name': 'BillingAddress'},
427
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
428
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
429
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
430
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
431
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
432
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
433
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
434
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
435
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
436
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
437
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
438
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
439
+        },
440
+        'order.communicationevent': {
441
+            'Meta': {'object_name': 'CommunicationEvent'},
442
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
443
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['customer.CommunicationEventType']"}),
444
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
445
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'communication_events'", 'to': "orm['order.Order']"})
446
+        },
447
+        'order.line': {
448
+            'Meta': {'object_name': 'Line'},
449
+            'est_dispatch_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
450
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
451
+            'line_price_before_discounts_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
452
+            'line_price_before_discounts_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
453
+            'line_price_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
454
+            'line_price_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
455
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lines'", 'to': "orm['order.Order']"}),
456
+            'partner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'order_lines'", 'null': 'True', 'to': "orm['partner.Partner']"}),
457
+            'partner_line_notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
458
+            'partner_line_reference': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
459
+            'partner_name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
460
+            'partner_sku': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
461
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']", 'null': 'True', 'blank': 'True'}),
462
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
463
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
464
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
465
+            'unit_cost_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
466
+            'unit_price_excl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
467
+            'unit_price_incl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
468
+            'unit_retail_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'})
469
+        },
470
+        'order.lineattribute': {
471
+            'Meta': {'object_name': 'LineAttribute'},
472
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
473
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attributes'", 'to': "orm['order.Line']"}),
474
+            'option': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_attributes'", 'null': 'True', 'to': "orm['catalogue.Option']"}),
475
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
476
+            'value': ('django.db.models.fields.CharField', [], {'max_length': '255'})
477
+        },
478
+        'order.lineprice': {
479
+            'Meta': {'object_name': 'LinePrice'},
480
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
481
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'prices'", 'to': "orm['order.Line']"}),
482
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_prices'", 'to': "orm['order.Order']"}),
483
+            'price_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
484
+            'price_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
485
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
486
+            'shipping_excl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
487
+            'shipping_incl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'})
488
+        },
489
+        'order.order': {
490
+            'Meta': {'ordering': "['-date_placed']", 'object_name': 'Order'},
491
+            'basket_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
492
+            'billing_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.BillingAddress']", 'null': 'True', 'blank': 'True'}),
493
+            'date_placed': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}),
494
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
495
+            'number': ('django.db.models.fields.CharField', [], {'max_length': '128', 'db_index': 'True'}),
496
+            'shipping_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.ShippingAddress']", 'null': 'True', 'blank': 'True'}),
497
+            'shipping_excl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
498
+            'shipping_incl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
499
+            'shipping_method': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
500
+            'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['sites.Site']"}),
501
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
502
+            'total_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
503
+            'total_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
504
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'orders'", 'null': 'True', 'to': "orm['auth.User']"})
505
+        },
506
+        'order.orderdiscount': {
507
+            'Meta': {'object_name': 'OrderDiscount'},
508
+            'amount': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
509
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
510
+            'offer_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
511
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'discounts'", 'to': "orm['order.Order']"}),
512
+            'voucher_code': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'db_index': 'True'}),
513
+            'voucher_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'})
514
+        },
515
+        'order.ordernote': {
516
+            'Meta': {'object_name': 'OrderNote'},
517
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
518
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
519
+            'message': ('django.db.models.fields.TextField', [], {}),
520
+            'note_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
521
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notes'", 'to': "orm['order.Order']"}),
522
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'})
523
+        },
524
+        'order.paymentevent': {
525
+            'Meta': {'object_name': 'PaymentEvent'},
526
+            'amount': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
527
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
528
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.PaymentEventType']"}),
529
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
530
+            'lines': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['order.Line']", 'through': "orm['order.PaymentEventQuantity']", 'symmetrical': 'False'}),
531
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'payment_events'", 'to': "orm['order.Order']"})
532
+        },
533
+        'order.paymenteventquantity': {
534
+            'Meta': {'object_name': 'PaymentEventQuantity'},
535
+            'event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_quantities'", 'to': "orm['order.PaymentEvent']"}),
536
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
537
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.Line']"}),
538
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {})
539
+        },
540
+        'order.paymenteventtype': {
541
+            'Meta': {'ordering': "('sequence_number',)", 'object_name': 'PaymentEventType'},
542
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'}),
543
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
544
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
545
+            'sequence_number': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
546
+        },
547
+        'order.shippingaddress': {
548
+            'Meta': {'object_name': 'ShippingAddress'},
549
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
550
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
551
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
552
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
553
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
554
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
555
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
556
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
557
+            'notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
558
+            'phone_number': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
559
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
560
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
561
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
562
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
563
+        },
564
+        'order.shippingevent': {
565
+            'Meta': {'ordering': "['-date']", 'object_name': 'ShippingEvent'},
566
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
567
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.ShippingEventType']"}),
568
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
569
+            'lines': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['order.Line']", 'through': "orm['order.ShippingEventQuantity']", 'symmetrical': 'False'}),
570
+            'notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
571
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'shipping_events'", 'to': "orm['order.Order']"})
572
+        },
573
+        'order.shippingeventquantity': {
574
+            'Meta': {'object_name': 'ShippingEventQuantity'},
575
+            'event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_quantities'", 'to': "orm['order.ShippingEvent']"}),
576
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
577
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.Line']"}),
578
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {})
579
+        },
580
+        'order.shippingeventtype': {
581
+            'Meta': {'ordering': "('sequence_number',)", 'object_name': 'ShippingEventType'},
582
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'}),
583
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
584
+            'is_required': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
585
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
586
+            'sequence_number': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
587
+        },
588
+        'partner.partner': {
589
+            'Meta': {'object_name': 'Partner'},
590
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
591
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
592
+            'users': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'partners'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['auth.User']"})
593
+        },
594
+        'sites.site': {
595
+            'Meta': {'ordering': "('domain',)", 'object_name': 'Site', 'db_table': "'django_site'"},
596
+            'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
597
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
598
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
599
+        }
600
+    }
601
+
602
+    complete_apps = ['order']

+ 367
- 0
sites/demo/apps/order/migrations/0002_auto__add_field_order_guest_email.py View File

@@ -0,0 +1,367 @@
1
+# encoding: utf-8
2
+import datetime
3
+from south.db import db
4
+from south.v2 import SchemaMigration
5
+from django.db import models
6
+
7
+class Migration(SchemaMigration):
8
+
9
+    def forwards(self, orm):
10
+
11
+        # Adding field 'Order.guest_email'
12
+        db.add_column('order_order', 'guest_email', self.gf('django.db.models.fields.EmailField')(max_length=75, null=True, blank=True), keep_default=False)
13
+
14
+
15
+    def backwards(self, orm):
16
+
17
+        # Deleting field 'Order.guest_email'
18
+        db.delete_column('order_order', 'guest_email')
19
+
20
+
21
+    models = {
22
+        'address.country': {
23
+            'Meta': {'ordering': "('-is_highlighted', 'name')", 'object_name': 'Country'},
24
+            'is_highlighted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
25
+            'is_shipping_country': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
26
+            'iso_3166_1_a2': ('django.db.models.fields.CharField', [], {'max_length': '2', 'primary_key': 'True'}),
27
+            'iso_3166_1_a3': ('django.db.models.fields.CharField', [], {'max_length': '3', 'null': 'True', 'db_index': 'True'}),
28
+            'iso_3166_1_numeric': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'db_index': 'True'}),
29
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
30
+            'printable_name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
31
+        },
32
+        'auth.group': {
33
+            'Meta': {'object_name': 'Group'},
34
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
35
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
36
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
37
+        },
38
+        'auth.permission': {
39
+            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
40
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
41
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
42
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
43
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
44
+        },
45
+        'auth.user': {
46
+            'Meta': {'object_name': 'User'},
47
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
48
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
49
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
50
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
51
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
52
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
53
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
54
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
55
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
56
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
57
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
58
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
59
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
60
+        },
61
+        'catalogue.attributeentity': {
62
+            'Meta': {'object_name': 'AttributeEntity'},
63
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
64
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
65
+            'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'}),
66
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'entities'", 'to': "orm['catalogue.AttributeEntityType']"})
67
+        },
68
+        'catalogue.attributeentitytype': {
69
+            'Meta': {'object_name': 'AttributeEntityType'},
70
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
71
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
72
+            'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'})
73
+        },
74
+        'catalogue.attributeoption': {
75
+            'Meta': {'object_name': 'AttributeOption'},
76
+            'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'options'", 'to': "orm['catalogue.AttributeOptionGroup']"}),
77
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
78
+            'option': ('django.db.models.fields.CharField', [], {'max_length': '255'})
79
+        },
80
+        'catalogue.attributeoptiongroup': {
81
+            'Meta': {'object_name': 'AttributeOptionGroup'},
82
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
83
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
84
+        },
85
+        'catalogue.category': {
86
+            'Meta': {'ordering': "['name']", 'object_name': 'Category'},
87
+            'depth': ('django.db.models.fields.PositiveIntegerField', [], {}),
88
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
89
+            'full_name': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'db_index': 'True'}),
90
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
91
+            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
92
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
93
+            'numchild': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
94
+            'path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
95
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '1024', 'db_index': 'True'})
96
+        },
97
+        'catalogue.option': {
98
+            'Meta': {'object_name': 'Option'},
99
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
100
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
101
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
102
+            'type': ('django.db.models.fields.CharField', [], {'default': "'Required'", 'max_length': '128'})
103
+        },
104
+        'catalogue.product': {
105
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'Product'},
106
+            'attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.ProductAttribute']", 'through': "orm['catalogue.ProductAttributeValue']", 'symmetrical': 'False'}),
107
+            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Category']", 'through': "orm['catalogue.ProductCategory']", 'symmetrical': 'False'}),
108
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
109
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
110
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
111
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
112
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'variants'", 'null': 'True', 'to': "orm['catalogue.Product']"}),
113
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductClass']", 'null': 'True'}),
114
+            'product_options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
115
+            'recommended_products': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Product']", 'symmetrical': 'False', 'through': "orm['catalogue.ProductRecommendation']", 'blank': 'True'}),
116
+            'related_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'relations'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
117
+            'score': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'db_index': 'True'}),
118
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'db_index': 'True'}),
119
+            'status': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'null': 'True', 'blank': 'True'}),
120
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
121
+            'upc': ('django.db.models.fields.CharField', [], {'max_length': '64', 'unique': 'True', 'null': 'True', 'blank': 'True'})
122
+        },
123
+        'catalogue.productattribute': {
124
+            'Meta': {'ordering': "['code']", 'object_name': 'ProductAttribute'},
125
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
126
+            'entity_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntityType']", 'null': 'True', 'blank': 'True'}),
127
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
128
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
129
+            'option_group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOptionGroup']", 'null': 'True', 'blank': 'True'}),
130
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'attributes'", 'null': 'True', 'to': "orm['catalogue.ProductClass']"}),
131
+            'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
132
+            'type': ('django.db.models.fields.CharField', [], {'default': "'text'", 'max_length': '20'})
133
+        },
134
+        'catalogue.productattributevalue': {
135
+            'Meta': {'object_name': 'ProductAttributeValue'},
136
+            'attribute': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductAttribute']"}),
137
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
138
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attribute_values'", 'to': "orm['catalogue.Product']"}),
139
+            'value_boolean': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
140
+            'value_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
141
+            'value_entity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntity']", 'null': 'True', 'blank': 'True'}),
142
+            'value_float': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
143
+            'value_integer': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
144
+            'value_option': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOption']", 'null': 'True', 'blank': 'True'}),
145
+            'value_richtext': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
146
+            'value_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
147
+        },
148
+        'catalogue.productcategory': {
149
+            'Meta': {'ordering': "['-is_canonical']", 'object_name': 'ProductCategory'},
150
+            'category': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Category']"}),
151
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
152
+            'is_canonical': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
153
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
154
+        },
155
+        'catalogue.productclass': {
156
+            'Meta': {'ordering': "['name']", 'object_name': 'ProductClass'},
157
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
158
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
159
+            'options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
160
+            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'})
161
+        },
162
+        'catalogue.productrecommendation': {
163
+            'Meta': {'object_name': 'ProductRecommendation'},
164
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
165
+            'primary': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'primary_recommendations'", 'to': "orm['catalogue.Product']"}),
166
+            'ranking': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
167
+            'recommendation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
168
+        },
169
+        'contenttypes.contenttype': {
170
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
171
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
172
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
173
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
174
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
175
+        },
176
+        'customer.communicationeventtype': {
177
+            'Meta': {'object_name': 'CommunicationEventType'},
178
+            'category': ('django.db.models.fields.CharField', [], {'default': "'Order related'", 'max_length': '255'}),
179
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
180
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
181
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
182
+            'email_body_html_template': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
183
+            'email_body_template': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
184
+            'email_subject_template': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
185
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
186
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
187
+            'sms_template': ('django.db.models.fields.CharField', [], {'max_length': '170', 'blank': 'True'})
188
+        },
189
+        'order.billingaddress': {
190
+            'Meta': {'object_name': 'BillingAddress'},
191
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
192
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
193
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
194
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
195
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
196
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
197
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
198
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
199
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
200
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
201
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
202
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
203
+        },
204
+        'order.communicationevent': {
205
+            'Meta': {'object_name': 'CommunicationEvent'},
206
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
207
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['customer.CommunicationEventType']"}),
208
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
209
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'communication_events'", 'to': "orm['order.Order']"})
210
+        },
211
+        'order.line': {
212
+            'Meta': {'object_name': 'Line'},
213
+            'est_dispatch_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
214
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
215
+            'line_price_before_discounts_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
216
+            'line_price_before_discounts_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
217
+            'line_price_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
218
+            'line_price_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
219
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lines'", 'to': "orm['order.Order']"}),
220
+            'partner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'order_lines'", 'null': 'True', 'to': "orm['partner.Partner']"}),
221
+            'partner_line_notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
222
+            'partner_line_reference': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
223
+            'partner_name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
224
+            'partner_sku': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
225
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']", 'null': 'True', 'blank': 'True'}),
226
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
227
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
228
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
229
+            'unit_cost_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
230
+            'unit_price_excl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
231
+            'unit_price_incl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
232
+            'unit_retail_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'})
233
+        },
234
+        'order.lineattribute': {
235
+            'Meta': {'object_name': 'LineAttribute'},
236
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
237
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attributes'", 'to': "orm['order.Line']"}),
238
+            'option': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_attributes'", 'null': 'True', 'to': "orm['catalogue.Option']"}),
239
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
240
+            'value': ('django.db.models.fields.CharField', [], {'max_length': '255'})
241
+        },
242
+        'order.lineprice': {
243
+            'Meta': {'object_name': 'LinePrice'},
244
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
245
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'prices'", 'to': "orm['order.Line']"}),
246
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_prices'", 'to': "orm['order.Order']"}),
247
+            'price_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
248
+            'price_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
249
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
250
+            'shipping_excl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
251
+            'shipping_incl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'})
252
+        },
253
+        'order.order': {
254
+            'Meta': {'ordering': "['-date_placed']", 'object_name': 'Order'},
255
+            'basket_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
256
+            'billing_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.BillingAddress']", 'null': 'True', 'blank': 'True'}),
257
+            'date_placed': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}),
258
+            'guest_email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
259
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
260
+            'number': ('django.db.models.fields.CharField', [], {'max_length': '128', 'db_index': 'True'}),
261
+            'shipping_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.ShippingAddress']", 'null': 'True', 'blank': 'True'}),
262
+            'shipping_excl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
263
+            'shipping_incl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
264
+            'shipping_method': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
265
+            'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['sites.Site']"}),
266
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
267
+            'total_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
268
+            'total_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
269
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'orders'", 'null': 'True', 'to': "orm['auth.User']"})
270
+        },
271
+        'order.orderdiscount': {
272
+            'Meta': {'object_name': 'OrderDiscount'},
273
+            'amount': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
274
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
275
+            'offer_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
276
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'discounts'", 'to': "orm['order.Order']"}),
277
+            'voucher_code': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'db_index': 'True'}),
278
+            'voucher_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'})
279
+        },
280
+        'order.ordernote': {
281
+            'Meta': {'object_name': 'OrderNote'},
282
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
283
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
284
+            'message': ('django.db.models.fields.TextField', [], {}),
285
+            'note_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
286
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notes'", 'to': "orm['order.Order']"}),
287
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'})
288
+        },
289
+        'order.paymentevent': {
290
+            'Meta': {'object_name': 'PaymentEvent'},
291
+            'amount': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
292
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
293
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.PaymentEventType']"}),
294
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
295
+            'lines': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['order.Line']", 'through': "orm['order.PaymentEventQuantity']", 'symmetrical': 'False'}),
296
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'payment_events'", 'to': "orm['order.Order']"})
297
+        },
298
+        'order.paymenteventquantity': {
299
+            'Meta': {'object_name': 'PaymentEventQuantity'},
300
+            'event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_quantities'", 'to': "orm['order.PaymentEvent']"}),
301
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
302
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.Line']"}),
303
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {})
304
+        },
305
+        'order.paymenteventtype': {
306
+            'Meta': {'ordering': "('sequence_number',)", 'object_name': 'PaymentEventType'},
307
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'}),
308
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
309
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
310
+            'sequence_number': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
311
+        },
312
+        'order.shippingaddress': {
313
+            'Meta': {'object_name': 'ShippingAddress'},
314
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
315
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
316
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
317
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
318
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
319
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
320
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
321
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
322
+            'notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
323
+            'phone_number': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
324
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
325
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
326
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
327
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
328
+        },
329
+        'order.shippingevent': {
330
+            'Meta': {'ordering': "['-date']", 'object_name': 'ShippingEvent'},
331
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
332
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.ShippingEventType']"}),
333
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
334
+            'lines': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['order.Line']", 'through': "orm['order.ShippingEventQuantity']", 'symmetrical': 'False'}),
335
+            'notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
336
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'shipping_events'", 'to': "orm['order.Order']"})
337
+        },
338
+        'order.shippingeventquantity': {
339
+            'Meta': {'object_name': 'ShippingEventQuantity'},
340
+            'event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_quantities'", 'to': "orm['order.ShippingEvent']"}),
341
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
342
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.Line']"}),
343
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {})
344
+        },
345
+        'order.shippingeventtype': {
346
+            'Meta': {'ordering': "('sequence_number',)", 'object_name': 'ShippingEventType'},
347
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'}),
348
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
349
+            'is_required': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
350
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
351
+            'sequence_number': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
352
+        },
353
+        'partner.partner': {
354
+            'Meta': {'object_name': 'Partner'},
355
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
356
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
357
+            'users': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'partners'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['auth.User']"})
358
+        },
359
+        'sites.site': {
360
+            'Meta': {'ordering': "('domain',)", 'object_name': 'Site', 'db_table': "'django_site'"},
361
+            'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
362
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
363
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
364
+        }
365
+    }
366
+
367
+    complete_apps = ['order']

+ 374
- 0
sites/demo/apps/order/migrations/0003_auto__del_field_ordernote_date__add_field_ordernote_date_created__add_.py View File

@@ -0,0 +1,374 @@
1
+# encoding: utf-8
2
+import datetime
3
+from south.db import db
4
+from south.v2 import SchemaMigration
5
+from django.db import models
6
+from django.utils.timezone import now
7
+
8
+
9
+class Migration(SchemaMigration):
10
+
11
+    def forwards(self, orm):
12
+        
13
+        db.rename_column('order_ordernote', 'date', 'date_created')
14
+
15
+        # Adding field 'OrderNote.date_updated'
16
+        db.add_column('order_ordernote', 'date_updated', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, default=now(), blank=True), keep_default=False)
17
+
18
+
19
+    def backwards(self, orm):
20
+        
21
+        db.rename_column('order_ordernote', 'date_created', 'date')
22
+
23
+        # Deleting field 'OrderNote.date_updated'
24
+        db.delete_column('order_ordernote', 'date_updated')
25
+
26
+
27
+    models = {
28
+        'address.country': {
29
+            'Meta': {'ordering': "('-is_highlighted', 'name')", 'object_name': 'Country'},
30
+            'is_highlighted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
31
+            'is_shipping_country': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
32
+            'iso_3166_1_a2': ('django.db.models.fields.CharField', [], {'max_length': '2', 'primary_key': 'True'}),
33
+            'iso_3166_1_a3': ('django.db.models.fields.CharField', [], {'max_length': '3', 'null': 'True', 'db_index': 'True'}),
34
+            'iso_3166_1_numeric': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'db_index': 'True'}),
35
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
36
+            'printable_name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
37
+        },
38
+        'auth.group': {
39
+            'Meta': {'object_name': 'Group'},
40
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
41
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
42
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
43
+        },
44
+        'auth.permission': {
45
+            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
46
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
47
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
48
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
49
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
50
+        },
51
+        'auth.user': {
52
+            'Meta': {'object_name': 'User'},
53
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
54
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
55
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
56
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
57
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
58
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
59
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
60
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
61
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
62
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
63
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
64
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
65
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
66
+        },
67
+        'catalogue.attributeentity': {
68
+            'Meta': {'object_name': 'AttributeEntity'},
69
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
70
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
71
+            'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'}),
72
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'entities'", 'to': "orm['catalogue.AttributeEntityType']"})
73
+        },
74
+        'catalogue.attributeentitytype': {
75
+            'Meta': {'object_name': 'AttributeEntityType'},
76
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
77
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
78
+            'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'})
79
+        },
80
+        'catalogue.attributeoption': {
81
+            'Meta': {'object_name': 'AttributeOption'},
82
+            'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'options'", 'to': "orm['catalogue.AttributeOptionGroup']"}),
83
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
84
+            'option': ('django.db.models.fields.CharField', [], {'max_length': '255'})
85
+        },
86
+        'catalogue.attributeoptiongroup': {
87
+            'Meta': {'object_name': 'AttributeOptionGroup'},
88
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
89
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
90
+        },
91
+        'catalogue.category': {
92
+            'Meta': {'ordering': "['name']", 'object_name': 'Category'},
93
+            'depth': ('django.db.models.fields.PositiveIntegerField', [], {}),
94
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
95
+            'full_name': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'db_index': 'True'}),
96
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
97
+            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
98
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
99
+            'numchild': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
100
+            'path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
101
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '1024', 'db_index': 'True'})
102
+        },
103
+        'catalogue.option': {
104
+            'Meta': {'object_name': 'Option'},
105
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
106
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
107
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
108
+            'type': ('django.db.models.fields.CharField', [], {'default': "'Required'", 'max_length': '128'})
109
+        },
110
+        'catalogue.product': {
111
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'Product'},
112
+            'attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.ProductAttribute']", 'through': "orm['catalogue.ProductAttributeValue']", 'symmetrical': 'False'}),
113
+            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Category']", 'through': "orm['catalogue.ProductCategory']", 'symmetrical': 'False'}),
114
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
115
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
116
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
117
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
118
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'variants'", 'null': 'True', 'to': "orm['catalogue.Product']"}),
119
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductClass']", 'null': 'True'}),
120
+            'product_options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
121
+            'recommended_products': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Product']", 'symmetrical': 'False', 'through': "orm['catalogue.ProductRecommendation']", 'blank': 'True'}),
122
+            'related_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'relations'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
123
+            'score': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'db_index': 'True'}),
124
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'db_index': 'True'}),
125
+            'status': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'null': 'True', 'blank': 'True'}),
126
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
127
+            'upc': ('django.db.models.fields.CharField', [], {'max_length': '64', 'unique': 'True', 'null': 'True', 'blank': 'True'})
128
+        },
129
+        'catalogue.productattribute': {
130
+            'Meta': {'ordering': "['code']", 'object_name': 'ProductAttribute'},
131
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
132
+            'entity_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntityType']", 'null': 'True', 'blank': 'True'}),
133
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
134
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
135
+            'option_group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOptionGroup']", 'null': 'True', 'blank': 'True'}),
136
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'attributes'", 'null': 'True', 'to': "orm['catalogue.ProductClass']"}),
137
+            'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
138
+            'type': ('django.db.models.fields.CharField', [], {'default': "'text'", 'max_length': '20'})
139
+        },
140
+        'catalogue.productattributevalue': {
141
+            'Meta': {'object_name': 'ProductAttributeValue'},
142
+            'attribute': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductAttribute']"}),
143
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
144
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attribute_values'", 'to': "orm['catalogue.Product']"}),
145
+            'value_boolean': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
146
+            'value_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
147
+            'value_entity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntity']", 'null': 'True', 'blank': 'True'}),
148
+            'value_float': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
149
+            'value_integer': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
150
+            'value_option': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOption']", 'null': 'True', 'blank': 'True'}),
151
+            'value_richtext': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
152
+            'value_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
153
+        },
154
+        'catalogue.productcategory': {
155
+            'Meta': {'ordering': "['-is_canonical']", 'object_name': 'ProductCategory'},
156
+            'category': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Category']"}),
157
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
158
+            'is_canonical': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
159
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
160
+        },
161
+        'catalogue.productclass': {
162
+            'Meta': {'ordering': "['name']", 'object_name': 'ProductClass'},
163
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
164
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
165
+            'options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
166
+            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'})
167
+        },
168
+        'catalogue.productrecommendation': {
169
+            'Meta': {'object_name': 'ProductRecommendation'},
170
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
171
+            'primary': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'primary_recommendations'", 'to': "orm['catalogue.Product']"}),
172
+            'ranking': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
173
+            'recommendation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
174
+        },
175
+        'contenttypes.contenttype': {
176
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
177
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
178
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
179
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
180
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
181
+        },
182
+        'customer.communicationeventtype': {
183
+            'Meta': {'object_name': 'CommunicationEventType'},
184
+            'category': ('django.db.models.fields.CharField', [], {'default': "'Order related'", 'max_length': '255'}),
185
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
186
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
187
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
188
+            'email_body_html_template': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
189
+            'email_body_template': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
190
+            'email_subject_template': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
191
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
192
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
193
+            'sms_template': ('django.db.models.fields.CharField', [], {'max_length': '170', 'blank': 'True'})
194
+        },
195
+        'order.billingaddress': {
196
+            'Meta': {'object_name': 'BillingAddress'},
197
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
198
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
199
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
200
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
201
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
202
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
203
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
204
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
205
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
206
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
207
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
208
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
209
+        },
210
+        'order.communicationevent': {
211
+            'Meta': {'object_name': 'CommunicationEvent'},
212
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
213
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['customer.CommunicationEventType']"}),
214
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
215
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'communication_events'", 'to': "orm['order.Order']"})
216
+        },
217
+        'order.line': {
218
+            'Meta': {'object_name': 'Line'},
219
+            'est_dispatch_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
220
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
221
+            'line_price_before_discounts_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
222
+            'line_price_before_discounts_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
223
+            'line_price_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
224
+            'line_price_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
225
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lines'", 'to': "orm['order.Order']"}),
226
+            'partner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'order_lines'", 'null': 'True', 'to': "orm['partner.Partner']"}),
227
+            'partner_line_notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
228
+            'partner_line_reference': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
229
+            'partner_name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
230
+            'partner_sku': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
231
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']", 'null': 'True', 'blank': 'True'}),
232
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
233
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
234
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
235
+            'unit_cost_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
236
+            'unit_price_excl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
237
+            'unit_price_incl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
238
+            'unit_retail_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'})
239
+        },
240
+        'order.lineattribute': {
241
+            'Meta': {'object_name': 'LineAttribute'},
242
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
243
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attributes'", 'to': "orm['order.Line']"}),
244
+            'option': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_attributes'", 'null': 'True', 'to': "orm['catalogue.Option']"}),
245
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
246
+            'value': ('django.db.models.fields.CharField', [], {'max_length': '255'})
247
+        },
248
+        'order.lineprice': {
249
+            'Meta': {'object_name': 'LinePrice'},
250
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
251
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'prices'", 'to': "orm['order.Line']"}),
252
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_prices'", 'to': "orm['order.Order']"}),
253
+            'price_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
254
+            'price_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
255
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
256
+            'shipping_excl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
257
+            'shipping_incl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'})
258
+        },
259
+        'order.order': {
260
+            'Meta': {'ordering': "['-date_placed']", 'object_name': 'Order'},
261
+            'basket_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
262
+            'billing_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.BillingAddress']", 'null': 'True', 'blank': 'True'}),
263
+            'date_placed': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}),
264
+            'guest_email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
265
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
266
+            'number': ('django.db.models.fields.CharField', [], {'max_length': '128', 'db_index': 'True'}),
267
+            'shipping_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.ShippingAddress']", 'null': 'True', 'blank': 'True'}),
268
+            'shipping_excl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
269
+            'shipping_incl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
270
+            'shipping_method': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
271
+            'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['sites.Site']"}),
272
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
273
+            'total_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
274
+            'total_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
275
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'orders'", 'null': 'True', 'to': "orm['auth.User']"})
276
+        },
277
+        'order.orderdiscount': {
278
+            'Meta': {'object_name': 'OrderDiscount'},
279
+            'amount': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
280
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
281
+            'offer_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
282
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'discounts'", 'to': "orm['order.Order']"}),
283
+            'voucher_code': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'db_index': 'True'}),
284
+            'voucher_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'})
285
+        },
286
+        'order.ordernote': {
287
+            'Meta': {'object_name': 'OrderNote'},
288
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
289
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
290
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
291
+            'message': ('django.db.models.fields.TextField', [], {}),
292
+            'note_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
293
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notes'", 'to': "orm['order.Order']"}),
294
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'})
295
+        },
296
+        'order.paymentevent': {
297
+            'Meta': {'object_name': 'PaymentEvent'},
298
+            'amount': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
299
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
300
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.PaymentEventType']"}),
301
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
302
+            'lines': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['order.Line']", 'through': "orm['order.PaymentEventQuantity']", 'symmetrical': 'False'}),
303
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'payment_events'", 'to': "orm['order.Order']"})
304
+        },
305
+        'order.paymenteventquantity': {
306
+            'Meta': {'object_name': 'PaymentEventQuantity'},
307
+            'event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_quantities'", 'to': "orm['order.PaymentEvent']"}),
308
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
309
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.Line']"}),
310
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {})
311
+        },
312
+        'order.paymenteventtype': {
313
+            'Meta': {'ordering': "('sequence_number',)", 'object_name': 'PaymentEventType'},
314
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'}),
315
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
316
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
317
+            'sequence_number': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
318
+        },
319
+        'order.shippingaddress': {
320
+            'Meta': {'object_name': 'ShippingAddress'},
321
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
322
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
323
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
324
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
325
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
326
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
327
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
328
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
329
+            'notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
330
+            'phone_number': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
331
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
332
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
333
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
334
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
335
+        },
336
+        'order.shippingevent': {
337
+            'Meta': {'ordering': "['-date']", 'object_name': 'ShippingEvent'},
338
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
339
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.ShippingEventType']"}),
340
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
341
+            'lines': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['order.Line']", 'through': "orm['order.ShippingEventQuantity']", 'symmetrical': 'False'}),
342
+            'notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
343
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'shipping_events'", 'to': "orm['order.Order']"})
344
+        },
345
+        'order.shippingeventquantity': {
346
+            'Meta': {'object_name': 'ShippingEventQuantity'},
347
+            'event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_quantities'", 'to': "orm['order.ShippingEvent']"}),
348
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
349
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.Line']"}),
350
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {})
351
+        },
352
+        'order.shippingeventtype': {
353
+            'Meta': {'ordering': "('sequence_number',)", 'object_name': 'ShippingEventType'},
354
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'}),
355
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
356
+            'is_required': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
357
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
358
+            'sequence_number': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
359
+        },
360
+        'partner.partner': {
361
+            'Meta': {'object_name': 'Partner'},
362
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
363
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
364
+            'users': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'partners'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['auth.User']"})
365
+        },
366
+        'sites.site': {
367
+            'Meta': {'ordering': "('domain',)", 'object_name': 'Site', 'db_table': "'django_site'"},
368
+            'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
369
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
370
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
371
+        }
372
+    }
373
+
374
+    complete_apps = ['order']

+ 369
- 0
sites/demo/apps/order/migrations/0004_auto__add_field_line_upc.py View File

@@ -0,0 +1,369 @@
1
+# encoding: utf-8
2
+import datetime
3
+from south.db import db
4
+from south.v2 import SchemaMigration
5
+from django.db import models
6
+
7
+class Migration(SchemaMigration):
8
+
9
+    def forwards(self, orm):
10
+        
11
+        # Adding field 'Line.upc'
12
+        db.add_column('order_line', 'upc', self.gf('django.db.models.fields.CharField')(max_length=128, null=True, blank=True), keep_default=False)
13
+
14
+
15
+    def backwards(self, orm):
16
+        
17
+        # Deleting field 'Line.upc'
18
+        db.delete_column('order_line', 'upc')
19
+
20
+
21
+    models = {
22
+        'address.country': {
23
+            'Meta': {'ordering': "('-is_highlighted', 'name')", 'object_name': 'Country'},
24
+            'is_highlighted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
25
+            'is_shipping_country': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
26
+            'iso_3166_1_a2': ('django.db.models.fields.CharField', [], {'max_length': '2', 'primary_key': 'True'}),
27
+            'iso_3166_1_a3': ('django.db.models.fields.CharField', [], {'max_length': '3', 'null': 'True', 'db_index': 'True'}),
28
+            'iso_3166_1_numeric': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'db_index': 'True'}),
29
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
30
+            'printable_name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
31
+        },
32
+        'auth.group': {
33
+            'Meta': {'object_name': 'Group'},
34
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
35
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
36
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
37
+        },
38
+        'auth.permission': {
39
+            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
40
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
41
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
42
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
43
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
44
+        },
45
+        'auth.user': {
46
+            'Meta': {'object_name': 'User'},
47
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
48
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
49
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
50
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
51
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
52
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
53
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
54
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
55
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
56
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
57
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
58
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
59
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
60
+        },
61
+        'catalogue.attributeentity': {
62
+            'Meta': {'object_name': 'AttributeEntity'},
63
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
64
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
65
+            'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'}),
66
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'entities'", 'to': "orm['catalogue.AttributeEntityType']"})
67
+        },
68
+        'catalogue.attributeentitytype': {
69
+            'Meta': {'object_name': 'AttributeEntityType'},
70
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
71
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
72
+            'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'})
73
+        },
74
+        'catalogue.attributeoption': {
75
+            'Meta': {'object_name': 'AttributeOption'},
76
+            'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'options'", 'to': "orm['catalogue.AttributeOptionGroup']"}),
77
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
78
+            'option': ('django.db.models.fields.CharField', [], {'max_length': '255'})
79
+        },
80
+        'catalogue.attributeoptiongroup': {
81
+            'Meta': {'object_name': 'AttributeOptionGroup'},
82
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
83
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
84
+        },
85
+        'catalogue.category': {
86
+            'Meta': {'ordering': "['name']", 'object_name': 'Category'},
87
+            'depth': ('django.db.models.fields.PositiveIntegerField', [], {}),
88
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
89
+            'full_name': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'db_index': 'True'}),
90
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
91
+            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
92
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
93
+            'numchild': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
94
+            'path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
95
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '1024', 'db_index': 'True'})
96
+        },
97
+        'catalogue.option': {
98
+            'Meta': {'object_name': 'Option'},
99
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
100
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
101
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
102
+            'type': ('django.db.models.fields.CharField', [], {'default': "'Required'", 'max_length': '128'})
103
+        },
104
+        'catalogue.product': {
105
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'Product'},
106
+            'attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.ProductAttribute']", 'through': "orm['catalogue.ProductAttributeValue']", 'symmetrical': 'False'}),
107
+            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Category']", 'through': "orm['catalogue.ProductCategory']", 'symmetrical': 'False'}),
108
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
109
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
110
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
111
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
112
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'variants'", 'null': 'True', 'to': "orm['catalogue.Product']"}),
113
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductClass']", 'null': 'True'}),
114
+            'product_options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
115
+            'recommended_products': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Product']", 'symmetrical': 'False', 'through': "orm['catalogue.ProductRecommendation']", 'blank': 'True'}),
116
+            'related_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'relations'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
117
+            'score': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'db_index': 'True'}),
118
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'db_index': 'True'}),
119
+            'status': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'null': 'True', 'blank': 'True'}),
120
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
121
+            'upc': ('django.db.models.fields.CharField', [], {'max_length': '64', 'unique': 'True', 'null': 'True', 'blank': 'True'})
122
+        },
123
+        'catalogue.productattribute': {
124
+            'Meta': {'ordering': "['code']", 'object_name': 'ProductAttribute'},
125
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
126
+            'entity_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntityType']", 'null': 'True', 'blank': 'True'}),
127
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
128
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
129
+            'option_group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOptionGroup']", 'null': 'True', 'blank': 'True'}),
130
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'attributes'", 'null': 'True', 'to': "orm['catalogue.ProductClass']"}),
131
+            'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
132
+            'type': ('django.db.models.fields.CharField', [], {'default': "'text'", 'max_length': '20'})
133
+        },
134
+        'catalogue.productattributevalue': {
135
+            'Meta': {'object_name': 'ProductAttributeValue'},
136
+            'attribute': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductAttribute']"}),
137
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
138
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attribute_values'", 'to': "orm['catalogue.Product']"}),
139
+            'value_boolean': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
140
+            'value_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
141
+            'value_entity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntity']", 'null': 'True', 'blank': 'True'}),
142
+            'value_float': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
143
+            'value_integer': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
144
+            'value_option': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOption']", 'null': 'True', 'blank': 'True'}),
145
+            'value_richtext': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
146
+            'value_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
147
+        },
148
+        'catalogue.productcategory': {
149
+            'Meta': {'ordering': "['-is_canonical']", 'object_name': 'ProductCategory'},
150
+            'category': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Category']"}),
151
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
152
+            'is_canonical': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
153
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
154
+        },
155
+        'catalogue.productclass': {
156
+            'Meta': {'ordering': "['name']", 'object_name': 'ProductClass'},
157
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
158
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
159
+            'options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
160
+            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'})
161
+        },
162
+        'catalogue.productrecommendation': {
163
+            'Meta': {'object_name': 'ProductRecommendation'},
164
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
165
+            'primary': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'primary_recommendations'", 'to': "orm['catalogue.Product']"}),
166
+            'ranking': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
167
+            'recommendation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
168
+        },
169
+        'contenttypes.contenttype': {
170
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
171
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
172
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
173
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
174
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
175
+        },
176
+        'customer.communicationeventtype': {
177
+            'Meta': {'object_name': 'CommunicationEventType'},
178
+            'category': ('django.db.models.fields.CharField', [], {'default': "'Order related'", 'max_length': '255'}),
179
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
180
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
181
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
182
+            'email_body_html_template': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
183
+            'email_body_template': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
184
+            'email_subject_template': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
185
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
186
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
187
+            'sms_template': ('django.db.models.fields.CharField', [], {'max_length': '170', 'blank': 'True'})
188
+        },
189
+        'order.billingaddress': {
190
+            'Meta': {'object_name': 'BillingAddress'},
191
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
192
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
193
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
194
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
195
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
196
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
197
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
198
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
199
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
200
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
201
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
202
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
203
+        },
204
+        'order.communicationevent': {
205
+            'Meta': {'object_name': 'CommunicationEvent'},
206
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
207
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['customer.CommunicationEventType']"}),
208
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
209
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'communication_events'", 'to': "orm['order.Order']"})
210
+        },
211
+        'order.line': {
212
+            'Meta': {'object_name': 'Line'},
213
+            'est_dispatch_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
214
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
215
+            'line_price_before_discounts_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
216
+            'line_price_before_discounts_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
217
+            'line_price_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
218
+            'line_price_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
219
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lines'", 'to': "orm['order.Order']"}),
220
+            'partner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'order_lines'", 'null': 'True', 'to': "orm['partner.Partner']"}),
221
+            'partner_line_notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
222
+            'partner_line_reference': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
223
+            'partner_name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
224
+            'partner_sku': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
225
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']", 'null': 'True', 'blank': 'True'}),
226
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
227
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
228
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
229
+            'unit_cost_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
230
+            'unit_price_excl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
231
+            'unit_price_incl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
232
+            'unit_retail_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
233
+            'upc': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'})
234
+        },
235
+        'order.lineattribute': {
236
+            'Meta': {'object_name': 'LineAttribute'},
237
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
238
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attributes'", 'to': "orm['order.Line']"}),
239
+            'option': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_attributes'", 'null': 'True', 'to': "orm['catalogue.Option']"}),
240
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
241
+            'value': ('django.db.models.fields.CharField', [], {'max_length': '255'})
242
+        },
243
+        'order.lineprice': {
244
+            'Meta': {'object_name': 'LinePrice'},
245
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
246
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'prices'", 'to': "orm['order.Line']"}),
247
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_prices'", 'to': "orm['order.Order']"}),
248
+            'price_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
249
+            'price_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
250
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
251
+            'shipping_excl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
252
+            'shipping_incl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'})
253
+        },
254
+        'order.order': {
255
+            'Meta': {'ordering': "['-date_placed']", 'object_name': 'Order'},
256
+            'basket_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
257
+            'billing_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.BillingAddress']", 'null': 'True', 'blank': 'True'}),
258
+            'date_placed': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}),
259
+            'guest_email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
260
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
261
+            'number': ('django.db.models.fields.CharField', [], {'max_length': '128', 'db_index': 'True'}),
262
+            'shipping_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.ShippingAddress']", 'null': 'True', 'blank': 'True'}),
263
+            'shipping_excl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
264
+            'shipping_incl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
265
+            'shipping_method': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
266
+            'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['sites.Site']"}),
267
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
268
+            'total_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
269
+            'total_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
270
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'orders'", 'null': 'True', 'to': "orm['auth.User']"})
271
+        },
272
+        'order.orderdiscount': {
273
+            'Meta': {'object_name': 'OrderDiscount'},
274
+            'amount': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
275
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
276
+            'offer_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
277
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'discounts'", 'to': "orm['order.Order']"}),
278
+            'voucher_code': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'db_index': 'True'}),
279
+            'voucher_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'})
280
+        },
281
+        'order.ordernote': {
282
+            'Meta': {'object_name': 'OrderNote'},
283
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
284
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
285
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
286
+            'message': ('django.db.models.fields.TextField', [], {}),
287
+            'note_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
288
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notes'", 'to': "orm['order.Order']"}),
289
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'})
290
+        },
291
+        'order.paymentevent': {
292
+            'Meta': {'object_name': 'PaymentEvent'},
293
+            'amount': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
294
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
295
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.PaymentEventType']"}),
296
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
297
+            'lines': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['order.Line']", 'through': "orm['order.PaymentEventQuantity']", 'symmetrical': 'False'}),
298
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'payment_events'", 'to': "orm['order.Order']"})
299
+        },
300
+        'order.paymenteventquantity': {
301
+            'Meta': {'object_name': 'PaymentEventQuantity'},
302
+            'event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_quantities'", 'to': "orm['order.PaymentEvent']"}),
303
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
304
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.Line']"}),
305
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {})
306
+        },
307
+        'order.paymenteventtype': {
308
+            'Meta': {'ordering': "('sequence_number',)", 'object_name': 'PaymentEventType'},
309
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'}),
310
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
311
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
312
+            'sequence_number': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
313
+        },
314
+        'order.shippingaddress': {
315
+            'Meta': {'object_name': 'ShippingAddress'},
316
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
317
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
318
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
319
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
320
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
321
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
322
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
323
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
324
+            'notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
325
+            'phone_number': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
326
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
327
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
328
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
329
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
330
+        },
331
+        'order.shippingevent': {
332
+            'Meta': {'ordering': "['-date']", 'object_name': 'ShippingEvent'},
333
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
334
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.ShippingEventType']"}),
335
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
336
+            'lines': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['order.Line']", 'through': "orm['order.ShippingEventQuantity']", 'symmetrical': 'False'}),
337
+            'notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
338
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'shipping_events'", 'to': "orm['order.Order']"})
339
+        },
340
+        'order.shippingeventquantity': {
341
+            'Meta': {'object_name': 'ShippingEventQuantity'},
342
+            'event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_quantities'", 'to': "orm['order.ShippingEvent']"}),
343
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
344
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.Line']"}),
345
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {})
346
+        },
347
+        'order.shippingeventtype': {
348
+            'Meta': {'ordering': "('sequence_number',)", 'object_name': 'ShippingEventType'},
349
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'}),
350
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
351
+            'is_required': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
352
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
353
+            'sequence_number': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
354
+        },
355
+        'partner.partner': {
356
+            'Meta': {'object_name': 'Partner'},
357
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
358
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
359
+            'users': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'partners'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['auth.User']"})
360
+        },
361
+        'sites.site': {
362
+            'Meta': {'ordering': "('domain',)", 'object_name': 'Site', 'db_table': "'django_site'"},
363
+            'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
364
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
365
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
366
+        }
367
+    }
368
+
369
+    complete_apps = ['order']

+ 373
- 0
sites/demo/apps/order/migrations/0005_auto__add_field_orderdiscount_offer_name.py View File

@@ -0,0 +1,373 @@
1
+# encoding: utf-8
2
+import datetime
3
+from south.db import db
4
+from south.v2 import SchemaMigration
5
+from django.db import models
6
+
7
+class Migration(SchemaMigration):
8
+
9
+    def forwards(self, orm):
10
+        
11
+        # Adding field 'OrderDiscount.offer_name'
12
+        db.add_column('order_orderdiscount', 'offer_name', self.gf('django.db.models.fields.CharField')(max_length=128, null=True, db_index=True), keep_default=False)
13
+
14
+
15
+    def backwards(self, orm):
16
+        
17
+        # Deleting field 'OrderDiscount.offer_name'
18
+        db.delete_column('order_orderdiscount', 'offer_name')
19
+
20
+
21
+    models = {
22
+        'address.country': {
23
+            'Meta': {'ordering': "('-is_highlighted', 'name')", 'object_name': 'Country'},
24
+            'is_highlighted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
25
+            'is_shipping_country': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
26
+            'iso_3166_1_a2': ('django.db.models.fields.CharField', [], {'max_length': '2', 'primary_key': 'True'}),
27
+            'iso_3166_1_a3': ('django.db.models.fields.CharField', [], {'max_length': '3', 'null': 'True', 'db_index': 'True'}),
28
+            'iso_3166_1_numeric': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'db_index': 'True'}),
29
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
30
+            'printable_name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
31
+        },
32
+        'auth.group': {
33
+            'Meta': {'object_name': 'Group'},
34
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
35
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
36
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
37
+        },
38
+        'auth.permission': {
39
+            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
40
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
41
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
42
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
43
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
44
+        },
45
+        'auth.user': {
46
+            'Meta': {'object_name': 'User'},
47
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2012, 10, 11, 14, 42, 12, 984329)'}),
48
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
49
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
50
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
51
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
52
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
53
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
54
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
55
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2012, 10, 11, 14, 42, 12, 984227)'}),
56
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
57
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
58
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
59
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
60
+        },
61
+        'catalogue.attributeentity': {
62
+            'Meta': {'object_name': 'AttributeEntity'},
63
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
64
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
65
+            'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'}),
66
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'entities'", 'to': "orm['catalogue.AttributeEntityType']"})
67
+        },
68
+        'catalogue.attributeentitytype': {
69
+            'Meta': {'object_name': 'AttributeEntityType'},
70
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
71
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
72
+            'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'})
73
+        },
74
+        'catalogue.attributeoption': {
75
+            'Meta': {'object_name': 'AttributeOption'},
76
+            'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'options'", 'to': "orm['catalogue.AttributeOptionGroup']"}),
77
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
78
+            'option': ('django.db.models.fields.CharField', [], {'max_length': '255'})
79
+        },
80
+        'catalogue.attributeoptiongroup': {
81
+            'Meta': {'object_name': 'AttributeOptionGroup'},
82
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
83
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
84
+        },
85
+        'catalogue.category': {
86
+            'Meta': {'ordering': "['full_name']", 'object_name': 'Category'},
87
+            'depth': ('django.db.models.fields.PositiveIntegerField', [], {}),
88
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
89
+            'full_name': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'db_index': 'True'}),
90
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
91
+            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
92
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
93
+            'numchild': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
94
+            'path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
95
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '1024', 'db_index': 'True'})
96
+        },
97
+        'catalogue.option': {
98
+            'Meta': {'object_name': 'Option'},
99
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'}),
100
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
101
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
102
+            'type': ('django.db.models.fields.CharField', [], {'default': "'Required'", 'max_length': '128'})
103
+        },
104
+        'catalogue.product': {
105
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'Product'},
106
+            'attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.ProductAttribute']", 'through': "orm['catalogue.ProductAttributeValue']", 'symmetrical': 'False'}),
107
+            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Category']", 'through': "orm['catalogue.ProductCategory']", 'symmetrical': 'False'}),
108
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
109
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
110
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
111
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
112
+            'is_discountable': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
113
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'variants'", 'null': 'True', 'to': "orm['catalogue.Product']"}),
114
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductClass']", 'null': 'True'}),
115
+            'product_options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
116
+            'recommended_products': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Product']", 'symmetrical': 'False', 'through': "orm['catalogue.ProductRecommendation']", 'blank': 'True'}),
117
+            'related_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'relations'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
118
+            'score': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'db_index': 'True'}),
119
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'db_index': 'True'}),
120
+            'status': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'null': 'True', 'blank': 'True'}),
121
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
122
+            'upc': ('django.db.models.fields.CharField', [], {'max_length': '64', 'unique': 'True', 'null': 'True', 'blank': 'True'})
123
+        },
124
+        'catalogue.productattribute': {
125
+            'Meta': {'ordering': "['code']", 'object_name': 'ProductAttribute'},
126
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
127
+            'entity_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntityType']", 'null': 'True', 'blank': 'True'}),
128
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
129
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
130
+            'option_group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOptionGroup']", 'null': 'True', 'blank': 'True'}),
131
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'attributes'", 'null': 'True', 'to': "orm['catalogue.ProductClass']"}),
132
+            'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
133
+            'type': ('django.db.models.fields.CharField', [], {'default': "'text'", 'max_length': '20'})
134
+        },
135
+        'catalogue.productattributevalue': {
136
+            'Meta': {'object_name': 'ProductAttributeValue'},
137
+            'attribute': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductAttribute']"}),
138
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
139
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attribute_values'", 'to': "orm['catalogue.Product']"}),
140
+            'value_boolean': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
141
+            'value_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
142
+            'value_entity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntity']", 'null': 'True', 'blank': 'True'}),
143
+            'value_float': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
144
+            'value_integer': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
145
+            'value_option': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOption']", 'null': 'True', 'blank': 'True'}),
146
+            'value_richtext': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
147
+            'value_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
148
+        },
149
+        'catalogue.productcategory': {
150
+            'Meta': {'ordering': "['-is_canonical']", 'object_name': 'ProductCategory'},
151
+            'category': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Category']"}),
152
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
153
+            'is_canonical': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
154
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
155
+        },
156
+        'catalogue.productclass': {
157
+            'Meta': {'ordering': "['name']", 'object_name': 'ProductClass'},
158
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
159
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
160
+            'options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
161
+            'requires_shipping': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
162
+            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'}),
163
+            'track_stock': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
164
+        },
165
+        'catalogue.productrecommendation': {
166
+            'Meta': {'object_name': 'ProductRecommendation'},
167
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
168
+            'primary': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'primary_recommendations'", 'to': "orm['catalogue.Product']"}),
169
+            'ranking': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
170
+            'recommendation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
171
+        },
172
+        'contenttypes.contenttype': {
173
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
174
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
175
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
176
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
177
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
178
+        },
179
+        'customer.communicationeventtype': {
180
+            'Meta': {'object_name': 'CommunicationEventType'},
181
+            'category': ('django.db.models.fields.CharField', [], {'default': "u'Order related'", 'max_length': '255'}),
182
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
183
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
184
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
185
+            'email_body_html_template': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
186
+            'email_body_template': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
187
+            'email_subject_template': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
188
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
189
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
190
+            'sms_template': ('django.db.models.fields.CharField', [], {'max_length': '170', 'blank': 'True'})
191
+        },
192
+        'order.billingaddress': {
193
+            'Meta': {'object_name': 'BillingAddress'},
194
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
195
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
196
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
197
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
198
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
199
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
200
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
201
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
202
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
203
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
204
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
205
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
206
+        },
207
+        'order.communicationevent': {
208
+            'Meta': {'object_name': 'CommunicationEvent'},
209
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
210
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['customer.CommunicationEventType']"}),
211
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
212
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'communication_events'", 'to': "orm['order.Order']"})
213
+        },
214
+        'order.line': {
215
+            'Meta': {'object_name': 'Line'},
216
+            'est_dispatch_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
217
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
218
+            'line_price_before_discounts_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
219
+            'line_price_before_discounts_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
220
+            'line_price_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
221
+            'line_price_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
222
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lines'", 'to': "orm['order.Order']"}),
223
+            'partner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'order_lines'", 'null': 'True', 'to': "orm['partner.Partner']"}),
224
+            'partner_line_notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
225
+            'partner_line_reference': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
226
+            'partner_name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
227
+            'partner_sku': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
228
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']", 'null': 'True', 'blank': 'True'}),
229
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
230
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
231
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
232
+            'unit_cost_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
233
+            'unit_price_excl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
234
+            'unit_price_incl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
235
+            'unit_retail_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
236
+            'upc': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'})
237
+        },
238
+        'order.lineattribute': {
239
+            'Meta': {'object_name': 'LineAttribute'},
240
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
241
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attributes'", 'to': "orm['order.Line']"}),
242
+            'option': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_attributes'", 'null': 'True', 'to': "orm['catalogue.Option']"}),
243
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
244
+            'value': ('django.db.models.fields.CharField', [], {'max_length': '255'})
245
+        },
246
+        'order.lineprice': {
247
+            'Meta': {'ordering': "('id',)", 'object_name': 'LinePrice'},
248
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
249
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'prices'", 'to': "orm['order.Line']"}),
250
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_prices'", 'to': "orm['order.Order']"}),
251
+            'price_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
252
+            'price_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
253
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
254
+            'shipping_excl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
255
+            'shipping_incl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'})
256
+        },
257
+        'order.order': {
258
+            'Meta': {'ordering': "['-date_placed']", 'object_name': 'Order'},
259
+            'basket_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
260
+            'billing_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.BillingAddress']", 'null': 'True', 'blank': 'True'}),
261
+            'date_placed': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}),
262
+            'guest_email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
263
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
264
+            'number': ('django.db.models.fields.CharField', [], {'max_length': '128', 'db_index': 'True'}),
265
+            'shipping_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.ShippingAddress']", 'null': 'True', 'blank': 'True'}),
266
+            'shipping_excl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
267
+            'shipping_incl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
268
+            'shipping_method': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
269
+            'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['sites.Site']"}),
270
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
271
+            'total_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
272
+            'total_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
273
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'orders'", 'null': 'True', 'to': "orm['auth.User']"})
274
+        },
275
+        'order.orderdiscount': {
276
+            'Meta': {'object_name': 'OrderDiscount'},
277
+            'amount': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
278
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
279
+            'offer_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
280
+            'offer_name': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'db_index': 'True'}),
281
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'discounts'", 'to': "orm['order.Order']"}),
282
+            'voucher_code': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'db_index': 'True'}),
283
+            'voucher_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'})
284
+        },
285
+        'order.ordernote': {
286
+            'Meta': {'object_name': 'OrderNote'},
287
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
288
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
289
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
290
+            'message': ('django.db.models.fields.TextField', [], {}),
291
+            'note_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
292
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notes'", 'to': "orm['order.Order']"}),
293
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'})
294
+        },
295
+        'order.paymentevent': {
296
+            'Meta': {'object_name': 'PaymentEvent'},
297
+            'amount': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
298
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
299
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.PaymentEventType']"}),
300
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
301
+            'lines': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['order.Line']", 'through': "orm['order.PaymentEventQuantity']", 'symmetrical': 'False'}),
302
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'payment_events'", 'to': "orm['order.Order']"})
303
+        },
304
+        'order.paymenteventquantity': {
305
+            'Meta': {'object_name': 'PaymentEventQuantity'},
306
+            'event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_quantities'", 'to': "orm['order.PaymentEvent']"}),
307
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
308
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.Line']"}),
309
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {})
310
+        },
311
+        'order.paymenteventtype': {
312
+            'Meta': {'ordering': "('sequence_number',)", 'object_name': 'PaymentEventType'},
313
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'}),
314
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
315
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
316
+            'sequence_number': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
317
+        },
318
+        'order.shippingaddress': {
319
+            'Meta': {'object_name': 'ShippingAddress'},
320
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
321
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
322
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
323
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
324
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
325
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
326
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
327
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
328
+            'notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
329
+            'phone_number': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
330
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
331
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
332
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
333
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
334
+        },
335
+        'order.shippingevent': {
336
+            'Meta': {'ordering': "['-date']", 'object_name': 'ShippingEvent'},
337
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
338
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.ShippingEventType']"}),
339
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
340
+            'lines': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['order.Line']", 'through': "orm['order.ShippingEventQuantity']", 'symmetrical': 'False'}),
341
+            'notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
342
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'shipping_events'", 'to': "orm['order.Order']"})
343
+        },
344
+        'order.shippingeventquantity': {
345
+            'Meta': {'object_name': 'ShippingEventQuantity'},
346
+            'event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_quantities'", 'to': "orm['order.ShippingEvent']"}),
347
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
348
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.Line']"}),
349
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {})
350
+        },
351
+        'order.shippingeventtype': {
352
+            'Meta': {'ordering': "('sequence_number',)", 'object_name': 'ShippingEventType'},
353
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'}),
354
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
355
+            'is_required': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
356
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
357
+            'sequence_number': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
358
+        },
359
+        'partner.partner': {
360
+            'Meta': {'object_name': 'Partner'},
361
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
362
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
363
+            'users': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'partners'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['auth.User']"})
364
+        },
365
+        'sites.site': {
366
+            'Meta': {'ordering': "('domain',)", 'object_name': 'Site', 'db_table': "'django_site'"},
367
+            'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
368
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
369
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
370
+        }
371
+    }
372
+
373
+    complete_apps = ['order']

+ 383
- 0
sites/demo/apps/order/migrations/0006_update_offer_name_field.py View File

@@ -0,0 +1,383 @@
1
+# -*- coding: utf-8 -*-
2
+import datetime
3
+from south.db import db
4
+from south.v2 import DataMigration
5
+from django.db import models
6
+
7
+
8
+class Migration(DataMigration):
9
+
10
+    def forwards(self, orm):
11
+        "Write your forwards methods here."
12
+        # Note: Remember to use orm['appname.ModelName'] rather than "from appname.models..."
13
+        OrderDiscount = orm['order.OrderDiscount']
14
+        for discount in OrderDiscount.objects.all():
15
+            from oscar.apps.offer.models import ConditionalOffer
16
+            try:
17
+                offer = ConditionalOffer.objects.get(id=discount.offer_id)
18
+            except ConditionalOffer.DoesNotExist:
19
+                pass
20
+            else:
21
+                discount.offer_name = offer.name
22
+                discount.save()
23
+
24
+    def backwards(self, orm):
25
+        """
26
+        The new offer_name field is redundant information so we don't
27
+        have to do anything, here.
28
+        """
29
+
30
+    models = {
31
+        'address.country': {
32
+            'Meta': {'ordering': "('-is_highlighted', 'name')", 'object_name': 'Country'},
33
+            'is_highlighted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
34
+            'is_shipping_country': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
35
+            'iso_3166_1_a2': ('django.db.models.fields.CharField', [], {'max_length': '2', 'primary_key': 'True'}),
36
+            'iso_3166_1_a3': ('django.db.models.fields.CharField', [], {'max_length': '3', 'null': 'True', 'db_index': 'True'}),
37
+            'iso_3166_1_numeric': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'db_index': 'True'}),
38
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
39
+            'printable_name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
40
+        },
41
+        'auth.group': {
42
+            'Meta': {'object_name': 'Group'},
43
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
44
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
45
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
46
+        },
47
+        'auth.permission': {
48
+            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
49
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
50
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
51
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
52
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
53
+        },
54
+        'auth.user': {
55
+            'Meta': {'object_name': 'User'},
56
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
57
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
58
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
59
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
60
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
61
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
62
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
63
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
64
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
65
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
66
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
67
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
68
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
69
+        },
70
+        'catalogue.attributeentity': {
71
+            'Meta': {'object_name': 'AttributeEntity'},
72
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
73
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
74
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'blank': 'True'}),
75
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'entities'", 'to': "orm['catalogue.AttributeEntityType']"})
76
+        },
77
+        'catalogue.attributeentitytype': {
78
+            'Meta': {'object_name': 'AttributeEntityType'},
79
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
80
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
81
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'blank': 'True'})
82
+        },
83
+        'catalogue.attributeoption': {
84
+            'Meta': {'object_name': 'AttributeOption'},
85
+            'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'options'", 'to': "orm['catalogue.AttributeOptionGroup']"}),
86
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
87
+            'option': ('django.db.models.fields.CharField', [], {'max_length': '255'})
88
+        },
89
+        'catalogue.attributeoptiongroup': {
90
+            'Meta': {'object_name': 'AttributeOptionGroup'},
91
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
92
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
93
+        },
94
+        'catalogue.category': {
95
+            'Meta': {'ordering': "['full_name']", 'object_name': 'Category'},
96
+            'depth': ('django.db.models.fields.PositiveIntegerField', [], {}),
97
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
98
+            'full_name': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'db_index': 'True'}),
99
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
100
+            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
101
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
102
+            'numchild': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
103
+            'path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
104
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '1024'})
105
+        },
106
+        'catalogue.option': {
107
+            'Meta': {'object_name': 'Option'},
108
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
109
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
110
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
111
+            'type': ('django.db.models.fields.CharField', [], {'default': "'Required'", 'max_length': '128'})
112
+        },
113
+        'catalogue.product': {
114
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'Product'},
115
+            'attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.ProductAttribute']", 'through': "orm['catalogue.ProductAttributeValue']", 'symmetrical': 'False'}),
116
+            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Category']", 'through': "orm['catalogue.ProductCategory']", 'symmetrical': 'False'}),
117
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
118
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
119
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
120
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
121
+            'is_discountable': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
122
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'variants'", 'null': 'True', 'to': "orm['catalogue.Product']"}),
123
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductClass']", 'null': 'True'}),
124
+            'product_options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
125
+            'recommended_products': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Product']", 'symmetrical': 'False', 'through': "orm['catalogue.ProductRecommendation']", 'blank': 'True'}),
126
+            'related_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'relations'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
127
+            'score': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'db_index': 'True'}),
128
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255'}),
129
+            'status': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'null': 'True', 'blank': 'True'}),
130
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
131
+            'upc': ('django.db.models.fields.CharField', [], {'max_length': '64', 'unique': 'True', 'null': 'True', 'blank': 'True'})
132
+        },
133
+        'catalogue.productattribute': {
134
+            'Meta': {'ordering': "['code']", 'object_name': 'ProductAttribute'},
135
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128'}),
136
+            'entity_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntityType']", 'null': 'True', 'blank': 'True'}),
137
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
138
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
139
+            'option_group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOptionGroup']", 'null': 'True', 'blank': 'True'}),
140
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'attributes'", 'null': 'True', 'to': "orm['catalogue.ProductClass']"}),
141
+            'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
142
+            'type': ('django.db.models.fields.CharField', [], {'default': "'text'", 'max_length': '20'})
143
+        },
144
+        'catalogue.productattributevalue': {
145
+            'Meta': {'object_name': 'ProductAttributeValue'},
146
+            'attribute': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductAttribute']"}),
147
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
148
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attribute_values'", 'to': "orm['catalogue.Product']"}),
149
+            'value_boolean': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
150
+            'value_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
151
+            'value_entity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntity']", 'null': 'True', 'blank': 'True'}),
152
+            'value_float': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
153
+            'value_integer': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
154
+            'value_option': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOption']", 'null': 'True', 'blank': 'True'}),
155
+            'value_richtext': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
156
+            'value_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
157
+        },
158
+        'catalogue.productcategory': {
159
+            'Meta': {'ordering': "['-is_canonical']", 'object_name': 'ProductCategory'},
160
+            'category': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Category']"}),
161
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
162
+            'is_canonical': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
163
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
164
+        },
165
+        'catalogue.productclass': {
166
+            'Meta': {'ordering': "['name']", 'object_name': 'ProductClass'},
167
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
168
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
169
+            'options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
170
+            'requires_shipping': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
171
+            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
172
+            'track_stock': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
173
+        },
174
+        'catalogue.productrecommendation': {
175
+            'Meta': {'object_name': 'ProductRecommendation'},
176
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
177
+            'primary': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'primary_recommendations'", 'to': "orm['catalogue.Product']"}),
178
+            'ranking': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
179
+            'recommendation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
180
+        },
181
+        'contenttypes.contenttype': {
182
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
183
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
184
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
185
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
186
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
187
+        },
188
+        'customer.communicationeventtype': {
189
+            'Meta': {'object_name': 'CommunicationEventType'},
190
+            'category': ('django.db.models.fields.CharField', [], {'default': "u'Order related'", 'max_length': '255'}),
191
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128'}),
192
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
193
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
194
+            'email_body_html_template': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
195
+            'email_body_template': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
196
+            'email_subject_template': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
197
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
198
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
199
+            'sms_template': ('django.db.models.fields.CharField', [], {'max_length': '170', 'blank': 'True'})
200
+        },
201
+        'order.billingaddress': {
202
+            'Meta': {'object_name': 'BillingAddress'},
203
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
204
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
205
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
206
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
207
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
208
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
209
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
210
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
211
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
212
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
213
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
214
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
215
+        },
216
+        'order.communicationevent': {
217
+            'Meta': {'object_name': 'CommunicationEvent'},
218
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
219
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['customer.CommunicationEventType']"}),
220
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
221
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'communication_events'", 'to': "orm['order.Order']"})
222
+        },
223
+        'order.line': {
224
+            'Meta': {'object_name': 'Line'},
225
+            'est_dispatch_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
226
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
227
+            'line_price_before_discounts_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
228
+            'line_price_before_discounts_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
229
+            'line_price_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
230
+            'line_price_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
231
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lines'", 'to': "orm['order.Order']"}),
232
+            'partner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'order_lines'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['partner.Partner']"}),
233
+            'partner_line_notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
234
+            'partner_line_reference': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
235
+            'partner_name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
236
+            'partner_sku': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
237
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
238
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
239
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
240
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
241
+            'unit_cost_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
242
+            'unit_price_excl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
243
+            'unit_price_incl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
244
+            'unit_retail_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
245
+            'upc': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'})
246
+        },
247
+        'order.lineattribute': {
248
+            'Meta': {'object_name': 'LineAttribute'},
249
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
250
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attributes'", 'to': "orm['order.Line']"}),
251
+            'option': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_attributes'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['catalogue.Option']"}),
252
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
253
+            'value': ('django.db.models.fields.CharField', [], {'max_length': '255'})
254
+        },
255
+        'order.lineprice': {
256
+            'Meta': {'ordering': "('id',)", 'object_name': 'LinePrice'},
257
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
258
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'prices'", 'to': "orm['order.Line']"}),
259
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_prices'", 'to': "orm['order.Order']"}),
260
+            'price_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
261
+            'price_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
262
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
263
+            'shipping_excl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
264
+            'shipping_incl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'})
265
+        },
266
+        'order.order': {
267
+            'Meta': {'ordering': "['-date_placed']", 'object_name': 'Order'},
268
+            'basket_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
269
+            'billing_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.BillingAddress']", 'null': 'True', 'blank': 'True'}),
270
+            'date_placed': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}),
271
+            'guest_email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
272
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
273
+            'number': ('django.db.models.fields.CharField', [], {'max_length': '128', 'db_index': 'True'}),
274
+            'shipping_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.ShippingAddress']", 'null': 'True', 'blank': 'True'}),
275
+            'shipping_excl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
276
+            'shipping_incl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
277
+            'shipping_method': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
278
+            'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['sites.Site']"}),
279
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
280
+            'total_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
281
+            'total_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
282
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'orders'", 'null': 'True', 'to': "orm['auth.User']"})
283
+        },
284
+        'order.orderdiscount': {
285
+            'Meta': {'object_name': 'OrderDiscount'},
286
+            'amount': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
287
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
288
+            'offer_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
289
+            'offer_name': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'db_index': 'True'}),
290
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'discounts'", 'to': "orm['order.Order']"}),
291
+            'voucher_code': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'db_index': 'True'}),
292
+            'voucher_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'})
293
+        },
294
+        'order.ordernote': {
295
+            'Meta': {'object_name': 'OrderNote'},
296
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
297
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
298
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
299
+            'message': ('django.db.models.fields.TextField', [], {}),
300
+            'note_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
301
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notes'", 'to': "orm['order.Order']"}),
302
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'})
303
+        },
304
+        'order.paymentevent': {
305
+            'Meta': {'object_name': 'PaymentEvent'},
306
+            'amount': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
307
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
308
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.PaymentEventType']"}),
309
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
310
+            'lines': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['order.Line']", 'through': "orm['order.PaymentEventQuantity']", 'symmetrical': 'False'}),
311
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'payment_events'", 'to': "orm['order.Order']"})
312
+        },
313
+        'order.paymenteventquantity': {
314
+            'Meta': {'object_name': 'PaymentEventQuantity'},
315
+            'event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_quantities'", 'to': "orm['order.PaymentEvent']"}),
316
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
317
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.Line']"}),
318
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {})
319
+        },
320
+        'order.paymenteventtype': {
321
+            'Meta': {'ordering': "('sequence_number',)", 'object_name': 'PaymentEventType'},
322
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
323
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
324
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
325
+            'sequence_number': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
326
+        },
327
+        'order.shippingaddress': {
328
+            'Meta': {'object_name': 'ShippingAddress'},
329
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
330
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
331
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
332
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
333
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
334
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
335
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
336
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
337
+            'notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
338
+            'phone_number': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
339
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
340
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
341
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
342
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
343
+        },
344
+        'order.shippingevent': {
345
+            'Meta': {'ordering': "['-date']", 'object_name': 'ShippingEvent'},
346
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
347
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.ShippingEventType']"}),
348
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
349
+            'lines': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['order.Line']", 'through': "orm['order.ShippingEventQuantity']", 'symmetrical': 'False'}),
350
+            'notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
351
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'shipping_events'", 'to': "orm['order.Order']"})
352
+        },
353
+        'order.shippingeventquantity': {
354
+            'Meta': {'object_name': 'ShippingEventQuantity'},
355
+            'event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_quantities'", 'to': "orm['order.ShippingEvent']"}),
356
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
357
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.Line']"}),
358
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {})
359
+        },
360
+        'order.shippingeventtype': {
361
+            'Meta': {'ordering': "('sequence_number',)", 'object_name': 'ShippingEventType'},
362
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
363
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
364
+            'is_required': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
365
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
366
+            'sequence_number': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
367
+        },
368
+        'partner.partner': {
369
+            'Meta': {'object_name': 'Partner'},
370
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
371
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
372
+            'users': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'partners'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['auth.User']"})
373
+        },
374
+        'sites.site': {
375
+            'Meta': {'ordering': "('domain',)", 'object_name': 'Site', 'db_table': "'django_site'"},
376
+            'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
377
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
378
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
379
+        }
380
+    }
381
+
382
+    complete_apps = ['order']
383
+    symmetrical = True

+ 375
- 0
sites/demo/apps/order/migrations/0007_auto__add_field_orderdiscount_frequency.py View File

@@ -0,0 +1,375 @@
1
+# -*- coding: utf-8 -*-
2
+import datetime
3
+from south.db import db
4
+from south.v2 import SchemaMigration
5
+from django.db import models
6
+
7
+
8
+class Migration(SchemaMigration):
9
+
10
+    def forwards(self, orm):
11
+        # Adding field 'OrderDiscount.frequency'
12
+        db.add_column('order_orderdiscount', 'frequency',
13
+                      self.gf('django.db.models.fields.PositiveIntegerField')(null=True),
14
+                      keep_default=False)
15
+
16
+
17
+    def backwards(self, orm):
18
+        # Deleting field 'OrderDiscount.frequency'
19
+        db.delete_column('order_orderdiscount', 'frequency')
20
+
21
+
22
+    models = {
23
+        'address.country': {
24
+            'Meta': {'ordering': "('-is_highlighted', 'name')", 'object_name': 'Country'},
25
+            'is_highlighted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
26
+            'is_shipping_country': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
27
+            'iso_3166_1_a2': ('django.db.models.fields.CharField', [], {'max_length': '2', 'primary_key': 'True'}),
28
+            'iso_3166_1_a3': ('django.db.models.fields.CharField', [], {'max_length': '3', 'null': 'True', 'db_index': 'True'}),
29
+            'iso_3166_1_numeric': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'db_index': 'True'}),
30
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
31
+            'printable_name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
32
+        },
33
+        'auth.group': {
34
+            'Meta': {'object_name': 'Group'},
35
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
36
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
37
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
38
+        },
39
+        'auth.permission': {
40
+            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
41
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
42
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
43
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
44
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
45
+        },
46
+        'auth.user': {
47
+            'Meta': {'object_name': 'User'},
48
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
49
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
50
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
51
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
52
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
53
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
54
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
55
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
56
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
57
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
58
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
59
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
60
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
61
+        },
62
+        'catalogue.attributeentity': {
63
+            'Meta': {'object_name': 'AttributeEntity'},
64
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
65
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
66
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'blank': 'True'}),
67
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'entities'", 'to': "orm['catalogue.AttributeEntityType']"})
68
+        },
69
+        'catalogue.attributeentitytype': {
70
+            'Meta': {'object_name': 'AttributeEntityType'},
71
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
72
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
73
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'blank': 'True'})
74
+        },
75
+        'catalogue.attributeoption': {
76
+            'Meta': {'object_name': 'AttributeOption'},
77
+            'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'options'", 'to': "orm['catalogue.AttributeOptionGroup']"}),
78
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
79
+            'option': ('django.db.models.fields.CharField', [], {'max_length': '255'})
80
+        },
81
+        'catalogue.attributeoptiongroup': {
82
+            'Meta': {'object_name': 'AttributeOptionGroup'},
83
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
84
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
85
+        },
86
+        'catalogue.category': {
87
+            'Meta': {'ordering': "['full_name']", 'object_name': 'Category'},
88
+            'depth': ('django.db.models.fields.PositiveIntegerField', [], {}),
89
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
90
+            'full_name': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'db_index': 'True'}),
91
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
92
+            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
93
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
94
+            'numchild': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
95
+            'path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
96
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '1024'})
97
+        },
98
+        'catalogue.option': {
99
+            'Meta': {'object_name': 'Option'},
100
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
101
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
102
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
103
+            'type': ('django.db.models.fields.CharField', [], {'default': "'Required'", 'max_length': '128'})
104
+        },
105
+        'catalogue.product': {
106
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'Product'},
107
+            'attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.ProductAttribute']", 'through': "orm['catalogue.ProductAttributeValue']", 'symmetrical': 'False'}),
108
+            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Category']", 'through': "orm['catalogue.ProductCategory']", 'symmetrical': 'False'}),
109
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
110
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
111
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
112
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
113
+            'is_discountable': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
114
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'variants'", 'null': 'True', 'to': "orm['catalogue.Product']"}),
115
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductClass']", 'null': 'True'}),
116
+            'product_options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
117
+            'recommended_products': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Product']", 'symmetrical': 'False', 'through': "orm['catalogue.ProductRecommendation']", 'blank': 'True'}),
118
+            'related_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'relations'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
119
+            'score': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'db_index': 'True'}),
120
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255'}),
121
+            'status': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'null': 'True', 'blank': 'True'}),
122
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
123
+            'upc': ('django.db.models.fields.CharField', [], {'max_length': '64', 'unique': 'True', 'null': 'True', 'blank': 'True'})
124
+        },
125
+        'catalogue.productattribute': {
126
+            'Meta': {'ordering': "['code']", 'object_name': 'ProductAttribute'},
127
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128'}),
128
+            'entity_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntityType']", 'null': 'True', 'blank': 'True'}),
129
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
130
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
131
+            'option_group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOptionGroup']", 'null': 'True', 'blank': 'True'}),
132
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'attributes'", 'null': 'True', 'to': "orm['catalogue.ProductClass']"}),
133
+            'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
134
+            'type': ('django.db.models.fields.CharField', [], {'default': "'text'", 'max_length': '20'})
135
+        },
136
+        'catalogue.productattributevalue': {
137
+            'Meta': {'object_name': 'ProductAttributeValue'},
138
+            'attribute': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductAttribute']"}),
139
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
140
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attribute_values'", 'to': "orm['catalogue.Product']"}),
141
+            'value_boolean': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
142
+            'value_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
143
+            'value_entity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntity']", 'null': 'True', 'blank': 'True'}),
144
+            'value_float': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
145
+            'value_integer': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
146
+            'value_option': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOption']", 'null': 'True', 'blank': 'True'}),
147
+            'value_richtext': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
148
+            'value_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
149
+        },
150
+        'catalogue.productcategory': {
151
+            'Meta': {'ordering': "['-is_canonical']", 'object_name': 'ProductCategory'},
152
+            'category': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Category']"}),
153
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
154
+            'is_canonical': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
155
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
156
+        },
157
+        'catalogue.productclass': {
158
+            'Meta': {'ordering': "['name']", 'object_name': 'ProductClass'},
159
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
160
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
161
+            'options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
162
+            'requires_shipping': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
163
+            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
164
+            'track_stock': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
165
+        },
166
+        'catalogue.productrecommendation': {
167
+            'Meta': {'object_name': 'ProductRecommendation'},
168
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
169
+            'primary': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'primary_recommendations'", 'to': "orm['catalogue.Product']"}),
170
+            'ranking': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
171
+            'recommendation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
172
+        },
173
+        'contenttypes.contenttype': {
174
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
175
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
176
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
177
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
178
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
179
+        },
180
+        'customer.communicationeventtype': {
181
+            'Meta': {'object_name': 'CommunicationEventType'},
182
+            'category': ('django.db.models.fields.CharField', [], {'default': "u'Order related'", 'max_length': '255'}),
183
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128'}),
184
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
185
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
186
+            'email_body_html_template': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
187
+            'email_body_template': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
188
+            'email_subject_template': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
189
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
190
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
191
+            'sms_template': ('django.db.models.fields.CharField', [], {'max_length': '170', 'blank': 'True'})
192
+        },
193
+        'order.billingaddress': {
194
+            'Meta': {'object_name': 'BillingAddress'},
195
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
196
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
197
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
198
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
199
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
200
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
201
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
202
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
203
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
204
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
205
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
206
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
207
+        },
208
+        'order.communicationevent': {
209
+            'Meta': {'object_name': 'CommunicationEvent'},
210
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
211
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['customer.CommunicationEventType']"}),
212
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
213
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'communication_events'", 'to': "orm['order.Order']"})
214
+        },
215
+        'order.line': {
216
+            'Meta': {'object_name': 'Line'},
217
+            'est_dispatch_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
218
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
219
+            'line_price_before_discounts_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
220
+            'line_price_before_discounts_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
221
+            'line_price_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
222
+            'line_price_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
223
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lines'", 'to': "orm['order.Order']"}),
224
+            'partner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'order_lines'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['partner.Partner']"}),
225
+            'partner_line_notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
226
+            'partner_line_reference': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
227
+            'partner_name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
228
+            'partner_sku': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
229
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
230
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
231
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
232
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
233
+            'unit_cost_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
234
+            'unit_price_excl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
235
+            'unit_price_incl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
236
+            'unit_retail_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
237
+            'upc': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'})
238
+        },
239
+        'order.lineattribute': {
240
+            'Meta': {'object_name': 'LineAttribute'},
241
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
242
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attributes'", 'to': "orm['order.Line']"}),
243
+            'option': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_attributes'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['catalogue.Option']"}),
244
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
245
+            'value': ('django.db.models.fields.CharField', [], {'max_length': '255'})
246
+        },
247
+        'order.lineprice': {
248
+            'Meta': {'ordering': "('id',)", 'object_name': 'LinePrice'},
249
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
250
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'prices'", 'to': "orm['order.Line']"}),
251
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_prices'", 'to': "orm['order.Order']"}),
252
+            'price_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
253
+            'price_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
254
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
255
+            'shipping_excl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
256
+            'shipping_incl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'})
257
+        },
258
+        'order.order': {
259
+            'Meta': {'ordering': "['-date_placed']", 'object_name': 'Order'},
260
+            'basket_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
261
+            'billing_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.BillingAddress']", 'null': 'True', 'blank': 'True'}),
262
+            'date_placed': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}),
263
+            'guest_email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
264
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
265
+            'number': ('django.db.models.fields.CharField', [], {'max_length': '128', 'db_index': 'True'}),
266
+            'shipping_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.ShippingAddress']", 'null': 'True', 'blank': 'True'}),
267
+            'shipping_excl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
268
+            'shipping_incl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
269
+            'shipping_method': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
270
+            'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['sites.Site']"}),
271
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
272
+            'total_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
273
+            'total_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
274
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'orders'", 'null': 'True', 'to': "orm['auth.User']"})
275
+        },
276
+        'order.orderdiscount': {
277
+            'Meta': {'object_name': 'OrderDiscount'},
278
+            'amount': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
279
+            'frequency': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
280
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
281
+            'offer_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
282
+            'offer_name': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'db_index': 'True'}),
283
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'discounts'", 'to': "orm['order.Order']"}),
284
+            'voucher_code': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'db_index': 'True'}),
285
+            'voucher_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'})
286
+        },
287
+        'order.ordernote': {
288
+            'Meta': {'object_name': 'OrderNote'},
289
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
290
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
291
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
292
+            'message': ('django.db.models.fields.TextField', [], {}),
293
+            'note_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
294
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notes'", 'to': "orm['order.Order']"}),
295
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'})
296
+        },
297
+        'order.paymentevent': {
298
+            'Meta': {'object_name': 'PaymentEvent'},
299
+            'amount': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
300
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
301
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.PaymentEventType']"}),
302
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
303
+            'lines': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['order.Line']", 'through': "orm['order.PaymentEventQuantity']", 'symmetrical': 'False'}),
304
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'payment_events'", 'to': "orm['order.Order']"})
305
+        },
306
+        'order.paymenteventquantity': {
307
+            'Meta': {'object_name': 'PaymentEventQuantity'},
308
+            'event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_quantities'", 'to': "orm['order.PaymentEvent']"}),
309
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
310
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.Line']"}),
311
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {})
312
+        },
313
+        'order.paymenteventtype': {
314
+            'Meta': {'ordering': "('sequence_number',)", 'object_name': 'PaymentEventType'},
315
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
316
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
317
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
318
+            'sequence_number': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
319
+        },
320
+        'order.shippingaddress': {
321
+            'Meta': {'object_name': 'ShippingAddress'},
322
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
323
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
324
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
325
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
326
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
327
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
328
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
329
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
330
+            'notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
331
+            'phone_number': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
332
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
333
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
334
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
335
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
336
+        },
337
+        'order.shippingevent': {
338
+            'Meta': {'ordering': "['-date']", 'object_name': 'ShippingEvent'},
339
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
340
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.ShippingEventType']"}),
341
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
342
+            'lines': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['order.Line']", 'through': "orm['order.ShippingEventQuantity']", 'symmetrical': 'False'}),
343
+            'notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
344
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'shipping_events'", 'to': "orm['order.Order']"})
345
+        },
346
+        'order.shippingeventquantity': {
347
+            'Meta': {'object_name': 'ShippingEventQuantity'},
348
+            'event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_quantities'", 'to': "orm['order.ShippingEvent']"}),
349
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
350
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.Line']"}),
351
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {})
352
+        },
353
+        'order.shippingeventtype': {
354
+            'Meta': {'ordering': "('sequence_number',)", 'object_name': 'ShippingEventType'},
355
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
356
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
357
+            'is_required': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
358
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
359
+            'sequence_number': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
360
+        },
361
+        'partner.partner': {
362
+            'Meta': {'object_name': 'Partner'},
363
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
364
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
365
+            'users': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'partners'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['auth.User']"})
366
+        },
367
+        'sites.site': {
368
+            'Meta': {'ordering': "('domain',)", 'object_name': 'Site', 'db_table': "'django_site'"},
369
+            'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
370
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
371
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
372
+        }
373
+    }
374
+
375
+    complete_apps = ['order']

+ 377
- 0
sites/demo/apps/order/migrations/0008_auto__add_field_orderdiscount_category.py View File

@@ -0,0 +1,377 @@
1
+# -*- coding: utf-8 -*-
2
+import datetime
3
+from south.db import db
4
+from south.v2 import SchemaMigration
5
+from django.db import models
6
+
7
+
8
+class Migration(SchemaMigration):
9
+
10
+    def forwards(self, orm):
11
+        # Adding field 'OrderDiscount.category'
12
+        db.add_column('order_orderdiscount', 'category',
13
+                      self.gf('django.db.models.fields.CharField')(default='Basket', max_length=64),
14
+                      keep_default=False)
15
+
16
+
17
+    def backwards(self, orm):
18
+        # Deleting field 'OrderDiscount.category'
19
+        db.delete_column('order_orderdiscount', 'category')
20
+
21
+
22
+    models = {
23
+        'address.country': {
24
+            'Meta': {'ordering': "('-is_highlighted', 'name')", 'object_name': 'Country'},
25
+            'is_highlighted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
26
+            'is_shipping_country': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
27
+            'iso_3166_1_a2': ('django.db.models.fields.CharField', [], {'max_length': '2', 'primary_key': 'True'}),
28
+            'iso_3166_1_a3': ('django.db.models.fields.CharField', [], {'max_length': '3', 'null': 'True', 'db_index': 'True'}),
29
+            'iso_3166_1_numeric': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'db_index': 'True'}),
30
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
31
+            'printable_name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
32
+        },
33
+        'auth.group': {
34
+            'Meta': {'object_name': 'Group'},
35
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
36
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
37
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
38
+        },
39
+        'auth.permission': {
40
+            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
41
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
42
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
43
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
44
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
45
+        },
46
+        'auth.user': {
47
+            'Meta': {'object_name': 'User'},
48
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
49
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
50
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
51
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
52
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
53
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
54
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
55
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
56
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
57
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
58
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
59
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
60
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
61
+        },
62
+        'catalogue.attributeentity': {
63
+            'Meta': {'object_name': 'AttributeEntity'},
64
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
65
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
66
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'blank': 'True'}),
67
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'entities'", 'to': "orm['catalogue.AttributeEntityType']"})
68
+        },
69
+        'catalogue.attributeentitytype': {
70
+            'Meta': {'object_name': 'AttributeEntityType'},
71
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
72
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
73
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'blank': 'True'})
74
+        },
75
+        'catalogue.attributeoption': {
76
+            'Meta': {'object_name': 'AttributeOption'},
77
+            'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'options'", 'to': "orm['catalogue.AttributeOptionGroup']"}),
78
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
79
+            'option': ('django.db.models.fields.CharField', [], {'max_length': '255'})
80
+        },
81
+        'catalogue.attributeoptiongroup': {
82
+            'Meta': {'object_name': 'AttributeOptionGroup'},
83
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
84
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
85
+        },
86
+        'catalogue.category': {
87
+            'Meta': {'ordering': "['full_name']", 'object_name': 'Category'},
88
+            'depth': ('django.db.models.fields.PositiveIntegerField', [], {}),
89
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
90
+            'full_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
91
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
92
+            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
93
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
94
+            'numchild': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
95
+            'path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
96
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255'})
97
+        },
98
+        'catalogue.option': {
99
+            'Meta': {'object_name': 'Option'},
100
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
101
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
102
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
103
+            'type': ('django.db.models.fields.CharField', [], {'default': "'Required'", 'max_length': '128'})
104
+        },
105
+        'catalogue.product': {
106
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'Product'},
107
+            'attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.ProductAttribute']", 'through': "orm['catalogue.ProductAttributeValue']", 'symmetrical': 'False'}),
108
+            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Category']", 'through': "orm['catalogue.ProductCategory']", 'symmetrical': 'False'}),
109
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
110
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
111
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
112
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
113
+            'is_discountable': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
114
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'variants'", 'null': 'True', 'to': "orm['catalogue.Product']"}),
115
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductClass']", 'null': 'True'}),
116
+            'product_options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
117
+            'recommended_products': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Product']", 'symmetrical': 'False', 'through': "orm['catalogue.ProductRecommendation']", 'blank': 'True'}),
118
+            'related_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'relations'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
119
+            'score': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'db_index': 'True'}),
120
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255'}),
121
+            'status': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'null': 'True', 'blank': 'True'}),
122
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
123
+            'upc': ('django.db.models.fields.CharField', [], {'max_length': '64', 'unique': 'True', 'null': 'True', 'blank': 'True'})
124
+        },
125
+        'catalogue.productattribute': {
126
+            'Meta': {'ordering': "['code']", 'object_name': 'ProductAttribute'},
127
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128'}),
128
+            'entity_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntityType']", 'null': 'True', 'blank': 'True'}),
129
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
130
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
131
+            'option_group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOptionGroup']", 'null': 'True', 'blank': 'True'}),
132
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'attributes'", 'null': 'True', 'to': "orm['catalogue.ProductClass']"}),
133
+            'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
134
+            'type': ('django.db.models.fields.CharField', [], {'default': "'text'", 'max_length': '20'})
135
+        },
136
+        'catalogue.productattributevalue': {
137
+            'Meta': {'object_name': 'ProductAttributeValue'},
138
+            'attribute': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductAttribute']"}),
139
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
140
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attribute_values'", 'to': "orm['catalogue.Product']"}),
141
+            'value_boolean': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
142
+            'value_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
143
+            'value_entity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntity']", 'null': 'True', 'blank': 'True'}),
144
+            'value_float': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
145
+            'value_integer': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
146
+            'value_option': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOption']", 'null': 'True', 'blank': 'True'}),
147
+            'value_richtext': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
148
+            'value_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
149
+        },
150
+        'catalogue.productcategory': {
151
+            'Meta': {'ordering': "['-is_canonical']", 'object_name': 'ProductCategory'},
152
+            'category': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Category']"}),
153
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
154
+            'is_canonical': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
155
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
156
+        },
157
+        'catalogue.productclass': {
158
+            'Meta': {'ordering': "['name']", 'object_name': 'ProductClass'},
159
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
160
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
161
+            'options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
162
+            'requires_shipping': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
163
+            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
164
+            'track_stock': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
165
+        },
166
+        'catalogue.productrecommendation': {
167
+            'Meta': {'object_name': 'ProductRecommendation'},
168
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
169
+            'primary': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'primary_recommendations'", 'to': "orm['catalogue.Product']"}),
170
+            'ranking': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
171
+            'recommendation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
172
+        },
173
+        'contenttypes.contenttype': {
174
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
175
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
176
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
177
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
178
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
179
+        },
180
+        'customer.communicationeventtype': {
181
+            'Meta': {'object_name': 'CommunicationEventType'},
182
+            'category': ('django.db.models.fields.CharField', [], {'default': "u'Order related'", 'max_length': '255'}),
183
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128'}),
184
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
185
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
186
+            'email_body_html_template': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
187
+            'email_body_template': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
188
+            'email_subject_template': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
189
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
190
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
191
+            'sms_template': ('django.db.models.fields.CharField', [], {'max_length': '170', 'blank': 'True'})
192
+        },
193
+        'order.billingaddress': {
194
+            'Meta': {'object_name': 'BillingAddress'},
195
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
196
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
197
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
198
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
199
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
200
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
201
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
202
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
203
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
204
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
205
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
206
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
207
+        },
208
+        'order.communicationevent': {
209
+            'Meta': {'object_name': 'CommunicationEvent'},
210
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
211
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['customer.CommunicationEventType']"}),
212
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
213
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'communication_events'", 'to': "orm['order.Order']"})
214
+        },
215
+        'order.line': {
216
+            'Meta': {'object_name': 'Line'},
217
+            'est_dispatch_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
218
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
219
+            'line_price_before_discounts_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
220
+            'line_price_before_discounts_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
221
+            'line_price_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
222
+            'line_price_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
223
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lines'", 'to': "orm['order.Order']"}),
224
+            'partner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'order_lines'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['partner.Partner']"}),
225
+            'partner_line_notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
226
+            'partner_line_reference': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
227
+            'partner_name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
228
+            'partner_sku': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
229
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
230
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
231
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
232
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
233
+            'unit_cost_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
234
+            'unit_price_excl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
235
+            'unit_price_incl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
236
+            'unit_retail_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
237
+            'upc': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'})
238
+        },
239
+        'order.lineattribute': {
240
+            'Meta': {'object_name': 'LineAttribute'},
241
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
242
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attributes'", 'to': "orm['order.Line']"}),
243
+            'option': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_attributes'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['catalogue.Option']"}),
244
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
245
+            'value': ('django.db.models.fields.CharField', [], {'max_length': '255'})
246
+        },
247
+        'order.lineprice': {
248
+            'Meta': {'ordering': "('id',)", 'object_name': 'LinePrice'},
249
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
250
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'prices'", 'to': "orm['order.Line']"}),
251
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_prices'", 'to': "orm['order.Order']"}),
252
+            'price_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
253
+            'price_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
254
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
255
+            'shipping_excl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
256
+            'shipping_incl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'})
257
+        },
258
+        'order.order': {
259
+            'Meta': {'ordering': "['-date_placed']", 'object_name': 'Order'},
260
+            'basket_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
261
+            'billing_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.BillingAddress']", 'null': 'True', 'blank': 'True'}),
262
+            'date_placed': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}),
263
+            'guest_email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
264
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
265
+            'number': ('django.db.models.fields.CharField', [], {'max_length': '128', 'db_index': 'True'}),
266
+            'shipping_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.ShippingAddress']", 'null': 'True', 'blank': 'True'}),
267
+            'shipping_excl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
268
+            'shipping_incl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
269
+            'shipping_method': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
270
+            'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['sites.Site']"}),
271
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
272
+            'total_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
273
+            'total_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
274
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'orders'", 'null': 'True', 'to': "orm['auth.User']"})
275
+        },
276
+        'order.orderdiscount': {
277
+            'Meta': {'object_name': 'OrderDiscount'},
278
+            'amount': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
279
+            'category': ('django.db.models.fields.CharField', [], {'default': "'Basket'", 'max_length': '64'}),
280
+            'frequency': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
281
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
282
+            'offer_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
283
+            'offer_name': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'db_index': 'True'}),
284
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'discounts'", 'to': "orm['order.Order']"}),
285
+            'voucher_code': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'db_index': 'True'}),
286
+            'voucher_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'})
287
+        },
288
+        'order.ordernote': {
289
+            'Meta': {'object_name': 'OrderNote'},
290
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
291
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
292
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
293
+            'message': ('django.db.models.fields.TextField', [], {}),
294
+            'note_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
295
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notes'", 'to': "orm['order.Order']"}),
296
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'})
297
+        },
298
+        'order.paymentevent': {
299
+            'Meta': {'object_name': 'PaymentEvent'},
300
+            'amount': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
301
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
302
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.PaymentEventType']"}),
303
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
304
+            'lines': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['order.Line']", 'through': "orm['order.PaymentEventQuantity']", 'symmetrical': 'False'}),
305
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'payment_events'", 'to': "orm['order.Order']"})
306
+        },
307
+        'order.paymenteventquantity': {
308
+            'Meta': {'object_name': 'PaymentEventQuantity'},
309
+            'event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_quantities'", 'to': "orm['order.PaymentEvent']"}),
310
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
311
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.Line']"}),
312
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {})
313
+        },
314
+        'order.paymenteventtype': {
315
+            'Meta': {'ordering': "('sequence_number',)", 'object_name': 'PaymentEventType'},
316
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
317
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
318
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
319
+            'sequence_number': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
320
+        },
321
+        'order.shippingaddress': {
322
+            'Meta': {'object_name': 'ShippingAddress'},
323
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
324
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
325
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
326
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
327
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
328
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
329
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
330
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
331
+            'notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
332
+            'phone_number': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
333
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
334
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
335
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
336
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
337
+        },
338
+        'order.shippingevent': {
339
+            'Meta': {'ordering': "['-date']", 'object_name': 'ShippingEvent'},
340
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
341
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.ShippingEventType']"}),
342
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
343
+            'lines': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['order.Line']", 'through': "orm['order.ShippingEventQuantity']", 'symmetrical': 'False'}),
344
+            'notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
345
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'shipping_events'", 'to': "orm['order.Order']"})
346
+        },
347
+        'order.shippingeventquantity': {
348
+            'Meta': {'object_name': 'ShippingEventQuantity'},
349
+            'event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_quantities'", 'to': "orm['order.ShippingEvent']"}),
350
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
351
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.Line']"}),
352
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {})
353
+        },
354
+        'order.shippingeventtype': {
355
+            'Meta': {'ordering': "('sequence_number',)", 'object_name': 'ShippingEventType'},
356
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
357
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
358
+            'is_required': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
359
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
360
+            'sequence_number': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
361
+        },
362
+        'partner.partner': {
363
+            'Meta': {'object_name': 'Partner'},
364
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
365
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
366
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
367
+            'users': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'partners'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['auth.User']"})
368
+        },
369
+        'sites.site': {
370
+            'Meta': {'ordering': "('domain',)", 'object_name': 'Site', 'db_table': "'django_site'"},
371
+            'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
372
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
373
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
374
+        }
375
+    }
376
+
377
+    complete_apps = ['order']

+ 378
- 0
sites/demo/apps/order/migrations/0009_auto__add_field_orderdiscount_message.py View File

@@ -0,0 +1,378 @@
1
+# -*- coding: utf-8 -*-
2
+import datetime
3
+from south.db import db
4
+from south.v2 import SchemaMigration
5
+from django.db import models
6
+
7
+
8
+class Migration(SchemaMigration):
9
+
10
+    def forwards(self, orm):
11
+        # Adding field 'OrderDiscount.message'
12
+        db.add_column('order_orderdiscount', 'message',
13
+                      self.gf('django.db.models.fields.TextField')(null=True, blank=True),
14
+                      keep_default=False)
15
+
16
+
17
+    def backwards(self, orm):
18
+        # Deleting field 'OrderDiscount.message'
19
+        db.delete_column('order_orderdiscount', 'message')
20
+
21
+
22
+    models = {
23
+        'address.country': {
24
+            'Meta': {'ordering': "('-is_highlighted', 'name')", 'object_name': 'Country'},
25
+            'is_highlighted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
26
+            'is_shipping_country': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
27
+            'iso_3166_1_a2': ('django.db.models.fields.CharField', [], {'max_length': '2', 'primary_key': 'True'}),
28
+            'iso_3166_1_a3': ('django.db.models.fields.CharField', [], {'max_length': '3', 'null': 'True', 'db_index': 'True'}),
29
+            'iso_3166_1_numeric': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'db_index': 'True'}),
30
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
31
+            'printable_name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
32
+        },
33
+        'auth.group': {
34
+            'Meta': {'object_name': 'Group'},
35
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
36
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
37
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
38
+        },
39
+        'auth.permission': {
40
+            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
41
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
42
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
43
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
44
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
45
+        },
46
+        'auth.user': {
47
+            'Meta': {'object_name': 'User'},
48
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
49
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
50
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
51
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
52
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
53
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
54
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
55
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
56
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
57
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
58
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
59
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
60
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
61
+        },
62
+        'catalogue.attributeentity': {
63
+            'Meta': {'object_name': 'AttributeEntity'},
64
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
65
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
66
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'blank': 'True'}),
67
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'entities'", 'to': "orm['catalogue.AttributeEntityType']"})
68
+        },
69
+        'catalogue.attributeentitytype': {
70
+            'Meta': {'object_name': 'AttributeEntityType'},
71
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
72
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
73
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'blank': 'True'})
74
+        },
75
+        'catalogue.attributeoption': {
76
+            'Meta': {'object_name': 'AttributeOption'},
77
+            'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'options'", 'to': "orm['catalogue.AttributeOptionGroup']"}),
78
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
79
+            'option': ('django.db.models.fields.CharField', [], {'max_length': '255'})
80
+        },
81
+        'catalogue.attributeoptiongroup': {
82
+            'Meta': {'object_name': 'AttributeOptionGroup'},
83
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
84
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
85
+        },
86
+        'catalogue.category': {
87
+            'Meta': {'ordering': "['full_name']", 'object_name': 'Category'},
88
+            'depth': ('django.db.models.fields.PositiveIntegerField', [], {}),
89
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
90
+            'full_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
91
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
92
+            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
93
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
94
+            'numchild': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
95
+            'path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
96
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255'})
97
+        },
98
+        'catalogue.option': {
99
+            'Meta': {'object_name': 'Option'},
100
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
101
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
102
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
103
+            'type': ('django.db.models.fields.CharField', [], {'default': "'Required'", 'max_length': '128'})
104
+        },
105
+        'catalogue.product': {
106
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'Product'},
107
+            'attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.ProductAttribute']", 'through': "orm['catalogue.ProductAttributeValue']", 'symmetrical': 'False'}),
108
+            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Category']", 'through': "orm['catalogue.ProductCategory']", 'symmetrical': 'False'}),
109
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
110
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
111
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
112
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
113
+            'is_discountable': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
114
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'variants'", 'null': 'True', 'to': "orm['catalogue.Product']"}),
115
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductClass']", 'null': 'True'}),
116
+            'product_options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
117
+            'recommended_products': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Product']", 'symmetrical': 'False', 'through': "orm['catalogue.ProductRecommendation']", 'blank': 'True'}),
118
+            'related_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'relations'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
119
+            'score': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'db_index': 'True'}),
120
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255'}),
121
+            'status': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'null': 'True', 'blank': 'True'}),
122
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
123
+            'upc': ('django.db.models.fields.CharField', [], {'max_length': '64', 'unique': 'True', 'null': 'True', 'blank': 'True'})
124
+        },
125
+        'catalogue.productattribute': {
126
+            'Meta': {'ordering': "['code']", 'object_name': 'ProductAttribute'},
127
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128'}),
128
+            'entity_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntityType']", 'null': 'True', 'blank': 'True'}),
129
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
130
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
131
+            'option_group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOptionGroup']", 'null': 'True', 'blank': 'True'}),
132
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'attributes'", 'null': 'True', 'to': "orm['catalogue.ProductClass']"}),
133
+            'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
134
+            'type': ('django.db.models.fields.CharField', [], {'default': "'text'", 'max_length': '20'})
135
+        },
136
+        'catalogue.productattributevalue': {
137
+            'Meta': {'object_name': 'ProductAttributeValue'},
138
+            'attribute': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductAttribute']"}),
139
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
140
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attribute_values'", 'to': "orm['catalogue.Product']"}),
141
+            'value_boolean': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
142
+            'value_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
143
+            'value_entity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntity']", 'null': 'True', 'blank': 'True'}),
144
+            'value_float': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
145
+            'value_integer': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
146
+            'value_option': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOption']", 'null': 'True', 'blank': 'True'}),
147
+            'value_richtext': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
148
+            'value_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
149
+        },
150
+        'catalogue.productcategory': {
151
+            'Meta': {'ordering': "['-is_canonical']", 'object_name': 'ProductCategory'},
152
+            'category': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Category']"}),
153
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
154
+            'is_canonical': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
155
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
156
+        },
157
+        'catalogue.productclass': {
158
+            'Meta': {'ordering': "['name']", 'object_name': 'ProductClass'},
159
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
160
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
161
+            'options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
162
+            'requires_shipping': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
163
+            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
164
+            'track_stock': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
165
+        },
166
+        'catalogue.productrecommendation': {
167
+            'Meta': {'object_name': 'ProductRecommendation'},
168
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
169
+            'primary': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'primary_recommendations'", 'to': "orm['catalogue.Product']"}),
170
+            'ranking': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
171
+            'recommendation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
172
+        },
173
+        'contenttypes.contenttype': {
174
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
175
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
176
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
177
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
178
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
179
+        },
180
+        'customer.communicationeventtype': {
181
+            'Meta': {'object_name': 'CommunicationEventType'},
182
+            'category': ('django.db.models.fields.CharField', [], {'default': "u'Order related'", 'max_length': '255'}),
183
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128'}),
184
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
185
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
186
+            'email_body_html_template': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
187
+            'email_body_template': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
188
+            'email_subject_template': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
189
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
190
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
191
+            'sms_template': ('django.db.models.fields.CharField', [], {'max_length': '170', 'blank': 'True'})
192
+        },
193
+        'order.billingaddress': {
194
+            'Meta': {'object_name': 'BillingAddress'},
195
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
196
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
197
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
198
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
199
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
200
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
201
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
202
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
203
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
204
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
205
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
206
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
207
+        },
208
+        'order.communicationevent': {
209
+            'Meta': {'object_name': 'CommunicationEvent'},
210
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
211
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['customer.CommunicationEventType']"}),
212
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
213
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'communication_events'", 'to': "orm['order.Order']"})
214
+        },
215
+        'order.line': {
216
+            'Meta': {'object_name': 'Line'},
217
+            'est_dispatch_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
218
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
219
+            'line_price_before_discounts_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
220
+            'line_price_before_discounts_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
221
+            'line_price_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
222
+            'line_price_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
223
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lines'", 'to': "orm['order.Order']"}),
224
+            'partner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'order_lines'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['partner.Partner']"}),
225
+            'partner_line_notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
226
+            'partner_line_reference': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
227
+            'partner_name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
228
+            'partner_sku': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
229
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
230
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
231
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
232
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
233
+            'unit_cost_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
234
+            'unit_price_excl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
235
+            'unit_price_incl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
236
+            'unit_retail_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
237
+            'upc': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'})
238
+        },
239
+        'order.lineattribute': {
240
+            'Meta': {'object_name': 'LineAttribute'},
241
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
242
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attributes'", 'to': "orm['order.Line']"}),
243
+            'option': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_attributes'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['catalogue.Option']"}),
244
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
245
+            'value': ('django.db.models.fields.CharField', [], {'max_length': '255'})
246
+        },
247
+        'order.lineprice': {
248
+            'Meta': {'ordering': "('id',)", 'object_name': 'LinePrice'},
249
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
250
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'prices'", 'to': "orm['order.Line']"}),
251
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_prices'", 'to': "orm['order.Order']"}),
252
+            'price_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
253
+            'price_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
254
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
255
+            'shipping_excl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
256
+            'shipping_incl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'})
257
+        },
258
+        'order.order': {
259
+            'Meta': {'ordering': "['-date_placed']", 'object_name': 'Order'},
260
+            'basket_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
261
+            'billing_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.BillingAddress']", 'null': 'True', 'blank': 'True'}),
262
+            'date_placed': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}),
263
+            'guest_email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
264
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
265
+            'number': ('django.db.models.fields.CharField', [], {'max_length': '128', 'db_index': 'True'}),
266
+            'shipping_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.ShippingAddress']", 'null': 'True', 'blank': 'True'}),
267
+            'shipping_excl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
268
+            'shipping_incl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
269
+            'shipping_method': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
270
+            'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['sites.Site']"}),
271
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
272
+            'total_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
273
+            'total_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
274
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'orders'", 'null': 'True', 'to': "orm['auth.User']"})
275
+        },
276
+        'order.orderdiscount': {
277
+            'Meta': {'object_name': 'OrderDiscount'},
278
+            'amount': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
279
+            'category': ('django.db.models.fields.CharField', [], {'default': "'Basket'", 'max_length': '64'}),
280
+            'frequency': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
281
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
282
+            'message': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
283
+            'offer_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
284
+            'offer_name': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'db_index': 'True'}),
285
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'discounts'", 'to': "orm['order.Order']"}),
286
+            'voucher_code': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'db_index': 'True'}),
287
+            'voucher_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'})
288
+        },
289
+        'order.ordernote': {
290
+            'Meta': {'object_name': 'OrderNote'},
291
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
292
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
293
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
294
+            'message': ('django.db.models.fields.TextField', [], {}),
295
+            'note_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
296
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notes'", 'to': "orm['order.Order']"}),
297
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'})
298
+        },
299
+        'order.paymentevent': {
300
+            'Meta': {'object_name': 'PaymentEvent'},
301
+            'amount': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
302
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
303
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.PaymentEventType']"}),
304
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
305
+            'lines': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['order.Line']", 'through': "orm['order.PaymentEventQuantity']", 'symmetrical': 'False'}),
306
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'payment_events'", 'to': "orm['order.Order']"})
307
+        },
308
+        'order.paymenteventquantity': {
309
+            'Meta': {'object_name': 'PaymentEventQuantity'},
310
+            'event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_quantities'", 'to': "orm['order.PaymentEvent']"}),
311
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
312
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.Line']"}),
313
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {})
314
+        },
315
+        'order.paymenteventtype': {
316
+            'Meta': {'ordering': "('sequence_number',)", 'object_name': 'PaymentEventType'},
317
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
318
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
319
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
320
+            'sequence_number': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
321
+        },
322
+        'order.shippingaddress': {
323
+            'Meta': {'object_name': 'ShippingAddress'},
324
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
325
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
326
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
327
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
328
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
329
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
330
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
331
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
332
+            'notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
333
+            'phone_number': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
334
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
335
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
336
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
337
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
338
+        },
339
+        'order.shippingevent': {
340
+            'Meta': {'ordering': "['-date']", 'object_name': 'ShippingEvent'},
341
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
342
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.ShippingEventType']"}),
343
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
344
+            'lines': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['order.Line']", 'through': "orm['order.ShippingEventQuantity']", 'symmetrical': 'False'}),
345
+            'notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
346
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'shipping_events'", 'to': "orm['order.Order']"})
347
+        },
348
+        'order.shippingeventquantity': {
349
+            'Meta': {'object_name': 'ShippingEventQuantity'},
350
+            'event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_quantities'", 'to': "orm['order.ShippingEvent']"}),
351
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
352
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.Line']"}),
353
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {})
354
+        },
355
+        'order.shippingeventtype': {
356
+            'Meta': {'ordering': "('sequence_number',)", 'object_name': 'ShippingEventType'},
357
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
358
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
359
+            'is_required': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
360
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
361
+            'sequence_number': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
362
+        },
363
+        'partner.partner': {
364
+            'Meta': {'object_name': 'Partner'},
365
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
366
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
367
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
368
+            'users': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'partners'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['auth.User']"})
369
+        },
370
+        'sites.site': {
371
+            'Meta': {'ordering': "('domain',)", 'object_name': 'Site', 'db_table': "'django_site'"},
372
+            'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
373
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
374
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
375
+        }
376
+    }
377
+
378
+    complete_apps = ['order']

+ 383
- 0
sites/demo/apps/order/migrations/0010_auto__chg_field_billingaddress_postcode__chg_field_shippingaddress_pos.py View File

@@ -0,0 +1,383 @@
1
+# -*- coding: utf-8 -*-
2
+import datetime
3
+from south.db import db
4
+from south.v2 import SchemaMigration
5
+from django.db import models
6
+
7
+
8
+class Migration(SchemaMigration):
9
+
10
+    def forwards(self, orm):
11
+
12
+        # Changing field 'BillingAddress.postcode'
13
+        db.alter_column('order_billingaddress', 'postcode', self.gf('django.db.models.fields.CharField')(max_length=64, null=True))
14
+
15
+        # Changing field 'ShippingAddress.postcode'
16
+        db.alter_column('order_shippingaddress', 'postcode', self.gf('django.db.models.fields.CharField')(max_length=64, null=True))
17
+
18
+    def backwards(self, orm):
19
+
20
+        # Changing field 'BillingAddress.postcode'
21
+        db.alter_column('order_billingaddress', 'postcode', self.gf('django.db.models.fields.CharField')(default='', max_length=64))
22
+
23
+        # Changing field 'ShippingAddress.postcode'
24
+        db.alter_column('order_shippingaddress', 'postcode', self.gf('django.db.models.fields.CharField')(default='', max_length=64))
25
+
26
+    models = {
27
+        'address.country': {
28
+            'Meta': {'ordering': "('-is_highlighted', 'name')", 'object_name': 'Country'},
29
+            'is_highlighted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
30
+            'is_shipping_country': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
31
+            'iso_3166_1_a2': ('django.db.models.fields.CharField', [], {'max_length': '2', 'primary_key': 'True'}),
32
+            'iso_3166_1_a3': ('django.db.models.fields.CharField', [], {'max_length': '3', 'null': 'True', 'db_index': 'True'}),
33
+            'iso_3166_1_numeric': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'db_index': 'True'}),
34
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
35
+            'printable_name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
36
+        },
37
+        'auth.group': {
38
+            'Meta': {'object_name': 'Group'},
39
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
40
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
41
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
42
+        },
43
+        'auth.permission': {
44
+            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
45
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
46
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
47
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
48
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
49
+        },
50
+        'auth.user': {
51
+            'Meta': {'object_name': 'User'},
52
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
53
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
54
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
55
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
56
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
57
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
58
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
59
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
60
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
61
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
62
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
63
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
64
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
65
+        },
66
+        'catalogue.attributeentity': {
67
+            'Meta': {'object_name': 'AttributeEntity'},
68
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
69
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
70
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'blank': 'True'}),
71
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'entities'", 'to': "orm['catalogue.AttributeEntityType']"})
72
+        },
73
+        'catalogue.attributeentitytype': {
74
+            'Meta': {'object_name': 'AttributeEntityType'},
75
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
76
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
77
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'blank': 'True'})
78
+        },
79
+        'catalogue.attributeoption': {
80
+            'Meta': {'object_name': 'AttributeOption'},
81
+            'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'options'", 'to': "orm['catalogue.AttributeOptionGroup']"}),
82
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
83
+            'option': ('django.db.models.fields.CharField', [], {'max_length': '255'})
84
+        },
85
+        'catalogue.attributeoptiongroup': {
86
+            'Meta': {'object_name': 'AttributeOptionGroup'},
87
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
88
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
89
+        },
90
+        'catalogue.category': {
91
+            'Meta': {'ordering': "['full_name']", 'object_name': 'Category'},
92
+            'depth': ('django.db.models.fields.PositiveIntegerField', [], {}),
93
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
94
+            'full_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
95
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
96
+            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
97
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
98
+            'numchild': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
99
+            'path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
100
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255'})
101
+        },
102
+        'catalogue.option': {
103
+            'Meta': {'object_name': 'Option'},
104
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
105
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
106
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
107
+            'type': ('django.db.models.fields.CharField', [], {'default': "'Required'", 'max_length': '128'})
108
+        },
109
+        'catalogue.product': {
110
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'Product'},
111
+            'attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.ProductAttribute']", 'through': "orm['catalogue.ProductAttributeValue']", 'symmetrical': 'False'}),
112
+            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Category']", 'through': "orm['catalogue.ProductCategory']", 'symmetrical': 'False'}),
113
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
114
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
115
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
116
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
117
+            'is_discountable': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
118
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'variants'", 'null': 'True', 'to': "orm['catalogue.Product']"}),
119
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductClass']", 'null': 'True'}),
120
+            'product_options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
121
+            'rating': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
122
+            'recommended_products': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Product']", 'symmetrical': 'False', 'through': "orm['catalogue.ProductRecommendation']", 'blank': 'True'}),
123
+            'related_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'relations'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
124
+            'score': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'db_index': 'True'}),
125
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255'}),
126
+            'status': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'null': 'True', 'blank': 'True'}),
127
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
128
+            'upc': ('django.db.models.fields.CharField', [], {'max_length': '64', 'unique': 'True', 'null': 'True', 'blank': 'True'})
129
+        },
130
+        'catalogue.productattribute': {
131
+            'Meta': {'ordering': "['code']", 'object_name': 'ProductAttribute'},
132
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128'}),
133
+            'entity_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntityType']", 'null': 'True', 'blank': 'True'}),
134
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
135
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
136
+            'option_group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOptionGroup']", 'null': 'True', 'blank': 'True'}),
137
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'attributes'", 'null': 'True', 'to': "orm['catalogue.ProductClass']"}),
138
+            'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
139
+            'type': ('django.db.models.fields.CharField', [], {'default': "'text'", 'max_length': '20'})
140
+        },
141
+        'catalogue.productattributevalue': {
142
+            'Meta': {'object_name': 'ProductAttributeValue'},
143
+            'attribute': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductAttribute']"}),
144
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
145
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attribute_values'", 'to': "orm['catalogue.Product']"}),
146
+            'value_boolean': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
147
+            'value_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
148
+            'value_entity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntity']", 'null': 'True', 'blank': 'True'}),
149
+            'value_float': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
150
+            'value_integer': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
151
+            'value_option': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOption']", 'null': 'True', 'blank': 'True'}),
152
+            'value_richtext': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
153
+            'value_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
154
+        },
155
+        'catalogue.productcategory': {
156
+            'Meta': {'ordering': "['-is_canonical']", 'object_name': 'ProductCategory'},
157
+            'category': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Category']"}),
158
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
159
+            'is_canonical': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
160
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
161
+        },
162
+        'catalogue.productclass': {
163
+            'Meta': {'ordering': "['name']", 'object_name': 'ProductClass'},
164
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
165
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
166
+            'options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
167
+            'requires_shipping': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
168
+            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
169
+            'track_stock': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
170
+        },
171
+        'catalogue.productrecommendation': {
172
+            'Meta': {'object_name': 'ProductRecommendation'},
173
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
174
+            'primary': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'primary_recommendations'", 'to': "orm['catalogue.Product']"}),
175
+            'ranking': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
176
+            'recommendation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
177
+        },
178
+        'contenttypes.contenttype': {
179
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
180
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
181
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
182
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
183
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
184
+        },
185
+        'customer.communicationeventtype': {
186
+            'Meta': {'object_name': 'CommunicationEventType'},
187
+            'category': ('django.db.models.fields.CharField', [], {'default': "u'Order related'", 'max_length': '255'}),
188
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128'}),
189
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
190
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
191
+            'email_body_html_template': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
192
+            'email_body_template': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
193
+            'email_subject_template': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
194
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
195
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
196
+            'sms_template': ('django.db.models.fields.CharField', [], {'max_length': '170', 'blank': 'True'})
197
+        },
198
+        'order.billingaddress': {
199
+            'Meta': {'object_name': 'BillingAddress'},
200
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
201
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
202
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
203
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
204
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
205
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
206
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
207
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
208
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}),
209
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
210
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
211
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
212
+        },
213
+        'order.communicationevent': {
214
+            'Meta': {'object_name': 'CommunicationEvent'},
215
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
216
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['customer.CommunicationEventType']"}),
217
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
218
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'communication_events'", 'to': "orm['order.Order']"})
219
+        },
220
+        'order.line': {
221
+            'Meta': {'object_name': 'Line'},
222
+            'est_dispatch_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
223
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
224
+            'line_price_before_discounts_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
225
+            'line_price_before_discounts_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
226
+            'line_price_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
227
+            'line_price_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
228
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lines'", 'to': "orm['order.Order']"}),
229
+            'partner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'order_lines'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['partner.Partner']"}),
230
+            'partner_line_notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
231
+            'partner_line_reference': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
232
+            'partner_name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
233
+            'partner_sku': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
234
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
235
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
236
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
237
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
238
+            'unit_cost_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
239
+            'unit_price_excl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
240
+            'unit_price_incl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
241
+            'unit_retail_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
242
+            'upc': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'})
243
+        },
244
+        'order.lineattribute': {
245
+            'Meta': {'object_name': 'LineAttribute'},
246
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
247
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attributes'", 'to': "orm['order.Line']"}),
248
+            'option': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_attributes'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['catalogue.Option']"}),
249
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
250
+            'value': ('django.db.models.fields.CharField', [], {'max_length': '255'})
251
+        },
252
+        'order.lineprice': {
253
+            'Meta': {'ordering': "('id',)", 'object_name': 'LinePrice'},
254
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
255
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'prices'", 'to': "orm['order.Line']"}),
256
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_prices'", 'to': "orm['order.Order']"}),
257
+            'price_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
258
+            'price_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
259
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
260
+            'shipping_excl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
261
+            'shipping_incl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'})
262
+        },
263
+        'order.order': {
264
+            'Meta': {'ordering': "['-date_placed']", 'object_name': 'Order'},
265
+            'basket_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
266
+            'billing_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.BillingAddress']", 'null': 'True', 'blank': 'True'}),
267
+            'date_placed': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}),
268
+            'guest_email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
269
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
270
+            'number': ('django.db.models.fields.CharField', [], {'max_length': '128', 'db_index': 'True'}),
271
+            'shipping_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.ShippingAddress']", 'null': 'True', 'blank': 'True'}),
272
+            'shipping_excl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
273
+            'shipping_incl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
274
+            'shipping_method': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
275
+            'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['sites.Site']"}),
276
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
277
+            'total_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
278
+            'total_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
279
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'orders'", 'null': 'True', 'to': "orm['auth.User']"})
280
+        },
281
+        'order.orderdiscount': {
282
+            'Meta': {'object_name': 'OrderDiscount'},
283
+            'amount': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
284
+            'category': ('django.db.models.fields.CharField', [], {'default': "'Basket'", 'max_length': '64'}),
285
+            'frequency': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
286
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
287
+            'message': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
288
+            'offer_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
289
+            'offer_name': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'db_index': 'True'}),
290
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'discounts'", 'to': "orm['order.Order']"}),
291
+            'voucher_code': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'db_index': 'True'}),
292
+            'voucher_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'})
293
+        },
294
+        'order.ordernote': {
295
+            'Meta': {'object_name': 'OrderNote'},
296
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
297
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
298
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
299
+            'message': ('django.db.models.fields.TextField', [], {}),
300
+            'note_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
301
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notes'", 'to': "orm['order.Order']"}),
302
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'})
303
+        },
304
+        'order.paymentevent': {
305
+            'Meta': {'object_name': 'PaymentEvent'},
306
+            'amount': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
307
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
308
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.PaymentEventType']"}),
309
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
310
+            'lines': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['order.Line']", 'through': "orm['order.PaymentEventQuantity']", 'symmetrical': 'False'}),
311
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'payment_events'", 'to': "orm['order.Order']"})
312
+        },
313
+        'order.paymenteventquantity': {
314
+            'Meta': {'object_name': 'PaymentEventQuantity'},
315
+            'event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_quantities'", 'to': "orm['order.PaymentEvent']"}),
316
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
317
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'payment_event_quantities'", 'to': "orm['order.Line']"}),
318
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {})
319
+        },
320
+        'order.paymenteventtype': {
321
+            'Meta': {'ordering': "('sequence_number',)", 'object_name': 'PaymentEventType'},
322
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
323
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
324
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
325
+            'sequence_number': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
326
+        },
327
+        'order.shippingaddress': {
328
+            'Meta': {'object_name': 'ShippingAddress'},
329
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
330
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
331
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
332
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
333
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
334
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
335
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
336
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
337
+            'notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
338
+            'phone_number': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
339
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}),
340
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
341
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
342
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
343
+        },
344
+        'order.shippingevent': {
345
+            'Meta': {'ordering': "['-date']", 'object_name': 'ShippingEvent'},
346
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
347
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.ShippingEventType']"}),
348
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
349
+            'lines': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'shipping_events'", 'symmetrical': 'False', 'through': "orm['order.ShippingEventQuantity']", 'to': "orm['order.Line']"}),
350
+            'notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
351
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'shipping_events'", 'to': "orm['order.Order']"})
352
+        },
353
+        'order.shippingeventquantity': {
354
+            'Meta': {'object_name': 'ShippingEventQuantity'},
355
+            'event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_quantities'", 'to': "orm['order.ShippingEvent']"}),
356
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
357
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'shipping_event_quantities'", 'to': "orm['order.Line']"}),
358
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {})
359
+        },
360
+        'order.shippingeventtype': {
361
+            'Meta': {'ordering': "('sequence_number',)", 'object_name': 'ShippingEventType'},
362
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
363
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
364
+            'is_required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
365
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
366
+            'sequence_number': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
367
+        },
368
+        'partner.partner': {
369
+            'Meta': {'object_name': 'Partner'},
370
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
371
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
372
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
373
+            'users': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'partners'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['auth.User']"})
374
+        },
375
+        'sites.site': {
376
+            'Meta': {'ordering': "('domain',)", 'object_name': 'Site', 'db_table': "'django_site'"},
377
+            'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
378
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
379
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
380
+        }
381
+    }
382
+
383
+    complete_apps = ['order']

+ 377
- 0
sites/demo/apps/order/migrations/0011_auto__del_field_paymentevent_date__add_field_paymentevent_date_created.py View File

@@ -0,0 +1,377 @@
1
+# -*- coding: utf-8 -*-
2
+import datetime
3
+from south.db import db
4
+from south.v2 import SchemaMigration
5
+from django.db import models
6
+
7
+
8
+class Migration(SchemaMigration):
9
+
10
+    def forwards(self, orm):
11
+        db.rename_column('order_communicationevent', 'date', 'date_created')
12
+        db.rename_column('order_shippingevent', 'date', 'date_created')
13
+        db.rename_column('order_paymentevent', 'date', 'date_created')
14
+
15
+    def backwards(self, orm):
16
+        db.rename_column('order_communicationevent', 'date_created', 'date')
17
+        db.rename_column('order_shippingevent', 'date_created', 'date')
18
+        db.rename_column('order_paymentevent', 'date_created', 'date')
19
+
20
+    models = {
21
+        'address.country': {
22
+            'Meta': {'ordering': "('-is_highlighted', 'name')", 'object_name': 'Country'},
23
+            'is_highlighted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
24
+            'is_shipping_country': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
25
+            'iso_3166_1_a2': ('django.db.models.fields.CharField', [], {'max_length': '2', 'primary_key': 'True'}),
26
+            'iso_3166_1_a3': ('django.db.models.fields.CharField', [], {'max_length': '3', 'null': 'True', 'db_index': 'True'}),
27
+            'iso_3166_1_numeric': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'db_index': 'True'}),
28
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
29
+            'printable_name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
30
+        },
31
+        'auth.group': {
32
+            'Meta': {'object_name': 'Group'},
33
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
34
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
35
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
36
+        },
37
+        'auth.permission': {
38
+            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
39
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
40
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
41
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
42
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
43
+        },
44
+        'auth.user': {
45
+            'Meta': {'object_name': 'User'},
46
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
47
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
48
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
49
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
50
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
51
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
52
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
53
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
54
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
55
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
56
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
57
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
58
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
59
+        },
60
+        'catalogue.attributeentity': {
61
+            'Meta': {'object_name': 'AttributeEntity'},
62
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
63
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
64
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'blank': 'True'}),
65
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'entities'", 'to': "orm['catalogue.AttributeEntityType']"})
66
+        },
67
+        'catalogue.attributeentitytype': {
68
+            'Meta': {'object_name': 'AttributeEntityType'},
69
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
70
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
71
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'blank': 'True'})
72
+        },
73
+        'catalogue.attributeoption': {
74
+            'Meta': {'object_name': 'AttributeOption'},
75
+            'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'options'", 'to': "orm['catalogue.AttributeOptionGroup']"}),
76
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
77
+            'option': ('django.db.models.fields.CharField', [], {'max_length': '255'})
78
+        },
79
+        'catalogue.attributeoptiongroup': {
80
+            'Meta': {'object_name': 'AttributeOptionGroup'},
81
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
82
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
83
+        },
84
+        'catalogue.category': {
85
+            'Meta': {'ordering': "['full_name']", 'object_name': 'Category'},
86
+            'depth': ('django.db.models.fields.PositiveIntegerField', [], {}),
87
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
88
+            'full_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
89
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
90
+            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
91
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
92
+            'numchild': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
93
+            'path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
94
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255'})
95
+        },
96
+        'catalogue.option': {
97
+            'Meta': {'object_name': 'Option'},
98
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
99
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
100
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
101
+            'type': ('django.db.models.fields.CharField', [], {'default': "'Required'", 'max_length': '128'})
102
+        },
103
+        'catalogue.product': {
104
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'Product'},
105
+            'attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.ProductAttribute']", 'through': "orm['catalogue.ProductAttributeValue']", 'symmetrical': 'False'}),
106
+            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Category']", 'through': "orm['catalogue.ProductCategory']", 'symmetrical': 'False'}),
107
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
108
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
109
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
110
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
111
+            'is_discountable': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
112
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'variants'", 'null': 'True', 'to': "orm['catalogue.Product']"}),
113
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductClass']", 'null': 'True'}),
114
+            'product_options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
115
+            'rating': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
116
+            'recommended_products': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Product']", 'symmetrical': 'False', 'through': "orm['catalogue.ProductRecommendation']", 'blank': 'True'}),
117
+            'related_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'relations'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
118
+            'score': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'db_index': 'True'}),
119
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255'}),
120
+            'status': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'null': 'True', 'blank': 'True'}),
121
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
122
+            'upc': ('django.db.models.fields.CharField', [], {'max_length': '64', 'unique': 'True', 'null': 'True', 'blank': 'True'})
123
+        },
124
+        'catalogue.productattribute': {
125
+            'Meta': {'ordering': "['code']", 'object_name': 'ProductAttribute'},
126
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128'}),
127
+            'entity_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntityType']", 'null': 'True', 'blank': 'True'}),
128
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
129
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
130
+            'option_group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOptionGroup']", 'null': 'True', 'blank': 'True'}),
131
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'attributes'", 'null': 'True', 'to': "orm['catalogue.ProductClass']"}),
132
+            'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
133
+            'type': ('django.db.models.fields.CharField', [], {'default': "'text'", 'max_length': '20'})
134
+        },
135
+        'catalogue.productattributevalue': {
136
+            'Meta': {'object_name': 'ProductAttributeValue'},
137
+            'attribute': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductAttribute']"}),
138
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
139
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attribute_values'", 'to': "orm['catalogue.Product']"}),
140
+            'value_boolean': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
141
+            'value_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
142
+            'value_entity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntity']", 'null': 'True', 'blank': 'True'}),
143
+            'value_float': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
144
+            'value_integer': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
145
+            'value_option': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOption']", 'null': 'True', 'blank': 'True'}),
146
+            'value_richtext': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
147
+            'value_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
148
+        },
149
+        'catalogue.productcategory': {
150
+            'Meta': {'ordering': "['-is_canonical']", 'object_name': 'ProductCategory'},
151
+            'category': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Category']"}),
152
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
153
+            'is_canonical': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
154
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
155
+        },
156
+        'catalogue.productclass': {
157
+            'Meta': {'ordering': "['name']", 'object_name': 'ProductClass'},
158
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
159
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
160
+            'options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
161
+            'requires_shipping': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
162
+            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
163
+            'track_stock': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
164
+        },
165
+        'catalogue.productrecommendation': {
166
+            'Meta': {'object_name': 'ProductRecommendation'},
167
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
168
+            'primary': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'primary_recommendations'", 'to': "orm['catalogue.Product']"}),
169
+            'ranking': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
170
+            'recommendation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
171
+        },
172
+        'contenttypes.contenttype': {
173
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
174
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
175
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
176
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
177
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
178
+        },
179
+        'customer.communicationeventtype': {
180
+            'Meta': {'object_name': 'CommunicationEventType'},
181
+            'category': ('django.db.models.fields.CharField', [], {'default': "u'Order related'", 'max_length': '255'}),
182
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128'}),
183
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
184
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
185
+            'email_body_html_template': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
186
+            'email_body_template': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
187
+            'email_subject_template': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
188
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
189
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
190
+            'sms_template': ('django.db.models.fields.CharField', [], {'max_length': '170', 'blank': 'True'})
191
+        },
192
+        'order.billingaddress': {
193
+            'Meta': {'object_name': 'BillingAddress'},
194
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
195
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
196
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
197
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
198
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
199
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
200
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
201
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
202
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}),
203
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
204
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
205
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
206
+        },
207
+        'order.communicationevent': {
208
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'CommunicationEvent'},
209
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
210
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['customer.CommunicationEventType']"}),
211
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
212
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'communication_events'", 'to': "orm['order.Order']"})
213
+        },
214
+        'order.line': {
215
+            'Meta': {'object_name': 'Line'},
216
+            'est_dispatch_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
217
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
218
+            'line_price_before_discounts_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
219
+            'line_price_before_discounts_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
220
+            'line_price_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
221
+            'line_price_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
222
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lines'", 'to': "orm['order.Order']"}),
223
+            'partner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'order_lines'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['partner.Partner']"}),
224
+            'partner_line_notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
225
+            'partner_line_reference': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
226
+            'partner_name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
227
+            'partner_sku': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
228
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
229
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
230
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
231
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
232
+            'unit_cost_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
233
+            'unit_price_excl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
234
+            'unit_price_incl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
235
+            'unit_retail_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
236
+            'upc': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'})
237
+        },
238
+        'order.lineattribute': {
239
+            'Meta': {'object_name': 'LineAttribute'},
240
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
241
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attributes'", 'to': "orm['order.Line']"}),
242
+            'option': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_attributes'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['catalogue.Option']"}),
243
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
244
+            'value': ('django.db.models.fields.CharField', [], {'max_length': '255'})
245
+        },
246
+        'order.lineprice': {
247
+            'Meta': {'ordering': "('id',)", 'object_name': 'LinePrice'},
248
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
249
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'prices'", 'to': "orm['order.Line']"}),
250
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_prices'", 'to': "orm['order.Order']"}),
251
+            'price_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
252
+            'price_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
253
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
254
+            'shipping_excl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
255
+            'shipping_incl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'})
256
+        },
257
+        'order.order': {
258
+            'Meta': {'ordering': "['-date_placed']", 'object_name': 'Order'},
259
+            'basket_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
260
+            'billing_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.BillingAddress']", 'null': 'True', 'blank': 'True'}),
261
+            'date_placed': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}),
262
+            'guest_email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
263
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
264
+            'number': ('django.db.models.fields.CharField', [], {'max_length': '128', 'db_index': 'True'}),
265
+            'shipping_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.ShippingAddress']", 'null': 'True', 'blank': 'True'}),
266
+            'shipping_excl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
267
+            'shipping_incl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
268
+            'shipping_method': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
269
+            'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['sites.Site']"}),
270
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
271
+            'total_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
272
+            'total_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
273
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'orders'", 'null': 'True', 'to': "orm['auth.User']"})
274
+        },
275
+        'order.orderdiscount': {
276
+            'Meta': {'object_name': 'OrderDiscount'},
277
+            'amount': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
278
+            'category': ('django.db.models.fields.CharField', [], {'default': "'Basket'", 'max_length': '64'}),
279
+            'frequency': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
280
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
281
+            'message': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
282
+            'offer_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
283
+            'offer_name': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'db_index': 'True'}),
284
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'discounts'", 'to': "orm['order.Order']"}),
285
+            'voucher_code': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'db_index': 'True'}),
286
+            'voucher_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'})
287
+        },
288
+        'order.ordernote': {
289
+            'Meta': {'object_name': 'OrderNote'},
290
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
291
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
292
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
293
+            'message': ('django.db.models.fields.TextField', [], {}),
294
+            'note_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
295
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notes'", 'to': "orm['order.Order']"}),
296
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'})
297
+        },
298
+        'order.paymentevent': {
299
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'PaymentEvent'},
300
+            'amount': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
301
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
302
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.PaymentEventType']"}),
303
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
304
+            'lines': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['order.Line']", 'through': "orm['order.PaymentEventQuantity']", 'symmetrical': 'False'}),
305
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'payment_events'", 'to': "orm['order.Order']"})
306
+        },
307
+        'order.paymenteventquantity': {
308
+            'Meta': {'object_name': 'PaymentEventQuantity'},
309
+            'event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_quantities'", 'to': "orm['order.PaymentEvent']"}),
310
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
311
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'payment_event_quantities'", 'to': "orm['order.Line']"}),
312
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {})
313
+        },
314
+        'order.paymenteventtype': {
315
+            'Meta': {'ordering': "('sequence_number',)", 'object_name': 'PaymentEventType'},
316
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
317
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
318
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
319
+            'sequence_number': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
320
+        },
321
+        'order.shippingaddress': {
322
+            'Meta': {'object_name': 'ShippingAddress'},
323
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
324
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
325
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
326
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
327
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
328
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
329
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
330
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
331
+            'notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
332
+            'phone_number': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
333
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}),
334
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
335
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
336
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
337
+        },
338
+        'order.shippingevent': {
339
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'ShippingEvent'},
340
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
341
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.ShippingEventType']"}),
342
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
343
+            'lines': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'shipping_events'", 'symmetrical': 'False', 'through': "orm['order.ShippingEventQuantity']", 'to': "orm['order.Line']"}),
344
+            'notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
345
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'shipping_events'", 'to': "orm['order.Order']"})
346
+        },
347
+        'order.shippingeventquantity': {
348
+            'Meta': {'object_name': 'ShippingEventQuantity'},
349
+            'event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_quantities'", 'to': "orm['order.ShippingEvent']"}),
350
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
351
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'shipping_event_quantities'", 'to': "orm['order.Line']"}),
352
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {})
353
+        },
354
+        'order.shippingeventtype': {
355
+            'Meta': {'ordering': "('sequence_number',)", 'object_name': 'ShippingEventType'},
356
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
357
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
358
+            'is_required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
359
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
360
+            'sequence_number': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
361
+        },
362
+        'partner.partner': {
363
+            'Meta': {'object_name': 'Partner'},
364
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
365
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
366
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
367
+            'users': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'partners'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['auth.User']"})
368
+        },
369
+        'sites.site': {
370
+            'Meta': {'ordering': "('domain',)", 'object_name': 'Site', 'db_table': "'django_site'"},
371
+            'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
372
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
373
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
374
+        }
375
+    }
376
+
377
+    complete_apps = ['order']

+ 380
- 0
sites/demo/apps/order/migrations/0012_auto__add_field_paymentevent_reference.py View File

@@ -0,0 +1,380 @@
1
+# -*- coding: utf-8 -*-
2
+import datetime
3
+from south.db import db
4
+from south.v2 import SchemaMigration
5
+from django.db import models
6
+
7
+
8
+class Migration(SchemaMigration):
9
+
10
+    def forwards(self, orm):
11
+        # Adding field 'PaymentEvent.reference'
12
+        db.add_column('order_paymentevent', 'reference',
13
+                      self.gf('django.db.models.fields.CharField')(default='', max_length=128, blank=True),
14
+                      keep_default=False)
15
+
16
+
17
+    def backwards(self, orm):
18
+        # Deleting field 'PaymentEvent.reference'
19
+        db.delete_column('order_paymentevent', 'reference')
20
+
21
+
22
+    models = {
23
+        'address.country': {
24
+            'Meta': {'ordering': "('-is_highlighted', 'name')", 'object_name': 'Country'},
25
+            'is_highlighted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
26
+            'is_shipping_country': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
27
+            'iso_3166_1_a2': ('django.db.models.fields.CharField', [], {'max_length': '2', 'primary_key': 'True'}),
28
+            'iso_3166_1_a3': ('django.db.models.fields.CharField', [], {'max_length': '3', 'null': 'True', 'db_index': 'True'}),
29
+            'iso_3166_1_numeric': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'db_index': 'True'}),
30
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
31
+            'printable_name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
32
+        },
33
+        'auth.group': {
34
+            'Meta': {'object_name': 'Group'},
35
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
36
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
37
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
38
+        },
39
+        'auth.permission': {
40
+            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
41
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
42
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
43
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
44
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
45
+        },
46
+        'auth.user': {
47
+            'Meta': {'object_name': 'User'},
48
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
49
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
50
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
51
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
52
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
53
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
54
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
55
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
56
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
57
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
58
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
59
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
60
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
61
+        },
62
+        'catalogue.attributeentity': {
63
+            'Meta': {'object_name': 'AttributeEntity'},
64
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
65
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
66
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'blank': 'True'}),
67
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'entities'", 'to': "orm['catalogue.AttributeEntityType']"})
68
+        },
69
+        'catalogue.attributeentitytype': {
70
+            'Meta': {'object_name': 'AttributeEntityType'},
71
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
72
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
73
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'blank': 'True'})
74
+        },
75
+        'catalogue.attributeoption': {
76
+            'Meta': {'object_name': 'AttributeOption'},
77
+            'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'options'", 'to': "orm['catalogue.AttributeOptionGroup']"}),
78
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
79
+            'option': ('django.db.models.fields.CharField', [], {'max_length': '255'})
80
+        },
81
+        'catalogue.attributeoptiongroup': {
82
+            'Meta': {'object_name': 'AttributeOptionGroup'},
83
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
84
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
85
+        },
86
+        'catalogue.category': {
87
+            'Meta': {'ordering': "['full_name']", 'object_name': 'Category'},
88
+            'depth': ('django.db.models.fields.PositiveIntegerField', [], {}),
89
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
90
+            'full_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
91
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
92
+            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
93
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
94
+            'numchild': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
95
+            'path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
96
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255'})
97
+        },
98
+        'catalogue.option': {
99
+            'Meta': {'object_name': 'Option'},
100
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
101
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
102
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
103
+            'type': ('django.db.models.fields.CharField', [], {'default': "'Required'", 'max_length': '128'})
104
+        },
105
+        'catalogue.product': {
106
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'Product'},
107
+            'attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.ProductAttribute']", 'through': "orm['catalogue.ProductAttributeValue']", 'symmetrical': 'False'}),
108
+            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Category']", 'through': "orm['catalogue.ProductCategory']", 'symmetrical': 'False'}),
109
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
110
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
111
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
112
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
113
+            'is_discountable': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
114
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'variants'", 'null': 'True', 'to': "orm['catalogue.Product']"}),
115
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductClass']", 'null': 'True'}),
116
+            'product_options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
117
+            'rating': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
118
+            'recommended_products': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Product']", 'symmetrical': 'False', 'through': "orm['catalogue.ProductRecommendation']", 'blank': 'True'}),
119
+            'related_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'relations'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
120
+            'score': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'db_index': 'True'}),
121
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255'}),
122
+            'status': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'null': 'True', 'blank': 'True'}),
123
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
124
+            'upc': ('django.db.models.fields.CharField', [], {'max_length': '64', 'unique': 'True', 'null': 'True', 'blank': 'True'})
125
+        },
126
+        'catalogue.productattribute': {
127
+            'Meta': {'ordering': "['code']", 'object_name': 'ProductAttribute'},
128
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128'}),
129
+            'entity_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntityType']", 'null': 'True', 'blank': 'True'}),
130
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
131
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
132
+            'option_group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOptionGroup']", 'null': 'True', 'blank': 'True'}),
133
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'attributes'", 'null': 'True', 'to': "orm['catalogue.ProductClass']"}),
134
+            'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
135
+            'type': ('django.db.models.fields.CharField', [], {'default': "'text'", 'max_length': '20'})
136
+        },
137
+        'catalogue.productattributevalue': {
138
+            'Meta': {'object_name': 'ProductAttributeValue'},
139
+            'attribute': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductAttribute']"}),
140
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
141
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attribute_values'", 'to': "orm['catalogue.Product']"}),
142
+            'value_boolean': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
143
+            'value_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
144
+            'value_entity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntity']", 'null': 'True', 'blank': 'True'}),
145
+            'value_float': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
146
+            'value_integer': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
147
+            'value_option': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOption']", 'null': 'True', 'blank': 'True'}),
148
+            'value_richtext': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
149
+            'value_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
150
+        },
151
+        'catalogue.productcategory': {
152
+            'Meta': {'ordering': "['-is_canonical']", 'object_name': 'ProductCategory'},
153
+            'category': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Category']"}),
154
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
155
+            'is_canonical': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
156
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
157
+        },
158
+        'catalogue.productclass': {
159
+            'Meta': {'ordering': "['name']", 'object_name': 'ProductClass'},
160
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
161
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
162
+            'options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
163
+            'requires_shipping': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
164
+            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
165
+            'track_stock': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
166
+        },
167
+        'catalogue.productrecommendation': {
168
+            'Meta': {'object_name': 'ProductRecommendation'},
169
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
170
+            'primary': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'primary_recommendations'", 'to': "orm['catalogue.Product']"}),
171
+            'ranking': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
172
+            'recommendation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
173
+        },
174
+        'contenttypes.contenttype': {
175
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
176
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
177
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
178
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
179
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
180
+        },
181
+        'customer.communicationeventtype': {
182
+            'Meta': {'object_name': 'CommunicationEventType'},
183
+            'category': ('django.db.models.fields.CharField', [], {'default': "u'Order related'", 'max_length': '255'}),
184
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128'}),
185
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
186
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
187
+            'email_body_html_template': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
188
+            'email_body_template': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
189
+            'email_subject_template': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
190
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
191
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
192
+            'sms_template': ('django.db.models.fields.CharField', [], {'max_length': '170', 'blank': 'True'})
193
+        },
194
+        'order.billingaddress': {
195
+            'Meta': {'object_name': 'BillingAddress'},
196
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
197
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
198
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
199
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
200
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
201
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
202
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
203
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
204
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}),
205
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
206
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
207
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
208
+        },
209
+        'order.communicationevent': {
210
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'CommunicationEvent'},
211
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
212
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['customer.CommunicationEventType']"}),
213
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
214
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'communication_events'", 'to': "orm['order.Order']"})
215
+        },
216
+        'order.line': {
217
+            'Meta': {'object_name': 'Line'},
218
+            'est_dispatch_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
219
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
220
+            'line_price_before_discounts_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
221
+            'line_price_before_discounts_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
222
+            'line_price_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
223
+            'line_price_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
224
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lines'", 'to': "orm['order.Order']"}),
225
+            'partner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'order_lines'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['partner.Partner']"}),
226
+            'partner_line_notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
227
+            'partner_line_reference': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
228
+            'partner_name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
229
+            'partner_sku': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
230
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
231
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
232
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
233
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
234
+            'unit_cost_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
235
+            'unit_price_excl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
236
+            'unit_price_incl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
237
+            'unit_retail_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
238
+            'upc': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'})
239
+        },
240
+        'order.lineattribute': {
241
+            'Meta': {'object_name': 'LineAttribute'},
242
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
243
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attributes'", 'to': "orm['order.Line']"}),
244
+            'option': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_attributes'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['catalogue.Option']"}),
245
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
246
+            'value': ('django.db.models.fields.CharField', [], {'max_length': '255'})
247
+        },
248
+        'order.lineprice': {
249
+            'Meta': {'ordering': "('id',)", 'object_name': 'LinePrice'},
250
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
251
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'prices'", 'to': "orm['order.Line']"}),
252
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_prices'", 'to': "orm['order.Order']"}),
253
+            'price_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
254
+            'price_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
255
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
256
+            'shipping_excl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
257
+            'shipping_incl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'})
258
+        },
259
+        'order.order': {
260
+            'Meta': {'ordering': "['-date_placed']", 'object_name': 'Order'},
261
+            'basket_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
262
+            'billing_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.BillingAddress']", 'null': 'True', 'blank': 'True'}),
263
+            'date_placed': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}),
264
+            'guest_email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
265
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
266
+            'number': ('django.db.models.fields.CharField', [], {'max_length': '128', 'db_index': 'True'}),
267
+            'shipping_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.ShippingAddress']", 'null': 'True', 'blank': 'True'}),
268
+            'shipping_excl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
269
+            'shipping_incl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
270
+            'shipping_method': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
271
+            'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['sites.Site']"}),
272
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
273
+            'total_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
274
+            'total_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
275
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'orders'", 'null': 'True', 'to': "orm['auth.User']"})
276
+        },
277
+        'order.orderdiscount': {
278
+            'Meta': {'object_name': 'OrderDiscount'},
279
+            'amount': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
280
+            'category': ('django.db.models.fields.CharField', [], {'default': "'Basket'", 'max_length': '64'}),
281
+            'frequency': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
282
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
283
+            'message': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
284
+            'offer_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
285
+            'offer_name': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'db_index': 'True'}),
286
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'discounts'", 'to': "orm['order.Order']"}),
287
+            'voucher_code': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'db_index': 'True'}),
288
+            'voucher_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'})
289
+        },
290
+        'order.ordernote': {
291
+            'Meta': {'object_name': 'OrderNote'},
292
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
293
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
294
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
295
+            'message': ('django.db.models.fields.TextField', [], {}),
296
+            'note_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
297
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notes'", 'to': "orm['order.Order']"}),
298
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'})
299
+        },
300
+        'order.paymentevent': {
301
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'PaymentEvent'},
302
+            'amount': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
303
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
304
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.PaymentEventType']"}),
305
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
306
+            'lines': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['order.Line']", 'through': "orm['order.PaymentEventQuantity']", 'symmetrical': 'False'}),
307
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'payment_events'", 'to': "orm['order.Order']"}),
308
+            'reference': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'})
309
+        },
310
+        'order.paymenteventquantity': {
311
+            'Meta': {'object_name': 'PaymentEventQuantity'},
312
+            'event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_quantities'", 'to': "orm['order.PaymentEvent']"}),
313
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
314
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'payment_event_quantities'", 'to': "orm['order.Line']"}),
315
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {})
316
+        },
317
+        'order.paymenteventtype': {
318
+            'Meta': {'ordering': "('sequence_number',)", 'object_name': 'PaymentEventType'},
319
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
320
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
321
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
322
+            'sequence_number': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
323
+        },
324
+        'order.shippingaddress': {
325
+            'Meta': {'object_name': 'ShippingAddress'},
326
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
327
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
328
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
329
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
330
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
331
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
332
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
333
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
334
+            'notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
335
+            'phone_number': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
336
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}),
337
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
338
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
339
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
340
+        },
341
+        'order.shippingevent': {
342
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'ShippingEvent'},
343
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
344
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.ShippingEventType']"}),
345
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
346
+            'lines': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'shipping_events'", 'symmetrical': 'False', 'through': "orm['order.ShippingEventQuantity']", 'to': "orm['order.Line']"}),
347
+            'notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
348
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'shipping_events'", 'to': "orm['order.Order']"})
349
+        },
350
+        'order.shippingeventquantity': {
351
+            'Meta': {'object_name': 'ShippingEventQuantity'},
352
+            'event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_quantities'", 'to': "orm['order.ShippingEvent']"}),
353
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
354
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'shipping_event_quantities'", 'to': "orm['order.Line']"}),
355
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {})
356
+        },
357
+        'order.shippingeventtype': {
358
+            'Meta': {'ordering': "('sequence_number',)", 'object_name': 'ShippingEventType'},
359
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
360
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
361
+            'is_required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
362
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
363
+            'sequence_number': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
364
+        },
365
+        'partner.partner': {
366
+            'Meta': {'object_name': 'Partner'},
367
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
368
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
369
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
370
+            'users': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'partners'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['auth.User']"})
371
+        },
372
+        'sites.site': {
373
+            'Meta': {'ordering': "('domain',)", 'object_name': 'Site', 'db_table': "'django_site'"},
374
+            'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
375
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
376
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
377
+        }
378
+    }
379
+
380
+    complete_apps = ['order']

+ 381
- 0
sites/demo/apps/order/migrations/0013_auto__add_field_paymentevent_shipping_event.py View File

@@ -0,0 +1,381 @@
1
+# -*- coding: utf-8 -*-
2
+import datetime
3
+from south.db import db
4
+from south.v2 import SchemaMigration
5
+from django.db import models
6
+
7
+
8
+class Migration(SchemaMigration):
9
+
10
+    def forwards(self, orm):
11
+        # Adding field 'PaymentEvent.shipping_event'
12
+        db.add_column('order_paymentevent', 'shipping_event',
13
+                      self.gf('django.db.models.fields.related.ForeignKey')(related_name='payment_events', null=True, to=orm['order.ShippingEvent']),
14
+                      keep_default=False)
15
+
16
+
17
+    def backwards(self, orm):
18
+        # Deleting field 'PaymentEvent.shipping_event'
19
+        db.delete_column('order_paymentevent', 'shipping_event_id')
20
+
21
+
22
+    models = {
23
+        'address.country': {
24
+            'Meta': {'ordering': "('-is_highlighted', 'name')", 'object_name': 'Country'},
25
+            'is_highlighted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
26
+            'is_shipping_country': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
27
+            'iso_3166_1_a2': ('django.db.models.fields.CharField', [], {'max_length': '2', 'primary_key': 'True'}),
28
+            'iso_3166_1_a3': ('django.db.models.fields.CharField', [], {'max_length': '3', 'null': 'True', 'db_index': 'True'}),
29
+            'iso_3166_1_numeric': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'db_index': 'True'}),
30
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
31
+            'printable_name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
32
+        },
33
+        'auth.group': {
34
+            'Meta': {'object_name': 'Group'},
35
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
36
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
37
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
38
+        },
39
+        'auth.permission': {
40
+            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
41
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
42
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
43
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
44
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
45
+        },
46
+        'auth.user': {
47
+            'Meta': {'object_name': 'User'},
48
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
49
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
50
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
51
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
52
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
53
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
54
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
55
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
56
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
57
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
58
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
59
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
60
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
61
+        },
62
+        'catalogue.attributeentity': {
63
+            'Meta': {'object_name': 'AttributeEntity'},
64
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
65
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
66
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'blank': 'True'}),
67
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'entities'", 'to': "orm['catalogue.AttributeEntityType']"})
68
+        },
69
+        'catalogue.attributeentitytype': {
70
+            'Meta': {'object_name': 'AttributeEntityType'},
71
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
72
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
73
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'blank': 'True'})
74
+        },
75
+        'catalogue.attributeoption': {
76
+            'Meta': {'object_name': 'AttributeOption'},
77
+            'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'options'", 'to': "orm['catalogue.AttributeOptionGroup']"}),
78
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
79
+            'option': ('django.db.models.fields.CharField', [], {'max_length': '255'})
80
+        },
81
+        'catalogue.attributeoptiongroup': {
82
+            'Meta': {'object_name': 'AttributeOptionGroup'},
83
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
84
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
85
+        },
86
+        'catalogue.category': {
87
+            'Meta': {'ordering': "['full_name']", 'object_name': 'Category'},
88
+            'depth': ('django.db.models.fields.PositiveIntegerField', [], {}),
89
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
90
+            'full_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
91
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
92
+            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
93
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
94
+            'numchild': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
95
+            'path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
96
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255'})
97
+        },
98
+        'catalogue.option': {
99
+            'Meta': {'object_name': 'Option'},
100
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
101
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
102
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
103
+            'type': ('django.db.models.fields.CharField', [], {'default': "'Required'", 'max_length': '128'})
104
+        },
105
+        'catalogue.product': {
106
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'Product'},
107
+            'attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.ProductAttribute']", 'through': "orm['catalogue.ProductAttributeValue']", 'symmetrical': 'False'}),
108
+            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Category']", 'through': "orm['catalogue.ProductCategory']", 'symmetrical': 'False'}),
109
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
110
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
111
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
112
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
113
+            'is_discountable': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
114
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'variants'", 'null': 'True', 'to': "orm['catalogue.Product']"}),
115
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductClass']", 'null': 'True'}),
116
+            'product_options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
117
+            'rating': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
118
+            'recommended_products': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Product']", 'symmetrical': 'False', 'through': "orm['catalogue.ProductRecommendation']", 'blank': 'True'}),
119
+            'related_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'relations'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
120
+            'score': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'db_index': 'True'}),
121
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255'}),
122
+            'status': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'null': 'True', 'blank': 'True'}),
123
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
124
+            'upc': ('django.db.models.fields.CharField', [], {'max_length': '64', 'unique': 'True', 'null': 'True', 'blank': 'True'})
125
+        },
126
+        'catalogue.productattribute': {
127
+            'Meta': {'ordering': "['code']", 'object_name': 'ProductAttribute'},
128
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128'}),
129
+            'entity_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntityType']", 'null': 'True', 'blank': 'True'}),
130
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
131
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
132
+            'option_group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOptionGroup']", 'null': 'True', 'blank': 'True'}),
133
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'attributes'", 'null': 'True', 'to': "orm['catalogue.ProductClass']"}),
134
+            'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
135
+            'type': ('django.db.models.fields.CharField', [], {'default': "'text'", 'max_length': '20'})
136
+        },
137
+        'catalogue.productattributevalue': {
138
+            'Meta': {'object_name': 'ProductAttributeValue'},
139
+            'attribute': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductAttribute']"}),
140
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
141
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attribute_values'", 'to': "orm['catalogue.Product']"}),
142
+            'value_boolean': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
143
+            'value_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
144
+            'value_entity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntity']", 'null': 'True', 'blank': 'True'}),
145
+            'value_float': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
146
+            'value_integer': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
147
+            'value_option': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOption']", 'null': 'True', 'blank': 'True'}),
148
+            'value_richtext': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
149
+            'value_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
150
+        },
151
+        'catalogue.productcategory': {
152
+            'Meta': {'ordering': "['-is_canonical']", 'object_name': 'ProductCategory'},
153
+            'category': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Category']"}),
154
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
155
+            'is_canonical': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
156
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
157
+        },
158
+        'catalogue.productclass': {
159
+            'Meta': {'ordering': "['name']", 'object_name': 'ProductClass'},
160
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
161
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
162
+            'options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
163
+            'requires_shipping': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
164
+            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
165
+            'track_stock': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
166
+        },
167
+        'catalogue.productrecommendation': {
168
+            'Meta': {'object_name': 'ProductRecommendation'},
169
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
170
+            'primary': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'primary_recommendations'", 'to': "orm['catalogue.Product']"}),
171
+            'ranking': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
172
+            'recommendation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
173
+        },
174
+        'contenttypes.contenttype': {
175
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
176
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
177
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
178
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
179
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
180
+        },
181
+        'customer.communicationeventtype': {
182
+            'Meta': {'object_name': 'CommunicationEventType'},
183
+            'category': ('django.db.models.fields.CharField', [], {'default': "u'Order related'", 'max_length': '255'}),
184
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128'}),
185
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
186
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
187
+            'email_body_html_template': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
188
+            'email_body_template': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
189
+            'email_subject_template': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
190
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
191
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
192
+            'sms_template': ('django.db.models.fields.CharField', [], {'max_length': '170', 'blank': 'True'})
193
+        },
194
+        'order.billingaddress': {
195
+            'Meta': {'object_name': 'BillingAddress'},
196
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
197
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
198
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
199
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
200
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
201
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
202
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
203
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
204
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}),
205
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
206
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
207
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
208
+        },
209
+        'order.communicationevent': {
210
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'CommunicationEvent'},
211
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
212
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['customer.CommunicationEventType']"}),
213
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
214
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'communication_events'", 'to': "orm['order.Order']"})
215
+        },
216
+        'order.line': {
217
+            'Meta': {'object_name': 'Line'},
218
+            'est_dispatch_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
219
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
220
+            'line_price_before_discounts_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
221
+            'line_price_before_discounts_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
222
+            'line_price_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
223
+            'line_price_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
224
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lines'", 'to': "orm['order.Order']"}),
225
+            'partner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'order_lines'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['partner.Partner']"}),
226
+            'partner_line_notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
227
+            'partner_line_reference': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
228
+            'partner_name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
229
+            'partner_sku': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
230
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
231
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
232
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
233
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
234
+            'unit_cost_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
235
+            'unit_price_excl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
236
+            'unit_price_incl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
237
+            'unit_retail_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
238
+            'upc': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'})
239
+        },
240
+        'order.lineattribute': {
241
+            'Meta': {'object_name': 'LineAttribute'},
242
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
243
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attributes'", 'to': "orm['order.Line']"}),
244
+            'option': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_attributes'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['catalogue.Option']"}),
245
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
246
+            'value': ('django.db.models.fields.CharField', [], {'max_length': '255'})
247
+        },
248
+        'order.lineprice': {
249
+            'Meta': {'ordering': "('id',)", 'object_name': 'LinePrice'},
250
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
251
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'prices'", 'to': "orm['order.Line']"}),
252
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_prices'", 'to': "orm['order.Order']"}),
253
+            'price_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
254
+            'price_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
255
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
256
+            'shipping_excl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
257
+            'shipping_incl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'})
258
+        },
259
+        'order.order': {
260
+            'Meta': {'ordering': "['-date_placed']", 'object_name': 'Order'},
261
+            'basket_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
262
+            'billing_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.BillingAddress']", 'null': 'True', 'blank': 'True'}),
263
+            'date_placed': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}),
264
+            'guest_email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
265
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
266
+            'number': ('django.db.models.fields.CharField', [], {'max_length': '128', 'db_index': 'True'}),
267
+            'shipping_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.ShippingAddress']", 'null': 'True', 'blank': 'True'}),
268
+            'shipping_excl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
269
+            'shipping_incl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
270
+            'shipping_method': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
271
+            'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['sites.Site']"}),
272
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
273
+            'total_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
274
+            'total_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
275
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'orders'", 'null': 'True', 'to': "orm['auth.User']"})
276
+        },
277
+        'order.orderdiscount': {
278
+            'Meta': {'object_name': 'OrderDiscount'},
279
+            'amount': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
280
+            'category': ('django.db.models.fields.CharField', [], {'default': "'Basket'", 'max_length': '64'}),
281
+            'frequency': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
282
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
283
+            'message': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
284
+            'offer_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
285
+            'offer_name': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'db_index': 'True'}),
286
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'discounts'", 'to': "orm['order.Order']"}),
287
+            'voucher_code': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'db_index': 'True'}),
288
+            'voucher_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'})
289
+        },
290
+        'order.ordernote': {
291
+            'Meta': {'object_name': 'OrderNote'},
292
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
293
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
294
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
295
+            'message': ('django.db.models.fields.TextField', [], {}),
296
+            'note_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
297
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notes'", 'to': "orm['order.Order']"}),
298
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'})
299
+        },
300
+        'order.paymentevent': {
301
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'PaymentEvent'},
302
+            'amount': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
303
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
304
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.PaymentEventType']"}),
305
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
306
+            'lines': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['order.Line']", 'through': "orm['order.PaymentEventQuantity']", 'symmetrical': 'False'}),
307
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'payment_events'", 'to': "orm['order.Order']"}),
308
+            'reference': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}),
309
+            'shipping_event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'payment_events'", 'null': 'True', 'to': "orm['order.ShippingEvent']"})
310
+        },
311
+        'order.paymenteventquantity': {
312
+            'Meta': {'object_name': 'PaymentEventQuantity'},
313
+            'event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_quantities'", 'to': "orm['order.PaymentEvent']"}),
314
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
315
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'payment_event_quantities'", 'to': "orm['order.Line']"}),
316
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {})
317
+        },
318
+        'order.paymenteventtype': {
319
+            'Meta': {'ordering': "('sequence_number',)", 'object_name': 'PaymentEventType'},
320
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
321
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
322
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
323
+            'sequence_number': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
324
+        },
325
+        'order.shippingaddress': {
326
+            'Meta': {'object_name': 'ShippingAddress'},
327
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
328
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
329
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
330
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
331
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
332
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
333
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
334
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
335
+            'notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
336
+            'phone_number': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
337
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}),
338
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
339
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
340
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
341
+        },
342
+        'order.shippingevent': {
343
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'ShippingEvent'},
344
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
345
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.ShippingEventType']"}),
346
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
347
+            'lines': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'shipping_events'", 'symmetrical': 'False', 'through': "orm['order.ShippingEventQuantity']", 'to': "orm['order.Line']"}),
348
+            'notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
349
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'shipping_events'", 'to': "orm['order.Order']"})
350
+        },
351
+        'order.shippingeventquantity': {
352
+            'Meta': {'object_name': 'ShippingEventQuantity'},
353
+            'event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_quantities'", 'to': "orm['order.ShippingEvent']"}),
354
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
355
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'shipping_event_quantities'", 'to': "orm['order.Line']"}),
356
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {})
357
+        },
358
+        'order.shippingeventtype': {
359
+            'Meta': {'ordering': "('sequence_number',)", 'object_name': 'ShippingEventType'},
360
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
361
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
362
+            'is_required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
363
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
364
+            'sequence_number': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
365
+        },
366
+        'partner.partner': {
367
+            'Meta': {'object_name': 'Partner'},
368
+            'code': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128'}),
369
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
370
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
371
+            'users': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'partners'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['auth.User']"})
372
+        },
373
+        'sites.site': {
374
+            'Meta': {'ordering': "('domain',)", 'object_name': 'Site', 'db_table': "'django_site'"},
375
+            'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
376
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
377
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
378
+        }
379
+    }
380
+
381
+    complete_apps = ['order']

+ 0
- 0
sites/demo/apps/order/migrations/__init__.py View File


+ 1
- 0
sites/demo/apps/order/models.py View File

@@ -0,0 +1 @@
1
+from oscar.apps.order.models import *

+ 10
- 2
sites/demo/settings.py View File

@@ -204,6 +204,11 @@ LOGGING = {
204 204
             'propagate': True,
205 205
             'level': 'INFO',
206 206
         },
207
+        'datacash': {
208
+            'handlers': ['console'],
209
+            'propagate': True,
210
+            'level': 'INFO',
211
+        },
207 212
         'django.db.backends': {
208 213
             'handlers': ['null'],
209 214
             'propagate': False,
@@ -238,9 +243,12 @@ INSTALLED_APPS = [
238 243
     'apps.bigbang',
239 244
 ]
240 245
 
241
-# Include a shipping override app to provide some shipping methods
246
+# Include core apps with a few overrides:
247
+# - a shipping override app to provide some shipping methods
248
+# - an order app to provide order processing logic
242 249
 from oscar import get_core_apps
243
-INSTALLED_APPS = INSTALLED_APPS + get_core_apps(['apps.shipping'])
250
+INSTALLED_APPS = INSTALLED_APPS + get_core_apps(
251
+    ['apps.shipping', 'apps.order'])
244 252
 
245 253
 AUTHENTICATION_BACKENDS = (
246 254
     'oscar.apps.customer.auth_backends.Emailbackend',

Loading…
Cancel
Save