Do not use deepcopy on models

This commit is contained in:
Raphael Michel
2018-08-07 15:43:57 +02:00
parent 0c0172a0b6
commit c702814203
7 changed files with 31 additions and 13 deletions

View File

@@ -1,5 +1,3 @@
import copy
from django import forms
from django.core.exceptions import ValidationError
from django.db.models import Max
@@ -18,6 +16,7 @@ from pretix.base.models.items import ItemAddOn
from pretix.base.signals import item_copy_data
from pretix.control.forms import SplitDateTimePickerWidget
from pretix.control.forms.widgets import Select2
from pretix.helpers.models import modelcopy
from pretix.helpers.money import change_decimal_field
@@ -78,7 +77,7 @@ class QuotaForm(I18nModelForm):
self.instance = kwargs.get('instance', None)
self.event = kwargs.get('event')
items = kwargs.pop('items', None) or self.event.items.prefetch_related('variations')
self.original_instance = copy.deepcopy(self.instance) if self.instance else None
self.original_instance = modelcopy(self.instance) if self.instance else None
initial = kwargs.get('initial', {})
if self.instance and self.instance.pk:
initial['itemvars'] = [str(i.pk) for i in self.instance.items.all()] + [

View File

@@ -1,5 +1,3 @@
import copy
from django import forms
from django.core.exceptions import ObjectDoesNotExist, ValidationError
from django.db.models.functions import Lower
@@ -11,6 +9,7 @@ from pretix.base.models import Item, Voucher
from pretix.control.forms import SplitDateTimePickerWidget
from pretix.control.forms.widgets import Select2, Select2ItemVarQuota
from pretix.control.signals import voucher_form_validation
from pretix.helpers.models import modelcopy
class FakeChoiceField(forms.ChoiceField):
@@ -45,7 +44,7 @@ class VoucherForm(I18nModelForm):
instance = kwargs.get('instance')
initial = kwargs.get('initial')
if instance:
self.initial_instance_data = copy.deepcopy(instance)
self.initial_instance_data = modelcopy(instance)
try:
if instance.variation:
initial['itemvar'] = '%d-%d' % (instance.item.pk, instance.variation.pk)
@@ -217,7 +216,7 @@ class VoucherBulkForm(VoucherForm):
def save(self, event, *args, **kwargs):
objs = []
for code in self.cleaned_data['codes']:
obj = copy.deepcopy(self.instance)
obj = modelcopy(self.instance)
obj.event = event
obj.code = code
data = dict(self.cleaned_data)