DataTalksClub / DataTalksClub/website

Keep project submission status persisted after failed validation

Open
#229 5 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug courses frontend P1 testing
Dominant language
Python
Stars
0
Forks
0
PR merge metrics
No merged PRs in 30d

Description

Parent scope: #56 (preserved cohort project behavior)

User outcome

When a learner's first project submission is rejected by validation, the page must not claim
that a submission was saved. The learner sees the validation errors, the entered form remains
available for correction, and the status stays explicitly Not submitted until a submission is
actually persisted. A persisted submission continues to show Submitted with its saved time and
the update action.

This is a narrow target-native correctness slice. It does not complete #56 or change project
validation, scoring, peer review, or cohort migration behavior.

Scope

  • Expose an explicit persisted-submission boolean from the project-page context rather than using
    the truthiness of a temporary validation object.
  • Use that boolean consistently for the status badge, saved-status text, update/remove affordances,
    and the save/update button label.
  • Preserve the existing invalid-submission form values and validation errors.
  • Refresh the adoption manifest for every candidate-owned copied file whose bytes change.

Non-goals

  • No change to project URL validation or network safety rules.
  • No change to persisted submission data, scoring, peer assignment, or notifications.
  • No completion claim for the broader #56 project/peer-review contract.

Acceptance criteria

  • A rejected first submission with no persisted row renders Not submitted and Status: Not
    saved yet
    , with no saved timestamp or update/remove action.
  • The rejected form retains the learner's entered values and validation errors so it can be
    corrected and resubmitted.
  • A persisted submission renders Submitted, its saved timestamp, and Update submission.
  • Desktop and mobile project pages remain readable and have no horizontal overflow in both
    states.
  • Focused Django, core/CI, quality, and browser evidence passes on a current-main candidate;
    the adoption manifest agrees with the changed copied files.

Dependencies

Uses the existing copied project behavior from #30. The later Course → Cohort work in #51/#56
must preserve this explicit persisted-state contract.

Existing evidence to reattach

The preserved candidate in .tmp/project-submission-status-current-20260827 was implemented
before this issue was formally groomed. It is not accepted automatically; it may be reused only
after the normal current-main engineer/tester/PM lifecycle is recorded against this issue.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the project-page context and the copied project behavior from #30, then inspect the candidate evidence in .tmp/project-submission-status-current-20260827. Run the focused Django, core/CI, quality, and browser evidence on current main; done means rejected submissions remain Not submitted with values and errors, persisted submissions show their saved state, both layouts remain readable, and the adoption manifest matches changed copied files.

Written by the indexing model from the issue text.

Assessment

Tech stack
django, python
Domain
full-stack, testing
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.