Переглянути джерело

Turn AbstractAddress.search_text into a TextField

@hkage raised a good point in #1384
that concatenating the address lines might lead to
a string that's longer than the set limit of 1000 characters. If I
recall correctly, a CharField limit much higher than 255 characters is
troublesome with some databases anyway, so I've taken the opportunity to
turn it into a TextField instead.

Fixes #1384.
Fixes #1385.
master
Maik Hoepfel 11 роки тому
джерело
коміт
ee62d983ac

+ 9
- 0
docs/source/releases/v0.8.rst Переглянути файл

@@ -376,6 +376,10 @@ Basket app changes
376 376
 Migrations
377 377
 ~~~~~~~~~~
378 378
 
379
+* Address:
380
+
381
+    - ``0011`` - ``AbstractAddress.search_text`` turned into a ``TextField``.
382
+
379 383
 * Catalogue:
380 384
 
381 385
     - ``0021`` - Add ``unique_together`` to ``ProductAttributeValue``,
@@ -386,6 +390,11 @@ Migrations
386 390
 
387 391
     - ``0029`` - Add ``unique_together`` to ``PaymentEventQuantity`` and ``ShippingEventQuantity``
388 392
     - ``0030`` - Set ``unique=True`` for ``Order.order_number``
393
+    - ``0031`` - ``AbstractAddress.search_text`` turned into a ``TextField``.
394
+
395
+* Partner:
396
+
397
+    - ``0014`` - ``AbstractAddress.search_text`` turned into a ``TextField``.
389 398
 
390 399
 * Promotions:
391 400
 

+ 2
- 3
oscar/apps/address/abstract_models.py Переглянути файл

@@ -230,9 +230,8 @@ class AbstractAddress(models.Model):
230 230
 
231 231
     #: A field only used for searching addresses - this contains all the
232 232
     #: relevant fields.  This is effectively a poor man's Solr text field.
233
-    search_text = models.CharField(
234
-        _("Search text - used only for searching addresses"),
235
-        max_length=1000, editable=False)
233
+    search_text = models.TextField(
234
+        _("Search text - used only for searching addresses"), editable=False)
236 235
 
237 236
     def __unicode__(self):
238 237
         return self.summary

+ 94
- 0
oscar/apps/address/migrations/0011_auto__chg_field_useraddress_search_text.py Переглянути файл

@@ -0,0 +1,94 @@
1
+# -*- coding: utf-8 -*-
2
+from south.utils import datetime_utils as datetime
3
+from south.db import db
4
+from south.v2 import SchemaMigration
5
+from django.db import models
6
+
7
+from oscar.core.compat import AUTH_USER_MODEL, AUTH_USER_MODEL_NAME
8
+
9
+
10
+class Migration(SchemaMigration):
11
+
12
+    def forwards(self, orm):
13
+
14
+        # Changing field 'UserAddress.search_text'
15
+        db.alter_column(u'address_useraddress', 'search_text', self.gf('django.db.models.fields.TextField')())
16
+
17
+    def backwards(self, orm):
18
+
19
+        # Changing field 'UserAddress.search_text'
20
+        db.alter_column(u'address_useraddress', 'search_text', self.gf('django.db.models.fields.CharField')(max_length=1000))
21
+
22
+    models = {
23
+        u'address.country': {
24
+            'Meta': {'ordering': "('-display_order', 'name')", 'object_name': 'Country'},
25
+            'display_order': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0', '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', [], {'db_index': 'True', 'max_length': '3', 'blank': '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
+        u'address.useraddress': {
34
+            'Meta': {'ordering': "['-num_orders']", 'unique_together': "(('user', 'hash'),)", 'object_name': 'UserAddress'},
35
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['address.Country']"}),
36
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
37
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
38
+            'hash': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
39
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
40
+            'is_default_for_billing': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
41
+            'is_default_for_shipping': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
42
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
43
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
44
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
45
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
46
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
47
+            'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
48
+            'num_orders': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
49
+            'phone_number': ('oscar.models.fields.PhoneNumberField', [], {'max_length': '128', 'blank': 'True'}),
50
+            'postcode': ('oscar.models.fields.UppercaseCharField', [], {'max_length': '64', 'blank': 'True'}),
51
+            'search_text': ('django.db.models.fields.TextField', [], {}),
52
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
53
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}),
54
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'addresses'", 'to': u"orm['{0}']".format(AUTH_USER_MODEL)})
55
+        },
56
+        u'auth.group': {
57
+            'Meta': {'object_name': 'Group'},
58
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
59
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
60
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
61
+        },
62
+        u'auth.permission': {
63
+            'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
64
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
65
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
66
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
67
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
68
+        },
69
+        AUTH_USER_MODEL: {
70
+            'Meta': {'object_name': AUTH_USER_MODEL_NAME},
71
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
72
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
73
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
74
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
75
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
76
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
77
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
78
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
79
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
80
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
81
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
82
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
83
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
84
+        },
85
+        u'contenttypes.contenttype': {
86
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
87
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
88
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
89
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
90
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
91
+        }
92
+    }
93
+
94
+    complete_apps = ['address']

