Skip to content

Data Health: standardize per-row action links + flag publications missing expected companion artifacts #1405

Description

@jonfroehlich

Motivation

The admin Data Health dashboard (/admin/data-health/) is meant to keep admins one click away from fixing flagged rows. Today that's inconsistent: only 3 of 10 checks render a per-row Action link; the other 7 carry the model's id but never build the link, so the admin has to navigate to the changelist manually.

Separately, two common data-entry gaps aren't surfaced at all:

  • Conference papers almost always have a recorded talk, but talk-less ones are invisible.
  • Poster publications should have a linked Poster artifact (Publication.poster).

Scope

A. Standardize action links

  • Add a default row_link() to HealthCheck driven by two class attrs (link_model, link_id_key) that deep-links each row to its admin change page.
  • Wire it into the 7 linkless checks (publication-quality, duplicate-people, url-name-collisions, position-integrity, news-health, project-health, project-leadership). The 3 existing custom row_links are unchanged.
  • Result: every flagged row, on every page, gets an "Open →" action.

B. Flag publications missing an expected companion artifact

Two separate checks (distinct dashboard entries / counts, since the corrective actions differ), sharing a small base class:

  • Conference papers without a talkpub_venue_type == Conference, not an extended abstract, talk is null.
  • Poster papers without a linked posterpub_venue_type == Poster, poster is null.

Both exclude pre-Makeability-Lab work (DATE_MAKEABILITYLAB_FORMED, same convention as the unlinked-artifacts check) and future/to-appear papers (the companion usually isn't recorded until presented), to avoid permanent false positives. Action link → the publication's edit page, where the FK is set.

C. Tests

  • Assert every registered check produces an action link (pins the standardization).
  • Regression tests for both new checks: positive cases flagged; posters/demos, to-appear, and already-linked papers not flagged.

No model/DB or template/view changes required — the detail template already renders the Action column generically via has_links.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions