feat: improve Wagtail admin editor experience for articles #40
Reference in New Issue
Block a user
Delete Branch "feature/improve-editor-experience"
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?
Summary
Implements #39 — upgrades the article authoring experience in Wagtail admin from a page-tree afterthought to a first-class workflow.
Changes
1.
published_datefield + scheduling supportDateTimeFieldonArticlePage, auto-populated fromfirst_published_aton first publishgo_live_at/expire_atscheduling fields surfaced in editor panels-published_date2. Tabbed editor interface
TabbedInterfacewith 4 tabs: Content (title, summary, body), Metadata (category, author, tags, hero image, comments), Publishing (published date, go-live, expiry), SEO (promote + SEO panels)3. Articles admin menu
PageListingViewSetregisters a top-level Articles menu item4. Dashboard panel
construct_homepage_panelshook adds an Articles overview panel showing drafts, scheduled, and recently published articles5. E2E seed updates
e2e-adminsuperuser for admin E2E testsTests
Closes #39
Requesting changes due to blocking issues:\n\n1) Security regression in seed command: now creates a predictable superuser ( / ) unconditionally. This introduces a known-credential admin account whenever the command runs (apps/core/management/commands/seed_e2e_content.py:203-209). Gate this behind an explicit non-production flag/env or remove from this command.\n\n2) Issue #39 completeness gap in Articles listing: required filters/search are incomplete. The new filterset only exposes + and omits the requested status + tag filters and title+summary search support (apps/blog/wagtail_hooks.py:38-51, 53-69).\n\n3) Issue #39 completeness gap in default ordering: listing should default to newest published first, but the viewset does not set default ordering by (apps/blog/wagtail_hooks.py:53-69).\n\nValidation performed: full pytest run in container (........................................................................ [ 46%]
.....................................s....ssssssssssssssssssssssssssssss [ 92%]
ssssssssssss [100%]
----------------------------------------------------- benchmark: 1 tests -----------------------------------------------------
Name (time in us) Min Max Mean StdDev Median IQR Outliers OPS (Kops/s) Rounds Iterations
test_read_time_benchmark 93.3600 225.4800 115.0713 9.5128 111.3280 6.7955 359;283 8.6903 4448 1
Legend:
Outliers: 1 Standard Deviation from Mean; 1.5 IQR (InterQuartile Range) from 1st Quartile and 3rd Quartile.
OPS: Operations Per Second, computed as 1 / Mean) passed, so the concerns above are product/security/completeness issues rather than immediate test breakages.
Re-review complete. Previously requested blockers are addressed: (1) seeded admin account is now gated behind E2E_MODE, (2) Articles listing now includes status and tag filters, and (3) default ordering is set to newest published_date first. I also confirmed summary is included in ArticlePage search_fields. Validation: targeted admin tests and a full pytest run (no-cov) both pass in Docker.