+ 487
- 0
oscar/apps/order/migrations/0031_auto__chg_field_billingaddress_search_text__chg_field_shippingaddress_.py Переглянути файл

@@ -0,0 +1,487 @@
1
+# -*- coding: utf-8 -*-
2
+from south.utils import datetime_utils as datetime
3
+from south.db import db
4
+from south.v2 import SchemaMigration
5
+from django.db import models
6
+
7
+from oscar.core.compat import AUTH_USER_MODEL, AUTH_USER_MODEL_NAME
8
+
9
+
10
+class Migration(SchemaMigration):
11
+
12
+    def forwards(self, orm):
13
+
14
+        # Changing field 'BillingAddress.search_text'
15
+        db.alter_column(u'order_billingaddress', 'search_text', self.gf('django.db.models.fields.TextField')())
16
+
17
+        # Changing field 'ShippingAddress.search_text'
18
+        db.alter_column(u'order_shippingaddress', 'search_text', self.gf('django.db.models.fields.TextField')())
19
+
20
+    def backwards(self, orm):
21
+
22
+        # Changing field 'BillingAddress.search_text'
23
+        db.alter_column(u'order_billingaddress', 'search_text', self.gf('django.db.models.fields.CharField')(max_length=1000))
24
+
25
+        # Changing field 'ShippingAddress.search_text'
26
+        db.alter_column(u'order_shippingaddress', 'search_text', self.gf('django.db.models.fields.CharField')(max_length=1000))
27
+
28
+    models = {
29
+        u'address.country': {
30
+            'Meta': {'ordering': "('-display_order', 'name')", 'object_name': 'Country'},
31
+            'display_order': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0', 'db_index': 'True'}),
32
+            'is_shipping_country': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
33
+            'iso_3166_1_a2': ('django.db.models.fields.CharField', [], {'max_length': '2', 'primary_key': 'True'}),
34
+            'iso_3166_1_a3': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '3', 'blank': 'True'}),
35
+            'iso_3166_1_numeric': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'db_index': 'True'}),
36
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
37
+            'printable_name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
38
+        },
39
+        u'auth.group': {
40
+            'Meta': {'object_name': 'Group'},
41
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
42
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
43
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
44
+        },
45
+        u'auth.permission': {
46
+            'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
47
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
48
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
49
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
50
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
51
+        },
52
+        AUTH_USER_MODEL: {
53
+            'Meta': {'object_name': AUTH_USER_MODEL_NAME},
54
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
55
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
56
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
57
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
58
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
59
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
60
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
61
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
62
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
63
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
64
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
65
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
66
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
67
+        },
68
+        u'basket.basket': {
69
+            'Meta': {'object_name': 'Basket'},
70
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
71
+            'date_merged': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
72
+            'date_submitted': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
73
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
74
+            'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'baskets'", 'null': 'True', 'to': u"orm['{0}']".format(AUTH_USER_MODEL)}),
75
+            'status': ('django.db.models.fields.CharField', [], {'default': "'Open'", 'max_length': '128'}),
76
+            'vouchers': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['voucher.Voucher']", 'null': 'True', 'blank': 'True'})
77
+        },
78
+        u'catalogue.attributeentity': {
79
+            'Meta': {'object_name': 'AttributeEntity'},
80
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
81
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
82
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'blank': 'True'}),
83
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'entities'", 'to': u"orm['catalogue.AttributeEntityType']"})
84
+        },
85
+        u'catalogue.attributeentitytype': {
86
+            'Meta': {'object_name': 'AttributeEntityType'},
87
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
88
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
89
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'blank': 'True'})
90
+        },
91
+        u'catalogue.attributeoption': {
92
+            'Meta': {'object_name': 'AttributeOption'},
93
+            'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'options'", 'to': u"orm['catalogue.AttributeOptionGroup']"}),
94
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
95
+            'option': ('django.db.models.fields.CharField', [], {'max_length': '255'})
96
+        },
97
+        u'catalogue.attributeoptiongroup': {
98
+            'Meta': {'object_name': 'AttributeOptionGroup'},
99
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
100
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
101
+        },
102
+        u'catalogue.category': {
103
+            'Meta': {'ordering': "['full_name']", 'object_name': 'Category'},
104
+            'depth': ('django.db.models.fields.PositiveIntegerField', [], {}),
105
+            'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
106
+            'full_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
107
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
108
+            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
109
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
110
+            'numchild': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
111
+            'path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
112
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255'})
113
+        },
114
+        u'catalogue.option': {
115
+            'Meta': {'object_name': 'Option'},
116
+            'code': ('oscar.models.fields.autoslugfield.AutoSlugField', [], {'allow_duplicates': 'False', 'max_length': '128', 'separator': "u'-'", 'blank': 'True', 'unique': 'True', 'populate_from': "'name'", 'overwrite': 'False'}),
117
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
118
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
119
+            'type': ('django.db.models.fields.CharField', [], {'default': "'Required'", 'max_length': '128'})
120
+        },
121
+        u'catalogue.product': {
122
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'Product'},
123
+            'attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['catalogue.ProductAttribute']", 'through': u"orm['catalogue.ProductAttributeValue']", 'symmetrical': 'False'}),
124
+            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['catalogue.Category']", 'through': u"orm['catalogue.ProductCategory']", 'symmetrical': 'False'}),
125
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
126
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
127
+            'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
128
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
129
+            'is_discountable': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
130
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'variants'", 'null': 'True', 'to': u"orm['catalogue.Product']"}),
131
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'products'", 'null': 'True', 'on_delete': 'models.PROTECT', 'to': u"orm['catalogue.ProductClass']"}),
132
+            'product_options': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
133
+            'rating': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
134
+            'recommended_products': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['catalogue.Product']", 'symmetrical': 'False', 'through': u"orm['catalogue.ProductRecommendation']", 'blank': 'True'}),
135
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255'}),
136
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
137
+            'upc': ('oscar.models.fields.NullCharField', [], {'max_length': '64', 'unique': 'True', 'null': 'True', 'blank': 'True'})
138
+        },
139
+        u'catalogue.productattribute': {
140
+            'Meta': {'ordering': "['code']", 'object_name': 'ProductAttribute'},
141
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128'}),
142
+            'entity_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['catalogue.AttributeEntityType']", 'null': 'True', 'blank': 'True'}),
143
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
144
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
145
+            'option_group': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['catalogue.AttributeOptionGroup']", 'null': 'True', 'blank': 'True'}),
146
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'attributes'", 'null': 'True', 'to': u"orm['catalogue.ProductClass']"}),
147
+            'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
148
+            'type': ('django.db.models.fields.CharField', [], {'default': "'text'", 'max_length': '20'})
149
+        },
150
+        u'catalogue.productattributevalue': {
151
+            'Meta': {'unique_together': "(('attribute', 'product'),)", 'object_name': 'ProductAttributeValue'},
152
+            'attribute': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['catalogue.ProductAttribute']"}),
153
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
154
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attribute_values'", 'to': u"orm['catalogue.Product']"}),
155
+            'value_boolean': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
156
+            'value_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
157
+            'value_entity': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['catalogue.AttributeEntity']", 'null': 'True', 'blank': 'True'}),
158
+            'value_file': ('django.db.models.fields.files.FileField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
159
+            'value_float': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
160
+            'value_image': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
161
+            'value_integer': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
162
+            'value_option': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['catalogue.AttributeOption']", 'null': 'True', 'blank': 'True'}),
163
+            'value_richtext': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
164
+            'value_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
165
+        },
166
+        u'catalogue.productcategory': {
167
+            'Meta': {'ordering': "['product', 'category']", 'unique_together': "(('product', 'category'),)", 'object_name': 'ProductCategory'},
168
+            'category': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['catalogue.Category']"}),
169
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
170
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['catalogue.Product']"})
171
+        },
172
+        u'catalogue.productclass': {
173
+            'Meta': {'ordering': "['name']", 'object_name': 'ProductClass'},
174
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
175
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
176
+            'options': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
177
+            'requires_shipping': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
178
+            'slug': ('oscar.models.fields.autoslugfield.AutoSlugField', [], {'allow_duplicates': 'False', 'max_length': '128', 'separator': "u'-'", 'blank': 'True', 'unique': 'True', 'populate_from': "'name'", 'overwrite': 'False'}),
179
+            'track_stock': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
180
+        },
181
+        u'catalogue.productrecommendation': {
182
+            'Meta': {'ordering': "['primary', '-ranking']", 'unique_together': "(('primary', 'recommendation'),)", 'object_name': 'ProductRecommendation'},
183
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
184
+            'primary': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'primary_recommendations'", 'to': u"orm['catalogue.Product']"}),
185
+            'ranking': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
186
+            'recommendation': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['catalogue.Product']"})
187
+        },
188
+        u'contenttypes.contenttype': {
189
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
190
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
191
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
192
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
193
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
194
+        },
195
+        u'customer.communicationeventtype': {
196
+            'Meta': {'object_name': 'CommunicationEventType'},
197
+            'category': ('django.db.models.fields.CharField', [], {'default': "u'Order related'", 'max_length': '255'}),
198
+            'code': ('oscar.models.fields.autoslugfield.AutoSlugField', [], {'allow_duplicates': 'False', 'max_length': '128', 'separator': "u'_'", 'blank': 'True', 'unique': 'True', 'populate_from': "'name'", 'overwrite': 'False'}),
199
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
200
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
201
+            'email_body_html_template': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
202
+            'email_body_template': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
203
+            'email_subject_template': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
204
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
205
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
206
+            'sms_template': ('django.db.models.fields.CharField', [], {'max_length': '170', 'null': 'True', 'blank': 'True'})
207
+        },
208
+        u'offer.benefit': {
209
+            'Meta': {'object_name': 'Benefit'},
210
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
211
+            'max_affected_items': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
212
+            'proxy_class': ('oscar.models.fields.NullCharField', [], {'default': 'None', 'max_length': '255', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
213
+            'range': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['offer.Range']", 'null': 'True', 'blank': 'True'}),
214
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}),
215
+            'value': ('oscar.models.fields.PositiveDecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'})
216
+        },
217
+        u'offer.condition': {
218
+            'Meta': {'object_name': 'Condition'},
219
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
220
+            'proxy_class': ('oscar.models.fields.NullCharField', [], {'default': 'None', 'max_length': '255', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
221
+            'range': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['offer.Range']", 'null': 'True', 'blank': 'True'}),
222
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}),
223
+            'value': ('oscar.models.fields.PositiveDecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'})
224
+        },
225
+        u'offer.conditionaloffer': {
226
+            'Meta': {'ordering': "['-priority']", 'object_name': 'ConditionalOffer'},
227
+            'benefit': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['offer.Benefit']"}),
228
+            'condition': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['offer.Condition']"}),
229
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
230
+            'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
231
+            'end_datetime': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
232
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
233
+            'max_basket_applications': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
234
+            'max_discount': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
235
+            'max_global_applications': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
236
+            'max_user_applications': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
237
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
238
+            'num_applications': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
239
+            'num_orders': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
240
+            'offer_type': ('django.db.models.fields.CharField', [], {'default': "'Site'", 'max_length': '128'}),
241
+            'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
242
+            'redirect_url': ('oscar.models.fields.ExtendedURLField', [], {'max_length': '200', 'blank': 'True'}),
243
+            'slug': ('oscar.models.fields.autoslugfield.AutoSlugField', [], {'allow_duplicates': 'False', 'max_length': '128', 'separator': "u'-'", 'blank': 'True', 'unique': 'True', 'populate_from': "'name'", 'overwrite': 'False'}),
244
+            'start_datetime': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
245
+            'status': ('django.db.models.fields.CharField', [], {'default': "'Open'", 'max_length': '64'}),
246
+            'total_discount': ('django.db.models.fields.DecimalField', [], {'default': "'0.00'", 'max_digits': '12', 'decimal_places': '2'})
247
+        },
248
+        u'offer.range': {
249
+            'Meta': {'object_name': 'Range'},
250
+            'classes': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'classes'", 'blank': 'True', 'to': u"orm['catalogue.ProductClass']"}),
251
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
252
+            'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
253
+            'excluded_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'excludes'", 'blank': 'True', 'to': u"orm['catalogue.Product']"}),
254
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
255
+            'included_categories': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'includes'", 'blank': 'True', 'to': u"orm['catalogue.Category']"}),
256
+            'included_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'includes'", 'blank': 'True', 'through': u"orm['offer.RangeProduct']", 'to': u"orm['catalogue.Product']"}),
257
+            'includes_all_products': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
258
+            'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
259
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
260
+            'proxy_class': ('oscar.models.fields.NullCharField', [], {'default': 'None', 'max_length': '255', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
261
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'unique': 'True', 'null': 'True'})
262
+        },
263
+        u'offer.rangeproduct': {
264
+            'Meta': {'unique_together': "(('range', 'product'),)", 'object_name': 'RangeProduct'},
265
+            'display_order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
266
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
267
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['catalogue.Product']"}),
268
+            'range': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['offer.Range']"})
269
+        },
270
+        u'order.billingaddress': {
271
+            'Meta': {'object_name': 'BillingAddress'},
272
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['address.Country']"}),
273
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
274
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
275
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
276
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
277
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
278
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
279
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
280
+            'postcode': ('oscar.models.fields.UppercaseCharField', [], {'max_length': '64', 'blank': 'True'}),
281
+            'search_text': ('django.db.models.fields.TextField', [], {}),
282
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
283
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'})
284
+        },
285
+        u'order.communicationevent': {
286
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'CommunicationEvent'},
287
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
288
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['customer.CommunicationEventType']"}),
289
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
290
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'communication_events'", 'to': u"orm['order.Order']"})
291
+        },
292
+        u'order.line': {
293
+            'Meta': {'object_name': 'Line'},
294
+            'est_dispatch_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
295
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
296
+            'line_price_before_discounts_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
297
+            'line_price_before_discounts_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
298
+            'line_price_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
299
+            'line_price_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
300
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lines'", 'to': u"orm['order.Order']"}),
301
+            'partner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'order_lines'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['partner.Partner']"}),
302
+            'partner_line_notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
303
+            'partner_line_reference': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}),
304
+            'partner_name': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}),
305
+            'partner_sku': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
306
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['catalogue.Product']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
307
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
308
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
309
+            'stockrecord': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['partner.StockRecord']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
310
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
311
+            'unit_cost_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
312
+            'unit_price_excl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
313
+            'unit_price_incl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
314
+            'unit_retail_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
315
+            'upc': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'})
316
+        },
317
+        u'order.lineattribute': {
318
+            'Meta': {'object_name': 'LineAttribute'},
319
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
320
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attributes'", 'to': u"orm['order.Line']"}),
321
+            'option': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_attributes'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['catalogue.Option']"}),
322
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
323
+            'value': ('django.db.models.fields.CharField', [], {'max_length': '255'})
324
+        },
325
+        u'order.lineprice': {
326
+            'Meta': {'ordering': "('id',)", 'object_name': 'LinePrice'},
327
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
328
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'prices'", 'to': u"orm['order.Line']"}),
329
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_prices'", 'to': u"orm['order.Order']"}),
330
+            'price_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
331
+            'price_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
332
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
333
+            'shipping_excl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
334
+            'shipping_incl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'})
335
+        },
336
+        u'order.order': {
337
+            'Meta': {'ordering': "['-date_placed']", 'object_name': 'Order'},
338
+            'basket': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['basket.Basket']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
339
+            'billing_address': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['order.BillingAddress']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
340
+            'currency': ('django.db.models.fields.CharField', [], {'default': "'GBP'", 'max_length': '12'}),
341
+            'date_placed': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}),
342
+            'guest_email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
343
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
344
+            'number': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'}),
345
+            'shipping_address': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['order.ShippingAddress']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
346
+            'shipping_code': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}),
347
+            'shipping_excl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
348
+            'shipping_incl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
349
+            'shipping_method': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}),
350
+            'site': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['sites.Site']", 'null': 'True', 'on_delete': 'models.SET_NULL'}),
351
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
352
+            'total_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
353
+            'total_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
354
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'orders'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['{0}']".format(AUTH_USER_MODEL)})
355
+        },
356
+        u'order.orderdiscount': {
357
+            'Meta': {'object_name': 'OrderDiscount'},
358
+            'amount': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
359
+            'category': ('django.db.models.fields.CharField', [], {'default': "'Basket'", 'max_length': '64'}),
360
+            'frequency': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
361
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
362
+            'message': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
363
+            'offer_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
364
+            'offer_name': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'blank': 'True'}),
365
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'discounts'", 'to': u"orm['order.Order']"}),
366
+            'voucher_code': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'blank': 'True'}),
367
+            'voucher_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'})
368
+        },
369
+        u'order.ordernote': {
370
+            'Meta': {'object_name': 'OrderNote'},
371
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
372
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
373
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
374
+            'message': ('django.db.models.fields.TextField', [], {}),
375
+            'note_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}),
376
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notes'", 'to': u"orm['order.Order']"}),
377
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['{0}']".format(AUTH_USER_MODEL), 'null': 'True'})
378
+        },
379
+        u'order.paymentevent': {
380
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'PaymentEvent'},
381
+            'amount': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
382
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
383
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['order.PaymentEventType']"}),
384
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
385
+            'lines': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['order.Line']", 'through': u"orm['order.PaymentEventQuantity']", 'symmetrical': 'False'}),
386
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'payment_events'", 'to': u"orm['order.Order']"}),
387
+            'reference': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}),
388
+            'shipping_event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'payment_events'", 'null': 'True', 'to': u"orm['order.ShippingEvent']"})
389
+        },
390
+        u'order.paymenteventquantity': {
391
+            'Meta': {'unique_together': "(('event', 'line'),)", 'object_name': 'PaymentEventQuantity'},
392
+            'event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_quantities'", 'to': u"orm['order.PaymentEvent']"}),
393
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
394
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'payment_event_quantities'", 'to': u"orm['order.Line']"}),
395
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {})
396
+        },
397
+        u'order.paymenteventtype': {
398
+            'Meta': {'ordering': "('name',)", 'object_name': 'PaymentEventType'},
399
+            'code': ('oscar.models.fields.autoslugfield.AutoSlugField', [], {'allow_duplicates': 'False', 'max_length': '128', 'separator': "u'-'", 'blank': 'True', 'unique': 'True', 'populate_from': "'name'", 'overwrite': 'False'}),
400
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
401
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'})
402
+        },
403
+        u'order.shippingaddress': {
404
+            'Meta': {'object_name': 'ShippingAddress'},
405
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['address.Country']"}),
406
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
407
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
408
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
409
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
410
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
411
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
412
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
413
+            'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
414
+            'phone_number': ('oscar.models.fields.PhoneNumberField', [], {'max_length': '128', 'blank': 'True'}),
415
+            'postcode': ('oscar.models.fields.UppercaseCharField', [], {'max_length': '64', 'blank': 'True'}),
416
+            'search_text': ('django.db.models.fields.TextField', [], {}),
417
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
418
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'})
419
+        },
420
+        u'order.shippingevent': {
421
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'ShippingEvent'},
422
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
423
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['order.ShippingEventType']"}),
424
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
425
+            'lines': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'shipping_events'", 'symmetrical': 'False', 'through': u"orm['order.ShippingEventQuantity']", 'to': u"orm['order.Line']"}),
426
+            'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
427
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'shipping_events'", 'to': u"orm['order.Order']"})
428
+        },
429
+        u'order.shippingeventquantity': {
430
+            'Meta': {'unique_together': "(('event', 'line'),)", 'object_name': 'ShippingEventQuantity'},
431
+            'event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_quantities'", 'to': u"orm['order.ShippingEvent']"}),
432
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
433
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'shipping_event_quantities'", 'to': u"orm['order.Line']"}),
434
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {})
435
+        },
436
+        u'order.shippingeventtype': {
437
+            'Meta': {'ordering': "('name',)", 'object_name': 'ShippingEventType'},
438
+            'code': ('oscar.models.fields.autoslugfield.AutoSlugField', [], {'allow_duplicates': 'False', 'max_length': '128', 'separator': "u'-'", 'blank': 'True', 'unique': 'True', 'populate_from': "'name'", 'overwrite': 'False'}),
439
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
440
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
441
+        },
442
+        u'partner.partner': {
443
+            'Meta': {'object_name': 'Partner'},
444
+            'code': ('oscar.models.fields.autoslugfield.AutoSlugField', [], {'allow_duplicates': 'False', 'max_length': '128', 'separator': "u'-'", 'blank': 'True', 'unique': 'True', 'populate_from': "'name'", 'overwrite': 'False'}),
445
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
446
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}),
447
+            'users': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'partners'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['{0}']".format(AUTH_USER_MODEL)})
448
+        },
449
+        u'partner.stockrecord': {
450
+            'Meta': {'unique_together': "(('partner', 'partner_sku'),)", 'object_name': 'StockRecord'},
451
+            'cost_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
452
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
453
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
454
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
455
+            'low_stock_threshold': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
456
+            'num_allocated': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
457
+            'num_in_stock': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
458
+            'partner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'stockrecords'", 'to': u"orm['partner.Partner']"}),
459
+            'partner_sku': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
460
+            'price_currency': ('django.db.models.fields.CharField', [], {'default': "'GBP'", 'max_length': '12'}),
461
+            'price_excl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
462
+            'price_retail': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
463
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'stockrecords'", 'to': u"orm['catalogue.Product']"})
464
+        },
465
+        u'sites.site': {
466
+            'Meta': {'ordering': "('domain',)", 'object_name': 'Site', 'db_table': "'django_site'"},
467
+            'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
468
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
469
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
470
+        },
471
+        u'voucher.voucher': {
472
+            'Meta': {'object_name': 'Voucher'},
473
+            'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'}),
474
+            'date_created': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
475
+            'end_datetime': ('django.db.models.fields.DateTimeField', [], {}),
476
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
477
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
478
+            'num_basket_additions': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
479
+            'num_orders': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
480
+            'offers': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'vouchers'", 'symmetrical': 'False', 'to': u"orm['offer.ConditionalOffer']"}),
481
+            'start_datetime': ('django.db.models.fields.DateTimeField', [], {}),
482
+            'total_discount': ('django.db.models.fields.DecimalField', [], {'default': "'0.00'", 'max_digits': '12', 'decimal_places': '2'}),
483
+            'usage': ('django.db.models.fields.CharField', [], {'default': "'Multi-use'", 'max_length': '128'})
484
+        }
485
+    }
486
+
487
+    complete_apps = ['order']

