Context
PR #589 (merged 2026-04-29) removed the uuid from anonymous account display names but inadvertently left name = NULL. PR #591 fixes the going-forward path by deriving name from the generated username (adjective + animal → "Quirky Owl").
Anonymous accounts created between the merge of #589 and the merge of #591 still have name = NULL in the database. They will continue to:
- crash the teacher-classroom management page,
- show a broken Congratulations screen at the end of an exercise session.
See zeeguu/web#1095 for the user-visible symptoms.
Scope
Suggested approach
One-shot script (or SQL) that, for each affected user, derives a display name from the existing username:
"quirky_owl42" -> "Quirky Owl"
i.e. split on _, strip trailing digits from the second segment, capitalize each part, join with a space. The username column is already populated for these users (the bug was only in name), so no need to regenerate.
Acceptance
- All previously NULL anonymous-account
name values are populated.
- Teacher classroom page renders without crashing for affected users.
- Congratulations page renders a sensible name for affected users.
Context
PR #589 (merged 2026-04-29) removed the uuid from anonymous account display names but inadvertently left
name = NULL. PR #591 fixes the going-forward path by derivingnamefrom the generated username (adjective + animal→ "Quirky Owl").Anonymous accounts created between the merge of #589 and the merge of #591 still have
name = NULLin the database. They will continue to:See zeeguu/web#1095 for the user-visible symptoms.
Scope
User.is_anonymous == True, or whatever the equivalent check is) wherename IS NULL, created between 2026-04-29 19:53 UTC and the merge time of Fix display names and add avatar color randomization for anonymous accounts #591.SELECT COUNT(*)before running the backfill.Suggested approach
One-shot script (or SQL) that, for each affected user, derives a display name from the existing
username:i.e. split on
_, strip trailing digits from the second segment, capitalize each part, join with a space. Theusernamecolumn is already populated for these users (the bug was only inname), so no need to regenerate.Acceptance
namevalues are populated.