Skip to content

Add Research Software Engineer title; relabel affiliation fields (#1437) - #1438

Merged
jonfroehlich merged 2 commits into
masterfrom
1437-research-software-engineer-title-and-affiliation-labels
Jul 28, 2026
Merged

Add Research Software Engineer title; relabel affiliation fields (#1437)#1438
jonfroehlich merged 2 commits into
masterfrom
1437-research-software-engineer-title-and-affiliation-labels

Conversation

@jonfroehlich

Copy link
Copy Markdown
Member

Closes #1437.

1. New title: Research Software Engineer

Title.RESEARCH_SOFTWARE_ENGINEER — the term of art for staff who build and maintain the lab's research software. It:

  • sorts just after Research Scientist in TITLE_ORDER_MAPPING,
  • counts as a professional position, so it groups under "Professionals" on the people pages,
  • is mentor-eligible in the admin (get_active_mentors_queryset).

No data is retitled by this PR — existing people need their Position edited in /admin once it deploys.

2. "School"/"Department" → "Institution or organization"/"Department or unit"

The labels prompted editors as if every affiliation were academic, but plenty of collaborators are from nonprofits, companies, and medical centers (e.g. Judy Shanley at Easterseals).

No field rename, deliberately. This repo regenerates migrations non-interactively per environment, where a rename can't be confirmed and would drop the column — the same reason grad_mentor kept its name in #806. So this is verbose_name + help_text only, with no schema change. The department default stays UW/Allen School, which is right for the overwhelming majority of rows.

field before after
Position.school School Institution or organization — help: University, company, nonprofit, or school (e.g. "University of Washington", "Easterseals")
Position.department Department Department or unit — help: The unit within the institution or organization. Clear the default for affiliations that don't have one.

Person.get_current_school / get_current_department admin column headers were updated to match.

3. get_department_abbreviated() no longer truncates to five characters

It returned dept_name[:5] for anything unrecognized, which is fine for a fixed set of CS departments and bad for everything else. Now it does what get_school_abbreviated() already does: acronym with filler words dropped (of/and/for/the/in/at), and pass the name through unchanged when the acronym would be a single letter.

Effect on real rows (only previously-unmatched departments change; everything matched by an existing rule is untouched):

department before after
Disability and Human Development (UIC) Disab DHD
Center for Visual and Neurological Rehabilitation Cente CVNR
College of Education Colle CE
Psychology Psych Psychology
National Center for Mobility Management (hypothetical nonprofit unit) Natio NCMM

Testing

  • website/tests/test_position_titles.py (new) — pins the title, its ordering and professional bucketing, plus a general ward that every Title has a TITLE_ORDER_MAPPING entry (get_sorted_titles() raises KeyError otherwise — the trap for the next person adding a title).
  • website/tests/test_position_mentor_label.py — broadened from the Change Grad Mentor to simply Mentor so any ML member can be selected as a mentor #806 mentor label into label pins for all three relabeled fields and the two admin columns.
  • website/tests/test_ml_utils.py — department acronym / pass-through / empty cases.
  • Full suite green: 727 tests, OK (8 skipped).

UI / a11y

No markup, template, or CSS changes — the visible diff is form label text in /admin and the abbreviation strings on people cards. Pa11y not re-run for that reason; happy to add admin before/after screenshots if you want them on the record.

Notes / follow-ups (not in this PR)

  • Title.PROJECT_COORDINATOR is missing from is_professional_position(), so those people group under a bare "Project Coordinator" heading instead of "Professionals" — looks like an oversight from the UIC subaward change.
  • The "information" in dept_low rule is greedy: Gallaudet's "Information Technology" abbreviates to "iSchool".

🤖 Generated with Claude Code

jonfroehlich and others added 2 commits July 28, 2026 12:12
Two related fixes to Position.

Adds Title.RESEARCH_SOFTWARE_ENGINEER ("Research Software Engineer" is the
term of art for staff who build the lab's research software). It sorts just
after Research Scientist, counts as a professional position so it groups under
"Professionals" on the people pages, and is mentor-eligible in the admin.

Relabels school/department, which prompted editors for a "School" and a
"Department" as if every affiliation were academic — collaborators come from
nonprofits, companies, and medical centers too. The DB columns keep their
names: this repo regenerates migrations non-interactively per environment,
where a rename can't be confirmed and would drop the column (same reason
grad_mentor kept its name in #806), so this is verbose_name + help_text only,
with no schema change. The department default stays UW/Allen School, which is
right for the overwhelming majority of rows.

Also replaces the first-five-characters fallback in
get_department_abbreviated() with the treatment schools already get: acronym
with filler words dropped, and pass the name through when the acronym would be
a single letter. "Disability and Human Development" now reads DHD rather than
"Disab", and "Psychology" stays "Psychology" rather than "Psych".

Tests: new test_position_titles.py pins the title and wards that every Title
has a TITLE_ORDER_MAPPING entry (get_sorted_titles() KeyErrors otherwise);
test_position_mentor_label.py broadened to pin all three relabeled fields;
department cases added to test_ml_utils.py.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…are-engineer-title-and-affiliation-labels

# Conflicts:
#	makeabilitylab/settings.py
@jonfroehlich
jonfroehlich merged commit 4d6085a into master Jul 28, 2026
3 checks passed
@jonfroehlich
jonfroehlich deleted the 1437-research-software-engineer-title-and-affiliation-labels branch July 28, 2026 20:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Position model: add "Research Software Engineer" title and fix academia-only affiliation labels

1 participant