+ 229
- 0
oscar/apps/partner/migrations/0014_auto__chg_field_partneraddress_search_text.py Переглянути файл

@@ -0,0 +1,229 @@
1
+# -*- coding: utf-8 -*-
2
+from south.utils import datetime_utils as datetime
3
+from south.db import db
4
+from south.v2 import SchemaMigration
5
+from django.db import models
6
+
7
+from oscar.core.compat import AUTH_USER_MODEL, AUTH_USER_MODEL_NAME
8
+
9
+
10
+class Migration(SchemaMigration):
11
+
12
+    def forwards(self, orm):
13
+
14
+        # Changing field 'PartnerAddress.search_text'
15
+        db.alter_column(u'partner_partneraddress', 'search_text', self.gf('django.db.models.fields.TextField')())
16
+
17
+    def backwards(self, orm):
18
+
19
+        # Changing field 'PartnerAddress.search_text'
20
+        db.alter_column(u'partner_partneraddress', 'search_text', self.gf('django.db.models.fields.CharField')(max_length=1000))
21
+
22
+    models = {
23
+        u'address.country': {
24
+            'Meta': {'ordering': "('-display_order', 'name')", 'object_name': 'Country'},
25
+            'display_order': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0', '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', [], {'db_index': 'True', 'max_length': '3', 'blank': '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
+        u'auth.group': {
34
+            'Meta': {'object_name': 'Group'},
35
+            u'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': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
38
+        },
39
+        u'auth.permission': {
40
+            'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
41
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
42
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
43
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
44
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
45
+        },
46
+        AUTH_USER_MODEL: {
47
+            'Meta': {'object_name': AUTH_USER_MODEL_NAME},
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': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
52
+            u'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': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
60
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
61
+        },
62
+        u'catalogue.attributeentity': {
63
+            'Meta': {'object_name': 'AttributeEntity'},
64
+            u'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': u"orm['catalogue.AttributeEntityType']"})
68
+        },
69
+        u'catalogue.attributeentitytype': {
70
+            'Meta': {'object_name': 'AttributeEntityType'},
71
+            u'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
+        u'catalogue.attributeoption': {
76
+            'Meta': {'object_name': 'AttributeOption'},
77
+            'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'options'", 'to': u"orm['catalogue.AttributeOptionGroup']"}),
78
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
79
+            'option': ('django.db.models.fields.CharField', [], {'max_length': '255'})
80
+        },
81
+        u'catalogue.attributeoptiongroup': {
82
+            'Meta': {'object_name': 'AttributeOptionGroup'},
83
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
84
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
85
+        },
86
+        u'catalogue.category': {
87
+            'Meta': {'ordering': "['full_name']", 'object_name': 'Category'},
88
+            'depth': ('django.db.models.fields.PositiveIntegerField', [], {}),
89
+            'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
90
+            'full_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
91
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
92
+            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', '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
+        u'catalogue.option': {
99
+            'Meta': {'object_name': 'Option'},
100
+            'code': ('oscar.models.fields.autoslugfield.AutoSlugField', [], {'allow_duplicates': 'False', 'max_length': '128', 'separator': "u'-'", 'blank': 'True', 'unique': 'True', 'populate_from': "'name'", 'overwrite': 'False'}),
101
+            u'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
+        u'catalogue.product': {
106
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'Product'},
107
+            'attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['catalogue.ProductAttribute']", 'through': u"orm['catalogue.ProductAttributeValue']", 'symmetrical': 'False'}),
108
+            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['catalogue.Category']", 'through': u"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', [], {'blank': 'True'}),
112
+            u'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': u"orm['catalogue.Product']"}),
115
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'products'", 'null': 'True', 'on_delete': 'models.PROTECT', 'to': u"orm['catalogue.ProductClass']"}),
116
+            'product_options': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"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': u"orm['catalogue.Product']", 'symmetrical': 'False', 'through': u"orm['catalogue.ProductRecommendation']", 'blank': 'True'}),
119
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255'}),
120
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
121
+            'upc': ('oscar.models.fields.NullCharField', [], {'max_length': '64', 'unique': 'True', 'null': 'True', 'blank': 'True'})
122
+        },
123
+        u'catalogue.productattribute': {
124
+            'Meta': {'ordering': "['code']", 'object_name': 'ProductAttribute'},
125
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128'}),
126
+            'entity_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['catalogue.AttributeEntityType']", 'null': 'True', 'blank': 'True'}),
127
+            u'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': u"orm['catalogue.AttributeOptionGroup']", 'null': 'True', 'blank': 'True'}),
130
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'attributes'", 'null': 'True', 'to': u"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
+        u'catalogue.productattributevalue': {
135
+            'Meta': {'unique_together': "(('attribute', 'product'),)", 'object_name': 'ProductAttributeValue'},
136
+            'attribute': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['catalogue.ProductAttribute']"}),
137
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
138
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attribute_values'", 'to': u"orm['catalogue.Product']"}),
139
+            'value_boolean': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
140
+            'value_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
141
+            'value_entity': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['catalogue.AttributeEntity']", 'null': 'True', 'blank': 'True'}),
142
+            'value_file': ('django.db.models.fields.files.FileField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
143
+            'value_float': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
144
+            'value_image': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', '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': u"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
+        u'catalogue.productcategory': {
151
+            'Meta': {'ordering': "['product', 'category']", 'unique_together': "(('product', 'category'),)", 'object_name': 'ProductCategory'},
152
+            'category': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['catalogue.Category']"}),
153
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
154
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['catalogue.Product']"})
155
+        },
156
+        u'catalogue.productclass': {
157
+            'Meta': {'ordering': "['name']", 'object_name': 'ProductClass'},
158
+            u'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': u"orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
161
+            'requires_shipping': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
162
+            'slug': ('oscar.models.fields.autoslugfield.AutoSlugField', [], {'allow_duplicates': 'False', 'max_length': '128', 'separator': "u'-'", 'blank': 'True', 'unique': 'True', 'populate_from': "'name'", 'overwrite': 'False'}),
163
+            'track_stock': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
164
+        },
165
+        u'catalogue.productrecommendation': {
166
+            'Meta': {'ordering': "['primary', '-ranking']", 'unique_together': "(('primary', 'recommendation'),)", 'object_name': 'ProductRecommendation'},
167
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
168
+            'primary': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'primary_recommendations'", 'to': u"orm['catalogue.Product']"}),
169
+            'ranking': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
170
+            'recommendation': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['catalogue.Product']"})
171
+        },
172
+        u'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
+            u'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
+        u'partner.partner': {
180
+            'Meta': {'object_name': 'Partner'},
181
+            'code': ('oscar.models.fields.autoslugfield.AutoSlugField', [], {'allow_duplicates': 'False', 'max_length': '128', 'separator': "u'-'", 'blank': 'True', 'unique': 'True', 'populate_from': "'name'", 'overwrite': 'False'}),
182
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
183
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}),
184
+            'users': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'partners'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['{0}']".format(AUTH_USER_MODEL)})
185
+        },
186
+        u'partner.partneraddress': {
187
+            'Meta': {'object_name': 'PartnerAddress'},
188
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['address.Country']"}),
189
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
190
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
191
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
192
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
193
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
194
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
195
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
196
+            'partner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'addresses'", 'to': u"orm['partner.Partner']"}),
197
+            'postcode': ('oscar.models.fields.UppercaseCharField', [], {'max_length': '64', 'blank': 'True'}),
198
+            'search_text': ('django.db.models.fields.TextField', [], {}),
199
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
200
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'})
201
+        },
202
+        u'partner.stockalert': {
203
+            'Meta': {'ordering': "('-date_created',)", 'object_name': 'StockAlert'},
204
+            'date_closed': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
205
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
206
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
207
+            'status': ('django.db.models.fields.CharField', [], {'default': "'Open'", 'max_length': '128'}),
208
+            'stockrecord': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'alerts'", 'to': u"orm['partner.StockRecord']"}),
209
+            'threshold': ('django.db.models.fields.PositiveIntegerField', [], {})
210
+        },
211
+        u'partner.stockrecord': {
212
+            'Meta': {'unique_together': "(('partner', 'partner_sku'),)", 'object_name': 'StockRecord'},
213
+            'cost_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
214
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
215
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
216
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
217
+            'low_stock_threshold': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
218
+            'num_allocated': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
219
+            'num_in_stock': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
220
+            'partner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'stockrecords'", 'to': u"orm['partner.Partner']"}),
221
+            'partner_sku': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
222
+            'price_currency': ('django.db.models.fields.CharField', [], {'default': "'GBP'", 'max_length': '12'}),
223
+            'price_excl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
224
+            'price_retail': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
225
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'stockrecords'", 'to': u"orm['catalogue.Product']"})
226
+        }
227
+    }
228
+
229
+    complete_apps = ['partner']

Завантаження…
Відмінити
Зберегти