forked from CGM_Public/pretix_original
Fix changing orders when only variants can be changed and no addons
This commit is contained in:
@@ -1392,31 +1392,34 @@ class OrderChange(EventViewMixin, OrderDetailMixin, TemplateView):
|
|||||||
reissue_invoice=True,
|
reissue_invoice=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
addons_data = []
|
form_valid = True
|
||||||
for p in self.positions:
|
if self.request.event.settings.change_allow_user_addons:
|
||||||
if p.addon_to_id or not hasattr(p, 'addon_form'):
|
addons_data = []
|
||||||
continue
|
for p in self.positions:
|
||||||
for c in p.addon_form['categories']:
|
if p.addon_to_id or not hasattr(p, 'addon_form'):
|
||||||
try:
|
continue
|
||||||
selected = self._clean_category(p.addon_form, c)
|
for c in p.addon_form['categories']:
|
||||||
except ValidationError as e:
|
try:
|
||||||
messages.error(request, e.message % e.params if e.params else e.message)
|
selected = self._clean_category(p.addon_form, c)
|
||||||
return self.get(request, *args, **kwargs)
|
except ValidationError as e:
|
||||||
|
messages.error(request, e.message % e.params if e.params else e.message)
|
||||||
|
return self.get(request, *args, **kwargs)
|
||||||
|
|
||||||
for (i, v), (c, price) in selected.items():
|
for (i, v), (c, price) in selected.items():
|
||||||
addons_data.append({
|
addons_data.append({
|
||||||
'addon_to': p.pk,
|
'addon_to': p.pk,
|
||||||
'item': i.pk,
|
'item': i.pk,
|
||||||
'variation': v.pk if v else None,
|
'variation': v.pk if v else None,
|
||||||
'count': c,
|
'count': c,
|
||||||
'price': price,
|
'price': price,
|
||||||
})
|
})
|
||||||
try:
|
try:
|
||||||
ocm.set_addons(addons_data)
|
ocm.set_addons(addons_data)
|
||||||
except OrderError as e:
|
except OrderError as e:
|
||||||
messages.error(self.request, str(e))
|
messages.error(self.request, str(e))
|
||||||
form_valid = False
|
form_valid = False
|
||||||
else:
|
|
||||||
|
if form_valid:
|
||||||
form_valid = self._process_change(ocm)
|
form_valid = self._process_change(ocm)
|
||||||
|
|
||||||
if not form_valid:
|
if not form_valid:
|
||||||
|
|||||||
Reference in New Issue
Block a user