Преглед изворни кода

Added migrations for all apps.

The initial one is for the releases/0.1 branch - any others are to
handle changes in the 0.2 branch.
master
David Winterbottom пре 13 година
родитељ
комит
f46040274c
32 измењених фајлова са 4345 додато и 1 уклоњено
  1. 6
    1
      create_migration.py
  2. 130
    0
      oscar/apps/address/migrations/0001_initial.py
  3. 0
    0
      oscar/apps/address/migrations/__init__.py
  4. 249
    0
      oscar/apps/analytics/migrations/0001_initial.py
  5. 0
    0
      oscar/apps/analytics/migrations/__init__.py
  6. 296
    0
      oscar/apps/basket/migrations/0001_initial.py
  7. 0
    0
      oscar/apps/basket/migrations/__init__.py
  8. 399
    0
      oscar/apps/catalogue/migrations/0001_initial.py
  9. 173
    0
      oscar/apps/catalogue/migrations/0002_auto__add_field_product_status__add_field_category_description__add_fi.py
  10. 0
    0
      oscar/apps/catalogue/migrations/__init__.py
  11. 21
    0
      oscar/apps/checkout/migrations/0001_initial.py
  12. 0
    0
      oscar/apps/checkout/migrations/__init__.py
  13. 108
    0
      oscar/apps/customer/migrations/0001_initial.py
  14. 0
    0
      oscar/apps/customer/migrations/__init__.py
  15. 162
    0
      oscar/apps/discount/migrations/0001_initial.py
  16. 0
    0
      oscar/apps/discount/migrations/__init__.py
  17. 263
    0
      oscar/apps/offer/migrations/0001_initial.py
  18. 0
    0
      oscar/apps/offer/migrations/__init__.py
  19. 655
    0
      oscar/apps/order/migrations/0001_initial.py
  20. 435
    0
      oscar/apps/order/migrations/0002_auto__del_field_communicationevent_type__add_field_communicationevent_.py
  21. 0
    0
      oscar/apps/order/migrations/__init__.py
  22. 221
    0
      oscar/apps/partner/migrations/0001_initial.py
  23. 0
    0
      oscar/apps/partner/migrations/__init__.py
  24. 384
    0
      oscar/apps/payment/migrations/0001_initial.py
  25. 0
    0
      oscar/apps/payment/migrations/__init__.py
  26. 382
    0
      oscar/apps/promotions/migrations/0001_initial.py
  27. 0
    0
      oscar/apps/promotions/migrations/__init__.py
  28. 45
    0
      oscar/apps/shipping/migrations/0001_initial.py
  29. 78
    0
      oscar/apps/shipping/migrations/0002_auto__del_orderanditemlevelchargemethod__add_orderanditemcharges__add_.py
  30. 0
    0
      oscar/apps/shipping/migrations/__init__.py
  31. 338
    0
      oscar/apps/voucher/migrations/0001_initial.py
  32. 0
    0
      oscar/apps/voucher/migrations/__init__.py

+ 6
- 1
create_migration.py Прегледај датотеку

@@ -5,6 +5,10 @@ from optparse import OptionParser
5 5
 
6 6
 import tests.config
7 7
 
8
+from south.modelsinspector import add_introspection_rules
9
+add_introspection_rules([], ["^oscar\.models\.fields\.ExtendedURLField$"])
10
+add_introspection_rules([], ["^oscar\.models\.fields\.PositiveDecimalField$"])
11
+
8 12
 
9 13
 def create_migration(app_label, **kwargs):
10 14
     from south.management.commands.schemamigration import Command
@@ -19,4 +23,5 @@ if __name__ == '__main__':
19 23
     parser.add_option('-a', '--auto', dest='auto',
20 24
                       action='store_true', default=False)
21 25
     (options, args) = parser.parse_args()
22
-    create_migration(args[0], **options)
26
+    create_migration(args[0], initial=options.initial, auto=options.auto)
27
+

+ 130
- 0
oscar/apps/address/migrations/0001_initial.py Прегледај датотеку

@@ -0,0 +1,130 @@
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 model 'UserAddress'
12
+        db.create_table('address_useraddress', (
13
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
14
+            ('title', self.gf('django.db.models.fields.CharField')(max_length=64, null=True, blank=True)),
15
+            ('first_name', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
16
+            ('last_name', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)),
17
+            ('line1', self.gf('django.db.models.fields.CharField')(max_length=255)),
18
+            ('line2', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
19
+            ('line3', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
20
+            ('line4', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
21
+            ('state', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
22
+            ('postcode', self.gf('django.db.models.fields.CharField')(max_length=64)),
23
+            ('country', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['address.Country'])),
24
+            ('search_text', self.gf('django.db.models.fields.CharField')(max_length=1000)),
25
+            ('phone_number', self.gf('django.db.models.fields.CharField')(max_length=32, null=True, blank=True)),
26
+            ('notes', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
27
+            ('user', self.gf('django.db.models.fields.related.ForeignKey')(related_name='addresses', to=orm['auth.User'])),
28
+            ('is_default_for_shipping', self.gf('django.db.models.fields.BooleanField')(default=False)),
29
+            ('is_default_for_billing', self.gf('django.db.models.fields.BooleanField')(default=False)),
30
+            ('num_orders', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
31
+            ('hash', self.gf('django.db.models.fields.CharField')(max_length=255, db_index=True)),
32
+            ('date_created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
33
+        ))
34
+        db.send_create_signal('address', ['UserAddress'])
35
+
36
+        # Adding model 'Country'
37
+        db.create_table('address_country', (
38
+            ('iso_3166_1_a2', self.gf('django.db.models.fields.CharField')(max_length=2, primary_key=True)),
39
+            ('iso_3166_1_a3', self.gf('django.db.models.fields.CharField')(max_length=3, null=True, db_index=True)),
40
+            ('iso_3166_1_numeric', self.gf('django.db.models.fields.PositiveSmallIntegerField')(null=True, db_index=True)),
41
+            ('name', self.gf('django.db.models.fields.CharField')(max_length=128)),
42
+            ('printable_name', self.gf('django.db.models.fields.CharField')(max_length=128)),
43
+            ('is_highlighted', self.gf('django.db.models.fields.BooleanField')(default=False, db_index=True)),
44
+            ('is_shipping_country', self.gf('django.db.models.fields.BooleanField')(default=False, db_index=True)),
45
+        ))
46
+        db.send_create_signal('address', ['Country'])
47
+
48
+
49
+    def backwards(self, orm):
50
+        
51
+        # Deleting model 'UserAddress'
52
+        db.delete_table('address_useraddress')
53
+
54
+        # Deleting model 'Country'
55
+        db.delete_table('address_country')
56
+
57
+
58
+    models = {
59
+        'address.country': {
60
+            'Meta': {'ordering': "('-is_highlighted', 'name')", 'object_name': 'Country'},
61
+            'is_highlighted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
62
+            'is_shipping_country': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
63
+            'iso_3166_1_a2': ('django.db.models.fields.CharField', [], {'max_length': '2', 'primary_key': 'True'}),
64
+            'iso_3166_1_a3': ('django.db.models.fields.CharField', [], {'max_length': '3', 'null': 'True', 'db_index': 'True'}),
65
+            'iso_3166_1_numeric': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'db_index': 'True'}),
66
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
67
+            'printable_name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
68
+        },
69
+        'address.useraddress': {
70
+            'Meta': {'ordering': "['-num_orders']", 'object_name': 'UserAddress'},
71
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
72
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
73
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
74
+            'hash': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
75
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
76
+            'is_default_for_billing': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
77
+            'is_default_for_shipping': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
78
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
79
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
80
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
81
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
82
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
83
+            'notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
84
+            'num_orders': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
85
+            'phone_number': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
86
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
87
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
88
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
89
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}),
90
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'addresses'", 'to': "orm['auth.User']"})
91
+        },
92
+        'auth.group': {
93
+            'Meta': {'object_name': 'Group'},
94
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
95
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
96
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
97
+        },
98
+        'auth.permission': {
99
+            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
100
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
101
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
102
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
103
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
104
+        },
105
+        'auth.user': {
106
+            'Meta': {'object_name': 'User'},
107
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
108
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
109
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
110
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
111
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
112
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
113
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
114
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
115
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
116
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
117
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
118
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
119
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
120
+        },
121
+        'contenttypes.contenttype': {
122
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
123
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
124
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
125
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
126
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
127
+        }
128
+    }
129
+
130
+    complete_apps = ['address']

+ 0
- 0
oscar/apps/address/migrations/__init__.py Прегледај датотеку


+ 249
- 0
oscar/apps/analytics/migrations/0001_initial.py Прегледај датотеку

@@ -0,0 +1,249 @@
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 model 'ProductRecord'
12
+        db.create_table('analytics_productrecord', (
13
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
14
+            ('product', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['catalogue.Product'], unique=True)),
15
+            ('num_views', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
16
+            ('num_basket_additions', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
17
+            ('num_purchases', self.gf('django.db.models.fields.PositiveIntegerField')(default=0, db_index=True)),
18
+            ('score', self.gf('django.db.models.fields.FloatField')(default=0.0)),
19
+        ))
20
+        db.send_create_signal('analytics', ['ProductRecord'])
21
+
22
+        # Adding model 'UserRecord'
23
+        db.create_table('analytics_userrecord', (
24
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
25
+            ('user', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['auth.User'], unique=True)),
26
+            ('num_product_views', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
27
+            ('num_basket_additions', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
28
+            ('num_orders', self.gf('django.db.models.fields.PositiveIntegerField')(default=0, db_index=True)),
29
+            ('num_order_lines', self.gf('django.db.models.fields.PositiveIntegerField')(default=0, db_index=True)),
30
+            ('num_order_items', self.gf('django.db.models.fields.PositiveIntegerField')(default=0, db_index=True)),
31
+            ('total_spent', self.gf('django.db.models.fields.DecimalField')(default='0.00', max_digits=12, decimal_places=2)),
32
+            ('date_last_order', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
33
+        ))
34
+        db.send_create_signal('analytics', ['UserRecord'])
35
+
36
+        # Adding model 'UserProductView'
37
+        db.create_table('analytics_userproductview', (
38
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
39
+            ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])),
40
+            ('product', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['catalogue.Product'])),
41
+            ('date_created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
42
+        ))
43
+        db.send_create_signal('analytics', ['UserProductView'])
44
+
45
+        # Adding model 'UserSearch'
46
+        db.create_table('analytics_usersearch', (
47
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
48
+            ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])),
49
+            ('query', self.gf('django.db.models.fields.CharField')(max_length=255, db_index=True)),
50
+            ('date_created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
51
+        ))
52
+        db.send_create_signal('analytics', ['UserSearch'])
53
+
54
+
55
+    def backwards(self, orm):
56
+        
57
+        # Deleting model 'ProductRecord'
58
+        db.delete_table('analytics_productrecord')
59
+
60
+        # Deleting model 'UserRecord'
61
+        db.delete_table('analytics_userrecord')
62
+
63
+        # Deleting model 'UserProductView'
64
+        db.delete_table('analytics_userproductview')
65
+
66
+        # Deleting model 'UserSearch'
67
+        db.delete_table('analytics_usersearch')
68
+
69
+
70
+    models = {
71
+        'analytics.productrecord': {
72
+            'Meta': {'ordering': "['-num_purchases']", 'object_name': 'ProductRecord'},
73
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
74
+            'num_basket_additions': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
75
+            'num_purchases': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0', 'db_index': 'True'}),
76
+            'num_views': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
77
+            'product': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['catalogue.Product']", 'unique': 'True'}),
78
+            'score': ('django.db.models.fields.FloatField', [], {'default': '0.0'})
79
+        },
80
+        'analytics.userproductview': {
81
+            'Meta': {'object_name': 'UserProductView'},
82
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
83
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
84
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"}),
85
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
86
+        },
87
+        'analytics.userrecord': {
88
+            'Meta': {'object_name': 'UserRecord'},
89
+            'date_last_order': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
90
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
91
+            'num_basket_additions': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
92
+            'num_order_items': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0', 'db_index': 'True'}),
93
+            'num_order_lines': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0', 'db_index': 'True'}),
94
+            'num_orders': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0', 'db_index': 'True'}),
95
+            'num_product_views': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
96
+            'total_spent': ('django.db.models.fields.DecimalField', [], {'default': "'0.00'", 'max_digits': '12', 'decimal_places': '2'}),
97
+            'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'})
98
+        },
99
+        'analytics.usersearch': {
100
+            'Meta': {'object_name': 'UserSearch'},
101
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
102
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
103
+            'query': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
104
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
105
+        },
106
+        'auth.group': {
107
+            'Meta': {'object_name': 'Group'},
108
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
109
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
110
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
111
+        },
112
+        'auth.permission': {
113
+            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
114
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
115
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
116
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
117
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
118
+        },
119
+        'auth.user': {
120
+            'Meta': {'object_name': 'User'},
121
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
122
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
123
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
124
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
125
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
126
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
127
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
128
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
129
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
130
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
131
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
132
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
133
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
134
+        },
135
+        'catalogue.attributeentity': {
136
+            'Meta': {'object_name': 'AttributeEntity'},
137
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
138
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
139
+            'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'}),
140
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'entities'", 'to': "orm['catalogue.AttributeEntityType']"})
141
+        },
142
+        'catalogue.attributeentitytype': {
143
+            'Meta': {'object_name': 'AttributeEntityType'},
144
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
145
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
146
+            'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'})
147
+        },
148
+        'catalogue.attributeoption': {
149
+            'Meta': {'object_name': 'AttributeOption'},
150
+            'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'options'", 'to': "orm['catalogue.AttributeOptionGroup']"}),
151
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
152
+            'option': ('django.db.models.fields.CharField', [], {'max_length': '255'})
153
+        },
154
+        'catalogue.attributeoptiongroup': {
155
+            'Meta': {'object_name': 'AttributeOptionGroup'},
156
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
157
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
158
+        },
159
+        'catalogue.category': {
160
+            'Meta': {'ordering': "['name']", 'object_name': 'Category'},
161
+            'depth': ('django.db.models.fields.PositiveIntegerField', [], {}),
162
+            'full_name': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'db_index': 'True'}),
163
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
164
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
165
+            'numchild': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
166
+            'path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
167
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '1024', 'db_index': 'True'})
168
+        },
169
+        'catalogue.option': {
170
+            'Meta': {'object_name': 'Option'},
171
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
172
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
173
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
174
+            'type': ('django.db.models.fields.CharField', [], {'default': "'Required'", 'max_length': '128'})
175
+        },
176
+        'catalogue.product': {
177
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'Product'},
178
+            'attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.ProductAttribute']", 'through': "orm['catalogue.ProductAttributeValue']", 'symmetrical': 'False'}),
179
+            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Category']", 'through': "orm['catalogue.ProductCategory']", 'symmetrical': 'False'}),
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', 'db_index': 'True', 'blank': 'True'}),
182
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
183
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
184
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'variants'", 'null': 'True', 'to': "orm['catalogue.Product']"}),
185
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductClass']", 'null': 'True'}),
186
+            'product_options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
187
+            'recommended_products': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Product']", 'symmetrical': 'False', 'through': "orm['catalogue.ProductRecommendation']", 'blank': 'True'}),
188
+            'related_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'relations'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
189
+            'score': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'db_index': 'True'}),
190
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'db_index': 'True'}),
191
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
192
+            'upc': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '64', 'null': 'True', 'blank': 'True'})
193
+        },
194
+        'catalogue.productattribute': {
195
+            'Meta': {'ordering': "['code']", 'object_name': 'ProductAttribute'},
196
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
197
+            'entity_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntityType']", 'null': 'True', 'blank': 'True'}),
198
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
199
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
200
+            'option_group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOptionGroup']", 'null': 'True', 'blank': 'True'}),
201
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'attributes'", 'null': 'True', 'to': "orm['catalogue.ProductClass']"}),
202
+            'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
203
+            'type': ('django.db.models.fields.CharField', [], {'default': "'text'", 'max_length': '20'})
204
+        },
205
+        'catalogue.productattributevalue': {
206
+            'Meta': {'object_name': 'ProductAttributeValue'},
207
+            'attribute': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductAttribute']"}),
208
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
209
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"}),
210
+            'value_boolean': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
211
+            'value_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
212
+            'value_entity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntity']", 'null': 'True', 'blank': 'True'}),
213
+            'value_float': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
214
+            'value_integer': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
215
+            'value_option': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOption']", 'null': 'True', 'blank': 'True'}),
216
+            'value_richtext': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
217
+            'value_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
218
+        },
219
+        'catalogue.productcategory': {
220
+            'Meta': {'ordering': "['-is_canonical']", 'object_name': 'ProductCategory'},
221
+            'category': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Category']"}),
222
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
223
+            'is_canonical': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
224
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
225
+        },
226
+        'catalogue.productclass': {
227
+            'Meta': {'ordering': "['name']", 'object_name': 'ProductClass'},
228
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
229
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
230
+            'options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
231
+            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'})
232
+        },
233
+        'catalogue.productrecommendation': {
234
+            'Meta': {'object_name': 'ProductRecommendation'},
235
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
236
+            'primary': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'primary_recommendations'", 'to': "orm['catalogue.Product']"}),
237
+            'ranking': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
238
+            'recommendation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
239
+        },
240
+        'contenttypes.contenttype': {
241
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
242
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
243
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
244
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
245
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
246
+        }
247
+    }
248
+
249
+    complete_apps = ['analytics']

+ 0
- 0
oscar/apps/analytics/migrations/__init__.py Прегледај датотеку


+ 296
- 0
oscar/apps/basket/migrations/0001_initial.py Прегледај датотеку

@@ -0,0 +1,296 @@
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 model 'Basket'
12
+        db.create_table('basket_basket', (
13
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
14
+            ('owner', self.gf('django.db.models.fields.related.ForeignKey')(related_name='baskets', null=True, to=orm['auth.User'])),
15
+            ('status', self.gf('django.db.models.fields.CharField')(default='Open', max_length=128)),
16
+            ('date_created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
17
+            ('date_merged', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
18
+            ('date_submitted', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
19
+        ))
20
+        db.send_create_signal('basket', ['Basket'])
21
+
22
+        # Adding M2M table for field vouchers on 'Basket'
23
+        db.create_table('basket_basket_vouchers', (
24
+            ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
25
+            ('basket', models.ForeignKey(orm['basket.basket'], null=False)),
26
+            ('voucher', models.ForeignKey(orm['voucher.voucher'], null=False))
27
+        ))
28
+        db.create_unique('basket_basket_vouchers', ['basket_id', 'voucher_id'])
29
+
30
+        # Adding model 'Line'
31
+        db.create_table('basket_line', (
32
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
33
+            ('basket', self.gf('django.db.models.fields.related.ForeignKey')(related_name='lines', to=orm['basket.Basket'])),
34
+            ('line_reference', self.gf('django.db.models.fields.SlugField')(max_length=128, db_index=True)),
35
+            ('product', self.gf('django.db.models.fields.related.ForeignKey')(related_name='basket_lines', to=orm['catalogue.Product'])),
36
+            ('quantity', self.gf('django.db.models.fields.PositiveIntegerField')(default=1)),
37
+            ('date_created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
38
+        ))
39
+        db.send_create_signal('basket', ['Line'])
40
+
41
+        # Adding unique constraint on 'Line', fields ['basket', 'line_reference']
42
+        db.create_unique('basket_line', ['basket_id', 'line_reference'])
43
+
44
+        # Adding model 'LineAttribute'
45
+        db.create_table('basket_lineattribute', (
46
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
47
+            ('line', self.gf('django.db.models.fields.related.ForeignKey')(related_name='attributes', to=orm['basket.Line'])),
48
+            ('option', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['catalogue.Option'])),
49
+            ('value', self.gf('django.db.models.fields.CharField')(max_length=255)),
50
+        ))
51
+        db.send_create_signal('basket', ['LineAttribute'])
52
+
53
+
54
+    def backwards(self, orm):
55
+        
56
+        # Removing unique constraint on 'Line', fields ['basket', 'line_reference']
57
+        db.delete_unique('basket_line', ['basket_id', 'line_reference'])
58
+
59
+        # Deleting model 'Basket'
60
+        db.delete_table('basket_basket')
61
+
62
+        # Removing M2M table for field vouchers on 'Basket'
63
+        db.delete_table('basket_basket_vouchers')
64
+
65
+        # Deleting model 'Line'
66
+        db.delete_table('basket_line')
67
+
68
+        # Deleting model 'LineAttribute'
69
+        db.delete_table('basket_lineattribute')
70
+
71
+
72
+    models = {
73
+        'auth.group': {
74
+            'Meta': {'object_name': 'Group'},
75
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
76
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
77
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
78
+        },
79
+        'auth.permission': {
80
+            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
81
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
82
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
83
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
84
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
85
+        },
86
+        'auth.user': {
87
+            'Meta': {'object_name': 'User'},
88
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
89
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
90
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
91
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
92
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
93
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
94
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
95
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
96
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
97
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
98
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
99
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
100
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
101
+        },
102
+        'basket.basket': {
103
+            'Meta': {'object_name': 'Basket'},
104
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
105
+            'date_merged': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
106
+            'date_submitted': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
107
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
108
+            'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'baskets'", 'null': 'True', 'to': "orm['auth.User']"}),
109
+            'status': ('django.db.models.fields.CharField', [], {'default': "'Open'", 'max_length': '128'}),
110
+            'vouchers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['voucher.Voucher']", 'null': 'True', 'symmetrical': 'False'})
111
+        },
112
+        'basket.line': {
113
+            'Meta': {'unique_together': "(('basket', 'line_reference'),)", 'object_name': 'Line'},
114
+            'basket': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lines'", 'to': "orm['basket.Basket']"}),
115
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
116
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
117
+            'line_reference': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
118
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'basket_lines'", 'to': "orm['catalogue.Product']"}),
119
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'})
120
+        },
121
+        'basket.lineattribute': {
122
+            'Meta': {'object_name': 'LineAttribute'},
123
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
124
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attributes'", 'to': "orm['basket.Line']"}),
125
+            'option': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Option']"}),
126
+            'value': ('django.db.models.fields.CharField', [], {'max_length': '255'})
127
+        },
128
+        'catalogue.attributeentity': {
129
+            'Meta': {'object_name': 'AttributeEntity'},
130
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
131
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
132
+            'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'}),
133
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'entities'", 'to': "orm['catalogue.AttributeEntityType']"})
134
+        },
135
+        'catalogue.attributeentitytype': {
136
+            'Meta': {'object_name': 'AttributeEntityType'},
137
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
138
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
139
+            'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'})
140
+        },
141
+        'catalogue.attributeoption': {
142
+            'Meta': {'object_name': 'AttributeOption'},
143
+            'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'options'", 'to': "orm['catalogue.AttributeOptionGroup']"}),
144
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
145
+            'option': ('django.db.models.fields.CharField', [], {'max_length': '255'})
146
+        },
147
+        'catalogue.attributeoptiongroup': {
148
+            'Meta': {'object_name': 'AttributeOptionGroup'},
149
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
150
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
151
+        },
152
+        'catalogue.category': {
153
+            'Meta': {'ordering': "['name']", 'object_name': 'Category'},
154
+            'depth': ('django.db.models.fields.PositiveIntegerField', [], {}),
155
+            'full_name': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'db_index': 'True'}),
156
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
157
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
158
+            'numchild': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
159
+            'path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
160
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '1024', 'db_index': 'True'})
161
+        },
162
+        'catalogue.option': {
163
+            'Meta': {'object_name': 'Option'},
164
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
165
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
166
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
167
+            'type': ('django.db.models.fields.CharField', [], {'default': "'Required'", 'max_length': '128'})
168
+        },
169
+        'catalogue.product': {
170
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'Product'},
171
+            'attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.ProductAttribute']", 'through': "orm['catalogue.ProductAttributeValue']", 'symmetrical': 'False'}),
172
+            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Category']", 'through': "orm['catalogue.ProductCategory']", 'symmetrical': 'False'}),
173
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
174
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
175
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
176
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
177
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'variants'", 'null': 'True', 'to': "orm['catalogue.Product']"}),
178
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductClass']", 'null': 'True'}),
179
+            'product_options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
180
+            'recommended_products': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Product']", 'symmetrical': 'False', 'through': "orm['catalogue.ProductRecommendation']", 'blank': 'True'}),
181
+            'related_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'relations'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
182
+            'score': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'db_index': 'True'}),
183
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'db_index': 'True'}),
184
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
185
+            'upc': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '64', 'null': 'True', 'blank': 'True'})
186
+        },
187
+        'catalogue.productattribute': {
188
+            'Meta': {'ordering': "['code']", 'object_name': 'ProductAttribute'},
189
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
190
+            'entity_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntityType']", 'null': 'True', 'blank': 'True'}),
191
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
192
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
193
+            'option_group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOptionGroup']", 'null': 'True', 'blank': 'True'}),
194
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'attributes'", 'null': 'True', 'to': "orm['catalogue.ProductClass']"}),
195
+            'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
196
+            'type': ('django.db.models.fields.CharField', [], {'default': "'text'", 'max_length': '20'})
197
+        },
198
+        'catalogue.productattributevalue': {
199
+            'Meta': {'object_name': 'ProductAttributeValue'},
200
+            'attribute': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductAttribute']"}),
201
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
202
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"}),
203
+            'value_boolean': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
204
+            'value_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
205
+            'value_entity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntity']", 'null': 'True', 'blank': 'True'}),
206
+            'value_float': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
207
+            'value_integer': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
208
+            'value_option': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOption']", 'null': 'True', 'blank': 'True'}),
209
+            'value_richtext': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
210
+            'value_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
211
+        },
212
+        'catalogue.productcategory': {
213
+            'Meta': {'ordering': "['-is_canonical']", 'object_name': 'ProductCategory'},
214
+            'category': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Category']"}),
215
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
216
+            'is_canonical': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
217
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
218
+        },
219
+        'catalogue.productclass': {
220
+            'Meta': {'ordering': "['name']", 'object_name': 'ProductClass'},
221
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
222
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
223
+            'options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
224
+            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'})
225
+        },
226
+        'catalogue.productrecommendation': {
227
+            'Meta': {'object_name': 'ProductRecommendation'},
228
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
229
+            'primary': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'primary_recommendations'", 'to': "orm['catalogue.Product']"}),
230
+            'ranking': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
231
+            'recommendation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
232
+        },
233
+        'contenttypes.contenttype': {
234
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
235
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
236
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
237
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
238
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
239
+        },
240
+        'offer.benefit': {
241
+            'Meta': {'object_name': 'Benefit'},
242
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
243
+            'max_affected_items': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
244
+            'range': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['offer.Range']", 'null': 'True', 'blank': 'True'}),
245
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
246
+            'value': ('oscar.models.fields.PositiveDecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'})
247
+        },
248
+        'offer.condition': {
249
+            'Meta': {'object_name': 'Condition'},
250
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
251
+            'range': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['offer.Range']"}),
252
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
253
+            'value': ('oscar.models.fields.PositiveDecimalField', [], {'max_digits': '12', 'decimal_places': '2'})
254
+        },
255
+        'offer.conditionaloffer': {
256
+            'Meta': {'ordering': "['-priority']", 'object_name': 'ConditionalOffer'},
257
+            'benefit': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['offer.Benefit']"}),
258
+            'condition': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['offer.Condition']"}),
259
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
260
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
261
+            'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
262
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
263
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
264
+            'offer_type': ('django.db.models.fields.CharField', [], {'default': "'Site'", 'max_length': '128'}),
265
+            'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
266
+            'redirect_url': ('oscar.models.fields.ExtendedURLField', [], {'max_length': '200', 'blank': 'True'}),
267
+            'start_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
268
+            'total_discount': ('django.db.models.fields.DecimalField', [], {'default': "'0.00'", 'max_digits': '12', 'decimal_places': '2'})
269
+        },
270
+        'offer.range': {
271
+            'Meta': {'object_name': 'Range'},
272
+            'classes': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'classes'", 'blank': 'True', 'to': "orm['catalogue.ProductClass']"}),
273
+            'excluded_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'excludes'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
274
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
275
+            'included_categories': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'includes'", 'blank': 'True', 'to': "orm['catalogue.Category']"}),
276
+            'included_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'includes'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
277
+            'includes_all_products': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
278
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'})
279
+        },
280
+        'voucher.voucher': {
281
+            'Meta': {'object_name': 'Voucher'},
282
+            'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'}),
283
+            'date_created': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
284
+            'end_date': ('django.db.models.fields.DateField', [], {}),
285
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
286
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
287
+            'num_basket_additions': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
288
+            'num_orders': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
289
+            'offers': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'vouchers'", 'symmetrical': 'False', 'to': "orm['offer.ConditionalOffer']"}),
290
+            'start_date': ('django.db.models.fields.DateField', [], {}),
291
+            'total_discount': ('django.db.models.fields.DecimalField', [], {'default': "'0.00'", 'max_digits': '12', 'decimal_places': '2'}),
292
+            'usage': ('django.db.models.fields.CharField', [], {'default': "'Multi-use'", 'max_length': '128'})
293
+        }
294
+    }
295
+
296
+    complete_apps = ['basket']

+ 0
- 0
oscar/apps/basket/migrations/__init__.py Прегледај датотеку


+ 399
- 0
oscar/apps/catalogue/migrations/0001_initial.py Прегледај датотеку

@@ -0,0 +1,399 @@
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 model 'ProductRecommendation'
12
+        db.create_table('catalogue_productrecommendation', (
13
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
14
+            ('primary', self.gf('django.db.models.fields.related.ForeignKey')(related_name='primary_recommendations', to=orm['catalogue.Product'])),
15
+            ('recommendation', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['catalogue.Product'])),
16
+            ('ranking', self.gf('django.db.models.fields.PositiveSmallIntegerField')(default=0)),
17
+        ))
18
+        db.send_create_signal('catalogue', ['ProductRecommendation'])
19
+
20
+        # Adding model 'ProductClass'
21
+        db.create_table('catalogue_productclass', (
22
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
23
+            ('name', self.gf('django.db.models.fields.CharField')(max_length=128)),
24
+            ('slug', self.gf('django.db.models.fields.SlugField')(unique=True, max_length=128, db_index=True)),
25
+        ))
26
+        db.send_create_signal('catalogue', ['ProductClass'])
27
+
28
+        # Adding M2M table for field options on 'ProductClass'
29
+        db.create_table('catalogue_productclass_options', (
30
+            ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
31
+            ('productclass', models.ForeignKey(orm['catalogue.productclass'], null=False)),
32
+            ('option', models.ForeignKey(orm['catalogue.option'], null=False))
33
+        ))
34
+        db.create_unique('catalogue_productclass_options', ['productclass_id', 'option_id'])
35
+
36
+        # Adding model 'Category'
37
+        db.create_table('catalogue_category', (
38
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
39
+            ('path', self.gf('django.db.models.fields.CharField')(unique=True, max_length=255)),
40
+            ('depth', self.gf('django.db.models.fields.PositiveIntegerField')()),
41
+            ('numchild', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
42
+            ('name', self.gf('django.db.models.fields.CharField')(max_length=255, db_index=True)),
43
+            ('slug', self.gf('django.db.models.fields.SlugField')(max_length=1024, db_index=True)),
44
+            ('full_name', self.gf('django.db.models.fields.CharField')(max_length=1024, db_index=True)),
45
+        ))
46
+        db.send_create_signal('catalogue', ['Category'])
47
+
48
+        # Adding model 'ProductCategory'
49
+        db.create_table('catalogue_productcategory', (
50
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
51
+            ('product', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['catalogue.Product'])),
52
+            ('category', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['catalogue.Category'])),
53
+            ('is_canonical', self.gf('django.db.models.fields.BooleanField')(default=False, db_index=True)),
54
+        ))
55
+        db.send_create_signal('catalogue', ['ProductCategory'])
56
+
57
+        # Adding model 'Product'
58
+        db.create_table('catalogue_product', (
59
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
60
+            ('upc', self.gf('django.db.models.fields.CharField')(db_index=True, max_length=64, null=True, blank=True)),
61
+            ('parent', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='variants', null=True, to=orm['catalogue.Product'])),
62
+            ('title', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
63
+            ('slug', self.gf('django.db.models.fields.SlugField')(max_length=255, db_index=True)),
64
+            ('description', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
65
+            ('product_class', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['catalogue.ProductClass'], null=True)),
66
+            ('score', self.gf('django.db.models.fields.FloatField')(default=0.0, db_index=True)),
67
+            ('date_created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
68
+            ('date_updated', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, db_index=True, blank=True)),
69
+        ))
70
+        db.send_create_signal('catalogue', ['Product'])
71
+
72
+        # Adding M2M table for field product_options on 'Product'
73
+        db.create_table('catalogue_product_product_options', (
74
+            ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
75
+            ('product', models.ForeignKey(orm['catalogue.product'], null=False)),
76
+            ('option', models.ForeignKey(orm['catalogue.option'], null=False))
77
+        ))
78
+        db.create_unique('catalogue_product_product_options', ['product_id', 'option_id'])
79
+
80
+        # Adding M2M table for field related_products on 'Product'
81
+        db.create_table('catalogue_product_related_products', (
82
+            ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
83
+            ('from_product', models.ForeignKey(orm['catalogue.product'], null=False)),
84
+            ('to_product', models.ForeignKey(orm['catalogue.product'], null=False))
85
+        ))
86
+        db.create_unique('catalogue_product_related_products', ['from_product_id', 'to_product_id'])
87
+
88
+        # Adding model 'ContributorRole'
89
+        db.create_table('catalogue_contributorrole', (
90
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
91
+            ('name', self.gf('django.db.models.fields.CharField')(max_length=50)),
92
+            ('name_plural', self.gf('django.db.models.fields.CharField')(max_length=50)),
93
+            ('slug', self.gf('django.db.models.fields.SlugField')(max_length=50, db_index=True)),
94
+        ))
95
+        db.send_create_signal('catalogue', ['ContributorRole'])
96
+
97
+        # Adding model 'Contributor'
98
+        db.create_table('catalogue_contributor', (
99
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
100
+            ('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
101
+            ('slug', self.gf('django.db.models.fields.SlugField')(max_length=255, db_index=True)),
102
+        ))
103
+        db.send_create_signal('catalogue', ['Contributor'])
104
+
105
+        # Adding model 'ProductContributor'
106
+        db.create_table('catalogue_productcontributor', (
107
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
108
+            ('product', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['catalogue.Product'])),
109
+            ('contributor', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['catalogue.Contributor'])),
110
+            ('role', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['catalogue.ContributorRole'])),
111
+        ))
112
+        db.send_create_signal('catalogue', ['ProductContributor'])
113
+
114
+        # Adding model 'ProductAttribute'
115
+        db.create_table('catalogue_productattribute', (
116
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
117
+            ('product_class', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='attributes', null=True, to=orm['catalogue.ProductClass'])),
118
+            ('name', self.gf('django.db.models.fields.CharField')(max_length=128)),
119
+            ('code', self.gf('django.db.models.fields.SlugField')(max_length=128, db_index=True)),
120
+            ('type', self.gf('django.db.models.fields.CharField')(default='text', max_length=20)),
121
+            ('option_group', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['catalogue.AttributeOptionGroup'], null=True, blank=True)),
122
+            ('entity_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['catalogue.AttributeEntityType'], null=True, blank=True)),
123
+            ('required', self.gf('django.db.models.fields.BooleanField')(default=False)),
124
+        ))
125
+        db.send_create_signal('catalogue', ['ProductAttribute'])
126
+
127
+        # Adding model 'ProductAttributeValue'
128
+        db.create_table('catalogue_productattributevalue', (
129
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
130
+            ('attribute', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['catalogue.ProductAttribute'])),
131
+            ('product', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['catalogue.Product'])),
132
+            ('value_text', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
133
+            ('value_integer', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True)),
134
+            ('value_boolean', self.gf('django.db.models.fields.BooleanField')(default=False)),
135
+            ('value_float', self.gf('django.db.models.fields.FloatField')(null=True, blank=True)),
136
+            ('value_richtext', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
137
+            ('value_date', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
138
+            ('value_option', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['catalogue.AttributeOption'], null=True, blank=True)),
139
+            ('value_entity', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['catalogue.AttributeEntity'], null=True, blank=True)),
140
+        ))
141
+        db.send_create_signal('catalogue', ['ProductAttributeValue'])
142
+
143
+        # Adding model 'AttributeOptionGroup'
144
+        db.create_table('catalogue_attributeoptiongroup', (
145
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
146
+            ('name', self.gf('django.db.models.fields.CharField')(max_length=128)),
147
+        ))
148
+        db.send_create_signal('catalogue', ['AttributeOptionGroup'])
149
+
150
+        # Adding model 'AttributeOption'
151
+        db.create_table('catalogue_attributeoption', (
152
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
153
+            ('group', self.gf('django.db.models.fields.related.ForeignKey')(related_name='options', to=orm['catalogue.AttributeOptionGroup'])),
154
+            ('option', self.gf('django.db.models.fields.CharField')(max_length=255)),
155
+        ))
156
+        db.send_create_signal('catalogue', ['AttributeOption'])
157
+
158
+        # Adding model 'AttributeEntity'
159
+        db.create_table('catalogue_attributeentity', (
160
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
161
+            ('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
162
+            ('slug', self.gf('django.db.models.fields.SlugField')(db_index=True, max_length=255, blank=True)),
163
+            ('type', self.gf('django.db.models.fields.related.ForeignKey')(related_name='entities', to=orm['catalogue.AttributeEntityType'])),
164
+        ))
165
+        db.send_create_signal('catalogue', ['AttributeEntity'])
166
+
167
+        # Adding model 'AttributeEntityType'
168
+        db.create_table('catalogue_attributeentitytype', (
169
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
170
+            ('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
171
+            ('slug', self.gf('django.db.models.fields.SlugField')(db_index=True, max_length=255, blank=True)),
172
+        ))
173
+        db.send_create_signal('catalogue', ['AttributeEntityType'])
174
+
175
+        # Adding model 'Option'
176
+        db.create_table('catalogue_option', (
177
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
178
+            ('name', self.gf('django.db.models.fields.CharField')(max_length=128)),
179
+            ('code', self.gf('django.db.models.fields.SlugField')(max_length=128, db_index=True)),
180
+            ('type', self.gf('django.db.models.fields.CharField')(default='Required', max_length=128)),
181
+        ))
182
+        db.send_create_signal('catalogue', ['Option'])
183
+
184
+        # Adding model 'ProductImage'
185
+        db.create_table('catalogue_productimage', (
186
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
187
+            ('product', self.gf('django.db.models.fields.related.ForeignKey')(related_name='images', to=orm['catalogue.Product'])),
188
+            ('original', self.gf('django.db.models.fields.files.ImageField')(max_length=100)),
189
+            ('caption', self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True)),
190
+            ('display_order', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
191
+            ('date_created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
192
+        ))
193
+        db.send_create_signal('catalogue', ['ProductImage'])
194
+
195
+        # Adding unique constraint on 'ProductImage', fields ['product', 'display_order']
196
+        db.create_unique('catalogue_productimage', ['product_id', 'display_order'])
197
+
198
+
199
+    def backwards(self, orm):
200
+        
201
+        # Removing unique constraint on 'ProductImage', fields ['product', 'display_order']
202
+        db.delete_unique('catalogue_productimage', ['product_id', 'display_order'])
203
+
204
+        # Deleting model 'ProductRecommendation'
205
+        db.delete_table('catalogue_productrecommendation')
206
+
207
+        # Deleting model 'ProductClass'
208
+        db.delete_table('catalogue_productclass')
209
+
210
+        # Removing M2M table for field options on 'ProductClass'
211
+        db.delete_table('catalogue_productclass_options')
212
+
213
+        # Deleting model 'Category'
214
+        db.delete_table('catalogue_category')
215
+
216
+        # Deleting model 'ProductCategory'
217
+        db.delete_table('catalogue_productcategory')
218
+
219
+        # Deleting model 'Product'
220
+        db.delete_table('catalogue_product')
221
+
222
+        # Removing M2M table for field product_options on 'Product'
223
+        db.delete_table('catalogue_product_product_options')
224
+
225
+        # Removing M2M table for field related_products on 'Product'
226
+        db.delete_table('catalogue_product_related_products')
227
+
228
+        # Deleting model 'ContributorRole'
229
+        db.delete_table('catalogue_contributorrole')
230
+
231
+        # Deleting model 'Contributor'
232
+        db.delete_table('catalogue_contributor')
233
+
234
+        # Deleting model 'ProductContributor'
235
+        db.delete_table('catalogue_productcontributor')
236
+
237
+        # Deleting model 'ProductAttribute'
238
+        db.delete_table('catalogue_productattribute')
239
+
240
+        # Deleting model 'ProductAttributeValue'
241
+        db.delete_table('catalogue_productattributevalue')
242
+
243
+        # Deleting model 'AttributeOptionGroup'
244
+        db.delete_table('catalogue_attributeoptiongroup')
245
+
246
+        # Deleting model 'AttributeOption'
247
+        db.delete_table('catalogue_attributeoption')
248
+
249
+        # Deleting model 'AttributeEntity'
250
+        db.delete_table('catalogue_attributeentity')
251
+
252
+        # Deleting model 'AttributeEntityType'
253
+        db.delete_table('catalogue_attributeentitytype')
254
+
255
+        # Deleting model 'Option'
256
+        db.delete_table('catalogue_option')
257
+
258
+        # Deleting model 'ProductImage'
259
+        db.delete_table('catalogue_productimage')
260
+
261
+
262
+    models = {
263
+        'catalogue.attributeentity': {
264
+            'Meta': {'object_name': 'AttributeEntity'},
265
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
266
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
267
+            'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'}),
268
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'entities'", 'to': "orm['catalogue.AttributeEntityType']"})
269
+        },
270
+        'catalogue.attributeentitytype': {
271
+            'Meta': {'object_name': 'AttributeEntityType'},
272
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
273
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
274
+            'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'})
275
+        },
276
+        'catalogue.attributeoption': {
277
+            'Meta': {'object_name': 'AttributeOption'},
278
+            'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'options'", 'to': "orm['catalogue.AttributeOptionGroup']"}),
279
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
280
+            'option': ('django.db.models.fields.CharField', [], {'max_length': '255'})
281
+        },
282
+        'catalogue.attributeoptiongroup': {
283
+            'Meta': {'object_name': 'AttributeOptionGroup'},
284
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
285
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
286
+        },
287
+        'catalogue.category': {
288
+            'Meta': {'ordering': "['name']", 'object_name': 'Category'},
289
+            'depth': ('django.db.models.fields.PositiveIntegerField', [], {}),
290
+            'full_name': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'db_index': 'True'}),
291
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
292
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
293
+            'numchild': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
294
+            'path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
295
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '1024', 'db_index': 'True'})
296
+        },
297
+        'catalogue.contributor': {
298
+            'Meta': {'object_name': 'Contributor'},
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', [], {'max_length': '255', 'db_index': 'True'})
302
+        },
303
+        'catalogue.contributorrole': {
304
+            'Meta': {'object_name': 'ContributorRole'},
305
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
306
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
307
+            'name_plural': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
308
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'db_index': 'True'})
309
+        },
310
+        'catalogue.option': {
311
+            'Meta': {'object_name': 'Option'},
312
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
313
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
314
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
315
+            'type': ('django.db.models.fields.CharField', [], {'default': "'Required'", 'max_length': '128'})
316
+        },
317
+        'catalogue.product': {
318
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'Product'},
319
+            'attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.ProductAttribute']", 'through': "orm['catalogue.ProductAttributeValue']", 'symmetrical': 'False'}),
320
+            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Category']", 'through': "orm['catalogue.ProductCategory']", 'symmetrical': 'False'}),
321
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
322
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
323
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
324
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
325
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'variants'", 'null': 'True', 'to': "orm['catalogue.Product']"}),
326
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductClass']", 'null': 'True'}),
327
+            'product_options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
328
+            'recommended_products': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Product']", 'symmetrical': 'False', 'through': "orm['catalogue.ProductRecommendation']", 'blank': 'True'}),
329
+            'related_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'relations'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
330
+            'score': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'db_index': 'True'}),
331
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'db_index': 'True'}),
332
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
333
+            'upc': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '64', 'null': 'True', 'blank': 'True'})
334
+        },
335
+        'catalogue.productattribute': {
336
+            'Meta': {'ordering': "['code']", 'object_name': 'ProductAttribute'},
337
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
338
+            'entity_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntityType']", 'null': 'True', 'blank': 'True'}),
339
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
340
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
341
+            'option_group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOptionGroup']", 'null': 'True', 'blank': 'True'}),
342
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'attributes'", 'null': 'True', 'to': "orm['catalogue.ProductClass']"}),
343
+            'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
344
+            'type': ('django.db.models.fields.CharField', [], {'default': "'text'", 'max_length': '20'})
345
+        },
346
+        'catalogue.productattributevalue': {
347
+            'Meta': {'object_name': 'ProductAttributeValue'},
348
+            'attribute': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductAttribute']"}),
349
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
350
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"}),
351
+            'value_boolean': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
352
+            'value_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
353
+            'value_entity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntity']", 'null': 'True', 'blank': 'True'}),
354
+            'value_float': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
355
+            'value_integer': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
356
+            'value_option': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOption']", 'null': 'True', 'blank': 'True'}),
357
+            'value_richtext': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
358
+            'value_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
359
+        },
360
+        'catalogue.productcategory': {
361
+            'Meta': {'ordering': "['-is_canonical']", 'object_name': 'ProductCategory'},
362
+            'category': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Category']"}),
363
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
364
+            'is_canonical': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
365
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
366
+        },
367
+        'catalogue.productclass': {
368
+            'Meta': {'ordering': "['name']", 'object_name': 'ProductClass'},
369
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
370
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
371
+            'options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
372
+            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'})
373
+        },
374
+        'catalogue.productcontributor': {
375
+            'Meta': {'object_name': 'ProductContributor'},
376
+            'contributor': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Contributor']"}),
377
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
378
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"}),
379
+            'role': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ContributorRole']"})
380
+        },
381
+        'catalogue.productimage': {
382
+            'Meta': {'ordering': "['display_order']", 'unique_together': "(('product', 'display_order'),)", 'object_name': 'ProductImage'},
383
+            'caption': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
384
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
385
+            'display_order': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
386
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
387
+            'original': ('django.db.models.fields.files.ImageField', [], {'max_length': '100'}),
388
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'images'", 'to': "orm['catalogue.Product']"})
389
+        },
390
+        'catalogue.productrecommendation': {
391
+            'Meta': {'object_name': 'ProductRecommendation'},
392
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
393
+            'primary': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'primary_recommendations'", 'to': "orm['catalogue.Product']"}),
394
+            'ranking': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
395
+            'recommendation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
396
+        }
397
+    }
398
+
399
+    complete_apps = ['catalogue']

+ 173
- 0
oscar/apps/catalogue/migrations/0002_auto__add_field_product_status__add_field_category_description__add_fi.py Прегледај датотеку

@@ -0,0 +1,173 @@
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 'Product.status'
12
+        db.add_column('catalogue_product', 'status', self.gf('django.db.models.fields.CharField')(db_index=True, max_length=128, null=True, blank=True), keep_default=False)
13
+
14
+        # Adding field 'Category.description'
15
+        db.add_column('catalogue_category', 'description', self.gf('django.db.models.fields.TextField')(null=True, blank=True), keep_default=False)
16
+
17
+        # Adding field 'Category.image'
18
+        db.add_column('catalogue_category', 'image', self.gf('django.db.models.fields.files.ImageField')(max_length=100, null=True, blank=True), keep_default=False)
19
+
20
+
21
+    def backwards(self, orm):
22
+        
23
+        # Deleting field 'Product.status'
24
+        db.delete_column('catalogue_product', 'status')
25
+
26
+        # Deleting field 'Category.description'
27
+        db.delete_column('catalogue_category', 'description')
28
+
29
+        # Deleting field 'Category.image'
30
+        db.delete_column('catalogue_category', 'image')
31
+
32
+
33
+    models = {
34
+        'catalogue.attributeentity': {
35
+            'Meta': {'object_name': 'AttributeEntity'},
36
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
37
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
38
+            'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'}),
39
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'entities'", 'to': "orm['catalogue.AttributeEntityType']"})
40
+        },
41
+        'catalogue.attributeentitytype': {
42
+            'Meta': {'object_name': 'AttributeEntityType'},
43
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
44
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
45
+            'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'})
46
+        },
47
+        'catalogue.attributeoption': {
48
+            'Meta': {'object_name': 'AttributeOption'},
49
+            'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'options'", 'to': "orm['catalogue.AttributeOptionGroup']"}),
50
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
51
+            'option': ('django.db.models.fields.CharField', [], {'max_length': '255'})
52
+        },
53
+        'catalogue.attributeoptiongroup': {
54
+            'Meta': {'object_name': 'AttributeOptionGroup'},
55
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
56
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
57
+        },
58
+        'catalogue.category': {
59
+            'Meta': {'ordering': "['name']", 'object_name': 'Category'},
60
+            'depth': ('django.db.models.fields.PositiveIntegerField', [], {}),
61
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
62
+            'full_name': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'db_index': 'True'}),
63
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
64
+            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
65
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
66
+            'numchild': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
67
+            'path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
68
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '1024', 'db_index': 'True'})
69
+        },
70
+        'catalogue.contributor': {
71
+            'Meta': {'object_name': 'Contributor'},
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', 'db_index': 'True'})
75
+        },
76
+        'catalogue.contributorrole': {
77
+            'Meta': {'object_name': 'ContributorRole'},
78
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
79
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
80
+            'name_plural': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
81
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'db_index': 'True'})
82
+        },
83
+        'catalogue.option': {
84
+            'Meta': {'object_name': 'Option'},
85
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
86
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
87
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
88
+            'type': ('django.db.models.fields.CharField', [], {'default': "'Required'", 'max_length': '128'})
89
+        },
90
+        'catalogue.product': {
91
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'Product'},
92
+            'attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.ProductAttribute']", 'through': "orm['catalogue.ProductAttributeValue']", 'symmetrical': 'False'}),
93
+            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Category']", 'through': "orm['catalogue.ProductCategory']", 'symmetrical': 'False'}),
94
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
95
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
96
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
97
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
98
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'variants'", 'null': 'True', 'to': "orm['catalogue.Product']"}),
99
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductClass']", 'null': 'True'}),
100
+            'product_options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
101
+            'recommended_products': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Product']", 'symmetrical': 'False', 'through': "orm['catalogue.ProductRecommendation']", 'blank': 'True'}),
102
+            'related_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'relations'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
103
+            'score': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'db_index': 'True'}),
104
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'db_index': 'True'}),
105
+            'status': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'null': 'True', 'blank': 'True'}),
106
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
107
+            'upc': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '64', 'null': 'True', 'blank': 'True'})
108
+        },
109
+        'catalogue.productattribute': {
110
+            'Meta': {'ordering': "['code']", 'object_name': 'ProductAttribute'},
111
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
112
+            'entity_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntityType']", 'null': 'True', 'blank': 'True'}),
113
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
114
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
115
+            'option_group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOptionGroup']", 'null': 'True', 'blank': 'True'}),
116
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'attributes'", 'null': 'True', 'to': "orm['catalogue.ProductClass']"}),
117
+            'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
118
+            'type': ('django.db.models.fields.CharField', [], {'default': "'text'", 'max_length': '20'})
119
+        },
120
+        'catalogue.productattributevalue': {
121
+            'Meta': {'object_name': 'ProductAttributeValue'},
122
+            'attribute': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductAttribute']"}),
123
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
124
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attribute_values'", 'to': "orm['catalogue.Product']"}),
125
+            'value_boolean': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
126
+            'value_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
127
+            'value_entity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntity']", 'null': 'True', 'blank': 'True'}),
128
+            'value_float': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
129
+            'value_integer': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
130
+            'value_option': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOption']", 'null': 'True', 'blank': 'True'}),
131
+            'value_richtext': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
132
+            'value_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
133
+        },
134
+        'catalogue.productcategory': {
135
+            'Meta': {'ordering': "['-is_canonical']", 'object_name': 'ProductCategory'},
136
+            'category': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Category']"}),
137
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
138
+            'is_canonical': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
139
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
140
+        },
141
+        'catalogue.productclass': {
142
+            'Meta': {'ordering': "['name']", 'object_name': 'ProductClass'},
143
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
144
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
145
+            'options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
146
+            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'})
147
+        },
148
+        'catalogue.productcontributor': {
149
+            'Meta': {'object_name': 'ProductContributor'},
150
+            'contributor': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Contributor']"}),
151
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
152
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"}),
153
+            'role': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ContributorRole']"})
154
+        },
155
+        'catalogue.productimage': {
156
+            'Meta': {'ordering': "['display_order']", 'unique_together': "(('product', 'display_order'),)", 'object_name': 'ProductImage'},
157
+            'caption': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
158
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
159
+            'display_order': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
160
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
161
+            'original': ('django.db.models.fields.files.ImageField', [], {'max_length': '100'}),
162
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'images'", 'to': "orm['catalogue.Product']"})
163
+        },
164
+        'catalogue.productrecommendation': {
165
+            'Meta': {'object_name': 'ProductRecommendation'},
166
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
167
+            'primary': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'primary_recommendations'", 'to': "orm['catalogue.Product']"}),
168
+            'ranking': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
169
+            'recommendation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
170
+        }
171
+    }
172
+
173
+    complete_apps = ['catalogue']

+ 0
- 0
oscar/apps/catalogue/migrations/__init__.py Прегледај датотеку


+ 21
- 0
oscar/apps/checkout/migrations/0001_initial.py Прегледај датотеку

@@ -0,0 +1,21 @@
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
+        pass
11
+
12
+
13
+    def backwards(self, orm):
14
+        pass
15
+
16
+
17
+    models = {
18
+        
19
+    }
20
+
21
+    complete_apps = ['checkout']

+ 0
- 0
oscar/apps/checkout/migrations/__init__.py Прегледај датотеку


+ 108
- 0
oscar/apps/customer/migrations/0001_initial.py Прегледај датотеку

@@ -0,0 +1,108 @@
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 model 'Email'
12
+        db.create_table('customer_email', (
13
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
14
+            ('user', self.gf('django.db.models.fields.related.ForeignKey')(related_name='emails', to=orm['auth.User'])),
15
+            ('subject', self.gf('django.db.models.fields.TextField')(max_length=255)),
16
+            ('body_text', self.gf('django.db.models.fields.TextField')()),
17
+            ('body_html', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
18
+            ('date_sent', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
19
+        ))
20
+        db.send_create_signal('customer', ['Email'])
21
+
22
+        # Adding model 'CommunicationEventType'
23
+        db.create_table('customer_communicationeventtype', (
24
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
25
+            ('code', self.gf('django.db.models.fields.SlugField')(max_length=128, db_index=True)),
26
+            ('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
27
+            ('category', self.gf('django.db.models.fields.CharField')(default='Order related', max_length=255)),
28
+            ('email_subject_template', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)),
29
+            ('email_body_template', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
30
+            ('email_body_html_template', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
31
+            ('sms_template', self.gf('django.db.models.fields.CharField')(max_length=170, blank=True)),
32
+            ('date_created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
33
+            ('date_updated', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
34
+        ))
35
+        db.send_create_signal('customer', ['CommunicationEventType'])
36
+
37
+
38
+    def backwards(self, orm):
39
+        
40
+        # Deleting model 'Email'
41
+        db.delete_table('customer_email')
42
+
43
+        # Deleting model 'CommunicationEventType'
44
+        db.delete_table('customer_communicationeventtype')
45
+
46
+
47
+    models = {
48
+        'auth.group': {
49
+            'Meta': {'object_name': 'Group'},
50
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
51
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
52
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
53
+        },
54
+        'auth.permission': {
55
+            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
56
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
57
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
58
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
59
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
60
+        },
61
+        'auth.user': {
62
+            'Meta': {'object_name': 'User'},
63
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
64
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
65
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
66
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
67
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
68
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
69
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
70
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
71
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
72
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
73
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
74
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
75
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
76
+        },
77
+        'contenttypes.contenttype': {
78
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
79
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
80
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
81
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
82
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
83
+        },
84
+        'customer.communicationeventtype': {
85
+            'Meta': {'object_name': 'CommunicationEventType'},
86
+            'category': ('django.db.models.fields.CharField', [], {'default': "'Order related'", 'max_length': '255'}),
87
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
88
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
89
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
90
+            'email_body_html_template': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
91
+            'email_body_template': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
92
+            'email_subject_template': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
93
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
94
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
95
+            'sms_template': ('django.db.models.fields.CharField', [], {'max_length': '170', 'blank': 'True'})
96
+        },
97
+        'customer.email': {
98
+            'Meta': {'object_name': 'Email'},
99
+            'body_html': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
100
+            'body_text': ('django.db.models.fields.TextField', [], {}),
101
+            'date_sent': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
102
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
103
+            'subject': ('django.db.models.fields.TextField', [], {'max_length': '255'}),
104
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emails'", 'to': "orm['auth.User']"})
105
+        }
106
+    }
107
+
108
+    complete_apps = ['customer']

+ 0
- 0
oscar/apps/customer/migrations/__init__.py Прегледај датотеку


+ 162
- 0
oscar/apps/discount/migrations/0001_initial.py Прегледај датотеку

@@ -0,0 +1,162 @@
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 model 'DiscountOffer'
12
+        db.create_table('discount_discountoffer', (
13
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
14
+            ('name', self.gf('django.db.models.fields.CharField')(max_length=128)),
15
+            ('description', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
16
+            ('start_date', self.gf('django.db.models.fields.DateField')()),
17
+            ('end_date', self.gf('django.db.models.fields.DateField')()),
18
+            ('discount_type', self.gf('django.db.models.fields.CharField')(default='Percentage', max_length=128)),
19
+            ('discount_value', self.gf('django.db.models.fields.DecimalField')(max_digits=12, decimal_places=2)),
20
+            ('date_created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
21
+        ))
22
+        db.send_create_signal('discount', ['DiscountOffer'])
23
+
24
+        # Adding M2M table for field products on 'DiscountOffer'
25
+        db.create_table('discount_discountoffer_products', (
26
+            ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
27
+            ('discountoffer', models.ForeignKey(orm['discount.discountoffer'], null=False)),
28
+            ('product', models.ForeignKey(orm['catalogue.product'], null=False))
29
+        ))
30
+        db.create_unique('discount_discountoffer_products', ['discountoffer_id', 'product_id'])
31
+
32
+
33
+    def backwards(self, orm):
34
+        
35
+        # Deleting model 'DiscountOffer'
36
+        db.delete_table('discount_discountoffer')
37
+
38
+        # Removing M2M table for field products on 'DiscountOffer'
39
+        db.delete_table('discount_discountoffer_products')
40
+
41
+
42
+    models = {
43
+        'catalogue.attributeentity': {
44
+            'Meta': {'object_name': 'AttributeEntity'},
45
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
46
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
47
+            'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'}),
48
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'entities'", 'to': "orm['catalogue.AttributeEntityType']"})
49
+        },
50
+        'catalogue.attributeentitytype': {
51
+            'Meta': {'object_name': 'AttributeEntityType'},
52
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
53
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
54
+            'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'})
55
+        },
56
+        'catalogue.attributeoption': {
57
+            'Meta': {'object_name': 'AttributeOption'},
58
+            'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'options'", 'to': "orm['catalogue.AttributeOptionGroup']"}),
59
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
60
+            'option': ('django.db.models.fields.CharField', [], {'max_length': '255'})
61
+        },
62
+        'catalogue.attributeoptiongroup': {
63
+            'Meta': {'object_name': 'AttributeOptionGroup'},
64
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
65
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
66
+        },
67
+        'catalogue.category': {
68
+            'Meta': {'ordering': "['name']", 'object_name': 'Category'},
69
+            'depth': ('django.db.models.fields.PositiveIntegerField', [], {}),
70
+            'full_name': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'db_index': 'True'}),
71
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
72
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
73
+            'numchild': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
74
+            'path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
75
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '1024', 'db_index': 'True'})
76
+        },
77
+        'catalogue.option': {
78
+            'Meta': {'object_name': 'Option'},
79
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
80
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
81
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
82
+            'type': ('django.db.models.fields.CharField', [], {'default': "'Required'", 'max_length': '128'})
83
+        },
84
+        'catalogue.product': {
85
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'Product'},
86
+            'attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.ProductAttribute']", 'through': "orm['catalogue.ProductAttributeValue']", 'symmetrical': 'False'}),
87
+            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Category']", 'through': "orm['catalogue.ProductCategory']", 'symmetrical': 'False'}),
88
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
89
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
90
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
91
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
92
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'variants'", 'null': 'True', 'to': "orm['catalogue.Product']"}),
93
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductClass']", 'null': 'True'}),
94
+            'product_options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
95
+            'recommended_products': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Product']", 'symmetrical': 'False', 'through': "orm['catalogue.ProductRecommendation']", 'blank': 'True'}),
96
+            'related_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'relations'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
97
+            'score': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'db_index': 'True'}),
98
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'db_index': 'True'}),
99
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
100
+            'upc': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '64', 'null': 'True', 'blank': 'True'})
101
+        },
102
+        'catalogue.productattribute': {
103
+            'Meta': {'ordering': "['code']", 'object_name': 'ProductAttribute'},
104
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
105
+            'entity_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntityType']", 'null': 'True', 'blank': 'True'}),
106
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
107
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
108
+            'option_group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOptionGroup']", 'null': 'True', 'blank': 'True'}),
109
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'attributes'", 'null': 'True', 'to': "orm['catalogue.ProductClass']"}),
110
+            'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
111
+            'type': ('django.db.models.fields.CharField', [], {'default': "'text'", 'max_length': '20'})
112
+        },
113
+        'catalogue.productattributevalue': {
114
+            'Meta': {'object_name': 'ProductAttributeValue'},
115
+            'attribute': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductAttribute']"}),
116
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
117
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"}),
118
+            'value_boolean': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
119
+            'value_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
120
+            'value_entity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntity']", 'null': 'True', 'blank': 'True'}),
121
+            'value_float': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
122
+            'value_integer': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
123
+            'value_option': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOption']", 'null': 'True', 'blank': 'True'}),
124
+            'value_richtext': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
125
+            'value_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
126
+        },
127
+        'catalogue.productcategory': {
128
+            'Meta': {'ordering': "['-is_canonical']", 'object_name': 'ProductCategory'},
129
+            'category': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Category']"}),
130
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
131
+            'is_canonical': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
132
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
133
+        },
134
+        'catalogue.productclass': {
135
+            'Meta': {'ordering': "['name']", 'object_name': 'ProductClass'},
136
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
137
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
138
+            'options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
139
+            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'})
140
+        },
141
+        'catalogue.productrecommendation': {
142
+            'Meta': {'object_name': 'ProductRecommendation'},
143
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
144
+            'primary': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'primary_recommendations'", 'to': "orm['catalogue.Product']"}),
145
+            'ranking': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
146
+            'recommendation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
147
+        },
148
+        'discount.discountoffer': {
149
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'DiscountOffer'},
150
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
151
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
152
+            'discount_type': ('django.db.models.fields.CharField', [], {'default': "'Percentage'", 'max_length': '128'}),
153
+            'discount_value': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
154
+            'end_date': ('django.db.models.fields.DateField', [], {}),
155
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
156
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
157
+            'products': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Product']", 'symmetrical': 'False'}),
158
+            'start_date': ('django.db.models.fields.DateField', [], {})
159
+        }
160
+    }
161
+
162
+    complete_apps = ['discount']

+ 0
- 0
oscar/apps/discount/migrations/__init__.py Прегледај датотеку


+ 263
- 0
oscar/apps/offer/migrations/0001_initial.py Прегледај датотеку

@@ -0,0 +1,263 @@
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 model 'ConditionalOffer'
12
+        db.create_table('offer_conditionaloffer', (
13
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
14
+            ('name', self.gf('django.db.models.fields.CharField')(max_length=128)),
15
+            ('description', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
16
+            ('offer_type', self.gf('django.db.models.fields.CharField')(default='Site', max_length=128)),
17
+            ('condition', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['offer.Condition'])),
18
+            ('benefit', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['offer.Benefit'])),
19
+            ('start_date', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
20
+            ('end_date', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
21
+            ('priority', self.gf('django.db.models.fields.IntegerField')(default=0)),
22
+            ('total_discount', self.gf('django.db.models.fields.DecimalField')(default='0.00', max_digits=12, decimal_places=2)),
23
+            ('date_created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
24
+            ('redirect_url', self.gf('oscar.models.fields.ExtendedURLField')(max_length=200, blank=True)),
25
+        ))
26
+        db.send_create_signal('offer', ['ConditionalOffer'])
27
+
28
+        # Adding model 'Condition'
29
+        db.create_table('offer_condition', (
30
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
31
+            ('range', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['offer.Range'])),
32
+            ('type', self.gf('django.db.models.fields.CharField')(max_length=128)),
33
+            ('value', self.gf('oscar.models.fields.PositiveDecimalField')(max_digits=12, decimal_places=2)),
34
+        ))
35
+        db.send_create_signal('offer', ['Condition'])
36
+
37
+        # Adding model 'Benefit'
38
+        db.create_table('offer_benefit', (
39
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
40
+            ('range', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['offer.Range'], null=True, blank=True)),
41
+            ('type', self.gf('django.db.models.fields.CharField')(max_length=128)),
42
+            ('value', self.gf('oscar.models.fields.PositiveDecimalField')(null=True, max_digits=12, decimal_places=2, blank=True)),
43
+            ('max_affected_items', self.gf('django.db.models.fields.PositiveIntegerField')(null=True, blank=True)),
44
+        ))
45
+        db.send_create_signal('offer', ['Benefit'])
46
+
47
+        # Adding model 'Range'
48
+        db.create_table('offer_range', (
49
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
50
+            ('name', self.gf('django.db.models.fields.CharField')(unique=True, max_length=128)),
51
+            ('includes_all_products', self.gf('django.db.models.fields.BooleanField')(default=False)),
52
+        ))
53
+        db.send_create_signal('offer', ['Range'])
54
+
55
+        # Adding M2M table for field included_products on 'Range'
56
+        db.create_table('offer_range_included_products', (
57
+            ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
58
+            ('range', models.ForeignKey(orm['offer.range'], null=False)),
59
+            ('product', models.ForeignKey(orm['catalogue.product'], null=False))
60
+        ))
61
+        db.create_unique('offer_range_included_products', ['range_id', 'product_id'])
62
+
63
+        # Adding M2M table for field excluded_products on 'Range'
64
+        db.create_table('offer_range_excluded_products', (
65
+            ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
66
+            ('range', models.ForeignKey(orm['offer.range'], null=False)),
67
+            ('product', models.ForeignKey(orm['catalogue.product'], null=False))
68
+        ))
69
+        db.create_unique('offer_range_excluded_products', ['range_id', 'product_id'])
70
+
71
+        # Adding M2M table for field classes on 'Range'
72
+        db.create_table('offer_range_classes', (
73
+            ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
74
+            ('range', models.ForeignKey(orm['offer.range'], null=False)),
75
+            ('productclass', models.ForeignKey(orm['catalogue.productclass'], null=False))
76
+        ))
77
+        db.create_unique('offer_range_classes', ['range_id', 'productclass_id'])
78
+
79
+        # Adding M2M table for field included_categories on 'Range'
80
+        db.create_table('offer_range_included_categories', (
81
+            ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
82
+            ('range', models.ForeignKey(orm['offer.range'], null=False)),
83
+            ('category', models.ForeignKey(orm['catalogue.category'], null=False))
84
+        ))
85
+        db.create_unique('offer_range_included_categories', ['range_id', 'category_id'])
86
+
87
+
88
+    def backwards(self, orm):
89
+        
90
+        # Deleting model 'ConditionalOffer'
91
+        db.delete_table('offer_conditionaloffer')
92
+
93
+        # Deleting model 'Condition'
94
+        db.delete_table('offer_condition')
95
+
96
+        # Deleting model 'Benefit'
97
+        db.delete_table('offer_benefit')
98
+
99
+        # Deleting model 'Range'
100
+        db.delete_table('offer_range')
101
+
102
+        # Removing M2M table for field included_products on 'Range'
103
+        db.delete_table('offer_range_included_products')
104
+
105
+        # Removing M2M table for field excluded_products on 'Range'
106
+        db.delete_table('offer_range_excluded_products')
107
+
108
+        # Removing M2M table for field classes on 'Range'
109
+        db.delete_table('offer_range_classes')
110
+
111
+        # Removing M2M table for field included_categories on 'Range'
112
+        db.delete_table('offer_range_included_categories')
113
+
114
+
115
+    models = {
116
+        'catalogue.attributeentity': {
117
+            'Meta': {'object_name': 'AttributeEntity'},
118
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
119
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
120
+            'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'}),
121
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'entities'", 'to': "orm['catalogue.AttributeEntityType']"})
122
+        },
123
+        'catalogue.attributeentitytype': {
124
+            'Meta': {'object_name': 'AttributeEntityType'},
125
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
126
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
127
+            'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'})
128
+        },
129
+        'catalogue.attributeoption': {
130
+            'Meta': {'object_name': 'AttributeOption'},
131
+            'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'options'", 'to': "orm['catalogue.AttributeOptionGroup']"}),
132
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
133
+            'option': ('django.db.models.fields.CharField', [], {'max_length': '255'})
134
+        },
135
+        'catalogue.attributeoptiongroup': {
136
+            'Meta': {'object_name': 'AttributeOptionGroup'},
137
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
138
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
139
+        },
140
+        'catalogue.category': {
141
+            'Meta': {'ordering': "['name']", 'object_name': 'Category'},
142
+            'depth': ('django.db.models.fields.PositiveIntegerField', [], {}),
143
+            'full_name': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'db_index': 'True'}),
144
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
145
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
146
+            'numchild': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
147
+            'path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
148
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '1024', 'db_index': 'True'})
149
+        },
150
+        'catalogue.option': {
151
+            'Meta': {'object_name': 'Option'},
152
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
153
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
154
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
155
+            'type': ('django.db.models.fields.CharField', [], {'default': "'Required'", 'max_length': '128'})
156
+        },
157
+        'catalogue.product': {
158
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'Product'},
159
+            'attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.ProductAttribute']", 'through': "orm['catalogue.ProductAttributeValue']", 'symmetrical': 'False'}),
160
+            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Category']", 'through': "orm['catalogue.ProductCategory']", 'symmetrical': 'False'}),
161
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
162
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
163
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
164
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
165
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'variants'", 'null': 'True', 'to': "orm['catalogue.Product']"}),
166
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductClass']", 'null': 'True'}),
167
+            'product_options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
168
+            'recommended_products': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Product']", 'symmetrical': 'False', 'through': "orm['catalogue.ProductRecommendation']", 'blank': 'True'}),
169
+            'related_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'relations'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
170
+            'score': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'db_index': 'True'}),
171
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'db_index': 'True'}),
172
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
173
+            'upc': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '64', 'null': 'True', 'blank': 'True'})
174
+        },
175
+        'catalogue.productattribute': {
176
+            'Meta': {'ordering': "['code']", 'object_name': 'ProductAttribute'},
177
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
178
+            'entity_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntityType']", 'null': 'True', 'blank': 'True'}),
179
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
180
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
181
+            'option_group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOptionGroup']", 'null': 'True', 'blank': 'True'}),
182
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'attributes'", 'null': 'True', 'to': "orm['catalogue.ProductClass']"}),
183
+            'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
184
+            'type': ('django.db.models.fields.CharField', [], {'default': "'text'", 'max_length': '20'})
185
+        },
186
+        'catalogue.productattributevalue': {
187
+            'Meta': {'object_name': 'ProductAttributeValue'},
188
+            'attribute': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductAttribute']"}),
189
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
190
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"}),
191
+            'value_boolean': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
192
+            'value_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
193
+            'value_entity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntity']", 'null': 'True', 'blank': 'True'}),
194
+            'value_float': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
195
+            'value_integer': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
196
+            'value_option': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOption']", 'null': 'True', 'blank': 'True'}),
197
+            'value_richtext': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
198
+            'value_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
199
+        },
200
+        'catalogue.productcategory': {
201
+            'Meta': {'ordering': "['-is_canonical']", 'object_name': 'ProductCategory'},
202
+            'category': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Category']"}),
203
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
204
+            'is_canonical': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
205
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
206
+        },
207
+        'catalogue.productclass': {
208
+            'Meta': {'ordering': "['name']", 'object_name': 'ProductClass'},
209
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
210
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
211
+            'options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
212
+            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'})
213
+        },
214
+        'catalogue.productrecommendation': {
215
+            'Meta': {'object_name': 'ProductRecommendation'},
216
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
217
+            'primary': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'primary_recommendations'", 'to': "orm['catalogue.Product']"}),
218
+            'ranking': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
219
+            'recommendation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
220
+        },
221
+        'offer.benefit': {
222
+            'Meta': {'object_name': 'Benefit'},
223
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
224
+            'max_affected_items': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
225
+            'range': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['offer.Range']", 'null': 'True', 'blank': 'True'}),
226
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
227
+            'value': ('oscar.models.fields.PositiveDecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'})
228
+        },
229
+        'offer.condition': {
230
+            'Meta': {'object_name': 'Condition'},
231
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
232
+            'range': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['offer.Range']"}),
233
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
234
+            'value': ('oscar.models.fields.PositiveDecimalField', [], {'max_digits': '12', 'decimal_places': '2'})
235
+        },
236
+        'offer.conditionaloffer': {
237
+            'Meta': {'ordering': "['-priority']", 'object_name': 'ConditionalOffer'},
238
+            'benefit': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['offer.Benefit']"}),
239
+            'condition': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['offer.Condition']"}),
240
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
241
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
242
+            'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
243
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
244
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
245
+            'offer_type': ('django.db.models.fields.CharField', [], {'default': "'Site'", 'max_length': '128'}),
246
+            'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
247
+            'redirect_url': ('oscar.models.fields.ExtendedURLField', [], {'max_length': '200', 'blank': 'True'}),
248
+            'start_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
249
+            'total_discount': ('django.db.models.fields.DecimalField', [], {'default': "'0.00'", 'max_digits': '12', 'decimal_places': '2'})
250
+        },
251
+        'offer.range': {
252
+            'Meta': {'object_name': 'Range'},
253
+            'classes': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'classes'", 'blank': 'True', 'to': "orm['catalogue.ProductClass']"}),
254
+            'excluded_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'excludes'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
255
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
256
+            'included_categories': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'includes'", 'blank': 'True', 'to': "orm['catalogue.Category']"}),
257
+            'included_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'includes'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
258
+            'includes_all_products': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
259
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'})
260
+        }
261
+    }
262
+
263
+    complete_apps = ['offer']

+ 0
- 0
oscar/apps/offer/migrations/__init__.py Прегледај датотеку


+ 655
- 0
oscar/apps/order/migrations/0001_initial.py Прегледај датотеку

@@ -0,0 +1,655 @@
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 model 'PaymentEventQuantity'
12
+        db.create_table('order_paymenteventquantity', (
13
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
14
+            ('event', self.gf('django.db.models.fields.related.ForeignKey')(related_name='line_quantities', to=orm['order.PaymentEvent'])),
15
+            ('line', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['order.Line'])),
16
+            ('quantity', self.gf('django.db.models.fields.PositiveIntegerField')()),
17
+        ))
18
+        db.send_create_signal('order', ['PaymentEventQuantity'])
19
+
20
+        # Adding model 'ShippingEventQuantity'
21
+        db.create_table('order_shippingeventquantity', (
22
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
23
+            ('event', self.gf('django.db.models.fields.related.ForeignKey')(related_name='line_quantities', to=orm['order.ShippingEvent'])),
24
+            ('line', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['order.Line'])),
25
+            ('quantity', self.gf('django.db.models.fields.PositiveIntegerField')()),
26
+        ))
27
+        db.send_create_signal('order', ['ShippingEventQuantity'])
28
+
29
+        # Adding model 'Order'
30
+        db.create_table('order_order', (
31
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
32
+            ('number', self.gf('django.db.models.fields.CharField')(max_length=128, db_index=True)),
33
+            ('site', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['sites.Site'])),
34
+            ('basket', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['basket.Basket'], null=True, blank=True)),
35
+            ('user', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='orders', null=True, to=orm['auth.User'])),
36
+            ('billing_address', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['order.BillingAddress'], null=True, blank=True)),
37
+            ('total_incl_tax', self.gf('django.db.models.fields.DecimalField')(max_digits=12, decimal_places=2)),
38
+            ('total_excl_tax', self.gf('django.db.models.fields.DecimalField')(max_digits=12, decimal_places=2)),
39
+            ('shipping_incl_tax', self.gf('django.db.models.fields.DecimalField')(default=0, max_digits=12, decimal_places=2)),
40
+            ('shipping_excl_tax', self.gf('django.db.models.fields.DecimalField')(default=0, max_digits=12, decimal_places=2)),
41
+            ('shipping_address', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['order.ShippingAddress'], null=True, blank=True)),
42
+            ('shipping_method', self.gf('django.db.models.fields.CharField')(max_length=128, null=True, blank=True)),
43
+            ('status', self.gf('django.db.models.fields.CharField')(max_length=100, null=True, blank=True)),
44
+            ('date_placed', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, db_index=True, blank=True)),
45
+        ))
46
+        db.send_create_signal('order', ['Order'])
47
+
48
+        # Adding model 'OrderNote'
49
+        db.create_table('order_ordernote', (
50
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
51
+            ('order', self.gf('django.db.models.fields.related.ForeignKey')(related_name='notes', to=orm['order.Order'])),
52
+            ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], null=True)),
53
+            ('note_type', self.gf('django.db.models.fields.CharField')(max_length=128, null=True)),
54
+            ('message', self.gf('django.db.models.fields.TextField')()),
55
+            ('date', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
56
+        ))
57
+        db.send_create_signal('order', ['OrderNote'])
58
+
59
+        # Adding model 'CommunicationEvent'
60
+        db.create_table('order_communicationevent', (
61
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
62
+            ('order', self.gf('django.db.models.fields.related.ForeignKey')(related_name='communication_events', to=orm['order.Order'])),
63
+            ('type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['customer.CommunicationEventType'])),
64
+            ('date', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
65
+        ))
66
+        db.send_create_signal('order', ['CommunicationEvent'])
67
+
68
+        # Adding model 'ShippingAddress'
69
+        db.create_table('order_shippingaddress', (
70
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
71
+            ('title', self.gf('django.db.models.fields.CharField')(max_length=64, null=True, blank=True)),
72
+            ('first_name', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
73
+            ('last_name', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)),
74
+            ('line1', self.gf('django.db.models.fields.CharField')(max_length=255)),
75
+            ('line2', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
76
+            ('line3', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
77
+            ('line4', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
78
+            ('state', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
79
+            ('postcode', self.gf('django.db.models.fields.CharField')(max_length=64)),
80
+            ('country', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['address.Country'])),
81
+            ('search_text', self.gf('django.db.models.fields.CharField')(max_length=1000)),
82
+            ('phone_number', self.gf('django.db.models.fields.CharField')(max_length=32, null=True, blank=True)),
83
+            ('notes', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
84
+        ))
85
+        db.send_create_signal('order', ['ShippingAddress'])
86
+
87
+        # Adding model 'BillingAddress'
88
+        db.create_table('order_billingaddress', (
89
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
90
+            ('title', self.gf('django.db.models.fields.CharField')(max_length=64, null=True, blank=True)),
91
+            ('first_name', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
92
+            ('last_name', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)),
93
+            ('line1', self.gf('django.db.models.fields.CharField')(max_length=255)),
94
+            ('line2', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
95
+            ('line3', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
96
+            ('line4', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
97
+            ('state', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
98
+            ('postcode', self.gf('django.db.models.fields.CharField')(max_length=64)),
99
+            ('country', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['address.Country'])),
100
+            ('search_text', self.gf('django.db.models.fields.CharField')(max_length=1000)),
101
+        ))
102
+        db.send_create_signal('order', ['BillingAddress'])
103
+
104
+        # Adding model 'Line'
105
+        db.create_table('order_line', (
106
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
107
+            ('order', self.gf('django.db.models.fields.related.ForeignKey')(related_name='lines', to=orm['order.Order'])),
108
+            ('partner', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='order_lines', null=True, to=orm['partner.Partner'])),
109
+            ('partner_name', self.gf('django.db.models.fields.CharField')(max_length=128)),
110
+            ('partner_sku', self.gf('django.db.models.fields.CharField')(max_length=128)),
111
+            ('title', self.gf('django.db.models.fields.CharField')(max_length=255)),
112
+            ('product', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['catalogue.Product'], null=True, blank=True)),
113
+            ('quantity', self.gf('django.db.models.fields.PositiveIntegerField')(default=1)),
114
+            ('line_price_incl_tax', self.gf('django.db.models.fields.DecimalField')(max_digits=12, decimal_places=2)),
115
+            ('line_price_excl_tax', self.gf('django.db.models.fields.DecimalField')(max_digits=12, decimal_places=2)),
116
+            ('line_price_before_discounts_incl_tax', self.gf('django.db.models.fields.DecimalField')(max_digits=12, decimal_places=2)),
117
+            ('line_price_before_discounts_excl_tax', self.gf('django.db.models.fields.DecimalField')(max_digits=12, decimal_places=2)),
118
+            ('unit_cost_price', self.gf('django.db.models.fields.DecimalField')(null=True, max_digits=12, decimal_places=2, blank=True)),
119
+            ('unit_price_incl_tax', self.gf('django.db.models.fields.DecimalField')(null=True, max_digits=12, decimal_places=2, blank=True)),
120
+            ('unit_price_excl_tax', self.gf('django.db.models.fields.DecimalField')(null=True, max_digits=12, decimal_places=2, blank=True)),
121
+            ('unit_retail_price', self.gf('django.db.models.fields.DecimalField')(null=True, max_digits=12, decimal_places=2, blank=True)),
122
+            ('partner_line_reference', self.gf('django.db.models.fields.CharField')(max_length=128, null=True, blank=True)),
123
+            ('partner_line_notes', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
124
+            ('status', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
125
+            ('est_dispatch_date', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
126
+        ))
127
+        db.send_create_signal('order', ['Line'])
128
+
129
+        # Adding model 'LinePrice'
130
+        db.create_table('order_lineprice', (
131
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
132
+            ('order', self.gf('django.db.models.fields.related.ForeignKey')(related_name='line_prices', to=orm['order.Order'])),
133
+            ('line', self.gf('django.db.models.fields.related.ForeignKey')(related_name='prices', to=orm['order.Line'])),
134
+            ('quantity', self.gf('django.db.models.fields.PositiveIntegerField')(default=1)),
135
+            ('price_incl_tax', self.gf('django.db.models.fields.DecimalField')(max_digits=12, decimal_places=2)),
136
+            ('price_excl_tax', self.gf('django.db.models.fields.DecimalField')(max_digits=12, decimal_places=2)),
137
+            ('shipping_incl_tax', self.gf('django.db.models.fields.DecimalField')(default=0, max_digits=12, decimal_places=2)),
138
+            ('shipping_excl_tax', self.gf('django.db.models.fields.DecimalField')(default=0, max_digits=12, decimal_places=2)),
139
+        ))
140
+        db.send_create_signal('order', ['LinePrice'])
141
+
142
+        # Adding model 'LineAttribute'
143
+        db.create_table('order_lineattribute', (
144
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
145
+            ('line', self.gf('django.db.models.fields.related.ForeignKey')(related_name='attributes', to=orm['order.Line'])),
146
+            ('option', self.gf('django.db.models.fields.related.ForeignKey')(related_name='line_attributes', null=True, to=orm['catalogue.Option'])),
147
+            ('type', self.gf('django.db.models.fields.CharField')(max_length=128)),
148
+            ('value', self.gf('django.db.models.fields.CharField')(max_length=255)),
149
+        ))
150
+        db.send_create_signal('order', ['LineAttribute'])
151
+
152
+        # Adding model 'ShippingEvent'
153
+        db.create_table('order_shippingevent', (
154
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
155
+            ('order', self.gf('django.db.models.fields.related.ForeignKey')(related_name='shipping_events', to=orm['order.Order'])),
156
+            ('event_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['order.ShippingEventType'])),
157
+            ('notes', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
158
+            ('date', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
159
+        ))
160
+        db.send_create_signal('order', ['ShippingEvent'])
161
+
162
+        # Adding model 'ShippingEventType'
163
+        db.create_table('order_shippingeventtype', (
164
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
165
+            ('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
166
+            ('code', self.gf('django.db.models.fields.SlugField')(max_length=128, db_index=True)),
167
+            ('is_required', self.gf('django.db.models.fields.BooleanField')(default=True)),
168
+            ('sequence_number', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
169
+        ))
170
+        db.send_create_signal('order', ['ShippingEventType'])
171
+
172
+        # Adding model 'PaymentEvent'
173
+        db.create_table('order_paymentevent', (
174
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
175
+            ('order', self.gf('django.db.models.fields.related.ForeignKey')(related_name='payment_events', to=orm['order.Order'])),
176
+            ('event_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['order.PaymentEventType'])),
177
+            ('date', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
178
+        ))
179
+        db.send_create_signal('order', ['PaymentEvent'])
180
+
181
+        # Adding model 'PaymentEventType'
182
+        db.create_table('order_paymenteventtype', (
183
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
184
+            ('name', self.gf('django.db.models.fields.CharField')(max_length=128)),
185
+            ('code', self.gf('django.db.models.fields.SlugField')(max_length=128, db_index=True)),
186
+            ('sequence_number', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
187
+        ))
188
+        db.send_create_signal('order', ['PaymentEventType'])
189
+
190
+        # Adding model 'OrderDiscount'
191
+        db.create_table('order_orderdiscount', (
192
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
193
+            ('order', self.gf('django.db.models.fields.related.ForeignKey')(related_name='discounts', to=orm['order.Order'])),
194
+            ('offer', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['offer.ConditionalOffer'], null=True)),
195
+            ('voucher', self.gf('django.db.models.fields.related.ForeignKey')(related_name='discount_vouchers', null=True, to=orm['voucher.Voucher'])),
196
+            ('voucher_code', self.gf('django.db.models.fields.CharField')(max_length=128, null=True, db_index=True)),
197
+            ('amount', self.gf('django.db.models.fields.DecimalField')(default=0, max_digits=12, decimal_places=2)),
198
+        ))
199
+        db.send_create_signal('order', ['OrderDiscount'])
200
+
201
+
202
+    def backwards(self, orm):
203
+        
204
+        # Deleting model 'PaymentEventQuantity'
205
+        db.delete_table('order_paymenteventquantity')
206
+
207
+        # Deleting model 'ShippingEventQuantity'
208
+        db.delete_table('order_shippingeventquantity')
209
+
210
+        # Deleting model 'Order'
211
+        db.delete_table('order_order')
212
+
213
+        # Deleting model 'OrderNote'
214
+        db.delete_table('order_ordernote')
215
+
216
+        # Deleting model 'CommunicationEvent'
217
+        db.delete_table('order_communicationevent')
218
+
219
+        # Deleting model 'ShippingAddress'
220
+        db.delete_table('order_shippingaddress')
221
+
222
+        # Deleting model 'BillingAddress'
223
+        db.delete_table('order_billingaddress')
224
+
225
+        # Deleting model 'Line'
226
+        db.delete_table('order_line')
227
+
228
+        # Deleting model 'LinePrice'
229
+        db.delete_table('order_lineprice')
230
+
231
+        # Deleting model 'LineAttribute'
232
+        db.delete_table('order_lineattribute')
233
+
234
+        # Deleting model 'ShippingEvent'
235
+        db.delete_table('order_shippingevent')
236
+
237
+        # Deleting model 'ShippingEventType'
238
+        db.delete_table('order_shippingeventtype')
239
+
240
+        # Deleting model 'PaymentEvent'
241
+        db.delete_table('order_paymentevent')
242
+
243
+        # Deleting model 'PaymentEventType'
244
+        db.delete_table('order_paymenteventtype')
245
+
246
+        # Deleting model 'OrderDiscount'
247
+        db.delete_table('order_orderdiscount')
248
+
249
+
250
+    models = {
251
+        'address.country': {
252
+            'Meta': {'ordering': "('-is_highlighted', 'name')", 'object_name': 'Country'},
253
+            'is_highlighted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
254
+            'is_shipping_country': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
255
+            'iso_3166_1_a2': ('django.db.models.fields.CharField', [], {'max_length': '2', 'primary_key': 'True'}),
256
+            'iso_3166_1_a3': ('django.db.models.fields.CharField', [], {'max_length': '3', 'null': 'True', 'db_index': 'True'}),
257
+            'iso_3166_1_numeric': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'db_index': 'True'}),
258
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
259
+            'printable_name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
260
+        },
261
+        'auth.group': {
262
+            'Meta': {'object_name': 'Group'},
263
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
264
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
265
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
266
+        },
267
+        'auth.permission': {
268
+            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
269
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
270
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
271
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
272
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
273
+        },
274
+        'auth.user': {
275
+            'Meta': {'object_name': 'User'},
276
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
277
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
278
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
279
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
280
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
281
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
282
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
283
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
284
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
285
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
286
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
287
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
288
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
289
+        },
290
+        'basket.basket': {
291
+            'Meta': {'object_name': 'Basket'},
292
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
293
+            'date_merged': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
294
+            'date_submitted': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
295
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
296
+            'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'baskets'", 'null': 'True', 'to': "orm['auth.User']"}),
297
+            'status': ('django.db.models.fields.CharField', [], {'default': "'Open'", 'max_length': '128'}),
298
+            'vouchers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['voucher.Voucher']", 'null': 'True', 'symmetrical': 'False'})
299
+        },
300
+        'catalogue.attributeentity': {
301
+            'Meta': {'object_name': 'AttributeEntity'},
302
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
303
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
304
+            'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'}),
305
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'entities'", 'to': "orm['catalogue.AttributeEntityType']"})
306
+        },
307
+        'catalogue.attributeentitytype': {
308
+            'Meta': {'object_name': 'AttributeEntityType'},
309
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
310
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
311
+            'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'})
312
+        },
313
+        'catalogue.attributeoption': {
314
+            'Meta': {'object_name': 'AttributeOption'},
315
+            'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'options'", 'to': "orm['catalogue.AttributeOptionGroup']"}),
316
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
317
+            'option': ('django.db.models.fields.CharField', [], {'max_length': '255'})
318
+        },
319
+        'catalogue.attributeoptiongroup': {
320
+            'Meta': {'object_name': 'AttributeOptionGroup'},
321
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
322
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
323
+        },
324
+        'catalogue.category': {
325
+            'Meta': {'ordering': "['name']", 'object_name': 'Category'},
326
+            'depth': ('django.db.models.fields.PositiveIntegerField', [], {}),
327
+            'full_name': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'db_index': 'True'}),
328
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
329
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
330
+            'numchild': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
331
+            'path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
332
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '1024', 'db_index': 'True'})
333
+        },
334
+        'catalogue.option': {
335
+            'Meta': {'object_name': 'Option'},
336
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
337
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
338
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
339
+            'type': ('django.db.models.fields.CharField', [], {'default': "'Required'", 'max_length': '128'})
340
+        },
341
+        'catalogue.product': {
342
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'Product'},
343
+            'attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.ProductAttribute']", 'through': "orm['catalogue.ProductAttributeValue']", 'symmetrical': 'False'}),
344
+            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Category']", 'through': "orm['catalogue.ProductCategory']", 'symmetrical': 'False'}),
345
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
346
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
347
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
348
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
349
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'variants'", 'null': 'True', 'to': "orm['catalogue.Product']"}),
350
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductClass']", 'null': 'True'}),
351
+            'product_options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
352
+            'recommended_products': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Product']", 'symmetrical': 'False', 'through': "orm['catalogue.ProductRecommendation']", 'blank': 'True'}),
353
+            'related_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'relations'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
354
+            'score': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'db_index': 'True'}),
355
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'db_index': 'True'}),
356
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
357
+            'upc': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '64', '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', [], {'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
+        'offer.benefit': {
426
+            'Meta': {'object_name': 'Benefit'},
427
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
428
+            'max_affected_items': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
429
+            'range': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['offer.Range']", 'null': 'True', 'blank': 'True'}),
430
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
431
+            'value': ('oscar.models.fields.PositiveDecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'})
432
+        },
433
+        'offer.condition': {
434
+            'Meta': {'object_name': 'Condition'},
435
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
436
+            'range': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['offer.Range']"}),
437
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
438
+            'value': ('oscar.models.fields.PositiveDecimalField', [], {'max_digits': '12', 'decimal_places': '2'})
439
+        },
440
+        'offer.conditionaloffer': {
441
+            'Meta': {'ordering': "['-priority']", 'object_name': 'ConditionalOffer'},
442
+            'benefit': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['offer.Benefit']"}),
443
+            'condition': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['offer.Condition']"}),
444
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
445
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
446
+            'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
447
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
448
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
449
+            'offer_type': ('django.db.models.fields.CharField', [], {'default': "'Site'", 'max_length': '128'}),
450
+            'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
451
+            'redirect_url': ('oscar.models.fields.ExtendedURLField', [], {'max_length': '200', 'blank': 'True'}),
452
+            'start_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
453
+            'total_discount': ('django.db.models.fields.DecimalField', [], {'default': "'0.00'", 'max_digits': '12', 'decimal_places': '2'})
454
+        },
455
+        'offer.range': {
456
+            'Meta': {'object_name': 'Range'},
457
+            'classes': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'classes'", 'blank': 'True', 'to': "orm['catalogue.ProductClass']"}),
458
+            'excluded_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'excludes'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
459
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
460
+            'included_categories': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'includes'", 'blank': 'True', 'to': "orm['catalogue.Category']"}),
461
+            'included_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'includes'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
462
+            'includes_all_products': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
463
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'})
464
+        },
465
+        'order.billingaddress': {
466
+            'Meta': {'object_name': 'BillingAddress'},
467
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
468
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
469
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
470
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
471
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
472
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
473
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
474
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
475
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
476
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
477
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
478
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
479
+        },
480
+        'order.communicationevent': {
481
+            'Meta': {'object_name': 'CommunicationEvent'},
482
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
483
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
484
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'communication_events'", 'to': "orm['order.Order']"}),
485
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['customer.CommunicationEventType']"})
486
+        },
487
+        'order.line': {
488
+            'Meta': {'object_name': 'Line'},
489
+            'est_dispatch_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
490
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
491
+            'line_price_before_discounts_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
492
+            'line_price_before_discounts_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
493
+            'line_price_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
494
+            'line_price_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
495
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lines'", 'to': "orm['order.Order']"}),
496
+            'partner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'order_lines'", 'null': 'True', 'to': "orm['partner.Partner']"}),
497
+            'partner_line_notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
498
+            'partner_line_reference': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
499
+            'partner_name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
500
+            'partner_sku': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
501
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']", 'null': 'True', 'blank': 'True'}),
502
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
503
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
504
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
505
+            'unit_cost_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
506
+            'unit_price_excl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
507
+            'unit_price_incl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
508
+            'unit_retail_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'})
509
+        },
510
+        'order.lineattribute': {
511
+            'Meta': {'object_name': 'LineAttribute'},
512
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
513
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attributes'", 'to': "orm['order.Line']"}),
514
+            'option': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_attributes'", 'null': 'True', 'to': "orm['catalogue.Option']"}),
515
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
516
+            'value': ('django.db.models.fields.CharField', [], {'max_length': '255'})
517
+        },
518
+        'order.lineprice': {
519
+            'Meta': {'object_name': 'LinePrice'},
520
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
521
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'prices'", 'to': "orm['order.Line']"}),
522
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_prices'", 'to': "orm['order.Order']"}),
523
+            'price_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
524
+            'price_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
525
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
526
+            'shipping_excl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
527
+            'shipping_incl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'})
528
+        },
529
+        'order.order': {
530
+            'Meta': {'ordering': "['-date_placed']", 'object_name': 'Order'},
531
+            'basket': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['basket.Basket']", 'null': 'True', 'blank': 'True'}),
532
+            'billing_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.BillingAddress']", 'null': 'True', 'blank': 'True'}),
533
+            'date_placed': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}),
534
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
535
+            'number': ('django.db.models.fields.CharField', [], {'max_length': '128', 'db_index': 'True'}),
536
+            'shipping_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.ShippingAddress']", 'null': 'True', 'blank': 'True'}),
537
+            'shipping_excl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
538
+            'shipping_incl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
539
+            'shipping_method': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
540
+            'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['sites.Site']"}),
541
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
542
+            'total_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
543
+            'total_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
544
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'orders'", 'null': 'True', 'to': "orm['auth.User']"})
545
+        },
546
+        'order.orderdiscount': {
547
+            'Meta': {'object_name': 'OrderDiscount'},
548
+            'amount': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
549
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
550
+            'offer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['offer.ConditionalOffer']", 'null': 'True'}),
551
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'discounts'", 'to': "orm['order.Order']"}),
552
+            'voucher': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'discount_vouchers'", 'null': 'True', 'to': "orm['voucher.Voucher']"}),
553
+            'voucher_code': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'db_index': 'True'})
554
+        },
555
+        'order.ordernote': {
556
+            'Meta': {'object_name': 'OrderNote'},
557
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
558
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
559
+            'message': ('django.db.models.fields.TextField', [], {}),
560
+            'note_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
561
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notes'", 'to': "orm['order.Order']"}),
562
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'})
563
+        },
564
+        'order.paymentevent': {
565
+            'Meta': {'object_name': 'PaymentEvent'},
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.PaymentEventType']"}),
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.PaymentEventQuantity']", 'symmetrical': 'False'}),
570
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'payment_events'", 'to': "orm['order.Order']"})
571
+        },
572
+        'order.paymenteventquantity': {
573
+            'Meta': {'object_name': 'PaymentEventQuantity'},
574
+            'event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_quantities'", 'to': "orm['order.PaymentEvent']"}),
575
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
576
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.Line']"}),
577
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {})
578
+        },
579
+        'order.paymenteventtype': {
580
+            'Meta': {'ordering': "('sequence_number',)", 'object_name': 'PaymentEventType'},
581
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
582
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
583
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
584
+            'sequence_number': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
585
+        },
586
+        'order.shippingaddress': {
587
+            'Meta': {'object_name': 'ShippingAddress'},
588
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
589
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
590
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
591
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
592
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
593
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
594
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
595
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
596
+            'notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
597
+            'phone_number': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
598
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
599
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
600
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
601
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
602
+        },
603
+        'order.shippingevent': {
604
+            'Meta': {'ordering': "['-date']", 'object_name': 'ShippingEvent'},
605
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
606
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.ShippingEventType']"}),
607
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
608
+            'lines': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['order.Line']", 'through': "orm['order.ShippingEventQuantity']", 'symmetrical': 'False'}),
609
+            'notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
610
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'shipping_events'", 'to': "orm['order.Order']"})
611
+        },
612
+        'order.shippingeventquantity': {
613
+            'Meta': {'object_name': 'ShippingEventQuantity'},
614
+            'event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_quantities'", 'to': "orm['order.ShippingEvent']"}),
615
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
616
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.Line']"}),
617
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {})
618
+        },
619
+        'order.shippingeventtype': {
620
+            'Meta': {'ordering': "('sequence_number',)", 'object_name': 'ShippingEventType'},
621
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
622
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
623
+            'is_required': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
624
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
625
+            'sequence_number': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
626
+        },
627
+        'partner.partner': {
628
+            'Meta': {'object_name': 'Partner'},
629
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
630
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
631
+            'users': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'partners'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['auth.User']"})
632
+        },
633
+        'sites.site': {
634
+            'Meta': {'ordering': "('domain',)", 'object_name': 'Site', 'db_table': "'django_site'"},
635
+            'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
636
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
637
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
638
+        },
639
+        'voucher.voucher': {
640
+            'Meta': {'object_name': 'Voucher'},
641
+            'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'}),
642
+            'date_created': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
643
+            'end_date': ('django.db.models.fields.DateField', [], {}),
644
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
645
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
646
+            'num_basket_additions': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
647
+            'num_orders': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
648
+            'offers': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'vouchers'", 'symmetrical': 'False', 'to': "orm['offer.ConditionalOffer']"}),
649
+            'start_date': ('django.db.models.fields.DateField', [], {}),
650
+            'total_discount': ('django.db.models.fields.DecimalField', [], {'default': "'0.00'", 'max_digits': '12', 'decimal_places': '2'}),
651
+            'usage': ('django.db.models.fields.CharField', [], {'default': "'Multi-use'", 'max_length': '128'})
652
+        }
653
+    }
654
+
655
+    complete_apps = ['order']

+ 435
- 0
oscar/apps/order/migrations/0002_auto__del_field_communicationevent_type__add_field_communicationevent_.py Прегледај датотеку

@@ -0,0 +1,435 @@
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
+        # Deleting field 'CommunicationEvent.type'
12
+        db.delete_column('order_communicationevent', 'type_id')
13
+
14
+        # Adding field 'CommunicationEvent.event_type'
15
+        db.add_column('order_communicationevent', 'event_type', self.gf('django.db.models.fields.related.ForeignKey')(default=None, to=orm['customer.CommunicationEventType']), keep_default=False)
16
+
17
+
18
+    def backwards(self, orm):
19
+        
20
+        # User chose to not deal with backwards NULL issues for 'CommunicationEvent.type'
21
+        raise RuntimeError("Cannot reverse this migration. 'CommunicationEvent.type' and its values cannot be restored.")
22
+
23
+        # Deleting field 'CommunicationEvent.event_type'
24
+        db.delete_column('order_communicationevent', 'event_type_id')
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
+        'basket.basket': {
68
+            'Meta': {'object_name': 'Basket'},
69
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
70
+            'date_merged': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
71
+            'date_submitted': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
72
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
73
+            'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'baskets'", 'null': 'True', 'to': "orm['auth.User']"}),
74
+            'status': ('django.db.models.fields.CharField', [], {'default': "'Open'", 'max_length': '128'}),
75
+            'vouchers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['voucher.Voucher']", 'null': 'True', 'symmetrical': 'False'})
76
+        },
77
+        'catalogue.attributeentity': {
78
+            'Meta': {'object_name': 'AttributeEntity'},
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', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'}),
82
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'entities'", 'to': "orm['catalogue.AttributeEntityType']"})
83
+        },
84
+        'catalogue.attributeentitytype': {
85
+            'Meta': {'object_name': 'AttributeEntityType'},
86
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
87
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
88
+            'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'})
89
+        },
90
+        'catalogue.attributeoption': {
91
+            'Meta': {'object_name': 'AttributeOption'},
92
+            'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'options'", 'to': "orm['catalogue.AttributeOptionGroup']"}),
93
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
94
+            'option': ('django.db.models.fields.CharField', [], {'max_length': '255'})
95
+        },
96
+        'catalogue.attributeoptiongroup': {
97
+            'Meta': {'object_name': 'AttributeOptionGroup'},
98
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
99
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
100
+        },
101
+        'catalogue.category': {
102
+            'Meta': {'ordering': "['name']", 'object_name': 'Category'},
103
+            'depth': ('django.db.models.fields.PositiveIntegerField', [], {}),
104
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
105
+            'full_name': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'db_index': 'True'}),
106
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
107
+            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
108
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
109
+            'numchild': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
110
+            'path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
111
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '1024', 'db_index': 'True'})
112
+        },
113
+        'catalogue.option': {
114
+            'Meta': {'object_name': 'Option'},
115
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
116
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
117
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
118
+            'type': ('django.db.models.fields.CharField', [], {'default': "'Required'", 'max_length': '128'})
119
+        },
120
+        'catalogue.product': {
121
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'Product'},
122
+            'attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.ProductAttribute']", 'through': "orm['catalogue.ProductAttributeValue']", 'symmetrical': 'False'}),
123
+            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Category']", 'through': "orm['catalogue.ProductCategory']", 'symmetrical': 'False'}),
124
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
125
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
126
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
127
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
128
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'variants'", 'null': 'True', 'to': "orm['catalogue.Product']"}),
129
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductClass']", 'null': 'True'}),
130
+            'product_options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
131
+            'recommended_products': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Product']", 'symmetrical': 'False', 'through': "orm['catalogue.ProductRecommendation']", 'blank': 'True'}),
132
+            'related_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'relations'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
133
+            'score': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'db_index': 'True'}),
134
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'db_index': 'True'}),
135
+            'status': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'null': 'True', 'blank': 'True'}),
136
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
137
+            'upc': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '64', 'null': 'True', 'blank': 'True'})
138
+        },
139
+        'catalogue.productattribute': {
140
+            'Meta': {'ordering': "['code']", 'object_name': 'ProductAttribute'},
141
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
142
+            'entity_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntityType']", 'null': 'True', 'blank': 'True'}),
143
+            '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': "orm['catalogue.AttributeOptionGroup']", 'null': 'True', 'blank': 'True'}),
146
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'attributes'", 'null': 'True', 'to': "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
+        'catalogue.productattributevalue': {
151
+            'Meta': {'object_name': 'ProductAttributeValue'},
152
+            'attribute': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductAttribute']"}),
153
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
154
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attribute_values'", 'to': "orm['catalogue.Product']"}),
155
+            'value_boolean': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
156
+            'value_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
157
+            'value_entity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntity']", 'null': 'True', 'blank': 'True'}),
158
+            'value_float': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
159
+            'value_integer': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
160
+            'value_option': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOption']", 'null': 'True', 'blank': 'True'}),
161
+            'value_richtext': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
162
+            'value_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
163
+        },
164
+        'catalogue.productcategory': {
165
+            'Meta': {'ordering': "['-is_canonical']", 'object_name': 'ProductCategory'},
166
+            'category': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Category']"}),
167
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
168
+            'is_canonical': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
169
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
170
+        },
171
+        'catalogue.productclass': {
172
+            'Meta': {'ordering': "['name']", 'object_name': 'ProductClass'},
173
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
174
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
175
+            'options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
176
+            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'})
177
+        },
178
+        'catalogue.productrecommendation': {
179
+            'Meta': {'object_name': 'ProductRecommendation'},
180
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
181
+            'primary': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'primary_recommendations'", 'to': "orm['catalogue.Product']"}),
182
+            'ranking': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
183
+            'recommendation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
184
+        },
185
+        'contenttypes.contenttype': {
186
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
187
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
188
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
189
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
190
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
191
+        },
192
+        'customer.communicationeventtype': {
193
+            'Meta': {'object_name': 'CommunicationEventType'},
194
+            'category': ('django.db.models.fields.CharField', [], {'default': "'Order related'", 'max_length': '255'}),
195
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
196
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
197
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
198
+            'email_body_html_template': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
199
+            'email_body_template': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
200
+            'email_subject_template': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
201
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
202
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
203
+            'sms_template': ('django.db.models.fields.CharField', [], {'max_length': '170', 'blank': 'True'})
204
+        },
205
+        'offer.benefit': {
206
+            'Meta': {'object_name': 'Benefit'},
207
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
208
+            'max_affected_items': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
209
+            'range': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['offer.Range']", 'null': 'True', 'blank': 'True'}),
210
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
211
+            'value': ('oscar.models.fields.PositiveDecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'})
212
+        },
213
+        'offer.condition': {
214
+            'Meta': {'object_name': 'Condition'},
215
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
216
+            'range': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['offer.Range']"}),
217
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
218
+            'value': ('oscar.models.fields.PositiveDecimalField', [], {'max_digits': '12', 'decimal_places': '2'})
219
+        },
220
+        'offer.conditionaloffer': {
221
+            'Meta': {'ordering': "['-priority']", 'object_name': 'ConditionalOffer'},
222
+            'benefit': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['offer.Benefit']"}),
223
+            'condition': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['offer.Condition']"}),
224
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
225
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
226
+            'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
227
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
228
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
229
+            'offer_type': ('django.db.models.fields.CharField', [], {'default': "'Site'", 'max_length': '128'}),
230
+            'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
231
+            'redirect_url': ('oscar.models.fields.ExtendedURLField', [], {'max_length': '200', 'blank': 'True'}),
232
+            'start_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
233
+            'total_discount': ('django.db.models.fields.DecimalField', [], {'default': "'0.00'", 'max_digits': '12', 'decimal_places': '2'})
234
+        },
235
+        'offer.range': {
236
+            'Meta': {'object_name': 'Range'},
237
+            'classes': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'classes'", 'blank': 'True', 'to': "orm['catalogue.ProductClass']"}),
238
+            'excluded_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'excludes'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
239
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
240
+            'included_categories': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'includes'", 'blank': 'True', 'to': "orm['catalogue.Category']"}),
241
+            'included_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'includes'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
242
+            'includes_all_products': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
243
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'})
244
+        },
245
+        'order.billingaddress': {
246
+            'Meta': {'object_name': 'BillingAddress'},
247
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
248
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
249
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
250
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
251
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
252
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
253
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
254
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
255
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
256
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
257
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
258
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
259
+        },
260
+        'order.communicationevent': {
261
+            'Meta': {'object_name': 'CommunicationEvent'},
262
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
263
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['customer.CommunicationEventType']"}),
264
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
265
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'communication_events'", 'to': "orm['order.Order']"})
266
+        },
267
+        'order.line': {
268
+            'Meta': {'object_name': 'Line'},
269
+            'est_dispatch_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
270
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
271
+            'line_price_before_discounts_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
272
+            'line_price_before_discounts_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
273
+            'line_price_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
274
+            'line_price_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
275
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lines'", 'to': "orm['order.Order']"}),
276
+            'partner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'order_lines'", 'null': 'True', 'to': "orm['partner.Partner']"}),
277
+            'partner_line_notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
278
+            'partner_line_reference': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
279
+            'partner_name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
280
+            'partner_sku': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
281
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']", 'null': 'True', 'blank': 'True'}),
282
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
283
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
284
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
285
+            'unit_cost_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
286
+            'unit_price_excl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
287
+            'unit_price_incl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
288
+            'unit_retail_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'})
289
+        },
290
+        'order.lineattribute': {
291
+            'Meta': {'object_name': 'LineAttribute'},
292
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
293
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'attributes'", 'to': "orm['order.Line']"}),
294
+            'option': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_attributes'", 'null': 'True', 'to': "orm['catalogue.Option']"}),
295
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
296
+            'value': ('django.db.models.fields.CharField', [], {'max_length': '255'})
297
+        },
298
+        'order.lineprice': {
299
+            'Meta': {'object_name': 'LinePrice'},
300
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
301
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'prices'", 'to': "orm['order.Line']"}),
302
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_prices'", 'to': "orm['order.Order']"}),
303
+            'price_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
304
+            'price_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
305
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
306
+            'shipping_excl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
307
+            'shipping_incl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'})
308
+        },
309
+        'order.order': {
310
+            'Meta': {'ordering': "['-date_placed']", 'object_name': 'Order'},
311
+            'basket': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['basket.Basket']", 'null': 'True', 'blank': 'True'}),
312
+            'billing_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.BillingAddress']", 'null': 'True', 'blank': 'True'}),
313
+            'date_placed': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}),
314
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
315
+            'number': ('django.db.models.fields.CharField', [], {'max_length': '128', 'db_index': 'True'}),
316
+            'shipping_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.ShippingAddress']", 'null': 'True', 'blank': 'True'}),
317
+            'shipping_excl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
318
+            'shipping_incl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
319
+            'shipping_method': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
320
+            'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['sites.Site']"}),
321
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
322
+            'total_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
323
+            'total_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
324
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'orders'", 'null': 'True', 'to': "orm['auth.User']"})
325
+        },
326
+        'order.orderdiscount': {
327
+            'Meta': {'object_name': 'OrderDiscount'},
328
+            'amount': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
329
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
330
+            'offer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['offer.ConditionalOffer']", 'null': 'True'}),
331
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'discounts'", 'to': "orm['order.Order']"}),
332
+            'voucher': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'discount_vouchers'", 'null': 'True', 'to': "orm['voucher.Voucher']"}),
333
+            'voucher_code': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'db_index': 'True'})
334
+        },
335
+        'order.ordernote': {
336
+            'Meta': {'object_name': 'OrderNote'},
337
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
338
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
339
+            'message': ('django.db.models.fields.TextField', [], {}),
340
+            'note_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
341
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notes'", 'to': "orm['order.Order']"}),
342
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'})
343
+        },
344
+        'order.paymentevent': {
345
+            'Meta': {'object_name': 'PaymentEvent'},
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.PaymentEventType']"}),
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.PaymentEventQuantity']", 'symmetrical': 'False'}),
350
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'payment_events'", 'to': "orm['order.Order']"})
351
+        },
352
+        'order.paymenteventquantity': {
353
+            'Meta': {'object_name': 'PaymentEventQuantity'},
354
+            'event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_quantities'", 'to': "orm['order.PaymentEvent']"}),
355
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
356
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.Line']"}),
357
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {})
358
+        },
359
+        'order.paymenteventtype': {
360
+            'Meta': {'ordering': "('sequence_number',)", 'object_name': 'PaymentEventType'},
361
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
362
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
363
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
364
+            'sequence_number': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
365
+        },
366
+        'order.shippingaddress': {
367
+            'Meta': {'object_name': 'ShippingAddress'},
368
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
369
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
370
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
371
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
372
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
373
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
374
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
375
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
376
+            'notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
377
+            'phone_number': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
378
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
379
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
380
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
381
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
382
+        },
383
+        'order.shippingevent': {
384
+            'Meta': {'ordering': "['-date']", 'object_name': 'ShippingEvent'},
385
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
386
+            'event_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.ShippingEventType']"}),
387
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
388
+            'lines': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['order.Line']", 'through': "orm['order.ShippingEventQuantity']", 'symmetrical': 'False'}),
389
+            'notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
390
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'shipping_events'", 'to': "orm['order.Order']"})
391
+        },
392
+        'order.shippingeventquantity': {
393
+            'Meta': {'object_name': 'ShippingEventQuantity'},
394
+            'event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'line_quantities'", 'to': "orm['order.ShippingEvent']"}),
395
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
396
+            'line': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.Line']"}),
397
+            'quantity': ('django.db.models.fields.PositiveIntegerField', [], {})
398
+        },
399
+        'order.shippingeventtype': {
400
+            'Meta': {'ordering': "('sequence_number',)", 'object_name': 'ShippingEventType'},
401
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
402
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
403
+            'is_required': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
404
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
405
+            'sequence_number': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
406
+        },
407
+        'partner.partner': {
408
+            'Meta': {'object_name': 'Partner'},
409
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
410
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
411
+            'users': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'partners'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['auth.User']"})
412
+        },
413
+        'sites.site': {
414
+            'Meta': {'ordering': "('domain',)", 'object_name': 'Site', 'db_table': "'django_site'"},
415
+            'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
416
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
417
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
418
+        },
419
+        'voucher.voucher': {
420
+            'Meta': {'object_name': 'Voucher'},
421
+            'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'}),
422
+            'date_created': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
423
+            'end_date': ('django.db.models.fields.DateField', [], {}),
424
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
425
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
426
+            'num_basket_additions': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
427
+            'num_orders': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
428
+            'offers': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'vouchers'", 'symmetrical': 'False', 'to': "orm['offer.ConditionalOffer']"}),
429
+            'start_date': ('django.db.models.fields.DateField', [], {}),
430
+            'total_discount': ('django.db.models.fields.DecimalField', [], {'default': "'0.00'", 'max_digits': '12', 'decimal_places': '2'}),
431
+            'usage': ('django.db.models.fields.CharField', [], {'default': "'Multi-use'", 'max_length': '128'})
432
+        }
433
+    }
434
+
435
+    complete_apps = ['order']

+ 0
- 0
oscar/apps/order/migrations/__init__.py Прегледај датотеку


+ 221
- 0
oscar/apps/partner/migrations/0001_initial.py Прегледај датотеку

@@ -0,0 +1,221 @@
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 model 'Partner'
12
+        db.create_table('partner_partner', (
13
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
14
+            ('name', self.gf('django.db.models.fields.CharField')(unique=True, max_length=128)),
15
+        ))
16
+        db.send_create_signal('partner', ['Partner'])
17
+
18
+        # Adding M2M table for field users on 'Partner'
19
+        db.create_table('partner_partner_users', (
20
+            ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
21
+            ('partner', models.ForeignKey(orm['partner.partner'], null=False)),
22
+            ('user', models.ForeignKey(orm['auth.user'], null=False))
23
+        ))
24
+        db.create_unique('partner_partner_users', ['partner_id', 'user_id'])
25
+
26
+        # Adding model 'StockRecord'
27
+        db.create_table('partner_stockrecord', (
28
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
29
+            ('product', self.gf('django.db.models.fields.related.OneToOneField')(related_name='stockrecord', unique=True, to=orm['catalogue.Product'])),
30
+            ('partner', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['partner.Partner'])),
31
+            ('partner_sku', self.gf('django.db.models.fields.CharField')(max_length=128, blank=True)),
32
+            ('price_currency', self.gf('django.db.models.fields.CharField')(default='GBP', max_length=12)),
33
+            ('price_excl_tax', self.gf('django.db.models.fields.DecimalField')(null=True, max_digits=12, decimal_places=2, blank=True)),
34
+            ('price_retail', self.gf('django.db.models.fields.DecimalField')(null=True, max_digits=12, decimal_places=2, blank=True)),
35
+            ('cost_price', self.gf('django.db.models.fields.DecimalField')(null=True, max_digits=12, decimal_places=2, blank=True)),
36
+            ('num_in_stock', self.gf('django.db.models.fields.IntegerField')(default=0, null=True, blank=True)),
37
+            ('num_allocated', self.gf('django.db.models.fields.IntegerField')(default=0, null=True, blank=True)),
38
+            ('date_created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
39
+            ('date_updated', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, db_index=True, blank=True)),
40
+        ))
41
+        db.send_create_signal('partner', ['StockRecord'])
42
+
43
+
44
+    def backwards(self, orm):
45
+        
46
+        # Deleting model 'Partner'
47
+        db.delete_table('partner_partner')
48
+
49
+        # Removing M2M table for field users on 'Partner'
50
+        db.delete_table('partner_partner_users')
51
+
52
+        # Deleting model 'StockRecord'
53
+        db.delete_table('partner_stockrecord')
54
+
55
+
56
+    models = {
57
+        'auth.group': {
58
+            'Meta': {'object_name': 'Group'},
59
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
60
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
61
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
62
+        },
63
+        'auth.permission': {
64
+            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
65
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
66
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
67
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
68
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
69
+        },
70
+        'auth.user': {
71
+            'Meta': {'object_name': 'User'},
72
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
73
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
74
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
75
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
76
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
77
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
78
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
79
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
80
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
81
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
82
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
83
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
84
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
85
+        },
86
+        'catalogue.attributeentity': {
87
+            'Meta': {'object_name': 'AttributeEntity'},
88
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
89
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
90
+            'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'}),
91
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'entities'", 'to': "orm['catalogue.AttributeEntityType']"})
92
+        },
93
+        'catalogue.attributeentitytype': {
94
+            'Meta': {'object_name': 'AttributeEntityType'},
95
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
96
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
97
+            'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'})
98
+        },
99
+        'catalogue.attributeoption': {
100
+            'Meta': {'object_name': 'AttributeOption'},
101
+            'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'options'", 'to': "orm['catalogue.AttributeOptionGroup']"}),
102
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
103
+            'option': ('django.db.models.fields.CharField', [], {'max_length': '255'})
104
+        },
105
+        'catalogue.attributeoptiongroup': {
106
+            'Meta': {'object_name': 'AttributeOptionGroup'},
107
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
108
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
109
+        },
110
+        'catalogue.category': {
111
+            'Meta': {'ordering': "['name']", 'object_name': 'Category'},
112
+            'depth': ('django.db.models.fields.PositiveIntegerField', [], {}),
113
+            'full_name': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'db_index': 'True'}),
114
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
115
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
116
+            'numchild': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
117
+            'path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
118
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '1024', 'db_index': 'True'})
119
+        },
120
+        'catalogue.option': {
121
+            'Meta': {'object_name': 'Option'},
122
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
123
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
124
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
125
+            'type': ('django.db.models.fields.CharField', [], {'default': "'Required'", 'max_length': '128'})
126
+        },
127
+        'catalogue.product': {
128
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'Product'},
129
+            'attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.ProductAttribute']", 'through': "orm['catalogue.ProductAttributeValue']", 'symmetrical': 'False'}),
130
+            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Category']", 'through': "orm['catalogue.ProductCategory']", 'symmetrical': 'False'}),
131
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
132
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
133
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
134
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
135
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'variants'", 'null': 'True', 'to': "orm['catalogue.Product']"}),
136
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductClass']", 'null': 'True'}),
137
+            'product_options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
138
+            'recommended_products': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Product']", 'symmetrical': 'False', 'through': "orm['catalogue.ProductRecommendation']", 'blank': 'True'}),
139
+            'related_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'relations'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
140
+            'score': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'db_index': 'True'}),
141
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'db_index': 'True'}),
142
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
143
+            'upc': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '64', 'null': 'True', 'blank': 'True'})
144
+        },
145
+        'catalogue.productattribute': {
146
+            'Meta': {'ordering': "['code']", 'object_name': 'ProductAttribute'},
147
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
148
+            'entity_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntityType']", 'null': 'True', 'blank': 'True'}),
149
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
150
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
151
+            'option_group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOptionGroup']", 'null': 'True', 'blank': 'True'}),
152
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'attributes'", 'null': 'True', 'to': "orm['catalogue.ProductClass']"}),
153
+            'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
154
+            'type': ('django.db.models.fields.CharField', [], {'default': "'text'", 'max_length': '20'})
155
+        },
156
+        'catalogue.productattributevalue': {
157
+            'Meta': {'object_name': 'ProductAttributeValue'},
158
+            'attribute': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductAttribute']"}),
159
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
160
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"}),
161
+            'value_boolean': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
162
+            'value_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
163
+            'value_entity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntity']", 'null': 'True', 'blank': 'True'}),
164
+            'value_float': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
165
+            'value_integer': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
166
+            'value_option': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOption']", 'null': 'True', 'blank': 'True'}),
167
+            'value_richtext': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
168
+            'value_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
169
+        },
170
+        'catalogue.productcategory': {
171
+            'Meta': {'ordering': "['-is_canonical']", 'object_name': 'ProductCategory'},
172
+            'category': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Category']"}),
173
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
174
+            'is_canonical': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
175
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
176
+        },
177
+        'catalogue.productclass': {
178
+            'Meta': {'ordering': "['name']", 'object_name': 'ProductClass'},
179
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
180
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
181
+            'options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
182
+            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'})
183
+        },
184
+        'catalogue.productrecommendation': {
185
+            'Meta': {'object_name': 'ProductRecommendation'},
186
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
187
+            'primary': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'primary_recommendations'", 'to': "orm['catalogue.Product']"}),
188
+            'ranking': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
189
+            'recommendation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
190
+        },
191
+        'contenttypes.contenttype': {
192
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
193
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
194
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
195
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
196
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
197
+        },
198
+        'partner.partner': {
199
+            'Meta': {'object_name': 'Partner'},
200
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
201
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
202
+            'users': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'partners'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['auth.User']"})
203
+        },
204
+        'partner.stockrecord': {
205
+            'Meta': {'object_name': 'StockRecord'},
206
+            'cost_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
207
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
208
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
209
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
210
+            'num_allocated': ('django.db.models.fields.IntegerField', [], {'default': '0', 'null': 'True', 'blank': 'True'}),
211
+            'num_in_stock': ('django.db.models.fields.IntegerField', [], {'default': '0', 'null': 'True', 'blank': 'True'}),
212
+            'partner': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['partner.Partner']"}),
213
+            'partner_sku': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}),
214
+            'price_currency': ('django.db.models.fields.CharField', [], {'default': "'GBP'", 'max_length': '12'}),
215
+            'price_excl_tax': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
216
+            'price_retail': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
217
+            'product': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'stockrecord'", 'unique': 'True', 'to': "orm['catalogue.Product']"})
218
+        }
219
+    }
220
+
221
+    complete_apps = ['partner']

+ 0
- 0
oscar/apps/partner/migrations/__init__.py Прегледај датотеку


+ 384
- 0
oscar/apps/payment/migrations/0001_initial.py Прегледај датотеку

@@ -0,0 +1,384 @@
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 model 'Transaction'
12
+        db.create_table('payment_transaction', (
13
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
14
+            ('source', self.gf('django.db.models.fields.related.ForeignKey')(related_name='transactions', to=orm['payment.Source'])),
15
+            ('txn_type', self.gf('django.db.models.fields.CharField')(max_length=128, blank=True)),
16
+            ('amount', self.gf('django.db.models.fields.DecimalField')(max_digits=12, decimal_places=2)),
17
+            ('reference', self.gf('django.db.models.fields.CharField')(max_length=128, null=True)),
18
+            ('status', self.gf('django.db.models.fields.CharField')(max_length=128, null=True)),
19
+            ('date_created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
20
+        ))
21
+        db.send_create_signal('payment', ['Transaction'])
22
+
23
+        # Adding model 'Source'
24
+        db.create_table('payment_source', (
25
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
26
+            ('order', self.gf('django.db.models.fields.related.ForeignKey')(related_name='sources', to=orm['order.Order'])),
27
+            ('source_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['payment.SourceType'])),
28
+            ('currency', self.gf('django.db.models.fields.CharField')(default='GBP', max_length=12)),
29
+            ('amount_allocated', self.gf('django.db.models.fields.DecimalField')(default='0.00', max_digits=12, decimal_places=2)),
30
+            ('amount_debited', self.gf('django.db.models.fields.DecimalField')(default='0.00', max_digits=12, decimal_places=2)),
31
+            ('amount_refunded', self.gf('django.db.models.fields.DecimalField')(default='0.00', max_digits=12, decimal_places=2)),
32
+            ('reference', self.gf('django.db.models.fields.CharField')(max_length=128, null=True, blank=True)),
33
+            ('label', self.gf('django.db.models.fields.CharField')(max_length=128, null=True, blank=True)),
34
+        ))
35
+        db.send_create_signal('payment', ['Source'])
36
+
37
+        # Adding model 'SourceType'
38
+        db.create_table('payment_sourcetype', (
39
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
40
+            ('name', self.gf('django.db.models.fields.CharField')(max_length=128)),
41
+            ('code', self.gf('django.db.models.fields.SlugField')(max_length=128, db_index=True)),
42
+        ))
43
+        db.send_create_signal('payment', ['SourceType'])
44
+
45
+        # Adding model 'Bankcard'
46
+        db.create_table('payment_bankcard', (
47
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
48
+            ('user', self.gf('django.db.models.fields.related.ForeignKey')(related_name='bankcards', to=orm['auth.User'])),
49
+            ('card_type', self.gf('django.db.models.fields.CharField')(max_length=128)),
50
+            ('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
51
+            ('number', self.gf('django.db.models.fields.CharField')(max_length=32)),
52
+            ('expiry_date', self.gf('django.db.models.fields.DateField')()),
53
+            ('partner_reference', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
54
+        ))
55
+        db.send_create_signal('payment', ['Bankcard'])
56
+
57
+
58
+    def backwards(self, orm):
59
+        
60
+        # Deleting model 'Transaction'
61
+        db.delete_table('payment_transaction')
62
+
63
+        # Deleting model 'Source'
64
+        db.delete_table('payment_source')
65
+
66
+        # Deleting model 'SourceType'
67
+        db.delete_table('payment_sourcetype')
68
+
69
+        # Deleting model 'Bankcard'
70
+        db.delete_table('payment_bankcard')
71
+
72
+
73
+    models = {
74
+        'address.country': {
75
+            'Meta': {'ordering': "('-is_highlighted', 'name')", 'object_name': 'Country'},
76
+            'is_highlighted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
77
+            'is_shipping_country': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
78
+            'iso_3166_1_a2': ('django.db.models.fields.CharField', [], {'max_length': '2', 'primary_key': 'True'}),
79
+            'iso_3166_1_a3': ('django.db.models.fields.CharField', [], {'max_length': '3', 'null': 'True', 'db_index': 'True'}),
80
+            'iso_3166_1_numeric': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'db_index': 'True'}),
81
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
82
+            'printable_name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
83
+        },
84
+        'auth.group': {
85
+            'Meta': {'object_name': 'Group'},
86
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
87
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
88
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
89
+        },
90
+        'auth.permission': {
91
+            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
92
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
93
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
94
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
95
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
96
+        },
97
+        'auth.user': {
98
+            'Meta': {'object_name': 'User'},
99
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
100
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
101
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
102
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
103
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
104
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
105
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
106
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
107
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
108
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
109
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
110
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
111
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
112
+        },
113
+        'basket.basket': {
114
+            'Meta': {'object_name': 'Basket'},
115
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
116
+            'date_merged': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
117
+            'date_submitted': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
118
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
119
+            'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'baskets'", 'null': 'True', 'to': "orm['auth.User']"}),
120
+            'status': ('django.db.models.fields.CharField', [], {'default': "'Open'", 'max_length': '128'}),
121
+            'vouchers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['voucher.Voucher']", 'null': 'True', 'symmetrical': 'False'})
122
+        },
123
+        'catalogue.attributeentity': {
124
+            'Meta': {'object_name': 'AttributeEntity'},
125
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
126
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
127
+            'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'}),
128
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'entities'", 'to': "orm['catalogue.AttributeEntityType']"})
129
+        },
130
+        'catalogue.attributeentitytype': {
131
+            'Meta': {'object_name': 'AttributeEntityType'},
132
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
133
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
134
+            'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'})
135
+        },
136
+        'catalogue.attributeoption': {
137
+            'Meta': {'object_name': 'AttributeOption'},
138
+            'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'options'", 'to': "orm['catalogue.AttributeOptionGroup']"}),
139
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
140
+            'option': ('django.db.models.fields.CharField', [], {'max_length': '255'})
141
+        },
142
+        'catalogue.attributeoptiongroup': {
143
+            'Meta': {'object_name': 'AttributeOptionGroup'},
144
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
145
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
146
+        },
147
+        'catalogue.category': {
148
+            'Meta': {'ordering': "['name']", 'object_name': 'Category'},
149
+            'depth': ('django.db.models.fields.PositiveIntegerField', [], {}),
150
+            'full_name': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'db_index': 'True'}),
151
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
152
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
153
+            'numchild': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
154
+            'path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
155
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '1024', 'db_index': 'True'})
156
+        },
157
+        'catalogue.option': {
158
+            'Meta': {'object_name': 'Option'},
159
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
160
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
161
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
162
+            'type': ('django.db.models.fields.CharField', [], {'default': "'Required'", 'max_length': '128'})
163
+        },
164
+        'catalogue.product': {
165
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'Product'},
166
+            'attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.ProductAttribute']", 'through': "orm['catalogue.ProductAttributeValue']", 'symmetrical': 'False'}),
167
+            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Category']", 'through': "orm['catalogue.ProductCategory']", 'symmetrical': 'False'}),
168
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
169
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
170
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
171
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
172
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'variants'", 'null': 'True', 'to': "orm['catalogue.Product']"}),
173
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductClass']", 'null': 'True'}),
174
+            'product_options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
175
+            'recommended_products': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Product']", 'symmetrical': 'False', 'through': "orm['catalogue.ProductRecommendation']", 'blank': 'True'}),
176
+            'related_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'relations'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
177
+            'score': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'db_index': 'True'}),
178
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'db_index': 'True'}),
179
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
180
+            'upc': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '64', 'null': 'True', 'blank': 'True'})
181
+        },
182
+        'catalogue.productattribute': {
183
+            'Meta': {'ordering': "['code']", 'object_name': 'ProductAttribute'},
184
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
185
+            'entity_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntityType']", 'null': 'True', 'blank': 'True'}),
186
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
187
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
188
+            'option_group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOptionGroup']", 'null': 'True', 'blank': 'True'}),
189
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'attributes'", 'null': 'True', 'to': "orm['catalogue.ProductClass']"}),
190
+            'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
191
+            'type': ('django.db.models.fields.CharField', [], {'default': "'text'", 'max_length': '20'})
192
+        },
193
+        'catalogue.productattributevalue': {
194
+            'Meta': {'object_name': 'ProductAttributeValue'},
195
+            'attribute': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductAttribute']"}),
196
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
197
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"}),
198
+            'value_boolean': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
199
+            'value_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
200
+            'value_entity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntity']", 'null': 'True', 'blank': 'True'}),
201
+            'value_float': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
202
+            'value_integer': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
203
+            'value_option': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOption']", 'null': 'True', 'blank': 'True'}),
204
+            'value_richtext': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
205
+            'value_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
206
+        },
207
+        'catalogue.productcategory': {
208
+            'Meta': {'ordering': "['-is_canonical']", 'object_name': 'ProductCategory'},
209
+            'category': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Category']"}),
210
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
211
+            'is_canonical': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
212
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
213
+        },
214
+        'catalogue.productclass': {
215
+            'Meta': {'ordering': "['name']", 'object_name': 'ProductClass'},
216
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
217
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
218
+            'options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
219
+            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'})
220
+        },
221
+        'catalogue.productrecommendation': {
222
+            'Meta': {'object_name': 'ProductRecommendation'},
223
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
224
+            'primary': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'primary_recommendations'", 'to': "orm['catalogue.Product']"}),
225
+            'ranking': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
226
+            'recommendation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
227
+        },
228
+        'contenttypes.contenttype': {
229
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
230
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
231
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
232
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
233
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
234
+        },
235
+        'offer.benefit': {
236
+            'Meta': {'object_name': 'Benefit'},
237
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
238
+            'max_affected_items': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
239
+            'range': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['offer.Range']", 'null': 'True', 'blank': 'True'}),
240
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
241
+            'value': ('oscar.models.fields.PositiveDecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'})
242
+        },
243
+        'offer.condition': {
244
+            'Meta': {'object_name': 'Condition'},
245
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
246
+            'range': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['offer.Range']"}),
247
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
248
+            'value': ('oscar.models.fields.PositiveDecimalField', [], {'max_digits': '12', 'decimal_places': '2'})
249
+        },
250
+        'offer.conditionaloffer': {
251
+            'Meta': {'ordering': "['-priority']", 'object_name': 'ConditionalOffer'},
252
+            'benefit': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['offer.Benefit']"}),
253
+            'condition': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['offer.Condition']"}),
254
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
255
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
256
+            'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
257
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
258
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
259
+            'offer_type': ('django.db.models.fields.CharField', [], {'default': "'Site'", 'max_length': '128'}),
260
+            'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
261
+            'redirect_url': ('oscar.models.fields.ExtendedURLField', [], {'max_length': '200', 'blank': 'True'}),
262
+            'start_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
263
+            'total_discount': ('django.db.models.fields.DecimalField', [], {'default': "'0.00'", 'max_digits': '12', 'decimal_places': '2'})
264
+        },
265
+        'offer.range': {
266
+            'Meta': {'object_name': 'Range'},
267
+            'classes': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'classes'", 'blank': 'True', 'to': "orm['catalogue.ProductClass']"}),
268
+            'excluded_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'excludes'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
269
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
270
+            'included_categories': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'includes'", 'blank': 'True', 'to': "orm['catalogue.Category']"}),
271
+            'included_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'includes'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
272
+            'includes_all_products': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
273
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'})
274
+        },
275
+        'order.billingaddress': {
276
+            'Meta': {'object_name': 'BillingAddress'},
277
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
278
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
279
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
280
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
281
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
282
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
283
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
284
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
285
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
286
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
287
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
288
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
289
+        },
290
+        'order.order': {
291
+            'Meta': {'ordering': "['-date_placed']", 'object_name': 'Order'},
292
+            'basket': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['basket.Basket']", 'null': 'True', 'blank': 'True'}),
293
+            'billing_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.BillingAddress']", 'null': 'True', 'blank': 'True'}),
294
+            'date_placed': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}),
295
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
296
+            'number': ('django.db.models.fields.CharField', [], {'max_length': '128', 'db_index': 'True'}),
297
+            'shipping_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.ShippingAddress']", 'null': 'True', 'blank': 'True'}),
298
+            'shipping_excl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
299
+            'shipping_incl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
300
+            'shipping_method': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
301
+            'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['sites.Site']"}),
302
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
303
+            'total_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
304
+            'total_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
305
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'orders'", 'null': 'True', 'to': "orm['auth.User']"})
306
+        },
307
+        'order.shippingaddress': {
308
+            'Meta': {'object_name': 'ShippingAddress'},
309
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
310
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
311
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
312
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
313
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
314
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
315
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
316
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
317
+            'notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
318
+            'phone_number': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
319
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
320
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
321
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
322
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
323
+        },
324
+        'payment.bankcard': {
325
+            'Meta': {'object_name': 'Bankcard'},
326
+            'card_type': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
327
+            'expiry_date': ('django.db.models.fields.DateField', [], {}),
328
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
329
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
330
+            'number': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
331
+            'partner_reference': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
332
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'bankcards'", 'to': "orm['auth.User']"})
333
+        },
334
+        'payment.source': {
335
+            'Meta': {'object_name': 'Source'},
336
+            'amount_allocated': ('django.db.models.fields.DecimalField', [], {'default': "'0.00'", 'max_digits': '12', 'decimal_places': '2'}),
337
+            'amount_debited': ('django.db.models.fields.DecimalField', [], {'default': "'0.00'", 'max_digits': '12', 'decimal_places': '2'}),
338
+            'amount_refunded': ('django.db.models.fields.DecimalField', [], {'default': "'0.00'", 'max_digits': '12', 'decimal_places': '2'}),
339
+            'currency': ('django.db.models.fields.CharField', [], {'default': "'GBP'", 'max_length': '12'}),
340
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
341
+            'label': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
342
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'sources'", 'to': "orm['order.Order']"}),
343
+            'reference': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
344
+            'source_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['payment.SourceType']"})
345
+        },
346
+        'payment.sourcetype': {
347
+            'Meta': {'object_name': 'SourceType'},
348
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
349
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
350
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
351
+        },
352
+        'payment.transaction': {
353
+            'Meta': {'object_name': 'Transaction'},
354
+            'amount': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
355
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
356
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
357
+            'reference': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
358
+            'source': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'transactions'", 'to': "orm['payment.Source']"}),
359
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
360
+            'txn_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'})
361
+        },
362
+        'sites.site': {
363
+            'Meta': {'ordering': "('domain',)", 'object_name': 'Site', 'db_table': "'django_site'"},
364
+            'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
365
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
366
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
367
+        },
368
+        'voucher.voucher': {
369
+            'Meta': {'object_name': 'Voucher'},
370
+            'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'}),
371
+            'date_created': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
372
+            'end_date': ('django.db.models.fields.DateField', [], {}),
373
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
374
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
375
+            'num_basket_additions': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
376
+            'num_orders': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
377
+            'offers': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'vouchers'", 'symmetrical': 'False', 'to': "orm['offer.ConditionalOffer']"}),
378
+            'start_date': ('django.db.models.fields.DateField', [], {}),
379
+            'total_discount': ('django.db.models.fields.DecimalField', [], {'default': "'0.00'", 'max_digits': '12', 'decimal_places': '2'}),
380
+            'usage': ('django.db.models.fields.CharField', [], {'default': "'Multi-use'", 'max_length': '128'})
381
+        }
382
+    }
383
+
384
+    complete_apps = ['payment']

+ 0
- 0
oscar/apps/payment/migrations/__init__.py Прегледај датотеку


+ 382
- 0
oscar/apps/promotions/migrations/0001_initial.py Прегледај датотеку

