forked from CGM_Public/pretix_original
API: Fix event cloning, limit_sales_channels should never be set when all_sales_channels is set (Z#23169537)
This commit is contained in:
@@ -110,6 +110,10 @@ class SalesChannelMigrationMixin:
|
|||||||
data["all_sales_channels"] = False
|
data["all_sales_channels"] = False
|
||||||
data["limit_sales_channels"] = data["sales_channels"]
|
data["limit_sales_channels"] = data["sales_channels"]
|
||||||
del data["sales_channels"]
|
del data["sales_channels"]
|
||||||
|
|
||||||
|
if data.get("all_sales_channels"):
|
||||||
|
data["limit_sales_channels"] = []
|
||||||
|
|
||||||
return super().to_internal_value(data)
|
return super().to_internal_value(data)
|
||||||
|
|
||||||
def to_representation(self, value):
|
def to_representation(self, value):
|
||||||
|
|||||||
@@ -369,7 +369,7 @@ class ItemSerializer(SalesChannelMigrationMixin, I18nAwareModelSerializer):
|
|||||||
require_membership_types = validated_data.pop('require_membership_types', [])
|
require_membership_types = validated_data.pop('require_membership_types', [])
|
||||||
limit_sales_channels = validated_data.pop('limit_sales_channels', [])
|
limit_sales_channels = validated_data.pop('limit_sales_channels', [])
|
||||||
item = Item.objects.create(**validated_data)
|
item = Item.objects.create(**validated_data)
|
||||||
if limit_sales_channels:
|
if limit_sales_channels and not validated_data.get('all_sales_channels'):
|
||||||
item.limit_sales_channels.add(*limit_sales_channels)
|
item.limit_sales_channels.add(*limit_sales_channels)
|
||||||
if picture:
|
if picture:
|
||||||
item.picture.save(os.path.basename(picture.name), picture)
|
item.picture.save(os.path.basename(picture.name), picture)
|
||||||
|
|||||||
@@ -297,7 +297,8 @@ class EventViewSet(viewsets.ModelViewSet):
|
|||||||
|
|
||||||
if 'all_sales_channels' in serializer.validated_data and 'sales_channels' in serializer.validated_data:
|
if 'all_sales_channels' in serializer.validated_data and 'sales_channels' in serializer.validated_data:
|
||||||
new_event.all_sales_channels = serializer.validated_data['all_sales_channels']
|
new_event.all_sales_channels = serializer.validated_data['all_sales_channels']
|
||||||
new_event.limit_sales_channels.set(serializer.validated_data['limit_sales_channels'])
|
if not new_event.all_sales_channels:
|
||||||
|
new_event.limit_sales_channels.set(serializer.validated_data['limit_sales_channels'])
|
||||||
else:
|
else:
|
||||||
serializer.instance.set_defaults()
|
serializer.instance.set_defaults()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user