Article editor UX regression: duplicated SEO panels + required defaults blocking draft creation #53
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
Creating a new article in Wagtail currently has significant editor friction:
This is the opposite of a writer-friendly draft flow.
Investigation Findings
1) SEO tab is duplicating overlapping panel groups
Current
ArticlePage.edit_handleruses:Page.promote_panels + SeoMixin.seo_panelsIn practice this renders overlapping fields twice in the SEO tab:
slug,seo_title,search_description,show_in_menusappear more than onceRelevant code:
apps/blog/models.py(ArticlePage.edit_handler)Runtime inspection confirms duplicate resolved panel fields.
2) Form requires multiple fields with no defaults
ArticlePageadmin form currently marks these as required:slugauthorcategorysummaryand all of them initialize as
Noneon create.So a writer cannot save a basic draft with title/body only.
3) Category default in
save()is too late for form validationArticlePage.save()has fallback logic for category (general), but model form validation runs first, so required-form errors block reachingsave()when category is blank.4) No current-user author defaulting
Authorsupportsuser = OneToOneField(User, ...), but create/edit flow does not currently preselect author based on the logged-in editor.Proposed Solution (Step-by-Step)
Step 1: Fix panel composition to remove duplication
Refactor SEO tab to avoid combining overlapping promote/SEO panel sources.
Recommended:
slug/ SEO blocks)Step 2: Make draft creation forgiving with server-side fallbacks
Introduce a custom
ArticlePageadmin form (base_form_class) to centralize defaulting:slug:clean()(server-side)author:Authorlinked to currentrequest.usercategory:generalcategorysummary:body_texthelper)Step 3: Keep model-level safety nets
Retain/adjust
save()safeguards so non-admin creation paths still get sane defaults.Step 4: Add regression tests
Add tests that verify:
generalAcceptance Criteria
codex_a referenced this issue2026-03-04 22:32:24 +00:00