mirror of
https://github.com/pretix/pretix.git
synced 2026-08-21 12:36:26 +00:00
API: Fix creation of items with required membership types
This commit is contained in:
@@ -251,9 +251,12 @@ class ItemSerializer(I18nAwareModelSerializer):
|
|||||||
bundles_data = validated_data.pop('bundles') if 'bundles' in validated_data else {}
|
bundles_data = validated_data.pop('bundles') if 'bundles' in validated_data else {}
|
||||||
meta_data = validated_data.pop('meta_data', None)
|
meta_data = validated_data.pop('meta_data', None)
|
||||||
picture = validated_data.pop('picture', None)
|
picture = validated_data.pop('picture', None)
|
||||||
|
require_membership_types = validated_data.pop('require_membership_types', [])
|
||||||
item = Item.objects.create(**validated_data)
|
item = Item.objects.create(**validated_data)
|
||||||
if picture:
|
if picture:
|
||||||
item.picture.save(os.path.basename(picture.name), picture)
|
item.picture.save(os.path.basename(picture.name), picture)
|
||||||
|
if require_membership_types:
|
||||||
|
item.require_membership_types.add(*require_membership_types)
|
||||||
|
|
||||||
for variation_data in variations_data:
|
for variation_data in variations_data:
|
||||||
require_membership_types = variation_data.pop('require_membership_types', [])
|
require_membership_types = variation_data.pop('require_membership_types', [])
|
||||||
|
|||||||
@@ -213,4 +213,10 @@ def item(event):
|
|||||||
return event.items.create(name='foo', default_price=3)
|
return event.items.create(name='foo', default_price=3)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
@scopes_disabled()
|
||||||
|
def membership_type(organizer):
|
||||||
|
return organizer.membership_types.create(name='foo')
|
||||||
|
|
||||||
|
|
||||||
utils.setup_databases = scopes_disabled()(utils.setup_databases)
|
utils.setup_databases = scopes_disabled()(utils.setup_databases)
|
||||||
|
|||||||
@@ -434,7 +434,7 @@ def test_item_detail_bundles(token_client, organizer, event, team, item, categor
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_item_create(token_client, organizer, event, item, category, taxrule):
|
def test_item_create(token_client, organizer, event, item, category, taxrule, membership_type):
|
||||||
resp = token_client.post(
|
resp = token_client.post(
|
||||||
'/api/v1/organizers/{}/events/{}/items/'.format(organizer.slug, event.slug),
|
'/api/v1/organizers/{}/events/{}/items/'.format(organizer.slug, event.slug),
|
||||||
{
|
{
|
||||||
@@ -462,6 +462,7 @@ def test_item_create(token_client, organizer, event, item, category, taxrule):
|
|||||||
"max_per_order": None,
|
"max_per_order": None,
|
||||||
"checkin_attention": False,
|
"checkin_attention": False,
|
||||||
"has_variations": True,
|
"has_variations": True,
|
||||||
|
"require_membership_types": [membership_type.pk],
|
||||||
"meta_data": {
|
"meta_data": {
|
||||||
"day": "Wednesday"
|
"day": "Wednesday"
|
||||||
}
|
}
|
||||||
@@ -472,6 +473,7 @@ def test_item_create(token_client, organizer, event, item, category, taxrule):
|
|||||||
with scopes_disabled():
|
with scopes_disabled():
|
||||||
assert Item.objects.get(pk=resp.data['id']).sales_channels == ["web", "pretixpos"]
|
assert Item.objects.get(pk=resp.data['id']).sales_channels == ["web", "pretixpos"]
|
||||||
assert Item.objects.get(pk=resp.data['id']).meta_data == {'day': 'Wednesday'}
|
assert Item.objects.get(pk=resp.data['id']).meta_data == {'day': 'Wednesday'}
|
||||||
|
assert Item.objects.get(pk=resp.data['id']).require_membership_types.count() == 1
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
|
|||||||
Reference in New Issue
Block a user