forked from CGM_Public/pretix_original
Allow to unset QuestionAnswers
This commit is contained in:
@@ -4,7 +4,7 @@ from decimal import Decimal
|
|||||||
|
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.core.files.uploadedfile import UploadedFile
|
from django.core.files.uploadedfile import UploadedFile
|
||||||
from django.db.models import Prefetch
|
from django.db.models import Prefetch, QuerySet
|
||||||
from django.utils.functional import cached_property
|
from django.utils.functional import cached_property
|
||||||
|
|
||||||
from pretix.base.forms.questions import (
|
from pretix.base.forms.questions import (
|
||||||
@@ -89,19 +89,20 @@ class BaseQuestionsViewMixin:
|
|||||||
elif k == 'attendee_email':
|
elif k == 'attendee_email':
|
||||||
form.pos.attendee_email = v if v != '' else None
|
form.pos.attendee_email = v if v != '' else None
|
||||||
form.pos.save()
|
form.pos.save()
|
||||||
elif k.startswith('question_') and v is not None:
|
elif k.startswith('question_'):
|
||||||
field = form.fields[k]
|
field = form.fields[k]
|
||||||
if hasattr(field, 'answer'):
|
if hasattr(field, 'answer'):
|
||||||
# We already have a cached answer object, so we don't
|
# We already have a cached answer object, so we don't
|
||||||
# have to create a new one
|
# have to create a new one
|
||||||
if v == '' or v is None or (isinstance(field, forms.FileField) and v is False):
|
if v == '' or v is None or (isinstance(field, forms.FileField) and v is False) \
|
||||||
|
or (isinstance(v, QuerySet) and not v.exists()):
|
||||||
if field.answer.file:
|
if field.answer.file:
|
||||||
field.answer.file.delete()
|
field.answer.file.delete()
|
||||||
field.answer.delete()
|
field.answer.delete()
|
||||||
else:
|
else:
|
||||||
self._save_to_answer(field, field.answer, v)
|
self._save_to_answer(field, field.answer, v)
|
||||||
field.answer.save()
|
field.answer.save()
|
||||||
elif v != '':
|
elif v != '' and v is not None:
|
||||||
answer = QuestionAnswer(
|
answer = QuestionAnswer(
|
||||||
cartposition=(form.pos if isinstance(form.pos, CartPosition) else None),
|
cartposition=(form.pos if isinstance(form.pos, CartPosition) else None),
|
||||||
orderposition=(form.pos if isinstance(form.pos, OrderPosition) else None),
|
orderposition=(form.pos if isinstance(form.pos, OrderPosition) else None),
|
||||||
|
|||||||
Reference in New Issue
Block a user