Skip to content

v1.33: fact sheet form is empty for participants — submissions are saved with fact_sheet_answers = null (#2584) #2600

Description

@Indraos

Since v1.33 (released 2026-09-29), participants no longer see any fact sheet questions on the submission upload page, and their submissions are stored with fact_sheet_answers: null, even when the fact sheet fields are marked required. Organizers still see the form, so this is easy to miss.

Cause. #2584 added fact_sheet to CompetitionDetailSerializer.ADMIN_ONLY_FIELDS, so it is removed from the competition detail response for non-admins. The upload form is built from exactly that field:

  • src/static/riot/competitions/detail/_tabs.tag passes fact_sheet="{ competition.fact_sheet }" to <submission-upload>.
  • src/static/riot/competitions/detail/submission_upload.tag renders one input per entry in opts.fact_sheet (lines 10–13). For a participant this is now undefined, so no inputs are rendered.
  • get_fact_sheet_answers() in the same file then returns null for the empty form.
  • SubmissionCreationSerializer.validate() only checks fact sheet answers if attrs.get('fact_sheet_answers'), so a null payload skips the required-field check and the submission is accepted.

Not fixed by #2591. On develop, #2591 replaced ADMIN_ONLY_FIELDS with Meta.public_fields / Meta.admin_fields, but fact_sheet is still in admin_fields, so v1.34 (#2599) as currently staged still has this bug.

Observed. In competition 17822 (three required text fields), all 376 submissions made through the web form up to 2026-09-29 12:09 UTC have complete answers. All 39 submissions made since 2026-09-30 00:41 UTC have fact_sheet_answers: null. v1.33 was published at 2026-09-29 12:59 UTC. Fields with "Show on leaderboard" enabled are now blank on the leaderboard for new entries.

Expected. Participants see the fact sheet questions and required answers are enforced, as before v1.33.

Suggested fix.

  1. Move fact_sheet to public_fields. It is the question definition participants must see to submit, not a secret.
  2. Optionally, enforce required fields on the server when fact_sheet_answers is missing, so a frontend problem cannot silently skip them.

To reproduce.

  1. Take any competition with a fact sheet that has at least one required field.
  2. Log in as a participant who is not the creator or a collaborator and open the submission upload page: the "Metadata or Fact Sheet" section has no questions.
  3. Upload a submission: it is accepted, and /api/submissions/<id>/ shows fact_sheet_answers: null.
  4. Log in as the organizer: the questions are there.

Related: #2590 (same root cause, different fields).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions