Skip to content

Updated navigation - see past filings, new from menu - #159

Merged
nonprofittechy merged 2 commits into
mainfrom
118-expand-navigation-menu
Aug 18, 2026
Merged

Updated navigation - see past filings, new from menu#159
nonprofittechy merged 2 commits into
mainfrom
118-expand-navigation-menu

Conversation

@nonprofittechy

@nonprofittechy nonprofittechy commented Aug 18, 2026

Copy link
Copy Markdown
Member

fix #118, fix #153, fix #154

What this adds

Navigation from anywhere (#118). Every signed-in screen, mid-filing included, now carries a menu: Start a new case, File into an existing case, My draft e-filings, My cases, My filing plans, Filing home. Both "start" items post to one new view (start_filing) that makes a new draft with the path already chosen and goes straight to Upload documents, so the menu is also the way out of a filing you no longer want. The profile menu keeps the account controls.

My draft e-filings (#153). A filer can finally see the drafts they have: case title/number, court, new vs. existing, which step it stopped at, how many documents, when they last touched it, and which one they are currently in. Each can be continued (that specific one, not "the newest") or thrown away. "Continue a draft" on the landing page routes here when there is more than one.

Filing details, from the court's own record (#154). "My cases" is now grouped by case and server-rendered, and each filing links to a detail page showing the clerk's rejection comment, the documents with download links, fees or fee waiver, and the clerk's contact details where a partner has configured them.

We are not storing filed documents. The EFSP hands back Tyler's own links (documentRendition[].documentRenditionMetadata.documentAttachment[].binaryLocationURI), labelled by what each copy is — "The copy you sent" vs. "The court's file-stamped copy" — and they expire 90 days after filing, which the page says out loud. Rejection comments come from filingLeadDocument[].documentStatus.statusText (tagged RejectComments). Case-level document retrieval is not available at all: the proxy returns 405 for it, because Tyler does not support it. Court contact details are in no code list either, so they come from an optional contact: block in the partner YAML, falling back to the jurisdiction help line — nothing invented.

Archiving (#154 follow-on). An attorney with hundreds of filings can archive a case so it stops leading the list, and still see archived cases behind a toggle. The court's record is untouched; a new ArchivedCase row is all we keep.

What this deletes, and why

The second commit removes ~8,800 lines across 40 files. Nothing removed was reachable from the running app.

Dead because of this PR

Removed Why
create_draft_view + /jurisdiction/<j>/drafts/ The JSON "make me a draft" endpoint existed for the options page's JavaScript. That page now posts a form to start_filing, and nothing else ever called it. Its tests moved onto start_filing, including a new one for the "signed into Django but not into Tyler" guard.
makeNewDraft(), its error box, and goToExpertForm in options.html The first two were the client half of that endpoint. The function was renamed continueDraftFiling() — the expert form it was named after has been gone a long time, and continuing a draft is all it still did.
css/view_statuses.css The rewritten page used exactly one rule from it (.option-card), byte-identical to the one in options.css. Both pages load options.css now.

Screens retired earlier, whose code was still in the tree

views/expert_form.py, views/upload.py, and views/upload_first.py had no route and no importer — their URLs have redirected into the current workflow for a while, via legacy_workflow_redirect. Deleting them made a chain of things unreachable, all deleted with them:

  • Templates expert_form.html, upload.html, upload_first.html, and the search_dropdown.html component nothing included.
  • The ten CSS/JS files only those templates loaded: cascading-dropdowns.js, form-validation.js, dynamic-form-sections.js, expert-form-main.js, upload-handler.js, upload-handler-first.js, components/search-dropdown.js, expert_form.css, upload.css, components/search-dropdown.css.
  • The endpoints they posted to: save_upload_first_data and save_upload_data_to_session, their routes, and the two apiUtils methods that called them. Uploading now goes through the upload_documents and organize_documents views. (get_upload_data_from_session stays — the payment screen reads it.)

Obsolete API surface

create_filing, get_filing_detail, update_filing, and delete_filing in api/filing_views.py all called https://suffolkefile.com, a host this app does not talk to, and no screen or test called them. The file's own "this file doesn't work in its current state" TODO went with them; what is left (get_filings, payment_fees, list_filing_data) is what the app actually uses. Filing details now come from the EFSP through services/filings.py.

Also gone: the duplicate route api/debug-session-data/, which shared a URL name with api/debug-session/, so reverse() only ever resolved to one of the pair.

Tests that tested deleted code

  • The three expert-form-*.spec.js Playwright specs. They were already broken before this PR — they look for a "File a New Case" heading and a select#court that no longer exist.
  • js-tests/cascading-dropdowns.test.js, whose module is gone.
  • test_integration.py's TestJavaScriptFileStructure (asserted deleted JS files exist) and test_form_page_loads (requested a URL that never existed and passed on 404 or on any exception).
  • tests.py's test_form_submission_validation, which POSTed to the retired expert form and accepted either 200 or 302.
  • test_durable_drafts.py's test_first_upload_save_uses_current_draft_jurisdiction. It reached the first-upload view through the duplicated save_upload_data_to_session URL name; both the view and the duplicate name are gone, and the live path's jurisdiction handling is covered where uploads actually happen.

Stale artifacts and docs

  • session_cookies.txt — a committed curl cookie jar holding an expired localhost session id. Now gitignored.
  • static/js/README.md was 263 lines describing the retired expert-form architecture and four modules that no longer exist; rewritten to describe the per-screen scripts that do.
  • The main README documented the three deleted Playwright specs; it now documents reorganized-filing-matrix.spec.js and its RUN_FILING_MATRIX=1 guard.

Testing

  • 420 Python tests pass (33 new, in test_navigation_menu.py, test_my_drafts.py, test_filing_history.py, plus plan deletion), along with ruff, djlint, ty, and the node --test JS suites.
  • The filing-detail parser was checked against real EFSP payloads from the Tyler test environment (accepted, rejected, and pending filings), plus one live end-to-end fetch.
  • All five screens were driven in a browser against a throwaway database, with no console or asset errors.

Notes

  • reorganized-filing-matrix.spec.js is updated for the new start-a-filing flow.
  • Several API endpoints have no front-end caller (fetch-party-type, save-party-type, the S3 and auth JSON endpoints, case-type-config), but they are not obsoleted by this work and some carry tests, so they were left alone.

@nonprofittechy
nonprofittechy merged commit 36684f1 into main Aug 18, 2026
4 checks passed
@nonprofittechy
nonprofittechy deleted the 118-expand-navigation-menu branch August 18, 2026 13:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant