Quellcode durchsuchen

type attributes can not be optional, required, or required for purchase

master
Jonathan Moss vor 15 Jahren
Ursprung
Commit
d128548c6c

+ 2
- 0
product/admin.py Datei anzeigen

@@ -2,6 +2,7 @@ from product.models import AttributeType
2 2
 from product.models import Type
3 3
 from product.models import Item
4 4
 from product.models import Attribute
5
+from product.models import AttributeTypeMembership
5 6
 from django.contrib import admin
6 7
 
7 8
 class AttributeInline(admin.TabularInline):
@@ -13,6 +14,7 @@ class ItemAdmin(admin.ModelAdmin):
13 14
 
14 15
 
15 16
 admin.site.register(AttributeType)
17
+admin.site.register(AttributeTypeMembership)
16 18
 admin.site.register(Type)
17 19
 admin.site.register(Item, ItemAdmin)
18 20
 admin.site.register(Attribute)

+ 83
- 0
product/migrations/0004_auto__del_atrributetypemembership__add_attributetypemembership.py Datei anzeigen

@@ -0,0 +1,83 @@
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 'AtrributeTypeMembership'
12
+        db.delete_table('product_atrributetypemembership')
13
+
14
+        # Adding model 'AttributeTypeMembership'
15
+        db.create_table('product_attributetypemembership', (
16
+            ('attribute_Type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['product.AttributeType'])),
17
+            ('type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['product.Type'])),
18
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
19
+            ('relation_type', self.gf('django.db.models.fields.CharField')(default='optional', max_length=16)),
20
+        ))
21
+        db.send_create_signal('product', ['AttributeTypeMembership'])
22
+    
23
+    
24
+    def backwards(self, orm):
25
+        
26
+        # Adding model 'AtrributeTypeMembership'
27
+        db.create_table('product_atrributetypemembership', (
28
+            ('attribute_Type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['product.AttributeType'])),
29
+            ('type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['product.Type'])),
30
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
31
+            ('relation_type', self.gf('django.db.models.fields.CharField')(default='optional', max_length=16)),
32
+        ))
33
+        db.send_create_signal('product', ['AtrributeTypeMembership'])
34
+
35
+        # Deleting model 'AttributeTypeMembership'
36
+        db.delete_table('product_attributetypemembership')
37
+    
38
+    
39
+    models = {
40
+        'product.attribute': {
41
+            'Meta': {'object_name': 'Attribute'},
42
+            'attribute_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['product.AttributeType']"}),
43
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
44
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['product.Item']"}),
45
+            'value': ('django.db.models.fields.CharField', [], {'max_length': '256'})
46
+        },
47
+        'product.attributetype': {
48
+            'Meta': {'object_name': 'AttributeType'},
49
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
50
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
51
+        },
52
+        'product.attributetypemembership': {
53
+            'Meta': {'object_name': 'AttributeTypeMembership'},
54
+            'attribute_Type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['product.AttributeType']"}),
55
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
56
+            'relation_type': ('django.db.models.fields.CharField', [], {'default': "'optional'", 'max_length': '16'}),
57
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['product.Type']"})
58
+        },
59
+        'product.item': {
60
+            'Meta': {'object_name': 'Item'},
61
+            'date_available': ('django.db.models.fields.DateField', [], {}),
62
+            'date_created': ('django.db.models.fields.DateTimeField', [], {}),
63
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
64
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
65
+            'partner_id': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
66
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['product.Type']"})
67
+        },
68
+        'product.stockrecord': {
69
+            'Meta': {'object_name': 'StockRecord'},
70
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
71
+            'price_excl_tax': ('django.db.models.fields.FloatField', [], {}),
72
+            'product': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['product.Item']"}),
73
+            'tax': ('django.db.models.fields.FloatField', [], {})
74
+        },
75
+        'product.type': {
76
+            'Meta': {'object_name': 'Type'},
77
+            'attribute_types': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['product.AttributeType']", 'through': "orm['product.AttributeTypeMembership']", 'symmetrical': 'False'}),
78
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
79
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'})
80
+        }
81
+    }
82
+    
83
+    complete_apps = ['product']

+ 5
- 4
product/models.py Datei anzeigen

@@ -11,12 +11,12 @@ class AttributeType(models.Model):
11 11
 class Type(models.Model):
12 12
     """Defines a product type"""
13 13
     name = models.CharField(max_length = 128)
14
-    attribute_types = models.ManyToManyField('product.AttributeType', through = 'product.AtrributeTypeMembership')
14
+    attribute_types = models.ManyToManyField('product.AttributeType', through = 'product.AttributeTypeMembership')
15 15
 
16 16
     def __unicode__(self):
17 17
         return self.name
18 18
 
19
-class AtrributeTypeMembership(models.Model):
19
+class AttributeTypeMembership(models.Model):
20 20
     RELATIONSHIP_CHOICES = (
21 21
         ('optional', 'optional'),
22 22
         ('required', 'required'),
@@ -48,11 +48,12 @@ class Item(models.Model):
48 48
             A boolean if the product is valid
49 49
         """
50 50
         required_attribute_names = []
51
-        for attribute_type in self.type.attribute_types.all():
51
+        for attribute_type in self.type.attribute_types.filter(attributetypemembership__relation_type = 'required'):
52 52
             required_attribute_names.append(attribute_type.name)
53 53
 
54 54
         for attribute in self.attribute_set.all():
55
-            required_attribute_names.remove(attribute.attribute_type.name)
55
+            if attribute.attribute_type.name in required_attribute_names:
56
+                required_attribute_names.remove(attribute.attribute_type.name)
56 57
 
57 58
         return 0 == len(required_attribute_names)
58 59
 

Laden…
Abbrechen
Speichern