API: Fix creation of items with required membership types

This commit is contained in:
Raphael Michel
2022-02-17 17:33:52 +01:00
parent 18917769ef
commit 06ffa0bcd5
3 changed files with 12 additions and 1 deletions

View File

@@ -251,9 +251,12 @@ class ItemSerializer(I18nAwareModelSerializer):
bundles_data = validated_data.pop('bundles') if 'bundles' in validated_data else {}
meta_data = validated_data.pop('meta_data', None)
picture = validated_data.pop('picture', None)
require_membership_types = validated_data.pop('require_membership_types', [])
item = Item.objects.create(**validated_data)
if 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:
require_membership_types = variation_data.pop('require_membership_types', [])

View File

@@ -213,4 +213,10 @@ def item(event):
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)

View File

@@ -434,7 +434,7 @@ def test_item_detail_bundles(token_client, organizer, event, team, item, categor
@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(
'/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,
"checkin_attention": False,
"has_variations": True,
"require_membership_types": [membership_type.pk],
"meta_data": {
"day": "Wednesday"
}
@@ -472,6 +473,7 @@ def test_item_create(token_client, organizer, event, item, category, taxrule):
with scopes_disabled():
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']).require_membership_types.count() == 1
@pytest.mark.django_db