diff --git a/backend/audit/fixtures/workbooks/should_pass/100010-22/additional-eins-100010.xlsx b/backend/audit/fixtures/workbooks/should_pass/100010-22/additional-eins-100010.xlsx index 37fd786f33..71df332bee 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/100010-22/additional-eins-100010.xlsx and b/backend/audit/fixtures/workbooks/should_pass/100010-22/additional-eins-100010.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/100010-22/additional-ueis-100010.xlsx b/backend/audit/fixtures/workbooks/should_pass/100010-22/additional-ueis-100010.xlsx index 97efd799ec..48778e1dbd 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/100010-22/additional-ueis-100010.xlsx and b/backend/audit/fixtures/workbooks/should_pass/100010-22/additional-ueis-100010.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/100010-22/audit-findings-100010.xlsx b/backend/audit/fixtures/workbooks/should_pass/100010-22/audit-findings-100010.xlsx index 31c4c71b54..02e005c0e3 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/100010-22/audit-findings-100010.xlsx and b/backend/audit/fixtures/workbooks/should_pass/100010-22/audit-findings-100010.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/100010-22/audit-findings-text-100010.xlsx b/backend/audit/fixtures/workbooks/should_pass/100010-22/audit-findings-text-100010.xlsx index 35d61f4a5a..4f11671ccc 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/100010-22/audit-findings-text-100010.xlsx and b/backend/audit/fixtures/workbooks/should_pass/100010-22/audit-findings-text-100010.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/100010-22/corrective-action-plan-100010.xlsx b/backend/audit/fixtures/workbooks/should_pass/100010-22/corrective-action-plan-100010.xlsx index 4c2e3c31c5..cc74c0e49b 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/100010-22/corrective-action-plan-100010.xlsx and b/backend/audit/fixtures/workbooks/should_pass/100010-22/corrective-action-plan-100010.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/100010-22/federal-awards-100010.xlsx b/backend/audit/fixtures/workbooks/should_pass/100010-22/federal-awards-100010.xlsx index f1a4f03da5..61bfa18a4a 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/100010-22/federal-awards-100010.xlsx and b/backend/audit/fixtures/workbooks/should_pass/100010-22/federal-awards-100010.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/100010-22/notes-to-sefa-100010.xlsx b/backend/audit/fixtures/workbooks/should_pass/100010-22/notes-to-sefa-100010.xlsx index 28b62ec362..1574fd5879 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/100010-22/notes-to-sefa-100010.xlsx and b/backend/audit/fixtures/workbooks/should_pass/100010-22/notes-to-sefa-100010.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/100010-22/secondary-auditors-100010.xlsx b/backend/audit/fixtures/workbooks/should_pass/100010-22/secondary-auditors-100010.xlsx index fc2897d653..2e941c9320 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/100010-22/secondary-auditors-100010.xlsx and b/backend/audit/fixtures/workbooks/should_pass/100010-22/secondary-auditors-100010.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/134732-21/additional-eins-134732.xlsx b/backend/audit/fixtures/workbooks/should_pass/134732-21/additional-eins-134732.xlsx index c9cfb14634..cfaf02d8e3 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/134732-21/additional-eins-134732.xlsx and b/backend/audit/fixtures/workbooks/should_pass/134732-21/additional-eins-134732.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/134732-21/additional-ueis-134732.xlsx b/backend/audit/fixtures/workbooks/should_pass/134732-21/additional-ueis-134732.xlsx index 81a71801b8..e6c1dca815 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/134732-21/additional-ueis-134732.xlsx and b/backend/audit/fixtures/workbooks/should_pass/134732-21/additional-ueis-134732.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/134732-21/audit-findings-134732.xlsx b/backend/audit/fixtures/workbooks/should_pass/134732-21/audit-findings-134732.xlsx index cbf209f1db..604a04843e 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/134732-21/audit-findings-134732.xlsx and b/backend/audit/fixtures/workbooks/should_pass/134732-21/audit-findings-134732.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/134732-21/audit-findings-text-134732.xlsx b/backend/audit/fixtures/workbooks/should_pass/134732-21/audit-findings-text-134732.xlsx index 6beb1a3c45..0c973a5a79 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/134732-21/audit-findings-text-134732.xlsx and b/backend/audit/fixtures/workbooks/should_pass/134732-21/audit-findings-text-134732.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/134732-21/corrective-action-plan-134732.xlsx b/backend/audit/fixtures/workbooks/should_pass/134732-21/corrective-action-plan-134732.xlsx index 82793fd918..5e207d61b3 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/134732-21/corrective-action-plan-134732.xlsx and b/backend/audit/fixtures/workbooks/should_pass/134732-21/corrective-action-plan-134732.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/134732-21/federal-awards-134732.xlsx b/backend/audit/fixtures/workbooks/should_pass/134732-21/federal-awards-134732.xlsx index 80d0e3dfaa..1dbea9a55e 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/134732-21/federal-awards-134732.xlsx and b/backend/audit/fixtures/workbooks/should_pass/134732-21/federal-awards-134732.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/134732-21/notes-to-sefa-134732.xlsx b/backend/audit/fixtures/workbooks/should_pass/134732-21/notes-to-sefa-134732.xlsx index 9f375f2d41..6aac37765e 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/134732-21/notes-to-sefa-134732.xlsx and b/backend/audit/fixtures/workbooks/should_pass/134732-21/notes-to-sefa-134732.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/134732-21/secondary-auditors-134732.xlsx b/backend/audit/fixtures/workbooks/should_pass/134732-21/secondary-auditors-134732.xlsx index 3fdd0b44ca..bc77a53f93 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/134732-21/secondary-auditors-134732.xlsx and b/backend/audit/fixtures/workbooks/should_pass/134732-21/secondary-auditors-134732.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/147110-22/additional-eins-147110.xlsx b/backend/audit/fixtures/workbooks/should_pass/147110-22/additional-eins-147110.xlsx index 13c0cc627b..bf62c6f045 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/147110-22/additional-eins-147110.xlsx and b/backend/audit/fixtures/workbooks/should_pass/147110-22/additional-eins-147110.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/147110-22/additional-ueis-147110.xlsx b/backend/audit/fixtures/workbooks/should_pass/147110-22/additional-ueis-147110.xlsx index d93bf1b214..a80f61c24c 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/147110-22/additional-ueis-147110.xlsx and b/backend/audit/fixtures/workbooks/should_pass/147110-22/additional-ueis-147110.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/147110-22/audit-findings-147110.xlsx b/backend/audit/fixtures/workbooks/should_pass/147110-22/audit-findings-147110.xlsx index 5023dd4d7c..d562f02378 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/147110-22/audit-findings-147110.xlsx and b/backend/audit/fixtures/workbooks/should_pass/147110-22/audit-findings-147110.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/147110-22/audit-findings-text-147110.xlsx b/backend/audit/fixtures/workbooks/should_pass/147110-22/audit-findings-text-147110.xlsx index 0afa7e2ed2..031a2e7f6c 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/147110-22/audit-findings-text-147110.xlsx and b/backend/audit/fixtures/workbooks/should_pass/147110-22/audit-findings-text-147110.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/147110-22/corrective-action-plan-147110.xlsx b/backend/audit/fixtures/workbooks/should_pass/147110-22/corrective-action-plan-147110.xlsx index e8fffe4920..b09b02b095 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/147110-22/corrective-action-plan-147110.xlsx and b/backend/audit/fixtures/workbooks/should_pass/147110-22/corrective-action-plan-147110.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/147110-22/federal-awards-147110.xlsx b/backend/audit/fixtures/workbooks/should_pass/147110-22/federal-awards-147110.xlsx index c76a9e4d65..86df269a1f 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/147110-22/federal-awards-147110.xlsx and b/backend/audit/fixtures/workbooks/should_pass/147110-22/federal-awards-147110.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/147110-22/notes-to-sefa-147110.xlsx b/backend/audit/fixtures/workbooks/should_pass/147110-22/notes-to-sefa-147110.xlsx index 2e52f51dc4..33a547257a 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/147110-22/notes-to-sefa-147110.xlsx and b/backend/audit/fixtures/workbooks/should_pass/147110-22/notes-to-sefa-147110.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/147110-22/secondary-auditors-147110.xlsx b/backend/audit/fixtures/workbooks/should_pass/147110-22/secondary-auditors-147110.xlsx index b7d4ab1b19..f981328964 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/147110-22/secondary-auditors-147110.xlsx and b/backend/audit/fixtures/workbooks/should_pass/147110-22/secondary-auditors-147110.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/171944-22/additional-eins-171944.xlsx b/backend/audit/fixtures/workbooks/should_pass/171944-22/additional-eins-171944.xlsx index 03f492fece..dd30eff613 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/171944-22/additional-eins-171944.xlsx and b/backend/audit/fixtures/workbooks/should_pass/171944-22/additional-eins-171944.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/171944-22/additional-ueis-171944.xlsx b/backend/audit/fixtures/workbooks/should_pass/171944-22/additional-ueis-171944.xlsx index 2d034ba959..97e7589d8e 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/171944-22/additional-ueis-171944.xlsx and b/backend/audit/fixtures/workbooks/should_pass/171944-22/additional-ueis-171944.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/171944-22/audit-findings-171944.xlsx b/backend/audit/fixtures/workbooks/should_pass/171944-22/audit-findings-171944.xlsx index ae8ded229e..bcbb731c85 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/171944-22/audit-findings-171944.xlsx and b/backend/audit/fixtures/workbooks/should_pass/171944-22/audit-findings-171944.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/171944-22/audit-findings-text-171944.xlsx b/backend/audit/fixtures/workbooks/should_pass/171944-22/audit-findings-text-171944.xlsx index b4b33e565a..2443347d12 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/171944-22/audit-findings-text-171944.xlsx and b/backend/audit/fixtures/workbooks/should_pass/171944-22/audit-findings-text-171944.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/171944-22/corrective-action-plan-171944.xlsx b/backend/audit/fixtures/workbooks/should_pass/171944-22/corrective-action-plan-171944.xlsx index cb2ea9885d..9747da4455 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/171944-22/corrective-action-plan-171944.xlsx and b/backend/audit/fixtures/workbooks/should_pass/171944-22/corrective-action-plan-171944.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/171944-22/federal-awards-171944.xlsx b/backend/audit/fixtures/workbooks/should_pass/171944-22/federal-awards-171944.xlsx index f7eda3ab98..64c70b4a07 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/171944-22/federal-awards-171944.xlsx and b/backend/audit/fixtures/workbooks/should_pass/171944-22/federal-awards-171944.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/171944-22/notes-to-sefa-171944.xlsx b/backend/audit/fixtures/workbooks/should_pass/171944-22/notes-to-sefa-171944.xlsx index 0fa42ccb4b..3f40211b2c 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/171944-22/notes-to-sefa-171944.xlsx and b/backend/audit/fixtures/workbooks/should_pass/171944-22/notes-to-sefa-171944.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/171944-22/secondary-auditors-171944.xlsx b/backend/audit/fixtures/workbooks/should_pass/171944-22/secondary-auditors-171944.xlsx index 339065a019..c0d9ef5bb8 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/171944-22/secondary-auditors-171944.xlsx and b/backend/audit/fixtures/workbooks/should_pass/171944-22/secondary-auditors-171944.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/181744-22/additional-eins-181744.xlsx b/backend/audit/fixtures/workbooks/should_pass/181744-22/additional-eins-181744.xlsx index 1f2ca4873b..534abb1e93 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/181744-22/additional-eins-181744.xlsx and b/backend/audit/fixtures/workbooks/should_pass/181744-22/additional-eins-181744.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/181744-22/additional-ueis-181744.xlsx b/backend/audit/fixtures/workbooks/should_pass/181744-22/additional-ueis-181744.xlsx index cc1d417118..cc2efaf75e 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/181744-22/additional-ueis-181744.xlsx and b/backend/audit/fixtures/workbooks/should_pass/181744-22/additional-ueis-181744.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/181744-22/audit-findings-181744.xlsx b/backend/audit/fixtures/workbooks/should_pass/181744-22/audit-findings-181744.xlsx index c98e506067..87d5dc1026 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/181744-22/audit-findings-181744.xlsx and b/backend/audit/fixtures/workbooks/should_pass/181744-22/audit-findings-181744.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/181744-22/audit-findings-text-181744.xlsx b/backend/audit/fixtures/workbooks/should_pass/181744-22/audit-findings-text-181744.xlsx index 6436e99bd7..93aac9efea 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/181744-22/audit-findings-text-181744.xlsx and b/backend/audit/fixtures/workbooks/should_pass/181744-22/audit-findings-text-181744.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/181744-22/corrective-action-plan-181744.xlsx b/backend/audit/fixtures/workbooks/should_pass/181744-22/corrective-action-plan-181744.xlsx index bc08ca8454..3ef5c81496 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/181744-22/corrective-action-plan-181744.xlsx and b/backend/audit/fixtures/workbooks/should_pass/181744-22/corrective-action-plan-181744.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/181744-22/federal-awards-181744.xlsx b/backend/audit/fixtures/workbooks/should_pass/181744-22/federal-awards-181744.xlsx index 9b02d9fb91..90b5fb35f4 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/181744-22/federal-awards-181744.xlsx and b/backend/audit/fixtures/workbooks/should_pass/181744-22/federal-awards-181744.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/181744-22/notes-to-sefa-181744.xlsx b/backend/audit/fixtures/workbooks/should_pass/181744-22/notes-to-sefa-181744.xlsx index 7bc3e59891..407b35bf86 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/181744-22/notes-to-sefa-181744.xlsx and b/backend/audit/fixtures/workbooks/should_pass/181744-22/notes-to-sefa-181744.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/181744-22/secondary-auditors-181744.xlsx b/backend/audit/fixtures/workbooks/should_pass/181744-22/secondary-auditors-181744.xlsx index acd56eb4bf..a4bab1533e 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/181744-22/secondary-auditors-181744.xlsx and b/backend/audit/fixtures/workbooks/should_pass/181744-22/secondary-auditors-181744.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/182926-22/additional-eins-182926.xlsx b/backend/audit/fixtures/workbooks/should_pass/182926-22/additional-eins-182926.xlsx index e9699c6d34..c24141418a 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/182926-22/additional-eins-182926.xlsx and b/backend/audit/fixtures/workbooks/should_pass/182926-22/additional-eins-182926.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/182926-22/additional-ueis-182926.xlsx b/backend/audit/fixtures/workbooks/should_pass/182926-22/additional-ueis-182926.xlsx index 520b76762b..a8053b8378 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/182926-22/additional-ueis-182926.xlsx and b/backend/audit/fixtures/workbooks/should_pass/182926-22/additional-ueis-182926.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/182926-22/audit-findings-182926.xlsx b/backend/audit/fixtures/workbooks/should_pass/182926-22/audit-findings-182926.xlsx index b577bf700c..4e1e50769e 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/182926-22/audit-findings-182926.xlsx and b/backend/audit/fixtures/workbooks/should_pass/182926-22/audit-findings-182926.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/182926-22/audit-findings-text-182926.xlsx b/backend/audit/fixtures/workbooks/should_pass/182926-22/audit-findings-text-182926.xlsx index e44e9ea41b..5bdff9508c 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/182926-22/audit-findings-text-182926.xlsx and b/backend/audit/fixtures/workbooks/should_pass/182926-22/audit-findings-text-182926.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/182926-22/corrective-action-plan-182926.xlsx b/backend/audit/fixtures/workbooks/should_pass/182926-22/corrective-action-plan-182926.xlsx index 60c18be07a..2128cdae0d 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/182926-22/corrective-action-plan-182926.xlsx and b/backend/audit/fixtures/workbooks/should_pass/182926-22/corrective-action-plan-182926.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/182926-22/federal-awards-182926.xlsx b/backend/audit/fixtures/workbooks/should_pass/182926-22/federal-awards-182926.xlsx index 155ddb5c1e..0b167fa13a 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/182926-22/federal-awards-182926.xlsx and b/backend/audit/fixtures/workbooks/should_pass/182926-22/federal-awards-182926.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/182926-22/notes-to-sefa-182926.xlsx b/backend/audit/fixtures/workbooks/should_pass/182926-22/notes-to-sefa-182926.xlsx index 6f21ad22eb..f6631f3074 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/182926-22/notes-to-sefa-182926.xlsx and b/backend/audit/fixtures/workbooks/should_pass/182926-22/notes-to-sefa-182926.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/182926-22/secondary-auditors-182926.xlsx b/backend/audit/fixtures/workbooks/should_pass/182926-22/secondary-auditors-182926.xlsx index 96947452f0..d6676be3d1 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/182926-22/secondary-auditors-182926.xlsx and b/backend/audit/fixtures/workbooks/should_pass/182926-22/secondary-auditors-182926.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/191734-21/additional-eins-191734.xlsx b/backend/audit/fixtures/workbooks/should_pass/191734-21/additional-eins-191734.xlsx index c34b89431d..f890d172f1 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/191734-21/additional-eins-191734.xlsx and b/backend/audit/fixtures/workbooks/should_pass/191734-21/additional-eins-191734.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/191734-21/additional-ueis-191734.xlsx b/backend/audit/fixtures/workbooks/should_pass/191734-21/additional-ueis-191734.xlsx index ae10e2c654..0b60726911 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/191734-21/additional-ueis-191734.xlsx and b/backend/audit/fixtures/workbooks/should_pass/191734-21/additional-ueis-191734.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/191734-21/audit-findings-191734.xlsx b/backend/audit/fixtures/workbooks/should_pass/191734-21/audit-findings-191734.xlsx index 1925361714..a8e5ba1bbd 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/191734-21/audit-findings-191734.xlsx and b/backend/audit/fixtures/workbooks/should_pass/191734-21/audit-findings-191734.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/191734-21/audit-findings-text-191734.xlsx b/backend/audit/fixtures/workbooks/should_pass/191734-21/audit-findings-text-191734.xlsx index 69e398fae4..3946cd0b15 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/191734-21/audit-findings-text-191734.xlsx and b/backend/audit/fixtures/workbooks/should_pass/191734-21/audit-findings-text-191734.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/191734-21/corrective-action-plan-191734.xlsx b/backend/audit/fixtures/workbooks/should_pass/191734-21/corrective-action-plan-191734.xlsx index 627bd394da..a8000261a7 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/191734-21/corrective-action-plan-191734.xlsx and b/backend/audit/fixtures/workbooks/should_pass/191734-21/corrective-action-plan-191734.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/191734-21/federal-awards-191734.xlsx b/backend/audit/fixtures/workbooks/should_pass/191734-21/federal-awards-191734.xlsx index 4dd0a5a9c6..d1915b70be 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/191734-21/federal-awards-191734.xlsx and b/backend/audit/fixtures/workbooks/should_pass/191734-21/federal-awards-191734.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/191734-21/notes-to-sefa-191734.xlsx b/backend/audit/fixtures/workbooks/should_pass/191734-21/notes-to-sefa-191734.xlsx index bd564f8548..6e5eb071b2 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/191734-21/notes-to-sefa-191734.xlsx and b/backend/audit/fixtures/workbooks/should_pass/191734-21/notes-to-sefa-191734.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/191734-21/secondary-auditors-191734.xlsx b/backend/audit/fixtures/workbooks/should_pass/191734-21/secondary-auditors-191734.xlsx index 678e58b987..8f6bde3d1c 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/191734-21/secondary-auditors-191734.xlsx and b/backend/audit/fixtures/workbooks/should_pass/191734-21/secondary-auditors-191734.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/191734-22/additional-eins-191734.xlsx b/backend/audit/fixtures/workbooks/should_pass/191734-22/additional-eins-191734.xlsx index 564e46b6ca..bd109286fb 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/191734-22/additional-eins-191734.xlsx and b/backend/audit/fixtures/workbooks/should_pass/191734-22/additional-eins-191734.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/191734-22/additional-ueis-191734.xlsx b/backend/audit/fixtures/workbooks/should_pass/191734-22/additional-ueis-191734.xlsx index 88d9d09e68..ade49b29c9 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/191734-22/additional-ueis-191734.xlsx and b/backend/audit/fixtures/workbooks/should_pass/191734-22/additional-ueis-191734.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/191734-22/audit-findings-191734.xlsx b/backend/audit/fixtures/workbooks/should_pass/191734-22/audit-findings-191734.xlsx index b4533a177b..17206ee7f9 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/191734-22/audit-findings-191734.xlsx and b/backend/audit/fixtures/workbooks/should_pass/191734-22/audit-findings-191734.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/191734-22/audit-findings-text-191734.xlsx b/backend/audit/fixtures/workbooks/should_pass/191734-22/audit-findings-text-191734.xlsx index 9965825f34..8fee872f99 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/191734-22/audit-findings-text-191734.xlsx and b/backend/audit/fixtures/workbooks/should_pass/191734-22/audit-findings-text-191734.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/191734-22/corrective-action-plan-191734.xlsx b/backend/audit/fixtures/workbooks/should_pass/191734-22/corrective-action-plan-191734.xlsx index a5271368f2..3cd6318c54 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/191734-22/corrective-action-plan-191734.xlsx and b/backend/audit/fixtures/workbooks/should_pass/191734-22/corrective-action-plan-191734.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/191734-22/federal-awards-191734.xlsx b/backend/audit/fixtures/workbooks/should_pass/191734-22/federal-awards-191734.xlsx index 712c227fa9..a738bf42eb 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/191734-22/federal-awards-191734.xlsx and b/backend/audit/fixtures/workbooks/should_pass/191734-22/federal-awards-191734.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/191734-22/notes-to-sefa-191734.xlsx b/backend/audit/fixtures/workbooks/should_pass/191734-22/notes-to-sefa-191734.xlsx index e045b60d19..1561688ec0 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/191734-22/notes-to-sefa-191734.xlsx and b/backend/audit/fixtures/workbooks/should_pass/191734-22/notes-to-sefa-191734.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/191734-22/secondary-auditors-191734.xlsx b/backend/audit/fixtures/workbooks/should_pass/191734-22/secondary-auditors-191734.xlsx index 2479c5cad5..0b692a19f9 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/191734-22/secondary-auditors-191734.xlsx and b/backend/audit/fixtures/workbooks/should_pass/191734-22/secondary-auditors-191734.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/219107-21/additional-eins-219107.xlsx b/backend/audit/fixtures/workbooks/should_pass/219107-21/additional-eins-219107.xlsx index 9be91c3e6a..3e79645fa9 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/219107-21/additional-eins-219107.xlsx and b/backend/audit/fixtures/workbooks/should_pass/219107-21/additional-eins-219107.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/219107-21/additional-ueis-219107.xlsx b/backend/audit/fixtures/workbooks/should_pass/219107-21/additional-ueis-219107.xlsx index f797c5a33b..deb086611c 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/219107-21/additional-ueis-219107.xlsx and b/backend/audit/fixtures/workbooks/should_pass/219107-21/additional-ueis-219107.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/219107-21/audit-findings-219107.xlsx b/backend/audit/fixtures/workbooks/should_pass/219107-21/audit-findings-219107.xlsx index 22a75dfafa..1f412fd0e7 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/219107-21/audit-findings-219107.xlsx and b/backend/audit/fixtures/workbooks/should_pass/219107-21/audit-findings-219107.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/219107-21/audit-findings-text-219107.xlsx b/backend/audit/fixtures/workbooks/should_pass/219107-21/audit-findings-text-219107.xlsx index 7d6a1a197a..828f91978d 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/219107-21/audit-findings-text-219107.xlsx and b/backend/audit/fixtures/workbooks/should_pass/219107-21/audit-findings-text-219107.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/219107-21/corrective-action-plan-219107.xlsx b/backend/audit/fixtures/workbooks/should_pass/219107-21/corrective-action-plan-219107.xlsx index 9756cb31e4..427547d8f0 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/219107-21/corrective-action-plan-219107.xlsx and b/backend/audit/fixtures/workbooks/should_pass/219107-21/corrective-action-plan-219107.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/219107-21/federal-awards-219107.xlsx b/backend/audit/fixtures/workbooks/should_pass/219107-21/federal-awards-219107.xlsx index 3ca1c8ecfe..99b6d93d31 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/219107-21/federal-awards-219107.xlsx and b/backend/audit/fixtures/workbooks/should_pass/219107-21/federal-awards-219107.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/219107-21/notes-to-sefa-219107.xlsx b/backend/audit/fixtures/workbooks/should_pass/219107-21/notes-to-sefa-219107.xlsx index 45879ce8de..394bbd5d7d 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/219107-21/notes-to-sefa-219107.xlsx and b/backend/audit/fixtures/workbooks/should_pass/219107-21/notes-to-sefa-219107.xlsx differ diff --git a/backend/audit/fixtures/workbooks/should_pass/219107-21/secondary-auditors-219107.xlsx b/backend/audit/fixtures/workbooks/should_pass/219107-21/secondary-auditors-219107.xlsx index dce59485d6..12950ce7d2 100644 Binary files a/backend/audit/fixtures/workbooks/should_pass/219107-21/secondary-auditors-219107.xlsx and b/backend/audit/fixtures/workbooks/should_pass/219107-21/secondary-auditors-219107.xlsx differ diff --git a/backend/audit/intakelib/checks/check_is_a_workbook.py b/backend/audit/intakelib/checks/check_is_a_workbook.py index b7747315f7..42f46040bb 100644 --- a/backend/audit/intakelib/checks/check_is_a_workbook.py +++ b/backend/audit/intakelib/checks/check_is_a_workbook.py @@ -1,6 +1,9 @@ from django.core.exceptions import ValidationError import logging -from audit.intakelib.intermediate_representation import get_sheet_by_name +from audit.intakelib.intermediate_representation import ( + get_sheet_by_name, + get_range_by_name, +) logger = logging.getLogger(__name__) @@ -12,7 +15,8 @@ # sloppy and still have a coversheet page. def is_a_workbook(ir): coversheet = get_sheet_by_name(ir, "Coversheet") - if not coversheet: + version_range = get_range_by_name(ir, "version") + if not (coversheet and version_range): raise ValidationError( ( "(O_o)", diff --git a/backend/audit/intakelib/checks/check_total_amount_expended.py b/backend/audit/intakelib/checks/check_total_amount_expended.py index 6e500a490f..2827adc671 100644 --- a/backend/audit/intakelib/checks/check_total_amount_expended.py +++ b/backend/audit/intakelib/checks/check_total_amount_expended.py @@ -10,7 +10,7 @@ # DESCRIPTION # The sum of the amount_expended should equal the total_amount_expended -# B5=SUM(Form!F$2:F$5000) +# B5=SUM(Form!F$2:F$MAX_ROWS) def total_amount_expended_is_correct(ir): total_amount_expended_value = get_range_values_by_name(ir, "total_amount_expended") amount_expended_values = get_range_values_by_name(ir, "amount_expended") diff --git a/backend/audit/intakelib/checks/check_version_number.py b/backend/audit/intakelib/checks/check_version_number.py new file mode 100644 index 0000000000..f1ab04e63f --- /dev/null +++ b/backend/audit/intakelib/checks/check_version_number.py @@ -0,0 +1,32 @@ +from django.core.exceptions import ValidationError +import logging +from audit.intakelib.intermediate_representation import ( + get_range_by_name, +) +from audit.intakelib.common import get_message, build_cell_error_tuple + +logger = logging.getLogger(__name__) + +AUTHORIZED_VERSIONS = {"1.0.0", "1.0.1", "1.0.2", "1.0.3"} + + +# DESCRIPTION +# This checks if the uploaded workbook version is valid. +def validate_workbook_version(ir): + version_range = get_range_by_name(ir, "version") + errors = [] + for index, version in enumerate(version_range["values"]): + # Check if version is not in the set of valid versions + if version not in AUTHORIZED_VERSIONS: + errors.append( + build_cell_error_tuple( + ir, + version_range, + index, + get_message("check_workbook_version").format(version), + ) + ) + + if errors: + logger.info("Raising a validation error.") + raise ValidationError(errors) diff --git a/backend/audit/intakelib/checks/runners.py b/backend/audit/intakelib/checks/runners.py index 34c71bd427..dde0f917f0 100644 --- a/backend/audit/intakelib/checks/runners.py +++ b/backend/audit/intakelib/checks/runners.py @@ -10,6 +10,7 @@ from .check_start_and_end_rows_of_all_columns_are_same import ( start_and_end_rows_of_all_columns_are_same, ) +from .check_version_number import validate_workbook_version ############ # Federal awards checks @@ -50,6 +51,7 @@ general_checks = [ is_a_workbook, + validate_workbook_version, uei_exists, look_for_empty_rows, start_and_end_rows_of_all_columns_are_same, diff --git a/backend/audit/intakelib/common/error_messages.py b/backend/audit/intakelib/common/error_messages.py index e968c6c6cb..63fff66139 100644 --- a/backend/audit/intakelib/common/error_messages.py +++ b/backend/audit/intakelib/common/error_messages.py @@ -55,5 +55,6 @@ "check_federal_award_amount_passed_through_not_allowed": "When Federal Award Passed Through is N, Amount Passed Through must be empty", "check_loan_balance": "The loan balance is currently set to {}. It should either be a positive number, N/A, or left empty", "check_cardinality_of_passthrough_names_and_ids": "You used a | (bar character) to indicate multiple passthrough names and IDs; you must provide equal numbers of names and IDs. You provided {} name{} and {} ID{}", + "check_workbook_version": "Single audit workbook template version {} is not supported. Please download the latest workbook and transfer your data to it", "check_integer_values": "{} is not a valid integer", } diff --git a/backend/audit/intakelib/intermediate_representation.py b/backend/audit/intakelib/intermediate_representation.py index 70f2cd7a22..dad05a8432 100644 --- a/backend/audit/intakelib/intermediate_representation.py +++ b/backend/audit/intakelib/intermediate_representation.py @@ -281,7 +281,7 @@ def extract_workbook_as_ir(file): sheet["ranges"] = ranges sheets.append(sheet) - # Remove all the Nones at the bottom of the sheets, since we have 5000 rows of formulas. + # Remove all the Nones at the bottom of the sheets, since we have 10000 rows of formulas. for sheet in sheets: remove_null_rows(sheet) diff --git a/backend/dissemination/workbooklib/additional_eins.py b/backend/dissemination/workbooklib/additional_eins.py index 58eecdc6a2..a0d46316bb 100644 --- a/backend/dissemination/workbooklib/additional_eins.py +++ b/backend/dissemination/workbooklib/additional_eins.py @@ -8,7 +8,6 @@ ) -from dissemination.workbooklib.excel_creation import insert_version_and_sheet_name from dissemination.workbooklib.census_models.census import dynamic_import import openpyxl as pyxl @@ -29,7 +28,6 @@ def generate_additional_eins(dbkey, year, outfile): wb = pyxl.load_workbook(templates["AdditionalEINs"]) g = set_uei(Gen, wb, dbkey) - insert_version_and_sheet_name(wb, "additional-eins-workbook") addl_eins = Eins.select().where(Eins.dbkey == g.dbkey) map_simple_columns(wb, mappings, addl_eins) diff --git a/backend/dissemination/workbooklib/additional_ueis.py b/backend/dissemination/workbooklib/additional_ueis.py index 52d3952d0b..98fb382116 100644 --- a/backend/dissemination/workbooklib/additional_ueis.py +++ b/backend/dissemination/workbooklib/additional_ueis.py @@ -8,7 +8,6 @@ ) -from dissemination.workbooklib.excel_creation import insert_version_and_sheet_name from dissemination.workbooklib.census_models.census import dynamic_import import openpyxl as pyxl @@ -28,7 +27,6 @@ def generate_additional_ueis(dbkey, year, outfile): Gen = dynamic_import("Gen", year) wb = pyxl.load_workbook(templates["AdditionalUEIs"]) g = set_uei(Gen, wb, dbkey) - insert_version_and_sheet_name(wb, "additional-ueis-workbook") if int(year) >= 22: Ueis = dynamic_import("Ueis", year) addl_ueis = Ueis.select().where(Ueis.dbkey == g.dbkey) diff --git a/backend/dissemination/workbooklib/corrective_action_plan.py b/backend/dissemination/workbooklib/corrective_action_plan.py index 049fa19534..febde0382d 100644 --- a/backend/dissemination/workbooklib/corrective_action_plan.py +++ b/backend/dissemination/workbooklib/corrective_action_plan.py @@ -8,7 +8,6 @@ test_pfix, ) -from dissemination.workbooklib.excel_creation import insert_version_and_sheet_name from dissemination.workbooklib.census_models.census import dynamic_import @@ -33,7 +32,6 @@ def generate_corrective_action_plan(dbkey, year, outfile): ] g = set_uei(Gen, wb, dbkey) - insert_version_and_sheet_name(wb, "corrective-action-plan-workbook") captexts = Captext.select().where(Captext.dbkey == g.dbkey) diff --git a/backend/dissemination/workbooklib/excel_creation.py b/backend/dissemination/workbooklib/excel_creation.py index becac8b609..6e2dc21207 100644 --- a/backend/dissemination/workbooklib/excel_creation.py +++ b/backend/dissemination/workbooklib/excel_creation.py @@ -6,7 +6,6 @@ import logging from datetime import date from config import settings -import re import json logger = logging.getLogger(__name__) @@ -211,12 +210,3 @@ def extract_metadata(sheet_json, range): if ("range_name" in scell) and (scell["range_name"] == range): result = scell["formula"] return result - - -def insert_version_and_sheet_name(wb, sheet_json): - ver_cell = extract_metadata(sheet_json, "version") - ver_re = re.search('"(.*?)"', ver_cell)[1] - wb_name_cell = extract_metadata(sheet_json, "section_name") - wb_name_re = re.search('"(.*?)"', wb_name_cell)[1] - set_single_cell_range(wb, "version", ver_re) - set_single_cell_range(wb, "section_name", wb_name_re) diff --git a/backend/dissemination/workbooklib/federal_awards.py b/backend/dissemination/workbooklib/federal_awards.py index 8731b8ad48..24f6d71e99 100644 --- a/backend/dissemination/workbooklib/federal_awards.py +++ b/backend/dissemination/workbooklib/federal_awards.py @@ -9,7 +9,6 @@ set_range, ) -from dissemination.workbooklib.excel_creation import insert_version_and_sheet_name from dissemination.workbooklib.census_models.census import dynamic_import from config import settings @@ -202,7 +201,6 @@ def generate_federal_awards(dbkey, year, outfile): # In sheet : in DB g = set_uei(Gen, wb, dbkey) - insert_version_and_sheet_name(wb, "federal-awards-workbook") cfdas = Cfda.select().where(Cfda.dbkey == dbkey).order_by(Cfda.index) map_simple_columns(wb, mappings, cfdas) diff --git a/backend/dissemination/workbooklib/findings.py b/backend/dissemination/workbooklib/findings.py index 17a8a50963..54e767a030 100644 --- a/backend/dissemination/workbooklib/findings.py +++ b/backend/dissemination/workbooklib/findings.py @@ -7,7 +7,6 @@ set_range, ) -from dissemination.workbooklib.excel_creation import insert_version_and_sheet_name from dissemination.workbooklib.census_models.census import dynamic_import @@ -96,7 +95,6 @@ def generate_findings(dbkey, year, outfile): Cfda = dynamic_import("Cfda", year) wb = pyxl.load_workbook(templates["AuditFindings"]) g = set_uei(Gen, wb, dbkey) - insert_version_and_sheet_name(wb, "federal-awards-audit-findings-workbook") cfdas = Cfda.select().where(Cfda.dbkey == g.dbkey).order_by(Cfda.index) # For each of them, I need to generate an elec -> award mapping. diff --git a/backend/dissemination/workbooklib/findings_text.py b/backend/dissemination/workbooklib/findings_text.py index 89a9711093..afbdeeb76a 100644 --- a/backend/dissemination/workbooklib/findings_text.py +++ b/backend/dissemination/workbooklib/findings_text.py @@ -8,7 +8,6 @@ test_pfix, ) -from dissemination.workbooklib.excel_creation import insert_version_and_sheet_name from dissemination.workbooklib.census_models.census import dynamic_import import openpyxl as pyxl @@ -33,7 +32,6 @@ def generate_findings_text(dbkey, year, outfile): wb = pyxl.load_workbook(templates["AuditFindingsText"]) g = set_uei(Gen, wb, dbkey) - insert_version_and_sheet_name(wb, "audit-findings-text-workbook") ftexts = Findingstext.select().where(Findingstext.dbkey == g.dbkey) map_simple_columns(wb, mappings, ftexts) diff --git a/backend/dissemination/workbooklib/notes_to_sefa.py b/backend/dissemination/workbooklib/notes_to_sefa.py index fe6c0e6649..ac2cf5eee8 100644 --- a/backend/dissemination/workbooklib/notes_to_sefa.py +++ b/backend/dissemination/workbooklib/notes_to_sefa.py @@ -9,7 +9,6 @@ ) from dissemination.workbooklib.excel_creation import ( - insert_version_and_sheet_name, set_range, ) from dissemination.workbooklib.census_models.census import dynamic_import @@ -47,7 +46,6 @@ def generate_notes_to_sefa(dbkey, year, outfile): wb = pyxl.load_workbook(templates["SEFA"]) g = set_uei(Gen, wb, dbkey) - insert_version_and_sheet_name(wb, "notes-to-sefa-workbook") # The mapping is weird. # https://facdissem.census.gov/Documents/DataDownloadKey.xlsx diff --git a/backend/dissemination/workbooklib/secondary_auditors.py b/backend/dissemination/workbooklib/secondary_auditors.py index 090151e146..fadc77711e 100644 --- a/backend/dissemination/workbooklib/secondary_auditors.py +++ b/backend/dissemination/workbooklib/secondary_auditors.py @@ -7,7 +7,6 @@ test_pfix, ) -from dissemination.workbooklib.excel_creation import insert_version_and_sheet_name from dissemination.workbooklib.census_models.census import dynamic_import @@ -58,7 +57,6 @@ def generate_secondary_auditors(dbkey, year, outfile): wb = pyxl.load_workbook(templates["SecondaryAuditors"]) g = set_uei(Gen, wb, dbkey) - insert_version_and_sheet_name(wb, "secondary-auditors-workbook") sec_cpas = Cpas.select().where(Cpas.dbkey == g.dbkey) diff --git a/backend/schemas/output/excel/json/additional-eins-workbook.json b/backend/schemas/output/excel/json/additional-eins-workbook.json index 13e4f0628b..16de065a52 100644 --- a/backend/schemas/output/excel/json/additional-eins-workbook.json +++ b/backend/schemas/output/excel/json/additional-eins-workbook.json @@ -31,7 +31,6 @@ "single_cells": [ { "format": "text", - "formula": "=\"1.0.2\"", "help": { "link": "https://fac.gov/documentation/validation/#plain_text", "text": "Only plain text is allowed, no emoji, formatting, or other special additions" @@ -45,11 +44,11 @@ "validation": { "type": "NOVALIDATION" }, + "value": "1.0.3", "width": 48 }, { "format": "text", - "formula": "=\"AdditionalEins\"", "help": { "link": "https://fac.gov/documentation/validation/#section_name", "text": "The workbook you tried to upload is for a different section." @@ -63,6 +62,7 @@ "validation": { "type": "NOVALIDATION" }, + "value": "AdditionalEins", "width": 48 }, { diff --git a/backend/schemas/output/excel/json/additional-ueis-workbook.json b/backend/schemas/output/excel/json/additional-ueis-workbook.json index 35be3b3bd5..2e908dbc18 100644 --- a/backend/schemas/output/excel/json/additional-ueis-workbook.json +++ b/backend/schemas/output/excel/json/additional-ueis-workbook.json @@ -31,7 +31,6 @@ "single_cells": [ { "format": "text", - "formula": "=\"1.0.2\"", "help": { "link": "https://fac.gov/documentation/validation/#plain_text", "text": "Only plain text is allowed, no emoji, formatting, or other special additions" @@ -45,11 +44,11 @@ "validation": { "type": "NOVALIDATION" }, + "value": "1.0.3", "width": 48 }, { "format": "text", - "formula": "=\"AdditionalUeis\"", "help": { "link": "https://fac.gov/documentation/validation/#section_name", "text": "The workbook you tried to upload is for a different section." @@ -63,6 +62,7 @@ "validation": { "type": "NOVALIDATION" }, + "value": "AdditionalUeis", "width": 48 }, { diff --git a/backend/schemas/output/excel/json/audit-findings-text-workbook.json b/backend/schemas/output/excel/json/audit-findings-text-workbook.json index fcbdbb9bf7..b945052611 100644 --- a/backend/schemas/output/excel/json/audit-findings-text-workbook.json +++ b/backend/schemas/output/excel/json/audit-findings-text-workbook.json @@ -31,7 +31,6 @@ "single_cells": [ { "format": "text", - "formula": "=\"1.0.2\"", "help": { "link": "https://fac.gov/documentation/validation/#plain_text", "text": "Only plain text is allowed, no emoji, formatting, or other special additions" @@ -45,11 +44,11 @@ "validation": { "type": "NOVALIDATION" }, + "value": "1.0.3", "width": 48 }, { "format": "text", - "formula": "=\"FindingsText\"", "help": { "link": "https://fac.gov/documentation/validation/#section_name", "text": "The workbook you tried to upload is for a different section." @@ -63,6 +62,7 @@ "validation": { "type": "NOVALIDATION" }, + "value": "FindingsText", "width": 48 }, { diff --git a/backend/schemas/output/excel/json/corrective-action-plan-workbook.json b/backend/schemas/output/excel/json/corrective-action-plan-workbook.json index 6f94975b68..b7f45277b9 100644 --- a/backend/schemas/output/excel/json/corrective-action-plan-workbook.json +++ b/backend/schemas/output/excel/json/corrective-action-plan-workbook.json @@ -31,7 +31,6 @@ "single_cells": [ { "format": "text", - "formula": "=\"1.0.2\"", "help": { "link": "https://fac.gov/documentation/validation/#plain_text", "text": "Only plain text is allowed, no emoji, formatting, or other special additions" @@ -45,11 +44,11 @@ "validation": { "type": "NOVALIDATION" }, + "value": "1.0.3", "width": 48 }, { "format": "text", - "formula": "=\"CorrectiveActionPlan\"", "help": { "link": "https://fac.gov/documentation/validation/#section_name", "text": "The workbook you tried to upload is for a different section." @@ -63,6 +62,7 @@ "validation": { "type": "NOVALIDATION" }, + "value": "CorrectiveActionPlan", "width": 48 }, { diff --git a/backend/schemas/output/excel/json/federal-awards-audit-findings-workbook.json b/backend/schemas/output/excel/json/federal-awards-audit-findings-workbook.json index e8e0085638..f1ef772e6c 100644 --- a/backend/schemas/output/excel/json/federal-awards-audit-findings-workbook.json +++ b/backend/schemas/output/excel/json/federal-awards-audit-findings-workbook.json @@ -31,7 +31,6 @@ "single_cells": [ { "format": "text", - "formula": "=\"1.0.2\"", "help": { "link": "https://fac.gov/documentation/validation/#plain_text", "text": "Only plain text is allowed, no emoji, formatting, or other special additions" @@ -45,11 +44,11 @@ "validation": { "type": "NOVALIDATION" }, + "value": "1.0.3", "width": 48 }, { "format": "text", - "formula": "=\"FindingsUniformGuidance\"", "help": { "link": "https://fac.gov/documentation/validation/#section_name", "text": "The workbook you tried to upload is for a different section." @@ -63,6 +62,7 @@ "validation": { "type": "NOVALIDATION" }, + "value": "FindingsUniformGuidance", "width": 48 }, { diff --git a/backend/schemas/output/excel/json/federal-awards-workbook.json b/backend/schemas/output/excel/json/federal-awards-workbook.json index 12666aee9d..5012ef02f6 100644 --- a/backend/schemas/output/excel/json/federal-awards-workbook.json +++ b/backend/schemas/output/excel/json/federal-awards-workbook.json @@ -31,7 +31,6 @@ "single_cells": [ { "format": "text", - "formula": "=\"1.0.2\"", "help": { "link": "https://fac.gov/documentation/validation/#plain_text", "text": "Only plain text is allowed, no emoji, formatting, or other special additions" @@ -45,11 +44,11 @@ "validation": { "type": "NOVALIDATION" }, + "value": "1.0.3", "width": 48 }, { "format": "text", - "formula": "=\"FederalAwardsExpended\"", "help": { "link": "https://fac.gov/documentation/validation/#section_name", "text": "The workbook you tried to upload is for a different section." @@ -63,6 +62,7 @@ "validation": { "type": "NOVALIDATION" }, + "value": "FederalAwardsExpended", "width": 48 }, { diff --git a/backend/schemas/output/excel/json/notes-to-sefa-workbook.json b/backend/schemas/output/excel/json/notes-to-sefa-workbook.json index 904f770e5a..d7b22087d8 100644 --- a/backend/schemas/output/excel/json/notes-to-sefa-workbook.json +++ b/backend/schemas/output/excel/json/notes-to-sefa-workbook.json @@ -31,7 +31,6 @@ "single_cells": [ { "format": "text", - "formula": "=\"1.0.2\"", "help": { "link": "https://fac.gov/documentation/validation/#plain_text", "text": "Only plain text is allowed, no emoji, formatting, or other special additions" @@ -45,11 +44,11 @@ "validation": { "type": "NOVALIDATION" }, + "value": "1.0.3", "width": 48 }, { "format": "text", - "formula": "=\"NotesToSefa\"", "help": { "link": "https://fac.gov/documentation/validation/#section_name", "text": "The workbook you tried to upload is for a different section." @@ -63,6 +62,7 @@ "validation": { "type": "NOVALIDATION" }, + "value": "NotesToSefa", "width": 48 }, { diff --git a/backend/schemas/output/excel/json/secondary-auditors-workbook.json b/backend/schemas/output/excel/json/secondary-auditors-workbook.json index 224270d9c5..4dda398239 100644 --- a/backend/schemas/output/excel/json/secondary-auditors-workbook.json +++ b/backend/schemas/output/excel/json/secondary-auditors-workbook.json @@ -29,7 +29,6 @@ "single_cells": [ { "format": "text", - "formula": "=\"1.0.2\"", "help": { "link": "https://fac.gov/documentation/validation/#plain_text", "text": "Only plain text is allowed, no emoji, formatting, or other special additions" @@ -43,11 +42,11 @@ "validation": { "type": "NOVALIDATION" }, + "value": "1.0.3", "width": 48 }, { "format": "text", - "formula": "=\"SecondaryAuditors\"", "help": { "link": "https://fac.gov/documentation/validation/#section_name", "text": "The workbook you tried to upload is for a different section." @@ -61,6 +60,7 @@ "validation": { "type": "NOVALIDATION" }, + "value": "SecondaryAuditors", "width": 48 }, { diff --git a/backend/schemas/output/excel/xlsx/additional-eins-workbook.xlsx b/backend/schemas/output/excel/xlsx/additional-eins-workbook.xlsx index 10f50d2b9b..d7976d5900 100644 Binary files a/backend/schemas/output/excel/xlsx/additional-eins-workbook.xlsx and b/backend/schemas/output/excel/xlsx/additional-eins-workbook.xlsx differ diff --git a/backend/schemas/output/excel/xlsx/additional-ueis-workbook.xlsx b/backend/schemas/output/excel/xlsx/additional-ueis-workbook.xlsx index ec85bf1fb6..a93d06e528 100644 Binary files a/backend/schemas/output/excel/xlsx/additional-ueis-workbook.xlsx and b/backend/schemas/output/excel/xlsx/additional-ueis-workbook.xlsx differ diff --git a/backend/schemas/output/excel/xlsx/audit-findings-text-workbook.xlsx b/backend/schemas/output/excel/xlsx/audit-findings-text-workbook.xlsx index 63a2a61738..d4b99dbba9 100644 Binary files a/backend/schemas/output/excel/xlsx/audit-findings-text-workbook.xlsx and b/backend/schemas/output/excel/xlsx/audit-findings-text-workbook.xlsx differ diff --git a/backend/schemas/output/excel/xlsx/corrective-action-plan-workbook.xlsx b/backend/schemas/output/excel/xlsx/corrective-action-plan-workbook.xlsx index 3d514c7306..37183107db 100644 Binary files a/backend/schemas/output/excel/xlsx/corrective-action-plan-workbook.xlsx and b/backend/schemas/output/excel/xlsx/corrective-action-plan-workbook.xlsx differ diff --git a/backend/schemas/output/excel/xlsx/federal-awards-audit-findings-workbook.xlsx b/backend/schemas/output/excel/xlsx/federal-awards-audit-findings-workbook.xlsx index f7f7b163a9..2651a6b4fe 100644 Binary files a/backend/schemas/output/excel/xlsx/federal-awards-audit-findings-workbook.xlsx and b/backend/schemas/output/excel/xlsx/federal-awards-audit-findings-workbook.xlsx differ diff --git a/backend/schemas/output/excel/xlsx/federal-awards-workbook.xlsx b/backend/schemas/output/excel/xlsx/federal-awards-workbook.xlsx index 3df883a8ff..1cca51fb80 100644 Binary files a/backend/schemas/output/excel/xlsx/federal-awards-workbook.xlsx and b/backend/schemas/output/excel/xlsx/federal-awards-workbook.xlsx differ diff --git a/backend/schemas/output/excel/xlsx/notes-to-sefa-workbook.xlsx b/backend/schemas/output/excel/xlsx/notes-to-sefa-workbook.xlsx index 86ba5413a9..df5eebb4bd 100644 Binary files a/backend/schemas/output/excel/xlsx/notes-to-sefa-workbook.xlsx and b/backend/schemas/output/excel/xlsx/notes-to-sefa-workbook.xlsx differ diff --git a/backend/schemas/output/excel/xlsx/secondary-auditors-workbook.xlsx b/backend/schemas/output/excel/xlsx/secondary-auditors-workbook.xlsx index 995f46636d..9bd8ab0986 100644 Binary files a/backend/schemas/output/excel/xlsx/secondary-auditors-workbook.xlsx and b/backend/schemas/output/excel/xlsx/secondary-auditors-workbook.xlsx differ diff --git a/backend/schemas/scripts/parse.py b/backend/schemas/scripts/parse.py index 3f48e70c75..83d5870219 100644 --- a/backend/schemas/scripts/parse.py +++ b/backend/schemas/scripts/parse.py @@ -15,13 +15,13 @@ Sheet = NT( "Sheet", - "name single_cells meta_cells open_ranges header_inclusion text_ranges header_height row_height hide_col_from hide_row_from", + "name single_cells meta_cells open_ranges text_ranges header_height row_height hide_col_from hide_row_from", ) Posn = NT( "Posn", "title title_cell range_name range_cell width keep_locked format last_range_cell", ) -SingleCell = NT("SingleCell", "posn validation formula help") +SingleCell = NT("SingleCell", "posn validation formula help value") MetaCell = NT("MetaCell", "posn formula help") MergeableCell = NT("MergeableCell", "start_row end_row start_column end_column") MergedUnreachable = NT("MergedUnreachable", "columns") @@ -85,6 +85,7 @@ def parse_single_cell(spec): parse_validation(get(spec, "validation")), get(spec, "formula"), parse_help(get(spec, "help")), + get(spec, "value", default=None), ) @@ -163,7 +164,7 @@ def parse_text_range(spec): def parse_sheet(spec): # noqa: C901 - sc, mtc, opr, hi, tr = None, None, None, None, None + sc, mtc, opr, tr = None, None, None, None name = get(spec, "name", default="Unnamed Sheet") if "single_cells" in spec: sc = list(map(parse_single_cell, get(spec, "single_cells", default=[]))) @@ -177,10 +178,6 @@ def parse_sheet(spec): # noqa: C901 opr = list(map(parse_open_range, get(spec, "open_ranges", default=[]))) else: opr = [] - if "header_inclusion" in spec: - hi = parse_header_inclusion(get(spec, "header_inclusion")) - else: - hi = HeaderInclusion([]) if "text_ranges" in spec: tr = list(map(parse_text_range, get(spec, "text_ranges", default=[]))) else: @@ -201,7 +198,7 @@ def parse_sheet(spec): # noqa: C901 hrf = get(spec, "hide_row_from") else: hrf = None - return Sheet(name, sc, mtc, opr, hi, tr, hh, rh, hcf, hrf) + return Sheet(name, sc, mtc, opr, tr, hh, rh, hcf, hrf) def parse_spec(spec): diff --git a/backend/schemas/scripts/render.py b/backend/schemas/scripts/render.py index 6ab011968a..5c23b5fe2e 100644 --- a/backend/schemas/scripts/render.py +++ b/backend/schemas/scripts/render.py @@ -26,7 +26,7 @@ "name,column,label_row,range_start_row,range_start,abs_range_start,full_range", ) -MAX_ROWS = 5000 +MAX_ROWS = 10000 XLSX_MAX_ROWS = 1048576 # Excel has a maximum of 1048576 rows XLSX_MAX_COLS = 16384 # Excel has a maximum of 16384 columns @@ -98,8 +98,6 @@ def process_spec(WBNT): unlock_data_entry_cells(WBNT.title_row, ws, sheet) set_column_widths(wb, ws, sheet) set_row_heights(wb, ws, sheet) - if sheet.header_inclusion is not None: - apply_header_cell_style(ws, sheet.header_inclusion) set_wb_security(wb, password) return wb @@ -374,6 +372,10 @@ def process_single_cells(wb, ws, sheet): row = int(o.posn.title_cell[1]) ws.row_dimensions[row].height = sheet.header_height + if o.value: + cell_reference = o.posn.range_cell + ws[cell_reference] = o.value + def process_meta_cells(wb, ws, sheet): print("---- process_meta_cells ----") @@ -429,14 +431,6 @@ def configure_header_cell(ws, r): the_cell.alignment = Alignment(wrapText=True, wrap_text=True) -def apply_header_cell_style(ws, additional_header_cells): - print("---- apply_header_cell_style ----") - print(additional_header_cells) - for ahc in additional_header_cells.cells: - the_cell = ws[ahc] - the_cell.fill = header_row_fill - - def process_text_ranges(wb, ws, sheet): print("---- parse_text_ranges ----") max_width = 72 @@ -462,7 +456,7 @@ def unlock_data_entry_cells(header_row, ws, sheet): for r in sheet.open_ranges: if not r.posn.keep_locked: coords = make_range(r) - for rowndx in range(coords.range_start_row, MAX_ROWS): + for rowndx in range(coords.range_start_row, MAX_ROWS + 1): cell_reference = f"${coords.column}${rowndx}" cell = ws[cell_reference] cell.protection = Protection(locked=False) diff --git a/backend/schemas/source/excel/libs/Sheets.libsonnet b/backend/schemas/source/excel/libs/Sheets.libsonnet index 6562838f0e..187b028c94 100644 --- a/backend/schemas/source/excel/libs/Sheets.libsonnet +++ b/backend/schemas/source/excel/libs/Sheets.libsonnet @@ -41,7 +41,7 @@ local section_names = { }; // All workbooks should get the same version number. -local WORKBOOKS_VERSION = '1.0.2'; +local WORKBOOKS_VERSION = '1.0.3'; { single_cell: single_cell, diff --git a/backend/schemas/source/excel/templates/additional-eins-workbook.jsonnet b/backend/schemas/source/excel/templates/additional-eins-workbook.jsonnet index 8c7424453e..6183ff8232 100644 --- a/backend/schemas/source/excel/templates/additional-eins-workbook.jsonnet +++ b/backend/schemas/source/excel/templates/additional-eins-workbook.jsonnet @@ -31,7 +31,7 @@ local single_cells = [ title_cell: 'A2', range_cell: 'B2', format: 'text', - formula: '="' + Sheets.WORKBOOKS_VERSION + '"', + value: Sheets.WORKBOOKS_VERSION, help: Help.plain_text, validation: SV.NoValidation, }, @@ -43,7 +43,7 @@ local single_cells = [ title_cell: 'A3', range_cell: 'B3', format: 'text', - formula: '="' + Sheets.section_names.ADDITIONAL_EINS + '"', + value: Sheets.section_names.ADDITIONAL_EINS, help: Help.wrong_workbook_template, validation: SV.NoValidation, }, diff --git a/backend/schemas/source/excel/templates/additional-ueis-workbook.jsonnet b/backend/schemas/source/excel/templates/additional-ueis-workbook.jsonnet index 410e3e5600..65ad75e11d 100644 --- a/backend/schemas/source/excel/templates/additional-ueis-workbook.jsonnet +++ b/backend/schemas/source/excel/templates/additional-ueis-workbook.jsonnet @@ -31,7 +31,7 @@ local single_cells = [ title_cell: 'A2', range_cell: 'B2', format: 'text', - formula: '="' + Sheets.WORKBOOKS_VERSION + '"', + value: Sheets.WORKBOOKS_VERSION, help: Help.plain_text, validation: SV.NoValidation, }, @@ -43,7 +43,7 @@ local single_cells = [ title_cell: 'A3', range_cell: 'B3', format: 'text', - formula: '="' + Sheets.section_names.ADDITIONAL_UEIS + '"', + value: Sheets.section_names.ADDITIONAL_UEIS, help: Help.wrong_workbook_template, validation: SV.NoValidation, }, diff --git a/backend/schemas/source/excel/templates/audit-findings-text-workbook.jsonnet b/backend/schemas/source/excel/templates/audit-findings-text-workbook.jsonnet index a891ee49e4..82f075f5dd 100644 --- a/backend/schemas/source/excel/templates/audit-findings-text-workbook.jsonnet +++ b/backend/schemas/source/excel/templates/audit-findings-text-workbook.jsonnet @@ -31,7 +31,7 @@ local single_cells = [ title_cell: 'A2', range_cell: 'B2', format: 'text', - formula: '="' + Sheets.WORKBOOKS_VERSION + '"', + value: Sheets.WORKBOOKS_VERSION, help: Help.plain_text, validation: SV.NoValidation, }, @@ -43,7 +43,7 @@ local single_cells = [ title_cell: 'A3', range_cell: 'B3', format: 'text', - formula: '="' + Sheets.section_names.AUDIT_FINDINGS_TEXT + '"', + value: Sheets.section_names.AUDIT_FINDINGS_TEXT, help: Help.wrong_workbook_template, validation: SV.NoValidation, }, diff --git a/backend/schemas/source/excel/templates/corrective-action-plan-workbook.jsonnet b/backend/schemas/source/excel/templates/corrective-action-plan-workbook.jsonnet index 072ebd3187..931fe75731 100644 --- a/backend/schemas/source/excel/templates/corrective-action-plan-workbook.jsonnet +++ b/backend/schemas/source/excel/templates/corrective-action-plan-workbook.jsonnet @@ -31,7 +31,7 @@ local single_cells = [ title_cell: 'A2', range_cell: 'B2', format: 'text', - formula: '="' + Sheets.WORKBOOKS_VERSION + '"', + value: Sheets.WORKBOOKS_VERSION, help: Help.plain_text, validation: SV.NoValidation, }, @@ -43,7 +43,7 @@ local single_cells = [ title_cell: 'A3', range_cell: 'B3', format: 'text', - formula: '="' + Sheets.section_names.CORRECTIVE_ACTION_PLAN + '"', + value: Sheets.section_names.CORRECTIVE_ACTION_PLAN, help: Help.wrong_workbook_template, validation: SV.NoValidation, }, diff --git a/backend/schemas/source/excel/templates/federal-awards-audit-findings-workbook.jsonnet b/backend/schemas/source/excel/templates/federal-awards-audit-findings-workbook.jsonnet index 9d6982c95b..ca9e86d911 100644 --- a/backend/schemas/source/excel/templates/federal-awards-audit-findings-workbook.jsonnet +++ b/backend/schemas/source/excel/templates/federal-awards-audit-findings-workbook.jsonnet @@ -33,7 +33,7 @@ local single_cells = [ title_cell: 'A2', range_cell: 'B2', format: 'text', - formula: '="' + Sheets.WORKBOOKS_VERSION + '"', + value: Sheets.WORKBOOKS_VERSION, help: Help.plain_text, validation: SV.NoValidation, }, @@ -45,7 +45,7 @@ local single_cells = [ title_cell: 'A3', range_cell: 'B3', format: 'text', - formula: '="' + Sheets.section_names.FEDERAL_AWARDS_AUDIT_FINDINGS + '"', + value: Sheets.section_names.FEDERAL_AWARDS_AUDIT_FINDINGS, help: Help.wrong_workbook_template, validation: SV.NoValidation, }, diff --git a/backend/schemas/source/excel/templates/federal-awards-workbook.jsonnet b/backend/schemas/source/excel/templates/federal-awards-workbook.jsonnet index 36d4b5260c..3dc28db39d 100644 --- a/backend/schemas/source/excel/templates/federal-awards-workbook.jsonnet +++ b/backend/schemas/source/excel/templates/federal-awards-workbook.jsonnet @@ -43,7 +43,7 @@ local single_cells = [ title_cell: 'A2', range_cell: 'B2', format: 'text', - formula: '="' + Sheets.WORKBOOKS_VERSION + '"', + value: Sheets.WORKBOOKS_VERSION, help: Help.plain_text, validation: SV.NoValidation, }, @@ -55,7 +55,7 @@ local single_cells = [ title_cell: 'A3', range_cell: 'B3', format: 'text', - formula: '="' + Sheets.section_names.FEDERAL_AWARDS + '"', + value: Sheets.section_names.FEDERAL_AWARDS, help: Help.wrong_workbook_template, validation: SV.NoValidation, }, diff --git a/backend/schemas/source/excel/templates/notes-to-sefa-workbook.jsonnet b/backend/schemas/source/excel/templates/notes-to-sefa-workbook.jsonnet index 1a94c9aac7..1899cdb8e7 100644 --- a/backend/schemas/source/excel/templates/notes-to-sefa-workbook.jsonnet +++ b/backend/schemas/source/excel/templates/notes-to-sefa-workbook.jsonnet @@ -32,7 +32,7 @@ local single_cells = [ title_cell: 'A2', range_cell: 'B2', format: 'text', - formula: '="' + Sheets.WORKBOOKS_VERSION + '"', + value: Sheets.WORKBOOKS_VERSION, help: Help.plain_text, validation: SV.NoValidation, }, @@ -44,7 +44,7 @@ local single_cells = [ title_cell: 'A3', range_cell: 'B3', format: 'text', - formula: '="' + Sheets.section_names.NOTES_TO_SEFA + '"', + value: Sheets.section_names.NOTES_TO_SEFA, help: Help.wrong_workbook_template, validation: SV.NoValidation, }, diff --git a/backend/schemas/source/excel/templates/secondary-auditors-workbook.jsonnet b/backend/schemas/source/excel/templates/secondary-auditors-workbook.jsonnet index ab5f44da1b..87f5663e79 100644 --- a/backend/schemas/source/excel/templates/secondary-auditors-workbook.jsonnet +++ b/backend/schemas/source/excel/templates/secondary-auditors-workbook.jsonnet @@ -31,7 +31,7 @@ local single_cells = [ title_cell: 'A2', range_cell: 'B2', format: 'text', - formula: '="' + Sheets.WORKBOOKS_VERSION + '"', + value: Sheets.WORKBOOKS_VERSION, help: Help.plain_text, validation: SV.NoValidation, }, @@ -43,7 +43,7 @@ local single_cells = [ title_cell: 'A3', range_cell: 'B3', format: 'text', - formula: '="' + Sheets.section_names.SECONDARY_AUDITORS + '"', + value: Sheets.section_names.SECONDARY_AUDITORS, help: Help.wrong_workbook_template, validation: SV.NoValidation, },