diff --git a/src/pretix/base/models.py b/src/pretix/base/models.py index 30825dff06..6578eb3afc 100644 --- a/src/pretix/base/models.py +++ b/src/pretix/base/models.py @@ -71,7 +71,8 @@ class Versionable(BaseVersionable): source = getattr(self, manager_field_name) # returns a VersionedRelatedManager instance # Destination: the clone, where the cloned relations should point to source.through.objects.filter(**{source.source_field.attname: clone.id}).update(**{ - source.source_field.attname: self.id}) + source.source_field.attname: self.id, 'version_end_date': forced_version_date + }) class UserManager(BaseUserManager): diff --git a/src/pretix/control/views/item.py b/src/pretix/control/views/item.py index 2d3699f08a..e261daca94 100644 --- a/src/pretix/control/views/item.py +++ b/src/pretix/control/views/item.py @@ -514,22 +514,21 @@ class QuotaEditorMixin: # optimization of pretixbase.models.Versionable.clone_shallow() # items = self.object.items.all() # variations = self.object.variations.all() + selected_variations = [] self.object = form.instance for item in self.items: field = form.fields['item_%s' % item.identity] data = form.cleaned_data['item_%s' % item.identity] if isinstance(field, VariationsField): - self.object.variations.add(*data) - # for v in data: - # if v not in variations: - # self.object.variations.add(v) - # for v in variations: - # if v not in data: - # self.object.variations.remove(v) + for v in data: + selected_variations.append(v) if data: # and item not in items: self.object.items.add(item) # elif not data and item in items: # self.object.items.remove(item) + + self.object.variations.add(*[v for v in selected_variations]) # if v not in variations]) + # self.object.variations.remove(*[v for v in variations if v not in selected_variations]) return res