forked from CGM_Public/pretix_original
Check-in: Fix handling of optional file questions (Z#23236493) (#6251)
This commit is contained in:
@@ -788,7 +788,10 @@ def _redeem_process(*, checkinlists, raw_barcode, answers_data, datetime, force,
|
|||||||
if str(q.pk) in answers_data:
|
if str(q.pk) in answers_data:
|
||||||
try:
|
try:
|
||||||
if q.type == Question.TYPE_FILE:
|
if q.type == Question.TYPE_FILE:
|
||||||
given_answers[q] = _handle_file_upload(answers_data[str(q.pk)], user, auth)
|
if answers_data[str(q.pk)]:
|
||||||
|
given_answers[q] = _handle_file_upload(answers_data[str(q.pk)], user, auth)
|
||||||
|
else:
|
||||||
|
given_answers[q] = None
|
||||||
else:
|
else:
|
||||||
given_answers[q] = q.clean_answer(answers_data[str(q.pk)])
|
given_answers[q] = q.clean_answer(answers_data[str(q.pk)])
|
||||||
except (ValidationError, BaseValidationError):
|
except (ValidationError, BaseValidationError):
|
||||||
|
|||||||
@@ -1098,6 +1098,27 @@ def test_question_upload(token_client, organizer, clist, event, order, question)
|
|||||||
assert order.positions.first().answers.get(question=question[0]).file
|
assert order.positions.first().answers.get(question=question[0]).file
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.django_db
|
||||||
|
def test_question_upload_optional(token_client, organizer, clist, event, order, question):
|
||||||
|
with scopes_disabled():
|
||||||
|
p = order.positions.first()
|
||||||
|
question[0].type = 'F'
|
||||||
|
question[0].required = False
|
||||||
|
question[0].save()
|
||||||
|
|
||||||
|
resp = _redeem(token_client, organizer, clist, p.pk, {})
|
||||||
|
assert resp.status_code == 400
|
||||||
|
assert resp.data['status'] == 'incomplete'
|
||||||
|
with scopes_disabled():
|
||||||
|
assert resp.data['questions'] == [QuestionSerializer(question[0]).data]
|
||||||
|
|
||||||
|
resp = _redeem(token_client, organizer, clist, p.pk, {'answers': {question[0].pk: ""}})
|
||||||
|
assert resp.status_code == 201
|
||||||
|
assert resp.data['status'] == 'ok'
|
||||||
|
with scopes_disabled():
|
||||||
|
assert not order.positions.first().answers.filter(question=question[0]).exists()
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_store_failed(token_client, organizer, clist, event, order):
|
def test_store_failed(token_client, organizer, clist, event, order):
|
||||||
with scopes_disabled():
|
with scopes_disabled():
|
||||||
|
|||||||
Reference in New Issue
Block a user