@@ -0,0 +1,382 @@
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 model 'PagePromotion'
12
+        db.create_table('promotions_pagepromotion', (
13
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
14
+            ('content_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'])),
15
+            ('object_id', self.gf('django.db.models.fields.PositiveIntegerField')()),
16
+            ('position', self.gf('django.db.models.fields.CharField')(max_length=100)),
17
+            ('display_order', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
18
+            ('clicks', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
19
+            ('date_created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
20
+            ('page_url', self.gf('oscar.models.fields.ExtendedURLField')(max_length=128, db_index=True)),
21
+        ))
22
+        db.send_create_signal('promotions', ['PagePromotion'])
23
+
24
+        # Adding model 'KeywordPromotion'
25
+        db.create_table('promotions_keywordpromotion', (
26
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
27
+            ('content_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'])),
28
+            ('object_id', self.gf('django.db.models.fields.PositiveIntegerField')()),
29
+            ('position', self.gf('django.db.models.fields.CharField')(max_length=100)),
30
+            ('display_order', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
31
+            ('clicks', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
32
+            ('date_created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
33
+            ('keyword', self.gf('django.db.models.fields.CharField')(max_length=200)),
34
+            ('filter', self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True)),
35
+        ))
36
+        db.send_create_signal('promotions', ['KeywordPromotion'])
37
+
38
+        # Adding model 'RawHTML'
39
+        db.create_table('promotions_rawhtml', (
40
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
41
+            ('name', self.gf('django.db.models.fields.CharField')(max_length=128)),
42
+            ('display_type', self.gf('django.db.models.fields.CharField')(max_length=128, null=True, blank=True)),
43
+            ('body', self.gf('django.db.models.fields.TextField')()),
44
+            ('date_created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
45
+        ))
46
+        db.send_create_signal('promotions', ['RawHTML'])
47
+
48
+        # Adding model 'Image'
49
+        db.create_table('promotions_image', (
50
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
51
+            ('name', self.gf('django.db.models.fields.CharField')(max_length=128)),
52
+            ('link_url', self.gf('oscar.models.fields.ExtendedURLField')(max_length=200, null=True, blank=True)),
53
+            ('image', self.gf('django.db.models.fields.files.ImageField')(max_length=100)),
54
+            ('date_created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
55
+        ))
56
+        db.send_create_signal('promotions', ['Image'])
57
+
58
+        # Adding model 'MultiImage'
59
+        db.create_table('promotions_multiimage', (
60
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
61
+            ('name', self.gf('django.db.models.fields.CharField')(max_length=128)),
62
+            ('date_created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
63
+        ))
64
+        db.send_create_signal('promotions', ['MultiImage'])
65
+
66
+        # Adding M2M table for field images on 'MultiImage'
67
+        db.create_table('promotions_multiimage_images', (
68
+            ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
69
+            ('multiimage', models.ForeignKey(orm['promotions.multiimage'], null=False)),
70
+            ('image', models.ForeignKey(orm['promotions.image'], null=False))
71
+        ))
72
+        db.create_unique('promotions_multiimage_images', ['multiimage_id', 'image_id'])
73
+
74
+        # Adding model 'SingleProduct'
75
+        db.create_table('promotions_singleproduct', (
76
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
77
+            ('name', self.gf('django.db.models.fields.CharField')(max_length=128)),
78
+            ('product', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['catalogue.Product'])),
79
+            ('description', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
80
+            ('date_created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
81
+        ))
82
+        db.send_create_signal('promotions', ['SingleProduct'])
83
+
84
+        # Adding model 'HandPickedProductList'
85
+        db.create_table('promotions_handpickedproductlist', (
86
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
87
+            ('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
88
+            ('description', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
89
+            ('link_url', self.gf('oscar.models.fields.ExtendedURLField')(max_length=200, null=True, blank=True)),
90
+            ('link_text', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
91
+            ('date_created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
92
+        ))
93
+        db.send_create_signal('promotions', ['HandPickedProductList'])
94
+
95
+        # Adding model 'OrderedProduct'
96
+        db.create_table('promotions_orderedproduct', (
97
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
98
+            ('list', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['promotions.HandPickedProductList'])),
99
+            ('product', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['catalogue.Product'])),
100
+            ('display_order', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
101
+        ))
102
+        db.send_create_signal('promotions', ['OrderedProduct'])
103
+
104
+        # Adding model 'AutomaticProductList'
105
+        db.create_table('promotions_automaticproductlist', (
106
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
107
+            ('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
108
+            ('description', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
109
+            ('link_url', self.gf('oscar.models.fields.ExtendedURLField')(max_length=200, null=True, blank=True)),
110
+            ('link_text', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
111
+            ('date_created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
112
+            ('method', self.gf('django.db.models.fields.CharField')(max_length=128)),
113
+            ('num_products', self.gf('django.db.models.fields.PositiveSmallIntegerField')(default=4)),
114
+        ))
115
+        db.send_create_signal('promotions', ['AutomaticProductList'])
116
+
117
+        # Adding model 'OrderedProductList'
118
+        db.create_table('promotions_orderedproductlist', (
119
+            ('handpickedproductlist_ptr', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['promotions.HandPickedProductList'], unique=True, primary_key=True)),
120
+            ('tabbed_block', self.gf('django.db.models.fields.related.ForeignKey')(related_name='tabs', to=orm['promotions.TabbedBlock'])),
121
+            ('display_order', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
122
+        ))
123
+        db.send_create_signal('promotions', ['OrderedProductList'])
124
+
125
+        # Adding model 'TabbedBlock'
126
+        db.create_table('promotions_tabbedblock', (
127
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
128
+            ('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
129
+            ('date_created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
130
+        ))
131
+        db.send_create_signal('promotions', ['TabbedBlock'])
132
+
133
+
134
+    def backwards(self, orm):
135
+        
136
+        # Deleting model 'PagePromotion'
137
+        db.delete_table('promotions_pagepromotion')
138
+
139
+        # Deleting model 'KeywordPromotion'
140
+        db.delete_table('promotions_keywordpromotion')
141
+
142
+        # Deleting model 'RawHTML'
143
+        db.delete_table('promotions_rawhtml')
144
+
145
+        # Deleting model 'Image'
146
+        db.delete_table('promotions_image')
147
+
148
+        # Deleting model 'MultiImage'
149
+        db.delete_table('promotions_multiimage')
150
+
151
+        # Removing M2M table for field images on 'MultiImage'
152
+        db.delete_table('promotions_multiimage_images')
153
+
154
+        # Deleting model 'SingleProduct'
155
+        db.delete_table('promotions_singleproduct')
156
+
157
+        # Deleting model 'HandPickedProductList'
158
+        db.delete_table('promotions_handpickedproductlist')
159
+
160
+        # Deleting model 'OrderedProduct'
161
+        db.delete_table('promotions_orderedproduct')
162
+
163
+        # Deleting model 'AutomaticProductList'
164
+        db.delete_table('promotions_automaticproductlist')
165
+
166
+        # Deleting model 'OrderedProductList'
167
+        db.delete_table('promotions_orderedproductlist')
168
+
169
+        # Deleting model 'TabbedBlock'
170
+        db.delete_table('promotions_tabbedblock')
171
+
172
+
173
+    models = {
174
+        'catalogue.attributeentity': {
175
+            'Meta': {'object_name': 'AttributeEntity'},
176
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
177
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
178
+            'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'}),
179
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'entities'", 'to': "orm['catalogue.AttributeEntityType']"})
180
+        },
181
+        'catalogue.attributeentitytype': {
182
+            'Meta': {'object_name': 'AttributeEntityType'},
183
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
184
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
185
+            'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'})
186
+        },
187
+        'catalogue.attributeoption': {
188
+            'Meta': {'object_name': 'AttributeOption'},
189
+            'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'options'", 'to': "orm['catalogue.AttributeOptionGroup']"}),
190
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
191
+            'option': ('django.db.models.fields.CharField', [], {'max_length': '255'})
192
+        },
193
+        'catalogue.attributeoptiongroup': {
194
+            'Meta': {'object_name': 'AttributeOptionGroup'},
195
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
196
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
197
+        },
198
+        'catalogue.category': {
199
+            'Meta': {'ordering': "['name']", 'object_name': 'Category'},
200
+            'depth': ('django.db.models.fields.PositiveIntegerField', [], {}),
201
+            'full_name': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'db_index': 'True'}),
202
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
203
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
204
+            'numchild': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
205
+            'path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
206
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '1024', 'db_index': 'True'})
207
+        },
208
+        'catalogue.option': {
209
+            'Meta': {'object_name': 'Option'},
210
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
211
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
212
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
213
+            'type': ('django.db.models.fields.CharField', [], {'default': "'Required'", 'max_length': '128'})
214
+        },
215
+        'catalogue.product': {
216
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'Product'},
217
+            'attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.ProductAttribute']", 'through': "orm['catalogue.ProductAttributeValue']", 'symmetrical': 'False'}),
218
+            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Category']", 'through': "orm['catalogue.ProductCategory']", 'symmetrical': 'False'}),
219
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
220
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
221
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
222
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
223
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'variants'", 'null': 'True', 'to': "orm['catalogue.Product']"}),
224
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductClass']", 'null': 'True'}),
225
+            'product_options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
226
+            'recommended_products': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Product']", 'symmetrical': 'False', 'through': "orm['catalogue.ProductRecommendation']", 'blank': 'True'}),
227
+            'related_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'relations'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
228
+            'score': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'db_index': 'True'}),
229
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'db_index': 'True'}),
230
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
231
+            'upc': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '64', 'null': 'True', 'blank': 'True'})
232
+        },
233
+        'catalogue.productattribute': {
234
+            'Meta': {'ordering': "['code']", 'object_name': 'ProductAttribute'},
235
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
236
+            'entity_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntityType']", 'null': 'True', 'blank': 'True'}),
237
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
238
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
239
+            'option_group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOptionGroup']", 'null': 'True', 'blank': 'True'}),
240
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'attributes'", 'null': 'True', 'to': "orm['catalogue.ProductClass']"}),
241
+            'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
242
+            'type': ('django.db.models.fields.CharField', [], {'default': "'text'", 'max_length': '20'})
243
+        },
244
+        'catalogue.productattributevalue': {
245
+            'Meta': {'object_name': 'ProductAttributeValue'},
246
+            'attribute': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductAttribute']"}),
247
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
248
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"}),
249
+            'value_boolean': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
250
+            'value_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
251
+            'value_entity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntity']", 'null': 'True', 'blank': 'True'}),
252
+            'value_float': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
253
+            'value_integer': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
254
+            'value_option': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOption']", 'null': 'True', 'blank': 'True'}),
255
+            'value_richtext': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
256
+            'value_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
257
+        },
258
+        'catalogue.productcategory': {
259
+            'Meta': {'ordering': "['-is_canonical']", 'object_name': 'ProductCategory'},
260
+            'category': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Category']"}),
261
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
262
+            'is_canonical': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
263
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
264
+        },
265
+        'catalogue.productclass': {
266
+            'Meta': {'ordering': "['name']", 'object_name': 'ProductClass'},
267
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
268
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
269
+            'options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
270
+            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'})
271
+        },
272
+        'catalogue.productrecommendation': {
273
+            'Meta': {'object_name': 'ProductRecommendation'},
274
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
275
+            'primary': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'primary_recommendations'", 'to': "orm['catalogue.Product']"}),
276
+            'ranking': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
277
+            'recommendation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
278
+        },
279
+        'contenttypes.contenttype': {
280
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
281
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
282
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
283
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
284
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
285
+        },
286
+        'promotions.automaticproductlist': {
287
+            'Meta': {'object_name': 'AutomaticProductList'},
288
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
289
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
290
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
291
+            'link_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
292
+            'link_url': ('oscar.models.fields.ExtendedURLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
293
+            'method': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
294
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
295
+            'num_products': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '4'})
296
+        },
297
+        'promotions.handpickedproductlist': {
298
+            'Meta': {'object_name': 'HandPickedProductList'},
299
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
300
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
301
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
302
+            'link_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
303
+            'link_url': ('oscar.models.fields.ExtendedURLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
304
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
305
+            'products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['catalogue.Product']", 'null': 'True', 'through': "orm['promotions.OrderedProduct']", 'blank': 'True'})
306
+        },
307
+        'promotions.image': {
308
+            'Meta': {'object_name': 'Image'},
309
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
310
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
311
+            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100'}),
312
+            'link_url': ('oscar.models.fields.ExtendedURLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
313
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
314
+        },
315
+        'promotions.keywordpromotion': {
316
+            'Meta': {'ordering': "['-clicks']", 'object_name': 'KeywordPromotion'},
317
+            'clicks': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
318
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
319
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
320
+            'display_order': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
321
+            'filter': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
322
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
323
+            'keyword': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
324
+            'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
325
+            'position': ('django.db.models.fields.CharField', [], {'max_length': '100'})
326
+        },
327
+        'promotions.multiimage': {
328
+            'Meta': {'object_name': 'MultiImage'},
329
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
330
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
331
+            'images': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['promotions.Image']", 'null': 'True', 'blank': 'True'}),
332
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
333
+        },
334
+        'promotions.orderedproduct': {
335
+            'Meta': {'ordering': "('display_order',)", 'object_name': 'OrderedProduct'},
336
+            'display_order': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
337
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
338
+            'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['promotions.HandPickedProductList']"}),
339
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
340
+        },
341
+        'promotions.orderedproductlist': {
342
+            'Meta': {'ordering': "('display_order',)", 'object_name': 'OrderedProductList', '_ormbases': ['promotions.HandPickedProductList']},
343
+            'display_order': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
344
+            'handpickedproductlist_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['promotions.HandPickedProductList']", 'unique': 'True', 'primary_key': 'True'}),
345
+            'tabbed_block': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tabs'", 'to': "orm['promotions.TabbedBlock']"})
346
+        },
347
+        'promotions.pagepromotion': {
348
+            'Meta': {'ordering': "['-clicks']", 'object_name': 'PagePromotion'},
349
+            'clicks': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
350
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
351
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
352
+            'display_order': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
353
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
354
+            'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
355
+            'page_url': ('oscar.models.fields.ExtendedURLField', [], {'max_length': '128', 'db_index': 'True'}),
356
+            'position': ('django.db.models.fields.CharField', [], {'max_length': '100'})
357
+        },
358
+        'promotions.rawhtml': {
359
+            'Meta': {'object_name': 'RawHTML'},
360
+            'body': ('django.db.models.fields.TextField', [], {}),
361
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
362
+            'display_type': ('django.db.models.fields.CharField', [], {'max_length': '128', '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
+        },
366
+        'promotions.singleproduct': {
367
+            'Meta': {'object_name': 'SingleProduct'},
368
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
369
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
370
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
371
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
372
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
373
+        },
374
+        'promotions.tabbedblock': {
375
+            'Meta': {'object_name': 'TabbedBlock'},
376
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
377
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
378
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
379
+        }
380
+    }
381
+
382
+    complete_apps = ['promotions']

+ 0
- 0
oscar/apps/promotions/migrations/__init__.py Прегледај датотеку


+ 45
- 0
oscar/apps/shipping/migrations/0001_initial.py Прегледај датотеку

@@ -0,0 +1,45 @@
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 model 'OrderAndItemLevelChargeMethod'
12
+        db.create_table('shipping_orderanditemlevelchargemethod', (
13
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
14
+            ('code', self.gf('django.db.models.fields.CharField')(unique=True, max_length=128)),
15
+            ('name', self.gf('django.db.models.fields.CharField')(max_length=128)),
16
+            ('description', self.gf('django.db.models.fields.TextField')(blank=True)),
17
+            ('price_currency', self.gf('django.db.models.fields.CharField')(default='GBP', max_length=12)),
18
+            ('price_per_order', self.gf('django.db.models.fields.DecimalField')(default='0.00', max_digits=12, decimal_places=2)),
19
+            ('price_per_item', self.gf('django.db.models.fields.DecimalField')(default='0.00', max_digits=12, decimal_places=2)),
20
+            ('free_shipping_threshold', self.gf('django.db.models.fields.DecimalField')(null=True, max_digits=12, decimal_places=2, blank=True)),
21
+        ))
22
+        db.send_create_signal('shipping', ['OrderAndItemLevelChargeMethod'])
23
+
24
+
25
+    def backwards(self, orm):
26
+        
27
+        # Deleting model 'OrderAndItemLevelChargeMethod'
28
+        db.delete_table('shipping_orderanditemlevelchargemethod')
29
+
30
+
31
+    models = {
32
+        'shipping.orderanditemlevelchargemethod': {
33
+            'Meta': {'object_name': 'OrderAndItemLevelChargeMethod'},
34
+            'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
35
+            'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
36
+            'free_shipping_threshold': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
37
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
38
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
39
+            'price_currency': ('django.db.models.fields.CharField', [], {'default': "'GBP'", 'max_length': '12'}),
40
+            'price_per_item': ('django.db.models.fields.DecimalField', [], {'default': "'0.00'", 'max_digits': '12', 'decimal_places': '2'}),
41
+            'price_per_order': ('django.db.models.fields.DecimalField', [], {'default': "'0.00'", 'max_digits': '12', 'decimal_places': '2'})
42
+        }
43
+    }
44
+
45
+    complete_apps = ['shipping']

+ 78
- 0
oscar/apps/shipping/migrations/0002_auto__del_orderanditemlevelchargemethod__add_orderanditemcharges__add_.py Прегледај датотеку

@@ -0,0 +1,78 @@
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
+        # Deleting model 'OrderAndItemLevelChargeMethod'
12
+        db.delete_table('shipping_orderanditemlevelchargemethod')
13
+
14
+        # Adding model 'OrderAndItemCharges'
15
+        db.create_table('shipping_orderanditemcharges', (
16
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
17
+            ('code', self.gf('django.db.models.fields.CharField')(unique=True, max_length=128)),
18
+            ('name', self.gf('django.db.models.fields.CharField')(max_length=128)),
19
+            ('description', self.gf('django.db.models.fields.TextField')(blank=True)),
20
+            ('price_per_order', self.gf('django.db.models.fields.DecimalField')(default='0.00', max_digits=12, decimal_places=2)),
21
+            ('price_per_item', self.gf('django.db.models.fields.DecimalField')(default='0.00', max_digits=12, decimal_places=2)),
22
+            ('free_shipping_threshold', self.gf('django.db.models.fields.DecimalField')(null=True, max_digits=12, decimal_places=2, blank=True)),
23
+        ))
24
+        db.send_create_signal('shipping', ['OrderAndItemCharges'])
25
+
26
+        # Adding model 'WeightBand'
27
+        db.create_table('shipping_weightband', (
28
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
29
+            ('method_code', self.gf('django.db.models.fields.CharField')(max_length=64, db_index=True)),
30
+            ('upper_limit', self.gf('django.db.models.fields.FloatField')()),
31
+            ('charge', self.gf('django.db.models.fields.DecimalField')(max_digits=12, decimal_places=2)),
32
+        ))
33
+        db.send_create_signal('shipping', ['WeightBand'])
34
+
35
+
36
+    def backwards(self, orm):
37
+        
38
+        # Adding model 'OrderAndItemLevelChargeMethod'
39
+        db.create_table('shipping_orderanditemlevelchargemethod', (
40
+            ('code', self.gf('django.db.models.fields.CharField')(max_length=128, unique=True)),
41
+            ('price_currency', self.gf('django.db.models.fields.CharField')(default='GBP', max_length=12)),
42
+            ('description', self.gf('django.db.models.fields.TextField')(blank=True)),
43
+            ('price_per_item', self.gf('django.db.models.fields.DecimalField')(default='0.00', max_digits=12, decimal_places=2)),
44
+            ('price_per_order', self.gf('django.db.models.fields.DecimalField')(default='0.00', max_digits=12, decimal_places=2)),
45
+            ('free_shipping_threshold', self.gf('django.db.models.fields.DecimalField')(null=True, max_digits=12, decimal_places=2, blank=True)),
46
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
47
+            ('name', self.gf('django.db.models.fields.CharField')(max_length=128)),
48
+        ))
49
+        db.send_create_signal('shipping', ['OrderAndItemLevelChargeMethod'])
50
+
51
+        # Deleting model 'OrderAndItemCharges'
52
+        db.delete_table('shipping_orderanditemcharges')
53
+
54
+        # Deleting model 'WeightBand'
55
+        db.delete_table('shipping_weightband')
56
+
57
+
58
+    models = {
59
+        'shipping.orderanditemcharges': {
60
+            'Meta': {'object_name': 'OrderAndItemCharges'},
61
+            'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
62
+            'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
63
+            'free_shipping_threshold': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
64
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
65
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
66
+            'price_per_item': ('django.db.models.fields.DecimalField', [], {'default': "'0.00'", 'max_digits': '12', 'decimal_places': '2'}),
67
+            'price_per_order': ('django.db.models.fields.DecimalField', [], {'default': "'0.00'", 'max_digits': '12', 'decimal_places': '2'})
68
+        },
69
+        'shipping.weightband': {
70
+            'Meta': {'ordering': "['upper_limit']", 'object_name': 'WeightBand'},
71
+            'charge': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
72
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
73
+            'method_code': ('django.db.models.fields.CharField', [], {'max_length': '64', 'db_index': 'True'}),
74
+            'upper_limit': ('django.db.models.fields.FloatField', [], {})
75
+        }
76
+    }
77
+
78
+    complete_apps = ['shipping']

+ 0
- 0
oscar/apps/shipping/migrations/__init__.py Прегледај датотеку


+ 338
- 0
oscar/apps/voucher/migrations/0001_initial.py Прегледај датотеку

@@ -0,0 +1,338 @@
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 model 'Voucher'
12
+        db.create_table('voucher_voucher', (
13
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
14
+            ('name', self.gf('django.db.models.fields.CharField')(max_length=128)),
15
+            ('code', self.gf('django.db.models.fields.CharField')(unique=True, max_length=128, db_index=True)),
16
+            ('usage', self.gf('django.db.models.fields.CharField')(default='Multi-use', max_length=128)),
17
+            ('start_date', self.gf('django.db.models.fields.DateField')()),
18
+            ('end_date', self.gf('django.db.models.fields.DateField')()),
19
+            ('num_basket_additions', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
20
+            ('num_orders', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
21
+            ('total_discount', self.gf('django.db.models.fields.DecimalField')(default='0.00', max_digits=12, decimal_places=2)),
22
+            ('date_created', self.gf('django.db.models.fields.DateField')(auto_now_add=True, blank=True)),
23
+        ))
24
+        db.send_create_signal('voucher', ['Voucher'])
25
+
26
+        # Adding M2M table for field offers on 'Voucher'
27
+        db.create_table('voucher_voucher_offers', (
28
+            ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
29
+            ('voucher', models.ForeignKey(orm['voucher.voucher'], null=False)),
30
+            ('conditionaloffer', models.ForeignKey(orm['offer.conditionaloffer'], null=False))
31
+        ))
32
+        db.create_unique('voucher_voucher_offers', ['voucher_id', 'conditionaloffer_id'])
33
+
34
+        # Adding model 'VoucherApplication'
35
+        db.create_table('voucher_voucherapplication', (
36
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
37
+            ('voucher', self.gf('django.db.models.fields.related.ForeignKey')(related_name='applications', to=orm['voucher.Voucher'])),
38
+            ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], null=True, blank=True)),
39
+            ('order', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['order.Order'])),
40
+            ('date_created', self.gf('django.db.models.fields.DateField')(auto_now_add=True, blank=True)),
41
+        ))
42
+        db.send_create_signal('voucher', ['VoucherApplication'])
43
+
44
+
45
+    def backwards(self, orm):
46
+        
47
+        # Deleting model 'Voucher'
48
+        db.delete_table('voucher_voucher')
49
+
50
+        # Removing M2M table for field offers on 'Voucher'
51
+        db.delete_table('voucher_voucher_offers')
52
+
53
+        # Deleting model 'VoucherApplication'
54
+        db.delete_table('voucher_voucherapplication')
55
+
56
+
57
+    models = {
58
+        'address.country': {
59
+            'Meta': {'ordering': "('-is_highlighted', 'name')", 'object_name': 'Country'},
60
+            'is_highlighted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
61
+            'is_shipping_country': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
62
+            'iso_3166_1_a2': ('django.db.models.fields.CharField', [], {'max_length': '2', 'primary_key': 'True'}),
63
+            'iso_3166_1_a3': ('django.db.models.fields.CharField', [], {'max_length': '3', 'null': 'True', 'db_index': 'True'}),
64
+            'iso_3166_1_numeric': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'db_index': 'True'}),
65
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
66
+            'printable_name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
67
+        },
68
+        'auth.group': {
69
+            'Meta': {'object_name': 'Group'},
70
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
71
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
72
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
73
+        },
74
+        'auth.permission': {
75
+            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
76
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
77
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
78
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
79
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
80
+        },
81
+        'auth.user': {
82
+            'Meta': {'object_name': 'User'},
83
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
84
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
85
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
86
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
87
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
88
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
89
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
90
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
91
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
92
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
93
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
94
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
95
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
96
+        },
97
+        'basket.basket': {
98
+            'Meta': {'object_name': 'Basket'},
99
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
100
+            'date_merged': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
101
+            'date_submitted': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
102
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
103
+            'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'baskets'", 'null': 'True', 'to': "orm['auth.User']"}),
104
+            'status': ('django.db.models.fields.CharField', [], {'default': "'Open'", 'max_length': '128'}),
105
+            'vouchers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['voucher.Voucher']", 'null': 'True', 'symmetrical': 'False'})
106
+        },
107
+        'catalogue.attributeentity': {
108
+            'Meta': {'object_name': 'AttributeEntity'},
109
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
110
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
111
+            'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'}),
112
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'entities'", 'to': "orm['catalogue.AttributeEntityType']"})
113
+        },
114
+        'catalogue.attributeentitytype': {
115
+            'Meta': {'object_name': 'AttributeEntityType'},
116
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
117
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
118
+            'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'})
119
+        },
120
+        'catalogue.attributeoption': {
121
+            'Meta': {'object_name': 'AttributeOption'},
122
+            'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'options'", 'to': "orm['catalogue.AttributeOptionGroup']"}),
123
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
124
+            'option': ('django.db.models.fields.CharField', [], {'max_length': '255'})
125
+        },
126
+        'catalogue.attributeoptiongroup': {
127
+            'Meta': {'object_name': 'AttributeOptionGroup'},
128
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
129
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
130
+        },
131
+        'catalogue.category': {
132
+            'Meta': {'ordering': "['name']", 'object_name': 'Category'},
133
+            'depth': ('django.db.models.fields.PositiveIntegerField', [], {}),
134
+            'full_name': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'db_index': 'True'}),
135
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
136
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
137
+            'numchild': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
138
+            'path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
139
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '1024', 'db_index': 'True'})
140
+        },
141
+        'catalogue.option': {
142
+            'Meta': {'object_name': 'Option'},
143
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
144
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
145
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
146
+            'type': ('django.db.models.fields.CharField', [], {'default': "'Required'", 'max_length': '128'})
147
+        },
148
+        'catalogue.product': {
149
+            'Meta': {'ordering': "['-date_created']", 'object_name': 'Product'},
150
+            'attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.ProductAttribute']", 'through': "orm['catalogue.ProductAttributeValue']", 'symmetrical': 'False'}),
151
+            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Category']", 'through': "orm['catalogue.ProductCategory']", 'symmetrical': 'False'}),
152
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
153
+            'date_updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
154
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
155
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
156
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'variants'", 'null': 'True', 'to': "orm['catalogue.Product']"}),
157
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductClass']", 'null': 'True'}),
158
+            'product_options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
159
+            'recommended_products': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Product']", 'symmetrical': 'False', 'through': "orm['catalogue.ProductRecommendation']", 'blank': 'True'}),
160
+            'related_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'relations'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
161
+            'score': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'db_index': 'True'}),
162
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'db_index': 'True'}),
163
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
164
+            'upc': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '64', 'null': 'True', 'blank': 'True'})
165
+        },
166
+        'catalogue.productattribute': {
167
+            'Meta': {'ordering': "['code']", 'object_name': 'ProductAttribute'},
168
+            'code': ('django.db.models.fields.SlugField', [], {'max_length': '128', 'db_index': 'True'}),
169
+            'entity_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntityType']", 'null': 'True', 'blank': 'True'}),
170
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
171
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
172
+            'option_group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOptionGroup']", 'null': 'True', 'blank': 'True'}),
173
+            'product_class': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'attributes'", 'null': 'True', 'to': "orm['catalogue.ProductClass']"}),
174
+            'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
175
+            'type': ('django.db.models.fields.CharField', [], {'default': "'text'", 'max_length': '20'})
176
+        },
177
+        'catalogue.productattributevalue': {
178
+            'Meta': {'object_name': 'ProductAttributeValue'},
179
+            'attribute': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.ProductAttribute']"}),
180
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
181
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"}),
182
+            'value_boolean': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
183
+            'value_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
184
+            'value_entity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeEntity']", 'null': 'True', 'blank': 'True'}),
185
+            'value_float': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
186
+            'value_integer': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
187
+            'value_option': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.AttributeOption']", 'null': 'True', 'blank': 'True'}),
188
+            'value_richtext': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
189
+            'value_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
190
+        },
191
+        'catalogue.productcategory': {
192
+            'Meta': {'ordering': "['-is_canonical']", 'object_name': 'ProductCategory'},
193
+            'category': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Category']"}),
194
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
195
+            'is_canonical': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
196
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
197
+        },
198
+        'catalogue.productclass': {
199
+            'Meta': {'ordering': "['name']", 'object_name': 'ProductClass'},
200
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
201
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
202
+            'options': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['catalogue.Option']", 'symmetrical': 'False', 'blank': 'True'}),
203
+            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'})
204
+        },
205
+        'catalogue.productrecommendation': {
206
+            'Meta': {'object_name': 'ProductRecommendation'},
207
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
208
+            'primary': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'primary_recommendations'", 'to': "orm['catalogue.Product']"}),
209
+            'ranking': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
210
+            'recommendation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Product']"})
211
+        },
212
+        'contenttypes.contenttype': {
213
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
214
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
215
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
216
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
217
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
218
+        },
219
+        'offer.benefit': {
220
+            'Meta': {'object_name': 'Benefit'},
221
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
222
+            'max_affected_items': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
223
+            'range': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['offer.Range']", 'null': 'True', 'blank': 'True'}),
224
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
225
+            'value': ('oscar.models.fields.PositiveDecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'})
226
+        },
227
+        'offer.condition': {
228
+            'Meta': {'object_name': 'Condition'},
229
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
230
+            'range': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['offer.Range']"}),
231
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
232
+            'value': ('oscar.models.fields.PositiveDecimalField', [], {'max_digits': '12', 'decimal_places': '2'})
233
+        },
234
+        'offer.conditionaloffer': {
235
+            'Meta': {'ordering': "['-priority']", 'object_name': 'ConditionalOffer'},
236
+            'benefit': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['offer.Benefit']"}),
237
+            'condition': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['offer.Condition']"}),
238
+            'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
239
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
240
+            'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
241
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
242
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
243
+            'offer_type': ('django.db.models.fields.CharField', [], {'default': "'Site'", 'max_length': '128'}),
244
+            'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
245
+            'redirect_url': ('oscar.models.fields.ExtendedURLField', [], {'max_length': '200', 'blank': 'True'}),
246
+            'start_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
247
+            'total_discount': ('django.db.models.fields.DecimalField', [], {'default': "'0.00'", 'max_digits': '12', 'decimal_places': '2'})
248
+        },
249
+        'offer.range': {
250
+            'Meta': {'object_name': 'Range'},
251
+            'classes': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'classes'", 'blank': 'True', 'to': "orm['catalogue.ProductClass']"}),
252
+            'excluded_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'excludes'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
253
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
254
+            'included_categories': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'includes'", 'blank': 'True', 'to': "orm['catalogue.Category']"}),
255
+            'included_products': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'includes'", 'blank': 'True', 'to': "orm['catalogue.Product']"}),
256
+            'includes_all_products': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
257
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'})
258
+        },
259
+        'order.billingaddress': {
260
+            'Meta': {'object_name': 'BillingAddress'},
261
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
262
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
263
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
264
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
265
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
266
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
267
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
268
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
269
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
270
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
271
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
272
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
273
+        },
274
+        'order.order': {
275
+            'Meta': {'ordering': "['-date_placed']", 'object_name': 'Order'},
276
+            'basket': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['basket.Basket']", 'null': 'True', 'blank': 'True'}),
277
+            'billing_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.BillingAddress']", 'null': 'True', 'blank': 'True'}),
278
+            'date_placed': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}),
279
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
280
+            'number': ('django.db.models.fields.CharField', [], {'max_length': '128', 'db_index': 'True'}),
281
+            'shipping_address': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.ShippingAddress']", 'null': 'True', 'blank': 'True'}),
282
+            'shipping_excl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
283
+            'shipping_incl_tax': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
284
+            'shipping_method': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
285
+            'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['sites.Site']"}),
286
+            'status': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
287
+            'total_excl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
288
+            'total_incl_tax': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
289
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'orders'", 'null': 'True', 'to': "orm['auth.User']"})
290
+        },
291
+        'order.shippingaddress': {
292
+            'Meta': {'object_name': 'ShippingAddress'},
293
+            'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['address.Country']"}),
294
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
295
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
296
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
297
+            'line1': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
298
+            'line2': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
299
+            'line3': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
300
+            'line4': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
301
+            'notes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
302
+            'phone_number': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
303
+            'postcode': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
304
+            'search_text': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
305
+            'state': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
306
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
307
+        },
308
+        'sites.site': {
309
+            'Meta': {'ordering': "('domain',)", 'object_name': 'Site', 'db_table': "'django_site'"},
310
+            'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
311
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
312
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
313
+        },
314
+        'voucher.voucher': {
315
+            'Meta': {'object_name': 'Voucher'},
316
+            'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'}),
317
+            'date_created': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
318
+            'end_date': ('django.db.models.fields.DateField', [], {}),
319
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
320
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
321
+            'num_basket_additions': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
322
+            'num_orders': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
323
+            'offers': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'vouchers'", 'symmetrical': 'False', 'to': "orm['offer.ConditionalOffer']"}),
324
+            'start_date': ('django.db.models.fields.DateField', [], {}),
325
+            'total_discount': ('django.db.models.fields.DecimalField', [], {'default': "'0.00'", 'max_digits': '12', 'decimal_places': '2'}),
326
+            'usage': ('django.db.models.fields.CharField', [], {'default': "'Multi-use'", 'max_length': '128'})
327
+        },
328
+        'voucher.voucherapplication': {
329
+            'Meta': {'object_name': 'VoucherApplication'},
330
+            'date_created': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
331
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
332
+            'order': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['order.Order']"}),
333
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
334
+            'voucher': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'applications'", 'to': "orm['voucher.Voucher']"})
335
+        }
336
+    }
337
+
338
+    complete_apps = ['voucher']

+ 0
- 0
oscar/apps/voucher/migrations/__init__.py Прегледај датотеку


Loading…
Откажи
Сачувај