Skip to content

UI for valid/invalid status on IR page#1846

Draft
becky-gilbert wants to merge 39 commits into
add-max-responses-to-studyfrom
researchers-update-valid-responses
Draft

UI for valid/invalid status on IR page#1846
becky-gilbert wants to merge 39 commits into
add-max-responses-to-studyfrom
researchers-update-valid-responses

Conversation

@becky-gilbert
Copy link
Copy Markdown
Contributor

@becky-gilbert becky-gilbert commented Mar 3, 2026

This PR makes the UI updates on the Individual Responses page to allow researchers to change the valid/invalid status of each (non-preview) response. This adds a column to the left side of the table, which shows the valid/invalid status of each response, along with the "P" for preview responses. It also adds the Valid/Invalid/Preview response counts above the table. The Response validity column and response type counts are only shown when the Study has a max_responses value.

Questions

  1. Researchers that visit the Individual Responses page can have different permission levels: some can access real participant data (READ_STUDY_RESPONSE_DATA) while others can only see preview data (READ_STUDY_PREVIEW_DATA). Should these Valid/Invalid/Preview counts be the same for all researchers, or should they only relate to the data that each researcher can access (i.e. no valid/invalid counts for researchers with preview-only permissions)? -- All researchers should see the same counts, regardless of their permissions. But when permissions are restricted, we should note that these numbers include responses that may not be visible/available to the user.
  2. For internal studies, a response can be automatically marked as valid if it has a consent frame and the consent has not been rejected (i.e. consent is either accepted or pending). Should the Valid/Invalid/Preview counts on the Individual Responses page include the Valid/Invalid status of Responses with pending consent? -- Yes, counts should include those with pending consent. We will need to make this clear on the IR page, or on a different page (and refer to that from the IR page).

dependabot Bot and others added 27 commits October 27, 2025 02:18
Bumps [django-localflavor](https://github.com/django/django-localflavor) from 4.0 to 5.0.
- [Changelog](https://github.com/django/django-localflavor/blob/master/docs/changelog.rst)
- [Commits](django/django-localflavor@4.0...5.0)

---
updated-dependencies:
- dependency-name: django-localflavor
  dependency-version: '5.0'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [django](https://github.com/django/django) from 5.2.9 to 5.2.11.
- [Commits](django/django@5.2.9...5.2.11)

---
updated-dependencies:
- dependency-name: django
  dependency-version: 5.2.11
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [sqlparse](https://github.com/andialbrecht/sqlparse) from 0.5.3 to 0.5.4.
- [Changelog](https://github.com/andialbrecht/sqlparse/blob/master/CHANGELOG)
- [Commits](andialbrecht/sqlparse@0.5.3...0.5.4)

---
updated-dependencies:
- dependency-name: sqlparse
  dependency-version: 0.5.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [protobuf](https://github.com/protocolbuffers/protobuf) from 6.31.0 to 6.33.5.
- [Release notes](https://github.com/protocolbuffers/protobuf/releases)
- [Commits](https://github.com/protocolbuffers/protobuf/commits)

---
updated-dependencies:
- dependency-name: protobuf
  dependency-version: 6.33.5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.4.0 to 2.6.3.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](urllib3/urllib3@2.4.0...2.6.3)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-version: 2.6.3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [werkzeug](https://github.com/pallets/werkzeug) from 3.1.3 to 3.1.6.
- [Release notes](https://github.com/pallets/werkzeug/releases)
- [Changelog](https://github.com/pallets/werkzeug/blob/main/CHANGES.rst)
- [Commits](pallets/werkzeug@3.1.3...3.1.6)

---
updated-dependencies:
- dependency-name: werkzeug
  dependency-version: 3.1.6
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [pyasn1](https://github.com/pyasn1/pyasn1) from 0.6.1 to 0.6.2.
- [Release notes](https://github.com/pyasn1/pyasn1/releases)
- [Changelog](https://github.com/pyasn1/pyasn1/blob/main/CHANGES.rst)
- [Commits](pyasn1/pyasn1@v0.6.1...v0.6.2)

---
updated-dependencies:
- dependency-name: pyasn1
  dependency-version: 0.6.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [pillow](https://github.com/python-pillow/Pillow) from 11.2.1 to 12.1.1.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](python-pillow/Pillow@11.2.1...12.1.1)

---
updated-dependencies:
- dependency-name: pillow
  dependency-version: 12.1.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [virtualenv](https://github.com/pypa/virtualenv) from 20.31.2 to 20.36.1.
- [Release notes](https://github.com/pypa/virtualenv/releases)
- [Changelog](https://github.com/pypa/virtualenv/blob/main/docs/changelog.rst)
- [Commits](pypa/virtualenv@20.31.2...20.36.1)

---
updated-dependencies:
- dependency-name: virtualenv
  dependency-version: 20.36.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
…ew is_valid column at the end of RESPONSE_COLUMNS
…nses view, and add field/value check to POST before updating response
…mns; and update the dataset-filter value when a valid/star checkbox value has changed
@sonarqubecloud
Copy link
Copy Markdown

@becky-gilbert
Copy link
Copy Markdown
Contributor Author

Some additional changes that I'll be making in this PR:

  • Add a 'is_valid_researcher_override' field to the response model/table, which stores whether the automatic valid/invalid categorization has been overridden by the researcher.
  • Update the Individual Responses page for external studies to remove irrelevant info
  • Add a new 'response status' card to display specific info about the valid/invalid status (all of the relevant fields, based on study type, and researcher override value)
  • Add a new 'response count summary' page, which displays more details about the response types and consent status. This will also display conditions and counts, once we introduce that feature.
  • Response pages navigation tabs: add the new 'response count summary' tab, and reorder/rename existing tabs: Response Counts, Individual Responses, Download Responses, Download Demographics, Download Videos.

@mekline
Copy link
Copy Markdown
Contributor

mekline commented Apr 24, 2026

Love the pop-up confirmation for researcher changes, note that we probably want it to be different text for the external researchers - e.g. whether it's okay to un-tally a participant who schedules and then no-shows (TBD) should be stated explicitly.

Should researchers be able to change Tally status always, or should it get 'locked' at some point? I can anticipate future scenarios where we might want that, but I think for now it's fine?

@mekline
Copy link
Copy Markdown
Contributor

mekline commented Apr 24, 2026

Extremely minor - with the return to text links instead of buttons, the red and green icons are reading as very "heavy" to me. What about colored letters to match the "P" for preview?

(Rough mockup of the whole thing)

Screenshot 2026-04-24 at 1 13 58 PM

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.

SCOPING: cap number of participants, condition counterbalancing, cap by criteria

2 participants