mirror of
https://github.com/pretix/pretix.git
synced 2026-05-04 15:04:03 +00:00
Bind restrictions to only one item for reduced complexibility
This commit is contained in:
@@ -677,12 +677,15 @@ class BaseRestriction(models.Model):
|
||||
related_name="restrictions_%(app_label)s_%(class)s",
|
||||
verbose_name=_("Event"),
|
||||
)
|
||||
items = models.ManyToManyField(
|
||||
item = models.ForeignKey(
|
||||
Item,
|
||||
blank=True,
|
||||
null=True,
|
||||
related_name="restrictions_%(app_label)s_%(class)s",
|
||||
)
|
||||
variations = models.ManyToManyField(
|
||||
ItemVariation,
|
||||
blank=True,
|
||||
related_name="restrictions_%(app_label)s_%(class)s",
|
||||
)
|
||||
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('tixlbase', '0016_event_plugins'),
|
||||
('timerestriction', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='timerestriction',
|
||||
name='items',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='timerestriction',
|
||||
name='i',
|
||||
field=models.ForeignKey(null=True, blank=True, related_name='restrictions_timerestriction_timerestriction', to='tixlbase.Item'),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='timerestriction',
|
||||
name='variations',
|
||||
field=models.ManyToManyField(blank=True, related_name='restrictions_timerestriction_timerestriction', to='tixlbase.ItemVariation'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,19 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('timerestriction', '0002_auto_20141013_1811'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameField(
|
||||
model_name='timerestriction',
|
||||
old_name='i',
|
||||
new_name='item',
|
||||
),
|
||||
]
|
||||
@@ -16,7 +16,7 @@ def availability_handler(sender, **kwargs):
|
||||
|
||||
# Fetch all restriction objects applied to this item
|
||||
restrictions = list(TimeRestriction.objects.filter(
|
||||
items__in=(item,),
|
||||
item=item,
|
||||
).prefetch_related('variations'))
|
||||
|
||||
# If we do not know anything about this item, we are done here.
|
||||
|
||||
@@ -46,7 +46,8 @@ class TimeRestrictionTest(TestCase):
|
||||
event=self.event,
|
||||
price=12
|
||||
)
|
||||
r.items.add(self.item)
|
||||
r.item = self.item
|
||||
r.save()
|
||||
result = signals.availability_handler(
|
||||
self.event, item=self.item,
|
||||
variations=self.item.get_all_variations(),
|
||||
@@ -64,7 +65,8 @@ class TimeRestrictionTest(TestCase):
|
||||
event=self.event,
|
||||
price=12
|
||||
)
|
||||
r.items.add(self.item)
|
||||
r.item = self.item
|
||||
r.save()
|
||||
result = signals.availability_handler(
|
||||
self.event, item=self.item,
|
||||
variations=self.item.get_all_variations(),
|
||||
@@ -91,7 +93,8 @@ class TimeRestrictionTest(TestCase):
|
||||
event=self.event,
|
||||
price=12
|
||||
)
|
||||
r.items.add(self.item)
|
||||
r.item = self.item
|
||||
r.save()
|
||||
result = signals.availability_handler(
|
||||
self.event, item=self.item,
|
||||
variations=self.item.get_all_variations(),
|
||||
@@ -108,14 +111,16 @@ class TimeRestrictionTest(TestCase):
|
||||
event=self.event,
|
||||
price=12
|
||||
)
|
||||
r1.items.add(self.item)
|
||||
r1.item = self.item
|
||||
r1.save()
|
||||
r2 = TimeRestriction.objects.create(
|
||||
timeframe_from=now() - timedelta(days=3),
|
||||
timeframe_to=now() + timedelta(days=5),
|
||||
event=self.event,
|
||||
price=8
|
||||
)
|
||||
r2.items.add(self.item)
|
||||
r2.item = self.item
|
||||
r2.save()
|
||||
result = signals.availability_handler(
|
||||
self.event, item=self.item,
|
||||
variations=self.item.get_all_variations(),
|
||||
@@ -133,14 +138,16 @@ class TimeRestrictionTest(TestCase):
|
||||
event=self.event,
|
||||
price=12
|
||||
)
|
||||
r1.items.add(self.item)
|
||||
r1.item = self.item
|
||||
r1.save()
|
||||
r2 = TimeRestriction.objects.create(
|
||||
timeframe_from=now() + timedelta(days=1),
|
||||
timeframe_to=now() + timedelta(days=7),
|
||||
event=self.event,
|
||||
price=8
|
||||
)
|
||||
r2.items.add(self.item)
|
||||
r2.item = self.item
|
||||
r2.save()
|
||||
result = signals.availability_handler(
|
||||
self.event, item=self.item,
|
||||
variations=self.item.get_all_variations(),
|
||||
@@ -158,14 +165,16 @@ class TimeRestrictionTest(TestCase):
|
||||
event=self.event,
|
||||
price=12
|
||||
)
|
||||
r1.items.add(self.item)
|
||||
r1.item = self.item
|
||||
r1.save()
|
||||
r2 = TimeRestriction.objects.create(
|
||||
timeframe_from=now() + timedelta(days=4),
|
||||
timeframe_to=now() + timedelta(days=7),
|
||||
event=self.event,
|
||||
price=8
|
||||
)
|
||||
r2.items.add(self.item)
|
||||
r2.item = self.item
|
||||
r2.save()
|
||||
result = signals.availability_handler(
|
||||
self.event, item=self.item,
|
||||
variations=self.item.get_all_variations(),
|
||||
@@ -183,14 +192,16 @@ class TimeRestrictionTest(TestCase):
|
||||
event=self.event,
|
||||
price=12
|
||||
)
|
||||
r1.items.add(self.item)
|
||||
r1.item = self.item
|
||||
r1.save()
|
||||
r2 = TimeRestriction.objects.create(
|
||||
timeframe_from=now() + timedelta(days=4),
|
||||
timeframe_to=now() + timedelta(days=7),
|
||||
event=self.event,
|
||||
price=8
|
||||
)
|
||||
r2.items.add(self.item)
|
||||
r2.item = self.item
|
||||
r2.save()
|
||||
result = signals.availability_handler(
|
||||
self.event, item=self.item,
|
||||
variations=self.item.get_all_variations(),
|
||||
@@ -213,7 +224,8 @@ class TimeRestrictionTest(TestCase):
|
||||
event=self.event,
|
||||
price=12
|
||||
)
|
||||
r1.items.add(self.item)
|
||||
r1.item = self.item
|
||||
r1.save()
|
||||
r1.variations.add(v1)
|
||||
result = signals.availability_handler(
|
||||
self.event, item=self.item,
|
||||
@@ -241,14 +253,16 @@ class TimeRestrictionTest(TestCase):
|
||||
event=self.event,
|
||||
price=12
|
||||
)
|
||||
r1.items.add(self.item)
|
||||
r1.item = self.item
|
||||
r1.save()
|
||||
r2 = TimeRestriction.objects.create(
|
||||
timeframe_from=now() - timedelta(days=5),
|
||||
timeframe_to=now() + timedelta(days=1),
|
||||
event=self.event,
|
||||
price=8
|
||||
)
|
||||
r2.items.add(self.item)
|
||||
r2.item = self.item
|
||||
r2.save()
|
||||
r2.variations.add(v1)
|
||||
r3 = TimeRestriction.objects.create(
|
||||
timeframe_from=now() - timedelta(days=5),
|
||||
@@ -256,7 +270,8 @@ class TimeRestrictionTest(TestCase):
|
||||
event=self.event,
|
||||
price=10
|
||||
)
|
||||
r3.items.add(self.item)
|
||||
r3.item = self.item
|
||||
r3.save()
|
||||
r3.variations.add(v2)
|
||||
result = signals.availability_handler(
|
||||
self.event, item=self.item,
|
||||
@@ -285,7 +300,8 @@ class TimeRestrictionTest(TestCase):
|
||||
event=self.event,
|
||||
price=12
|
||||
)
|
||||
r1.items.add(self.item)
|
||||
r1.item = self.item
|
||||
r1.save()
|
||||
r1.variations.add(v1)
|
||||
r2 = TimeRestriction.objects.create(
|
||||
timeframe_from=now() - timedelta(days=5),
|
||||
@@ -293,7 +309,8 @@ class TimeRestrictionTest(TestCase):
|
||||
event=self.event,
|
||||
price=8
|
||||
)
|
||||
r2.items.add(self.item)
|
||||
r2.item = self.item
|
||||
r2.save()
|
||||
r2.variations.add(v1)
|
||||
r3 = TimeRestriction.objects.create(
|
||||
timeframe_from=now() - timedelta(days=5),
|
||||
@@ -301,7 +318,8 @@ class TimeRestrictionTest(TestCase):
|
||||
event=self.event,
|
||||
price=8
|
||||
)
|
||||
r3.items.add(self.item)
|
||||
r3.item = self.item
|
||||
r3.save()
|
||||
r3.variations.add(v2)
|
||||
result = signals.availability_handler(
|
||||
self.event, item=self.item,
|
||||
|
||||
Reference in New Issue
Block a user