mirror of
https://github.com/pretix/pretix.git
synced 2025-12-11 01:22:28 +00:00
Compare commits
1 Commits
fix-widget
...
custom-man
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
db67959abf |
@@ -37,10 +37,10 @@ t = Team.objects.get_or_create(
|
|||||||
can_view_orders=True, can_change_orders=True, can_view_vouchers=True, can_change_vouchers=True
|
can_view_orders=True, can_change_orders=True, can_view_vouchers=True, can_change_vouchers=True
|
||||||
)
|
)
|
||||||
t.members.add(user)
|
t.members.add(user)
|
||||||
cat_tickets = ItemCategory.objects.create(
|
cat_tickets = ItemCategory.all.create(
|
||||||
event=event, name='Tickets'
|
event=event, name='Tickets'
|
||||||
)
|
)
|
||||||
cat_merch = ItemCategory.objects.create(
|
cat_merch = ItemCategory.all.create(
|
||||||
event=event, name='Merchandise'
|
event=event, name='Merchandise'
|
||||||
)
|
)
|
||||||
question = Question.objects.create(
|
question = Question.objects.create(
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import json
|
|||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
|
from django.core import checks
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.db.models.signals import post_delete
|
from django.db.models.signals import post_delete
|
||||||
from django.dispatch import receiver
|
from django.dispatch import receiver
|
||||||
@@ -34,7 +35,6 @@ def cached_file_delete(sender, instance, **kwargs):
|
|||||||
|
|
||||||
|
|
||||||
class LoggingMixin:
|
class LoggingMixin:
|
||||||
|
|
||||||
def log_action(self, action, data=None, user=None):
|
def log_action(self, action, data=None, user=None):
|
||||||
"""
|
"""
|
||||||
Create a LogEntry object that is related to this object.
|
Create a LogEntry object that is related to this object.
|
||||||
@@ -59,7 +59,6 @@ class LoggingMixin:
|
|||||||
|
|
||||||
|
|
||||||
class LoggedModel(models.Model, LoggingMixin):
|
class LoggedModel(models.Model, LoggingMixin):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
abstract = True
|
abstract = True
|
||||||
|
|
||||||
@@ -74,3 +73,38 @@ class LoggedModel(models.Model, LoggingMixin):
|
|||||||
return LogEntry.objects.filter(
|
return LogEntry.objects.filter(
|
||||||
content_type=ContentType.objects.get_for_model(type(self)), object_id=self.pk
|
content_type=ContentType.objects.get_for_model(type(self)), object_id=self.pk
|
||||||
).select_related('user', 'event')
|
).select_related('user', 'event')
|
||||||
|
|
||||||
|
|
||||||
|
class EventBoundModelMixin:
|
||||||
|
event_lookup = 'event'
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def for_event(cls, event):
|
||||||
|
return cls.all.filter(**{
|
||||||
|
cls.event_lookup: event
|
||||||
|
})
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def check(cls, **kwargs):
|
||||||
|
try:
|
||||||
|
errors = super(cls).check(**kwargs)
|
||||||
|
except AttributeError:
|
||||||
|
errors = []
|
||||||
|
if hasattr(cls, 'objects'):
|
||||||
|
errors.append(
|
||||||
|
checks.Error(
|
||||||
|
'Default model manager "objects" defined.',
|
||||||
|
hint='Replace the objects manager by a manager called "all".',
|
||||||
|
obj=cls,
|
||||||
|
id='pretixbase.E001',
|
||||||
|
)
|
||||||
|
)
|
||||||
|
if not hasattr(cls, 'all'):
|
||||||
|
errors.append(
|
||||||
|
checks.Error(
|
||||||
|
'Model manager "all" not defined.',
|
||||||
|
obj=cls,
|
||||||
|
id='pretixbase.E002',
|
||||||
|
)
|
||||||
|
)
|
||||||
|
return errors
|
||||||
|
|||||||
@@ -234,14 +234,14 @@ class Event(LoggedModel):
|
|||||||
), tz)
|
), tz)
|
||||||
|
|
||||||
def copy_data_from(self, other):
|
def copy_data_from(self, other):
|
||||||
from . import ItemAddOn, ItemCategory, Item, Question, Quota
|
from . import ItemAddOn, Item, Question, Quota
|
||||||
from ..signals import event_copy_data
|
from ..signals import event_copy_data
|
||||||
|
|
||||||
self.plugins = other.plugins
|
self.plugins = other.plugins
|
||||||
self.save()
|
self.save()
|
||||||
|
|
||||||
category_map = {}
|
category_map = {}
|
||||||
for c in ItemCategory.objects.filter(event=other):
|
for c in other.categories.all():
|
||||||
category_map[c.pk] = c
|
category_map[c.pk] = c
|
||||||
c.pk = None
|
c.pk = None
|
||||||
c.event = self
|
c.event = self
|
||||||
|
|||||||
@@ -14,12 +14,12 @@ from django.utils.translation import ugettext_lazy as _
|
|||||||
from i18nfield.fields import I18nCharField, I18nTextField
|
from i18nfield.fields import I18nCharField, I18nTextField
|
||||||
|
|
||||||
from pretix.base.decimal import round_decimal
|
from pretix.base.decimal import round_decimal
|
||||||
from pretix.base.models.base import LoggedModel
|
from pretix.base.models.base import EventBoundModelMixin, LoggedModel
|
||||||
|
|
||||||
from .event import Event
|
from .event import Event
|
||||||
|
|
||||||
|
|
||||||
class ItemCategory(LoggedModel):
|
class ItemCategory(EventBoundModelMixin, LoggedModel):
|
||||||
"""
|
"""
|
||||||
Items can be sorted into these categories.
|
Items can be sorted into these categories.
|
||||||
|
|
||||||
@@ -53,6 +53,8 @@ class ItemCategory(LoggedModel):
|
|||||||
'source for add-ons.')
|
'source for add-ons.')
|
||||||
)
|
)
|
||||||
|
|
||||||
|
all = models.Manager()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = _("Product category")
|
verbose_name = _("Product category")
|
||||||
verbose_name_plural = _("Product categories")
|
verbose_name_plural = _("Product categories")
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ from pretix.base.models import InvoiceAddress, LogEntry, Order
|
|||||||
from pretix.base.services.mail import SendMailException, mail
|
from pretix.base.services.mail import SendMailException, mail
|
||||||
from pretix.control.permissions import EventPermissionRequiredMixin
|
from pretix.control.permissions import EventPermissionRequiredMixin
|
||||||
from pretix.multidomain.urlreverse import build_absolute_uri
|
from pretix.multidomain.urlreverse import build_absolute_uri
|
||||||
|
|
||||||
from . import forms
|
from . import forms
|
||||||
|
|
||||||
logger = logging.getLogger('pretix.plugins.sendmail')
|
logger = logging.getLogger('pretix.plugins.sendmail')
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ from pretix.control.permissions import EventPermissionRequiredMixin
|
|||||||
from pretix.control.views import ChartContainingView
|
from pretix.control.views import ChartContainingView
|
||||||
from pretix.helpers.database import rolledback_transaction
|
from pretix.helpers.database import rolledback_transaction
|
||||||
from pretix.plugins.ticketoutputpdf.signals import get_fonts
|
from pretix.plugins.ticketoutputpdf.signals import get_fonts
|
||||||
|
|
||||||
from .ticketoutput import PdfTicketOutput
|
from .ticketoutput import PdfTicketOutput
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|||||||
@@ -92,6 +92,7 @@ class I18nFieldTest(TestCase):
|
|||||||
"""
|
"""
|
||||||
This test case tests the I18n*Field classes
|
This test case tests the I18n*Field classes
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUpTestData(cls):
|
def setUpTestData(cls):
|
||||||
o = Organizer.objects.create(name='Dummy', slug='dummy')
|
o = Organizer.objects.create(name='Dummy', slug='dummy')
|
||||||
@@ -101,8 +102,8 @@ class I18nFieldTest(TestCase):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def test_save_load_cycle_plain_string(self):
|
def test_save_load_cycle_plain_string(self):
|
||||||
obj = ItemCategory.objects.create(event=self.event, name="Hello")
|
obj = ItemCategory.all.create(event=self.event, name="Hello")
|
||||||
obj = ItemCategory.objects.get(id=obj.id)
|
obj = ItemCategory.all.get(id=obj.id)
|
||||||
self.assertIsInstance(obj.name, LazyI18nString)
|
self.assertIsInstance(obj.name, LazyI18nString)
|
||||||
translation.activate('en')
|
translation.activate('en')
|
||||||
self.assertEqual(str(obj.name), "Hello")
|
self.assertEqual(str(obj.name), "Hello")
|
||||||
@@ -110,14 +111,14 @@ class I18nFieldTest(TestCase):
|
|||||||
self.assertEqual(str(obj.name), "Hello")
|
self.assertEqual(str(obj.name), "Hello")
|
||||||
|
|
||||||
def test_save_load_cycle_i18n_string(self):
|
def test_save_load_cycle_i18n_string(self):
|
||||||
obj = ItemCategory.objects.create(event=self.event,
|
obj = ItemCategory.all.create(event=self.event,
|
||||||
name=LazyI18nString(
|
name=LazyI18nString(
|
||||||
{
|
{
|
||||||
'de': 'Hallo',
|
'de': 'Hallo',
|
||||||
'en': 'Hello'
|
'en': 'Hello'
|
||||||
}
|
}
|
||||||
))
|
))
|
||||||
obj = ItemCategory.objects.get(id=obj.id)
|
obj = ItemCategory.all.get(id=obj.id)
|
||||||
self.assertIsInstance(obj.name, LazyI18nString)
|
self.assertIsInstance(obj.name, LazyI18nString)
|
||||||
translation.activate('en')
|
translation.activate('en')
|
||||||
self.assertEqual(str(obj.name), "Hello")
|
self.assertEqual(str(obj.name), "Hello")
|
||||||
|
|||||||
@@ -687,8 +687,8 @@ class ItemCategoryTest(TestCase):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def test_sorting(self):
|
def test_sorting(self):
|
||||||
c1 = ItemCategory.objects.create(event=self.event)
|
c1 = ItemCategory.all.create(event=self.event)
|
||||||
c2 = ItemCategory.objects.create(event=self.event)
|
c2 = ItemCategory.all.create(event=self.event)
|
||||||
assert c1 < c2
|
assert c1 < c2
|
||||||
c1.position = 2
|
c1.position = 2
|
||||||
c2.position = 1
|
c2.position = 1
|
||||||
|
|||||||
@@ -289,8 +289,8 @@ def checkin_list_with_addon_env():
|
|||||||
team.limit_events.add(event)
|
team.limit_events.add(event)
|
||||||
|
|
||||||
# item
|
# item
|
||||||
cat_adm = ItemCategory.objects.create(event=event, name="Admission")
|
cat_adm = ItemCategory.all.create(event=event, name="Admission")
|
||||||
cat_workshop = ItemCategory.objects.create(event=event, name="Admission", is_addon=True)
|
cat_workshop = ItemCategory.all.create(event=event, name="Admission", is_addon=True)
|
||||||
item_ticket = Item.objects.create(event=event, name="Ticket", default_price=23, admission=True, category=cat_adm)
|
item_ticket = Item.objects.create(event=event, name="Ticket", default_price=23, admission=True, category=cat_adm)
|
||||||
item_workshop = Item.objects.create(event=event, name="Workshop", default_price=10, admission=False,
|
item_workshop = Item.objects.create(event=event, name="Workshop", default_price=10, admission=False,
|
||||||
category=cat_workshop)
|
category=cat_workshop)
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ class CategoriesTest(ItemFormTest):
|
|||||||
self.assertIn("Entry tickets", doc.select("#page-wrapper table")[0].text)
|
self.assertIn("Entry tickets", doc.select("#page-wrapper table")[0].text)
|
||||||
|
|
||||||
def test_update(self):
|
def test_update(self):
|
||||||
c = ItemCategory.objects.create(event=self.event1, name="Entry tickets")
|
c = ItemCategory.all.create(event=self.event1, name="Entry tickets")
|
||||||
doc = self.get_doc('/control/event/%s/%s/categories/%s/' % (self.orga1.slug, self.event1.slug, c.id))
|
doc = self.get_doc('/control/event/%s/%s/categories/%s/' % (self.orga1.slug, self.event1.slug, c.id))
|
||||||
form_data = extract_form_fields(doc.select('.container-fluid form')[0])
|
form_data = extract_form_fields(doc.select('.container-fluid form')[0])
|
||||||
form_data['name_0'] = 'T-Shirts'
|
form_data['name_0'] = 'T-Shirts'
|
||||||
@@ -46,11 +46,11 @@ class CategoriesTest(ItemFormTest):
|
|||||||
assert doc.select(".alert-success")
|
assert doc.select(".alert-success")
|
||||||
self.assertIn("T-Shirts", doc.select("#page-wrapper table")[0].text)
|
self.assertIn("T-Shirts", doc.select("#page-wrapper table")[0].text)
|
||||||
self.assertNotIn("Entry tickets", doc.select("#page-wrapper table")[0].text)
|
self.assertNotIn("Entry tickets", doc.select("#page-wrapper table")[0].text)
|
||||||
assert str(ItemCategory.objects.get(id=c.id).name) == 'T-Shirts'
|
assert str(ItemCategory.all.get(id=c.id).name) == 'T-Shirts'
|
||||||
|
|
||||||
def test_sort(self):
|
def test_sort(self):
|
||||||
c1 = ItemCategory.objects.create(event=self.event1, name="Entry tickets", position=0)
|
c1 = ItemCategory.all.create(event=self.event1, name="Entry tickets", position=0)
|
||||||
ItemCategory.objects.create(event=self.event1, name="T-Shirts", position=1)
|
ItemCategory.all.create(event=self.event1, name="T-Shirts", position=1)
|
||||||
doc = self.get_doc('/control/event/%s/%s/categories/' % (self.orga1.slug, self.event1.slug))
|
doc = self.get_doc('/control/event/%s/%s/categories/' % (self.orga1.slug, self.event1.slug))
|
||||||
self.assertIn("Entry tickets", doc.select("table > tbody > tr")[0].text)
|
self.assertIn("Entry tickets", doc.select("table > tbody > tr")[0].text)
|
||||||
self.assertIn("T-Shirts", doc.select("table > tbody > tr")[1].text)
|
self.assertIn("T-Shirts", doc.select("table > tbody > tr")[1].text)
|
||||||
@@ -66,14 +66,14 @@ class CategoriesTest(ItemFormTest):
|
|||||||
self.assertIn("T-Shirts", doc.select("table > tbody > tr")[1].text)
|
self.assertIn("T-Shirts", doc.select("table > tbody > tr")[1].text)
|
||||||
|
|
||||||
def test_delete(self):
|
def test_delete(self):
|
||||||
c = ItemCategory.objects.create(event=self.event1, name="Entry tickets")
|
c = ItemCategory.all.create(event=self.event1, name="Entry tickets")
|
||||||
doc = self.get_doc('/control/event/%s/%s/categories/%s/delete' % (self.orga1.slug, self.event1.slug, c.id))
|
doc = self.get_doc('/control/event/%s/%s/categories/%s/delete' % (self.orga1.slug, self.event1.slug, c.id))
|
||||||
form_data = extract_form_fields(doc.select('.container-fluid form')[0])
|
form_data = extract_form_fields(doc.select('.container-fluid form')[0])
|
||||||
doc = self.post_doc('/control/event/%s/%s/categories/%s/delete' % (self.orga1.slug, self.event1.slug, c.id),
|
doc = self.post_doc('/control/event/%s/%s/categories/%s/delete' % (self.orga1.slug, self.event1.slug, c.id),
|
||||||
form_data)
|
form_data)
|
||||||
assert doc.select(".alert-success")
|
assert doc.select(".alert-success")
|
||||||
self.assertNotIn("Entry tickets", doc.select("#page-wrapper")[0].text)
|
self.assertNotIn("Entry tickets", doc.select("#page-wrapper")[0].text)
|
||||||
assert not ItemCategory.objects.filter(id=c.id).exists()
|
assert not ItemCategory.all.filter(id=c.id).exists()
|
||||||
|
|
||||||
|
|
||||||
class QuestionsTest(ItemFormTest):
|
class QuestionsTest(ItemFormTest):
|
||||||
@@ -264,7 +264,7 @@ class ItemsTest(ItemFormTest):
|
|||||||
require_voucher=True, allow_cancel=False)
|
require_voucher=True, allow_cancel=False)
|
||||||
self.var1 = ItemVariation.objects.create(item=self.item2, value="Silver")
|
self.var1 = ItemVariation.objects.create(item=self.item2, value="Silver")
|
||||||
self.var2 = ItemVariation.objects.create(item=self.item2, value="Gold")
|
self.var2 = ItemVariation.objects.create(item=self.item2, value="Gold")
|
||||||
self.addoncat = ItemCategory.objects.create(event=self.event1, name="Item category")
|
self.addoncat = ItemCategory.all.create(event=self.event1, name="Item category")
|
||||||
|
|
||||||
def test_move(self):
|
def test_move(self):
|
||||||
self.client.post('/control/event/%s/%s/items/%s/down' % (self.orga1.slug, self.event1.slug, self.item1.id),)
|
self.client.post('/control/event/%s/%s/items/%s/down' % (self.orga1.slug, self.event1.slug, self.item1.id),)
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ def item(event):
|
|||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def item_category(event):
|
def item_category(event):
|
||||||
return ItemCategory.objects.create(event=event)
|
return ItemCategory.all.create(event=event)
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ def env(client):
|
|||||||
plugins='pretix.plugins.paypal',
|
plugins='pretix.plugins.paypal',
|
||||||
live=True
|
live=True
|
||||||
)
|
)
|
||||||
category = ItemCategory.objects.create(event=event, name="Everything", position=0)
|
category = ItemCategory.all.create(event=event, name="Everything", position=0)
|
||||||
quota_tickets = Quota.objects.create(event=event, name='Tickets', size=5)
|
quota_tickets = Quota.objects.create(event=event, name='Tickets', size=5)
|
||||||
ticket = Item.objects.create(event=event, name='Early-bird ticket',
|
ticket = Item.objects.create(event=event, name='Early-bird ticket',
|
||||||
category=category, default_price=23, admission=True)
|
category=category, default_price=23, admission=True)
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ def env(client):
|
|||||||
plugins='pretix.plugins.stripe',
|
plugins='pretix.plugins.stripe',
|
||||||
live=True
|
live=True
|
||||||
)
|
)
|
||||||
category = ItemCategory.objects.create(event=event, name="Everything", position=0)
|
category = ItemCategory.all.create(event=event, name="Everything", position=0)
|
||||||
quota_tickets = Quota.objects.create(event=event, name='Tickets', size=5)
|
quota_tickets = Quota.objects.create(event=event, name='Tickets', size=5)
|
||||||
ticket = Item.objects.create(event=event, name='Early-bird ticket',
|
ticket = Item.objects.create(event=event, name='Early-bird ticket',
|
||||||
category=category, default_price=23, admission=True)
|
category=category, default_price=23, admission=True)
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ def item(event):
|
|||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def item_category(event):
|
def item_category(event):
|
||||||
"""Returns an item category instance"""
|
"""Returns an item category instance"""
|
||||||
return ItemCategory.objects.create(event=event)
|
return ItemCategory.all.create(event=event)
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ class CartTestMixin:
|
|||||||
date_from=datetime.datetime(2013, 12, 26, tzinfo=datetime.timezone.utc),
|
date_from=datetime.datetime(2013, 12, 26, tzinfo=datetime.timezone.utc),
|
||||||
live=True
|
live=True
|
||||||
)
|
)
|
||||||
self.category = ItemCategory.objects.create(event=self.event, name="Everything", position=0)
|
self.category = ItemCategory.all.create(event=self.event, name="Everything", position=0)
|
||||||
self.quota_shirts = Quota.objects.create(event=self.event, name='Shirts', size=2)
|
self.quota_shirts = Quota.objects.create(event=self.event, name='Shirts', size=2)
|
||||||
self.shirt = Item.objects.create(event=self.event, name='T-Shirt', category=self.category, default_price=12)
|
self.shirt = Item.objects.create(event=self.event, name='T-Shirt', category=self.category, default_price=12)
|
||||||
self.quota_shirts.items.add(self.shirt)
|
self.quota_shirts.items.add(self.shirt)
|
||||||
@@ -1013,7 +1013,7 @@ class CartTest(CartTestMixin, TestCase):
|
|||||||
class CartAddonTest(CartTestMixin, TestCase):
|
class CartAddonTest(CartTestMixin, TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super().setUp()
|
super().setUp()
|
||||||
self.workshopcat = ItemCategory.objects.create(name="Workshops", is_addon=True, event=self.event)
|
self.workshopcat = ItemCategory.all.create(name="Workshops", is_addon=True, event=self.event)
|
||||||
self.workshopquota = Quota.objects.create(event=self.event, name='Workshop 1', size=5)
|
self.workshopquota = Quota.objects.create(event=self.event, name='Workshop 1', size=5)
|
||||||
self.workshop1 = Item.objects.create(event=self.event, name='Workshop 1',
|
self.workshop1 = Item.objects.create(event=self.event, name='Workshop 1',
|
||||||
category=self.workshopcat, default_price=12)
|
category=self.workshopcat, default_price=12)
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ class CheckoutTestCase(TestCase):
|
|||||||
plugins='pretix.plugins.stripe,pretix.plugins.banktransfer',
|
plugins='pretix.plugins.stripe,pretix.plugins.banktransfer',
|
||||||
live=True
|
live=True
|
||||||
)
|
)
|
||||||
self.category = ItemCategory.objects.create(event=self.event, name="Everything", position=0)
|
self.category = ItemCategory.all.create(event=self.event, name="Everything", position=0)
|
||||||
self.quota_tickets = Quota.objects.create(event=self.event, name='Tickets', size=5)
|
self.quota_tickets = Quota.objects.create(event=self.event, name='Tickets', size=5)
|
||||||
self.ticket = Item.objects.create(event=self.event, name='Early-bird ticket',
|
self.ticket = Item.objects.create(event=self.event, name='Early-bird ticket',
|
||||||
category=self.category, default_price=23, admission=True)
|
category=self.category, default_price=23, admission=True)
|
||||||
@@ -36,7 +36,7 @@ class CheckoutTestCase(TestCase):
|
|||||||
self.session_key = self.client.cookies.get(settings.SESSION_COOKIE_NAME).value
|
self.session_key = self.client.cookies.get(settings.SESSION_COOKIE_NAME).value
|
||||||
self._set_session('email', 'admin@localhost')
|
self._set_session('email', 'admin@localhost')
|
||||||
|
|
||||||
self.workshopcat = ItemCategory.objects.create(name="Workshops", is_addon=True, event=self.event)
|
self.workshopcat = ItemCategory.all.create(name="Workshops", is_addon=True, event=self.event)
|
||||||
self.workshopquota = Quota.objects.create(event=self.event, name='Workshop 1', size=5)
|
self.workshopquota = Quota.objects.create(event=self.event, name='Workshop 1', size=5)
|
||||||
self.workshop1 = Item.objects.create(event=self.event, name='Workshop 1',
|
self.workshop1 = Item.objects.create(event=self.event, name='Workshop 1',
|
||||||
category=self.workshopcat, default_price=12)
|
category=self.workshopcat, default_price=12)
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ class ItemDisplayTest(EventTestMixin, SoupTest):
|
|||||||
self.assertNotIn("Early-bird", html)
|
self.assertNotIn("Early-bird", html)
|
||||||
|
|
||||||
def test_simple_with_category(self):
|
def test_simple_with_category(self):
|
||||||
c = ItemCategory.objects.create(event=self.event, name="Entry tickets", position=0)
|
c = ItemCategory.all.create(event=self.event, name="Entry tickets", position=0)
|
||||||
q = Quota.objects.create(event=self.event, name='Quota', size=2)
|
q = Quota.objects.create(event=self.event, name='Quota', size=2)
|
||||||
item = Item.objects.create(event=self.event, name='Early-bird ticket', category=c, default_price=0)
|
item = Item.objects.create(event=self.event, name='Early-bird ticket', category=c, default_price=0)
|
||||||
q.items.add(item)
|
q.items.add(item)
|
||||||
@@ -125,13 +125,13 @@ class ItemDisplayTest(EventTestMixin, SoupTest):
|
|||||||
self.assertIn("Early-bird", doc.select("section:nth-of-type(1) div:nth-of-type(1)")[0].text)
|
self.assertIn("Early-bird", doc.select("section:nth-of-type(1) div:nth-of-type(1)")[0].text)
|
||||||
|
|
||||||
def test_simple_without_quota(self):
|
def test_simple_without_quota(self):
|
||||||
c = ItemCategory.objects.create(event=self.event, name="Entry tickets", position=0)
|
c = ItemCategory.all.create(event=self.event, name="Entry tickets", position=0)
|
||||||
Item.objects.create(event=self.event, name='Early-bird ticket', category=c, default_price=0)
|
Item.objects.create(event=self.event, name='Early-bird ticket', category=c, default_price=0)
|
||||||
resp = self.client.get('/%s/%s/' % (self.orga.slug, self.event.slug))
|
resp = self.client.get('/%s/%s/' % (self.orga.slug, self.event.slug))
|
||||||
self.assertNotIn("Early-bird", resp.rendered_content)
|
self.assertNotIn("Early-bird", resp.rendered_content)
|
||||||
|
|
||||||
def test_no_variations_in_quota(self):
|
def test_no_variations_in_quota(self):
|
||||||
c = ItemCategory.objects.create(event=self.event, name="Entry tickets", position=0)
|
c = ItemCategory.all.create(event=self.event, name="Entry tickets", position=0)
|
||||||
q = Quota.objects.create(event=self.event, name='Quota', size=2)
|
q = Quota.objects.create(event=self.event, name='Quota', size=2)
|
||||||
item = Item.objects.create(event=self.event, name='Early-bird ticket', category=c, default_price=0)
|
item = Item.objects.create(event=self.event, name='Early-bird ticket', category=c, default_price=0)
|
||||||
ItemVariation.objects.create(item=item, value='Blue')
|
ItemVariation.objects.create(item=item, value='Blue')
|
||||||
@@ -140,7 +140,7 @@ class ItemDisplayTest(EventTestMixin, SoupTest):
|
|||||||
self.assertNotIn("Early-bird", resp.rendered_content)
|
self.assertNotIn("Early-bird", resp.rendered_content)
|
||||||
|
|
||||||
def test_one_variation_in_quota(self):
|
def test_one_variation_in_quota(self):
|
||||||
c = ItemCategory.objects.create(event=self.event, name="Entry tickets", position=0)
|
c = ItemCategory.all.create(event=self.event, name="Entry tickets", position=0)
|
||||||
q = Quota.objects.create(event=self.event, name='Quota', size=2)
|
q = Quota.objects.create(event=self.event, name='Quota', size=2)
|
||||||
item = Item.objects.create(event=self.event, name='Early-bird ticket', category=c, default_price=0)
|
item = Item.objects.create(event=self.event, name='Early-bird ticket', category=c, default_price=0)
|
||||||
var1 = ItemVariation.objects.create(item=item, value='Red')
|
var1 = ItemVariation.objects.create(item=item, value='Red')
|
||||||
@@ -150,7 +150,7 @@ class ItemDisplayTest(EventTestMixin, SoupTest):
|
|||||||
self._assert_variation_found()
|
self._assert_variation_found()
|
||||||
|
|
||||||
def test_one_variation_in_unlimited_quota(self):
|
def test_one_variation_in_unlimited_quota(self):
|
||||||
c = ItemCategory.objects.create(event=self.event, name="Entry tickets", position=0)
|
c = ItemCategory.all.create(event=self.event, name="Entry tickets", position=0)
|
||||||
q = Quota.objects.create(event=self.event, name='Quota', size=None)
|
q = Quota.objects.create(event=self.event, name='Quota', size=None)
|
||||||
item = Item.objects.create(event=self.event, name='Early-bird ticket', category=c, default_price=0)
|
item = Item.objects.create(event=self.event, name='Early-bird ticket', category=c, default_price=0)
|
||||||
var1 = ItemVariation.objects.create(item=item, value='Red')
|
var1 = ItemVariation.objects.create(item=item, value='Red')
|
||||||
@@ -166,7 +166,7 @@ class ItemDisplayTest(EventTestMixin, SoupTest):
|
|||||||
self.assertNotIn("Black", doc.select("section:nth-of-type(1)")[0].text)
|
self.assertNotIn("Black", doc.select("section:nth-of-type(1)")[0].text)
|
||||||
|
|
||||||
def test_variation_prices_in_quota(self):
|
def test_variation_prices_in_quota(self):
|
||||||
c = ItemCategory.objects.create(event=self.event, name="Entry tickets", position=0)
|
c = ItemCategory.all.create(event=self.event, name="Entry tickets", position=0)
|
||||||
q = Quota.objects.create(event=self.event, name='Quota', size=2)
|
q = Quota.objects.create(event=self.event, name='Quota', size=2)
|
||||||
item = Item.objects.create(event=self.event, name='Early-bird ticket', category=c, default_price=12)
|
item = Item.objects.create(event=self.event, name='Early-bird ticket', category=c, default_price=12)
|
||||||
var1 = ItemVariation.objects.create(item=item, value='Red', default_price=14, position=1)
|
var1 = ItemVariation.objects.create(item=item, value='Red', default_price=14, position=1)
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ class OrdersTest(TestCase):
|
|||||||
self.event.settings.set('payment_banktransfer__enabled', True)
|
self.event.settings.set('payment_banktransfer__enabled', True)
|
||||||
self.event.settings.set('ticketoutput_testdummy__enabled', True)
|
self.event.settings.set('ticketoutput_testdummy__enabled', True)
|
||||||
|
|
||||||
self.category = ItemCategory.objects.create(event=self.event, name="Everything", position=0)
|
self.category = ItemCategory.all.create(event=self.event, name="Everything", position=0)
|
||||||
self.quota_shirts = Quota.objects.create(event=self.event, name='Shirts', size=2)
|
self.quota_shirts = Quota.objects.create(event=self.event, name='Shirts', size=2)
|
||||||
self.shirt = Item.objects.create(event=self.event, name='T-Shirt', category=self.category, default_price=12)
|
self.shirt = Item.objects.create(event=self.event, name='T-Shirt', category=self.category, default_price=12)
|
||||||
self.quota_shirts.items.add(self.shirt)
|
self.quota_shirts.items.add(self.shirt)
|
||||||
|
|||||||
Reference in New Issue
Block a user