From f7efb11111dae708baefdcb20618ed778374ec5d Mon Sep 17 00:00:00 2001 From: Tadhg O'Higgins <2626258+tadhg-ohiggins@users.noreply.github.com> Date: Thu, 11 Jul 2024 06:20:09 -0700 Subject: [PATCH 1/3] Remove `data_distro` (#3995) * Remove data_distro. * Remove references to data_distro in docs. --- backend/config/settings.py | 1 - backend/data_distro/Data migration notes.txt | 10 - backend/data_distro/__init__.py | 0 backend/data_distro/admin.py | 14 - backend/data_distro/api_views/basic_views.sql | 157 - backend/data_distro/api_views/findings.sql | 56 - backend/data_distro/api_views/general.sql | 77 - .../sql_migrations/001_initial_migration.sql | 51 - .../sql_migrations/002_basic_views.sql | 147 - .../api_views/sql_migrations/003_findings.sql | 50 - .../api_views/sql_migrations/004_general.sql | 72 - .../sql_migrations/005_docs_for_views.sql | 16 - .../sql_migrations/006_dbkey_for_auditee.sql | 23 - .../007_add_postgrest_notify.sql | 3 - backend/data_distro/apps.py | 6 - .../data_distro/data_to_load/run_logs/.keep | 0 .../data_to_load/test_data/agency.txt | 11 - .../test_data/captext_formatted.txt | 9 - .../data_to_load/test_data/cfda.txt | 14 - .../data_to_load/test_data/cpas.txt | 3 - .../data_to_load/test_data/eins.txt | 8 - .../data_to_load/test_data/findings.txt | 8 - .../test_data/findingstext_formatted.txt | 289 -- .../data_to_load/test_data/gen.txt | 26 - .../data_to_load/test_data/notes.txt | 5 - .../data_to_load/test_data/passthrough.txt | 4 - .../data_to_load/test_data/revisions.txt | 16 - .../data_to_load/test_data/ueis.txt | 4 - backend/data_distro/docs.py | 257 -- .../management/commands/add_pdfs.py | 150 - .../management/commands/create_distro_api.py | 37 - .../management/commands/create_docs.py | 161 - .../commands/create_upload_mapping.py | 112 - .../management/commands/handle_errors.py | 147 - .../management/commands/link_data.py | 175 - .../management/commands/load_files.py | 221 -- .../management/commands/load_test_data.py | 66 - .../management/commands/parse_config.py | 21 - .../management/commands/process_data.py | 246 -- .../management/commands/public_data_loader.py | 130 - .../management/commands/test_pandas.py | 66 - .../data_distro/mappings/FAC_data_dict.csv | 246 -- .../mappings/upload_dictonaries.py | 69 - .../data_distro/mappings/upload_mapping.py | 220 -- .../mappings/v1_crosswalk_for_docs.py | 3321 ----------------- .../0001_initial_schema_from_downloads.py | 1707 --------- .../migrations/0002_alter_cfdainfo_ein.py | 19 - .../0003_add_relationships_between_models.py | 94 - .../migrations/0004_add_new_models.py | 1521 -------- .../0005_delete_duplicate_fields.py | 244 -- ...06_modify_models_to_work_with_2022_data.py | 571 --- ...s_agency_name_alter_general_entity_type.py | 31 - .../0008_alter_general_type_of_entity.py | 22 - .../migrations/0009_refactor_Agency.py | 67 - .../migrations/0010_add_Agencies.py | 93 - ...0011_alter_passthrough_passthrough_name.py | 22 - .../0012_update_docs_with_multiple_sources.py | 149 - .../0013_alter_auditee_duns_list.py | 25 - ...ditor_ein_alter_auditor_seqnum_and_more.py | 39 - ...name_city_auditee_auditee_city_and_more.py | 50 - ...ename_zip_code_auditee_auditee_zip_code.py | 17 - .../0017_cfdainfo_nulls_for_old_data.py | 31 - ...itor_ein_remove_general_agency_and_more.py | 151 - .../0019_differentiate_findings_fields.py | 32 - .../0020_renames_and_Findings_links.py | 203 - .../0021_alter_auditor_seqence_number.py | 21 - .../migrations/0022_rename_models.py | 51 - .../0023_make_linkages_many_to_many.py | 56 - .../migrations/0024_add_sql_docs.py | 15 - ...025_alter_revision_general_info_explain.py | 21 - .../migrations/0026_nulls_for_cpa_fields.py | 52 - .../0027_null_for_auditee_auditee_contact.py | 22 - .../migrations/0028_general_pdf_urls.py | 26 - .../migrations/0030_add_api_views.py | 73 - ...ename_seqence_number_to_sequence_number.py | 22 - .../data_distro/migrations/0032_update_API.py | 50 - .../migrations/0033_dbkey_to_auditee_API.py | 30 - .../migrations/0034_API_improvements.py | 31 - .../migrations/0035_update_docs.py | 15 - backend/data_distro/migrations/__init__.py | 0 backend/data_distro/models.py | 956 ----- backend/data_distro/views.py | 3 - docs/README.md | 1 - docs/data_loading.md | 57 - docs/development.md | 12 - 85 files changed, 13327 deletions(-) delete mode 100644 backend/data_distro/Data migration notes.txt delete mode 100644 backend/data_distro/__init__.py delete mode 100644 backend/data_distro/admin.py delete mode 100644 backend/data_distro/api_views/basic_views.sql delete mode 100644 backend/data_distro/api_views/findings.sql delete mode 100644 backend/data_distro/api_views/general.sql delete mode 100644 backend/data_distro/api_views/sql_migrations/001_initial_migration.sql delete mode 100644 backend/data_distro/api_views/sql_migrations/002_basic_views.sql delete mode 100644 backend/data_distro/api_views/sql_migrations/003_findings.sql delete mode 100644 backend/data_distro/api_views/sql_migrations/004_general.sql delete mode 100644 backend/data_distro/api_views/sql_migrations/005_docs_for_views.sql delete mode 100644 backend/data_distro/api_views/sql_migrations/006_dbkey_for_auditee.sql delete mode 100644 backend/data_distro/api_views/sql_migrations/007_add_postgrest_notify.sql delete mode 100644 backend/data_distro/apps.py delete mode 100644 backend/data_distro/data_to_load/run_logs/.keep delete mode 100644 backend/data_distro/data_to_load/test_data/agency.txt delete mode 100644 backend/data_distro/data_to_load/test_data/captext_formatted.txt delete mode 100644 backend/data_distro/data_to_load/test_data/cfda.txt delete mode 100644 backend/data_distro/data_to_load/test_data/cpas.txt delete mode 100644 backend/data_distro/data_to_load/test_data/eins.txt delete mode 100644 backend/data_distro/data_to_load/test_data/findings.txt delete mode 100644 backend/data_distro/data_to_load/test_data/findingstext_formatted.txt delete mode 100644 backend/data_distro/data_to_load/test_data/gen.txt delete mode 100644 backend/data_distro/data_to_load/test_data/notes.txt delete mode 100644 backend/data_distro/data_to_load/test_data/passthrough.txt delete mode 100644 backend/data_distro/data_to_load/test_data/revisions.txt delete mode 100644 backend/data_distro/data_to_load/test_data/ueis.txt delete mode 100644 backend/data_distro/docs.py delete mode 100644 backend/data_distro/management/commands/add_pdfs.py delete mode 100644 backend/data_distro/management/commands/create_distro_api.py delete mode 100644 backend/data_distro/management/commands/create_docs.py delete mode 100644 backend/data_distro/management/commands/create_upload_mapping.py delete mode 100644 backend/data_distro/management/commands/handle_errors.py delete mode 100644 backend/data_distro/management/commands/link_data.py delete mode 100644 backend/data_distro/management/commands/load_files.py delete mode 100644 backend/data_distro/management/commands/load_test_data.py delete mode 100644 backend/data_distro/management/commands/parse_config.py delete mode 100644 backend/data_distro/management/commands/process_data.py delete mode 100644 backend/data_distro/management/commands/public_data_loader.py delete mode 100644 backend/data_distro/management/commands/test_pandas.py delete mode 100644 backend/data_distro/mappings/FAC_data_dict.csv delete mode 100644 backend/data_distro/mappings/upload_dictonaries.py delete mode 100644 backend/data_distro/mappings/upload_mapping.py delete mode 100644 backend/data_distro/mappings/v1_crosswalk_for_docs.py delete mode 100644 backend/data_distro/migrations/0001_initial_schema_from_downloads.py delete mode 100644 backend/data_distro/migrations/0002_alter_cfdainfo_ein.py delete mode 100644 backend/data_distro/migrations/0003_add_relationships_between_models.py delete mode 100644 backend/data_distro/migrations/0004_add_new_models.py delete mode 100644 backend/data_distro/migrations/0005_delete_duplicate_fields.py delete mode 100644 backend/data_distro/migrations/0006_modify_models_to_work_with_2022_data.py delete mode 100644 backend/data_distro/migrations/0007_agencies_agency_name_alter_general_entity_type.py delete mode 100644 backend/data_distro/migrations/0008_alter_general_type_of_entity.py delete mode 100644 backend/data_distro/migrations/0009_refactor_Agency.py delete mode 100644 backend/data_distro/migrations/0010_add_Agencies.py delete mode 100644 backend/data_distro/migrations/0011_alter_passthrough_passthrough_name.py delete mode 100644 backend/data_distro/migrations/0012_update_docs_with_multiple_sources.py delete mode 100644 backend/data_distro/migrations/0013_alter_auditee_duns_list.py delete mode 100644 backend/data_distro/migrations/0014_alter_auditor_auditor_ein_alter_auditor_seqnum_and_more.py delete mode 100644 backend/data_distro/migrations/0015_rename_city_auditee_auditee_city_and_more.py delete mode 100644 backend/data_distro/migrations/0016_rename_zip_code_auditee_auditee_zip_code.py delete mode 100644 backend/data_distro/migrations/0017_cfdainfo_nulls_for_old_data.py delete mode 100644 backend/data_distro/migrations/0018_remove_auditor_auditor_ein_remove_general_agency_and_more.py delete mode 100644 backend/data_distro/migrations/0019_differentiate_findings_fields.py delete mode 100644 backend/data_distro/migrations/0020_renames_and_Findings_links.py delete mode 100644 backend/data_distro/migrations/0021_alter_auditor_seqence_number.py delete mode 100644 backend/data_distro/migrations/0022_rename_models.py delete mode 100644 backend/data_distro/migrations/0023_make_linkages_many_to_many.py delete mode 100644 backend/data_distro/migrations/0024_add_sql_docs.py delete mode 100644 backend/data_distro/migrations/0025_alter_revision_general_info_explain.py delete mode 100644 backend/data_distro/migrations/0026_nulls_for_cpa_fields.py delete mode 100644 backend/data_distro/migrations/0027_null_for_auditee_auditee_contact.py delete mode 100644 backend/data_distro/migrations/0028_general_pdf_urls.py delete mode 100644 backend/data_distro/migrations/0030_add_api_views.py delete mode 100644 backend/data_distro/migrations/0031_rename_seqence_number_to_sequence_number.py delete mode 100644 backend/data_distro/migrations/0032_update_API.py delete mode 100644 backend/data_distro/migrations/0033_dbkey_to_auditee_API.py delete mode 100644 backend/data_distro/migrations/0034_API_improvements.py delete mode 100644 backend/data_distro/migrations/0035_update_docs.py delete mode 100644 backend/data_distro/migrations/__init__.py delete mode 100644 backend/data_distro/models.py delete mode 100644 backend/data_distro/views.py delete mode 100644 docs/data_loading.md diff --git a/backend/config/settings.py b/backend/config/settings.py index f1a5588a7..5775d4042 100644 --- a/backend/config/settings.py +++ b/backend/config/settings.py @@ -126,7 +126,6 @@ "api", "users", "report_submission", - # "data_distro", "dissemination", "census_historical_migration", "support", diff --git a/backend/data_distro/Data migration notes.txt b/backend/data_distro/Data migration notes.txt deleted file mode 100644 index e1a7a5a15..000000000 --- a/backend/data_distro/Data migration notes.txt +++ /dev/null @@ -1,10 +0,0 @@ -CPA records removed: - -203222|2009|N/A|||||||||| -195404|2009|N/A|||||||||| -223464|2009|NA||NA|NA|MN|00000|NA|NA|0000000000|0000000000|NA - - -EIN records removed: - -2009|203222|n/a|1 diff --git a/backend/data_distro/__init__.py b/backend/data_distro/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/backend/data_distro/admin.py b/backend/data_distro/admin.py deleted file mode 100644 index a8c66c10d..000000000 --- a/backend/data_distro/admin.py +++ /dev/null @@ -1,14 +0,0 @@ -from django.apps import apps -from django.contrib import admin - - -# get all the data_distro models -distro_classes = apps.all_models["data_distro"] - -# This is a basic way to see data_distro models in the admin -for model in distro_classes: - # You can add custom registration earlier in the file the exception prevents clobbering - try: - admin.site.register(distro_classes[model]) - except admin.sites.AlreadyRegistered: - pass diff --git a/backend/data_distro/api_views/basic_views.sql b/backend/data_distro/api_views/basic_views.sql deleted file mode 100644 index 9377d5a0e..000000000 --- a/backend/data_distro/api_views/basic_views.sql +++ /dev/null @@ -1,157 +0,0 @@ --- Current script to recreate views --- Run create docs to update view comment - -begin; - --- auditee -drop view if exists api.vw_auditee; -create view api.vw_auditee as -with auditee as ( - select * - from data_distro_auditee - where data_distro_auditee.is_public=True -), -gen as ( - select distinct auditee_id as auditee_id, array_agg(id) as general_id - from data_distro_general - group by auditee_id -), -db as( - select distinct auditee_id, array_agg(dbkey) as dbkey - from data_distro_general - group by auditee_id -) -select auditee.*, gen.general_id, db.dbkey -from auditee -left join gen on gen.auditee_id=auditee.id -left join db on db.auditee_id=auditee.id -; - - --- auditor -drop view if exists api.vw_auditor; -create view api.vw_auditor as -with auditor as ( - select * - from data_distro_auditor - where data_distro_auditor.is_public=True -), -gen as ( - select distinct primary_auditor_id, array_agg(id) as general_id - from data_distro_general - group by primary_auditor_id -), -gen_secondary as ( - select distinct auditor_id as auditor_id, - array_agg(general_id) as secondary_auditor_general_id - from data_distro_general_secondary_auditors - group by auditor_id -) -select auditor.*, gen.general_id, gen_secondary.secondary_auditor_general_id -from auditor -left join gen on gen.primary_auditor_id=auditor.id -left join gen_secondary on gen_secondary.auditor_id=auditor.id -; - - --- federal award --- might want to add more links to related objects as a next step -drop view if exists api.vw_federal_award; -create view api.vw_federal_award as -with fed_award as ( - select * - from data_distro_federalaward - where data_distro_federalaward.is_public=True -), -gen as ( - select distinct federalaward_id as federal_award_id, array_agg(id) as general_id - from data_distro_general_federal_awards - group by federal_award_id -) -select fed_award.*, gen.general_id -from fed_award -left join gen on fed_award.id=gen.federal_award_id -; - - --- CAP text -drop view if exists api.vw_cap_text; -create view api.vw_cap_text as -with captext as ( - select * - from data_distro_captext - where data_distro_captext.is_public=True -), -gen as ( - select distinct captext_id, array_agg(general_id) as general_id - from data_distro_general_cap_text - group by captext_id -) -select captext.*, gen.general_id -from captext -left join gen on captext.id=gen.captext_id -; - - --- note -drop view if exists api.vw_note; -create view api.vw_note as -with note as( - select * - from data_distro_note - where data_distro_note.is_public=True -), -gen as ( - select distinct note_id, array_agg(general_id) as general_id - from data_distro_general_notes - group by note_id -) -select note.*, gen.general_id -from note -left join gen on note.id=gen.note_id -; - - --- revision -drop view if exists api.vw_revision; -create view api.vw_revision as -with revision as( - select * - from data_distro_revision - where data_distro_revision.is_public=True -), -gen as ( - select distinct revision_id, array_agg(id) as general_id - from data_distro_general - group by revision_id -) -select revision.*, gen.general_id -from revision -left join gen on revision.id=gen.revision_id -; - - --- passthrough -drop view if exists api.vw_passthrough; -create view api.vw_passthrough as -with pass as( - select * - from data_distro_passthrough - where data_distro_passthrough.is_public=True -), -gen as ( - select distinct passthrough_id, array_agg(general_id) as general_id - from data_distro_general_passthrough - group by passthrough_id -) -select pass.*, gen.general_id -from pass -left join gen on pass.id=gen.passthrough_id -; - - -commit; - -notify pgrst, - 'reload schema'; - diff --git a/backend/data_distro/api_views/findings.sql b/backend/data_distro/api_views/findings.sql deleted file mode 100644 index 4e1980b06..000000000 --- a/backend/data_distro/api_views/findings.sql +++ /dev/null @@ -1,56 +0,0 @@ --- Current script to recreate views --- Run create docs to update view comment --- Uniting findings and findings text --- (May want to add auditee name, agency, fed program name, cap text and cpa name) - -begin; - --- Findings with list of associated findings text records -drop view if exists api.vw_findings; -create view api.vw_findings as -with findings as ( - select * - from data_distro_finding - where data_distro_finding.is_public=True -), -findings_text as ( - select distinct finding_id, - array_agg(findingtext_id) as findings_text_id - from data_distro_finding_findings_text - group by finding_id -), -gen as ( - select finding_id, array_agg(general_id) as general_id - from data_distro_general_findings - group by finding_id -) -select findings.*, findings_text.findings_text_id, gen.general_id -from findings -left join findings_text on findings.id=findings_text.finding_id -left join gen on findings.id=gen.finding_id -; - - --- Findings text -drop view if exists api.vw_findings_text; -create view api.vw_findings_text as -with findings_text as ( - select * - from data_distro_findingtext - where data_distro_findingtext.is_public=True -), -gen as ( - select findingtext_id, array_agg(general_id) as general_id - from data_distro_general_findings_text - group by findingtext_id -) -select findings_text.*, gen.general_id -from findings_text -left join gen on gen.findingtext_id=findings_text.id -; - -commit; - -notify pgrst, - 'reload schema'; - diff --git a/backend/data_distro/api_views/general.sql b/backend/data_distro/api_views/general.sql deleted file mode 100644 index 9f9ebb12d..000000000 --- a/backend/data_distro/api_views/general.sql +++ /dev/null @@ -1,77 +0,0 @@ --- Current script to recreate views --- Run create docs to update view comment --- Takes the General model and adds Auditor and Auditee information for easy searching --- (Possible improvements: add Federal Program Name from Federal Award) - -begin; - -drop view if exists api.vw_general; -create view api.vw_general as -with gen as ( - select * - from data_distro_general - where data_distro_general.is_public=True -), -auditee as ( - select auditee_name, id - from data_distro_auditee -), -auditor as ( - select cpa_firm_name, id - from data_distro_auditor -), -secondary_auditor as ( - select distinct general_id, array_agg(auditor_id) as secondary_auditor_id - from data_distro_general_secondary_auditors - group by general_id -), -federal_award as ( - select distinct general_id, array_agg(federalaward_id) as federal_award_id - from data_distro_general_federal_awards - group by general_id -), -findings as ( - select distinct general_id, array_agg(finding_id) as finding_id - from data_distro_general_findings - group by general_id -), -findings_text as ( - select general_id, array_agg(findingtext_id) as finding_text_id - from data_distro_general_findings_text - group by general_id -), -notes as ( - select distinct general_id, array_agg(note_id) as note_id - from data_distro_general_notes - group by general_id -), -cap_text as ( - select distinct general_id, array_agg(captext_id) as cap_text_id - from data_distro_general_cap_text - group by general_id -), -passthrough as ( - select distinct general_id, array_agg(passthrough_id) as passthrough_id - from data_distro_general_passthrough - group by general_id -) -select gen.*, auditee.auditee_name, auditor.cpa_firm_name, secondary_auditor.secondary_auditor_id, - federal_award.federal_award_id, findings.finding_id, findings_text.finding_text_id, notes.note_id, - cap_text.cap_text_id, passthrough.passthrough_id -from gen -left join auditee on auditee.id=gen.auditee_id -left join auditor on auditor.id=gen.primary_auditor_id -left join secondary_auditor on secondary_auditor.general_id=gen.id -left join federal_award on federal_award.general_id=gen.id -left join findings on findings.general_id=gen.id -left join findings_text on findings_text.general_id=gen.id -left join notes on notes.general_id=gen.id -left join cap_text on cap_text.general_id=gen.id -left join passthrough on passthrough.general_id=gen.id -; - -commit; - -notify pgrst, - 'reload schema'; - diff --git a/backend/data_distro/api_views/sql_migrations/001_initial_migration.sql b/backend/data_distro/api_views/sql_migrations/001_initial_migration.sql deleted file mode 100644 index c765fdbaf..000000000 --- a/backend/data_distro/api_views/sql_migrations/001_initial_migration.sql +++ /dev/null @@ -1,51 +0,0 @@ --- run by data/distro/migrations/0030_add_api_views.py - --- We are self managing our migrations here --- The SQL is called and applied from data_distro/migrations --- This is a point in time of sql run that is comparable with data distro models. The views in the api_views folder represent the current views for the API. --- As the models change later, we don't want --- our migration to reference fields that don't exist yet or already exist. - ---This will be used by the postgrest API - -begin; - --- These need to be if statements because the schema and rolls already exist when you run tests -do -$$ -begin - if not exists (select * from pg_catalog.pg_roles where rolname = 'anon') then - create role anon; - end if; -end -$$ -; - -do -$$ -begin - if not exists (select schema_name from information_schema.schemata where schema_name = 'api') then - create schema api; - - -- Grant access to tables and views - alter default privileges - in schema api - grant select - -- this includes views - on tables - to anon; - - -- Grant access to sequences, if we have them - grant usage on schema api to anon; - grant select, usage on all sequences in schema api to anon; - alter default privileges - in schema api - grant select, usage - on sequences - to anon; - end if; -end -$$ -; - -commit; diff --git a/backend/data_distro/api_views/sql_migrations/002_basic_views.sql b/backend/data_distro/api_views/sql_migrations/002_basic_views.sql deleted file mode 100644 index fb8e31b31..000000000 --- a/backend/data_distro/api_views/sql_migrations/002_basic_views.sql +++ /dev/null @@ -1,147 +0,0 @@ --- run by data/distro/migrations/0030_add_api_views.py --- rerun in data/distro/migrations/0032_update_API.py (needed to recreate view but no new SQL was needed) - --- Current script to recreate views - -begin; - --- auditee -drop view if exists api.vw_auditee; -create view api.vw_auditee as -with auditee as ( - select * - from data_distro_auditee - where data_distro_auditee.is_public=True -), -gen as( - select id as general_id, auditee_id - from data_distro_general -) -select auditee.*, gen.general_id -from auditee -left join gen on gen.auditee_id=auditee.id -; - - --- auditor -drop view if exists api.vw_auditor; -create view api.vw_auditor as -with auditor as ( - select * - from data_distro_auditor - where data_distro_auditor.is_public=True -), -gen as ( - select distinct primary_auditor_id, array_agg(id) as general_id - from data_distro_general - group by primary_auditor_id -), -gen_secondary as ( - select distinct auditor_id as auditor_id, - array_agg(general_id) as secondary_auditor_general_id - from data_distro_general_secondary_auditors - group by auditor_id -) -select auditor.*, gen.general_id, gen_secondary.secondary_auditor_general_id -from auditor -left join gen on gen.primary_auditor_id=auditor.id -left join gen_secondary on gen_secondary.auditor_id=auditor.id -; - - --- federal award --- might want to add more links to related objects as a next step -drop view if exists api.vw_federal_award; -create view api.vw_federal_award as -with fed_award as ( - select * - from data_distro_federalaward - where data_distro_federalaward.is_public=True -), -gen as ( - select distinct federalaward_id as federal_award_id, array_agg(id) as general_id - from data_distro_general_federal_awards - group by federal_award_id -) -select fed_award.*, gen.general_id -from fed_award -left join gen on fed_award.id=gen.federal_award_id -; - - --- CAP text -drop view if exists api.vw_cap_text; -create view api.vw_cap_text as -with captext as ( - select * - from data_distro_captext - where data_distro_captext.is_public=True -), -gen as ( - select distinct captext_id, array_agg(general_id) as general_id - from data_distro_general_cap_text - group by captext_id -) -select captext.*, gen.general_id -from captext -left join gen on captext.id=gen.captext_id -; - - --- note -drop view if exists api.vw_note; -create view api.vw_note as -with note as( - select * - from data_distro_note - where data_distro_note.is_public=True -), -gen as ( - select distinct note_id, array_agg(general_id) as general_id - from data_distro_general_notes - group by note_id -) -select note.*, gen.general_id -from note -left join gen on note.id=gen.note_id -; - - --- revision -drop view if exists api.vw_revision; -create view api.vw_revision as -with revision as( - select * - from data_distro_revision - where data_distro_revision.is_public=True -), -gen as ( - select distinct revision_id, array_agg(id) as general_id - from data_distro_general - group by revision_id -) -select revision.*, gen.general_id -from revision -left join gen on revision.id=gen.revision_id -; - - --- passthrough -drop view if exists api.vw_passthrough; -create view api.vw_passthrough as -with pass as( - select * - from data_distro_passthrough - where data_distro_passthrough.is_public=True -), -gen as ( - select distinct passthrough_id, array_agg(general_id) as general_id - from data_distro_general_passthrough - group by passthrough_id -) -select pass.*, gen.general_id -from pass -left join gen on pass.id=gen.passthrough_id -; - -commit; diff --git a/backend/data_distro/api_views/sql_migrations/003_findings.sql b/backend/data_distro/api_views/sql_migrations/003_findings.sql deleted file mode 100644 index 601e86f2c..000000000 --- a/backend/data_distro/api_views/sql_migrations/003_findings.sql +++ /dev/null @@ -1,50 +0,0 @@ --- run by data/distro/migrations/0030_add_api_views.py --- rerun in data/distro/migrations/0032_update_API.py (needed to recreate view but no new SQL was needed) - -begin; - --- Findings with list of associated findings text records -drop view if exists api.vw_findings; -create view api.vw_findings as -with findings as ( - select * - from data_distro_finding - where data_distro_finding.is_public=True -), -findings_text as ( - select distinct finding_id, - array_agg(findingtext_id) as findings_text_id - from data_distro_finding_findings_text - group by finding_id -), -gen as ( - select finding_id, array_agg(general_id) as general_id - from data_distro_general_findings - group by finding_id -) -select findings.*, findings_text.findings_text_id, gen.general_id -from findings -left join findings_text on findings.id=findings_text.finding_id -left join gen on findings.id=gen.finding_id -; - - --- Findings text -drop view if exists api.vw_findings_text; -create view api.vw_findings_text as -with findings_text as ( - select * - from data_distro_findingtext - where data_distro_findingtext.is_public=True -), -gen as ( - select findingtext_id, array_agg(general_id) as general_id - from data_distro_general_findings_text - group by findingtext_id -) -select findings_text.*, gen.general_id -from findings_text -left join gen on gen.findingtext_id=findings_text.id -; - -commit; diff --git a/backend/data_distro/api_views/sql_migrations/004_general.sql b/backend/data_distro/api_views/sql_migrations/004_general.sql deleted file mode 100644 index efa2a7f85..000000000 --- a/backend/data_distro/api_views/sql_migrations/004_general.sql +++ /dev/null @@ -1,72 +0,0 @@ --- run by data/distro/migrations/0030_add_api_views.py - --- Takes the General model and adds Auditor and Auditee information for easy searching - -begin; - -drop view if exists api.vw_general; -create view api.vw_general as -with gen as ( - select * - from data_distro_general - where data_distro_general.is_public=True -), -auditee as ( - select auditee_name, id - from data_distro_auditee -), -auditor as ( - select cpa_firm_name, id - from data_distro_auditor -), -secondary_auditor as ( - select distinct general_id, array_agg(auditor_id) as secondary_auditor_id - from data_distro_general_secondary_auditors - group by general_id -), -federal_award as ( - select distinct general_id, array_agg(federalaward_id) as federal_award_id - from data_distro_general_federal_awards - group by general_id -), -findings as ( - select distinct general_id, array_agg(finding_id) as finding_id - from data_distro_general_findings - group by general_id -), -findings_text as ( - select general_id, array_agg(findingtext_id) as finding_text_id - from data_distro_general_findings_text - group by general_id -), -notes as ( - select distinct general_id, array_agg(note_id) as note_id - from data_distro_general_notes - group by general_id -), -cap_text as ( - select distinct general_id, array_agg(captext_id) as cap_text_id - from data_distro_general_cap_text - group by general_id -), -passthrough as ( - select distinct general_id, array_agg(passthrough_id) as passthrough_id - from data_distro_general_passthrough - group by general_id -) -select gen.*, auditee.auditee_name, auditor.cpa_firm_name, secondary_auditor.secondary_auditor_id, - federal_award.federal_award_id, findings.finding_id, findings_text.finding_text_id, notes.note_id, - cap_text.cap_text_id, passthrough.passthrough_id -from gen -left join auditee on auditee.id=gen.auditee_id -left join auditor on auditor.id=gen.primary_auditor_id -left join secondary_auditor on secondary_auditor.general_id=gen.id -left join federal_award on federal_award.general_id=gen.id -left join findings on findings.general_id=gen.id -left join findings_text on findings_text.general_id=gen.id -left join notes on notes.general_id=gen.id -left join cap_text on cap_text.general_id=gen.id -left join passthrough on passthrough.general_id=gen.id -; - -commit; diff --git a/backend/data_distro/api_views/sql_migrations/005_docs_for_views.sql b/backend/data_distro/api_views/sql_migrations/005_docs_for_views.sql deleted file mode 100644 index 7dc931676..000000000 --- a/backend/data_distro/api_views/sql_migrations/005_docs_for_views.sql +++ /dev/null @@ -1,16 +0,0 @@ --- run by 0033 -begin; - --- adding these as strings since the migrations are a point in time -comment on view api.vw_auditee is 'Information about the entity undergoing the audit'; -comment on view api.vw_auditor is 'Information about the Auditing CPA firm conducting the audit'; -comment on view api.vw_cap_text is 'Corrective action plan text'; -comment on view api.vw_federal_award is 'Information about the federal award section of the form'; -comment on view api.vw_findings is 'A finding from the audit'; -comment on view api.vw_findings_text is 'Specific findings details'; -comment on view api.vw_general is 'Data from the General Info and Audit Info forms with links to other parts of the form'; -comment on view api.vw_note is 'Note to Schedule of Expenditures of Federal Awards (SEFA)'; -comment on view api.vw_passthrough is 'The pass-through entity information, when it is not a direct federal award'; -comment on view api.vw_revision is 'Documents what was revised on the associated form from the previous version'; - -commit; diff --git a/backend/data_distro/api_views/sql_migrations/006_dbkey_for_auditee.sql b/backend/data_distro/api_views/sql_migrations/006_dbkey_for_auditee.sql deleted file mode 100644 index cf1429ef4..000000000 --- a/backend/data_distro/api_views/sql_migrations/006_dbkey_for_auditee.sql +++ /dev/null @@ -1,23 +0,0 @@ --- Adding dbkey auditee -drop view if exists api.vw_auditee; -create view api.vw_auditee as -with auditee as ( - select * - from data_distro_auditee - where data_distro_auditee.is_public=True -), -gen as ( - select distinct auditee_id as auditee_id, array_agg(id) as general_id - from data_distro_general - group by auditee_id -), -db as( - select distinct auditee_id, array_agg(dbkey) as dbkey - from data_distro_general - group by auditee_id -) -select auditee.*, gen.general_id, db.dbkey -from auditee -left join gen on gen.auditee_id=auditee.id -left join db on db.auditee_id=auditee.id -; \ No newline at end of file diff --git a/backend/data_distro/api_views/sql_migrations/007_add_postgrest_notify.sql b/backend/data_distro/api_views/sql_migrations/007_add_postgrest_notify.sql deleted file mode 100644 index 7f01d21ae..000000000 --- a/backend/data_distro/api_views/sql_migrations/007_add_postgrest_notify.sql +++ /dev/null @@ -1,3 +0,0 @@ --- This makes the views in the schema available to the postgrest API -notify pgrst, - 'reload schema'; \ No newline at end of file diff --git a/backend/data_distro/apps.py b/backend/data_distro/apps.py deleted file mode 100644 index b5dcf292c..000000000 --- a/backend/data_distro/apps.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.apps import AppConfig - - -class DataDistroConfig(AppConfig): - default_auto_field = "django.db.models.BigAutoField" - name = "data_distro" diff --git a/backend/data_distro/data_to_load/run_logs/.keep b/backend/data_distro/data_to_load/run_logs/.keep deleted file mode 100644 index e69de29bb..000000000 diff --git a/backend/data_distro/data_to_load/test_data/agency.txt b/backend/data_distro/data_to_load/test_data/agency.txt deleted file mode 100644 index eb52469ca..000000000 --- a/backend/data_distro/data_to_load/test_data/agency.txt +++ /dev/null @@ -1,11 +0,0 @@ -AUDITYEAR|DBKEY|EIN|AGENCY -1997|100000|730776899|90 -1998|100000|730776899|04 -1999|100000|008675309|78 -2000|100000|730776899|01 -2001|100000|730776899|00 -2014|100000|730776899|07 -2003|100000|730776899|00 -2014|100000|008675309|02 -2014|100000|008675309|77 -2014|100000|008675309|10 \ No newline at end of file diff --git a/backend/data_distro/data_to_load/test_data/captext_formatted.txt b/backend/data_distro/data_to_load/test_data/captext_formatted.txt deleted file mode 100644 index cbfecdcfe..000000000 --- a/backend/data_distro/data_to_load/test_data/captext_formatted.txt +++ /dev/null @@ -1,9 +0,0 @@ -SEQ_NUMBER|DBKEY|AUDITYEAR|FINDINGREFNUMS|TEXT|CHARTSTABLES -"21035"|"100001"|"1997"|"2021-002"|" -In Finding 2021-002, a condition was noted that the Organization did not follow its policy governing procurement requirements for the purchase of goods or services. -Management recognizes the importance of complying with grant guidelines procurement.In response to Finding 2021-002, Management will review the procurement policy and will educate staff to ensure the policy is being followed.This review will be performed by the Chief Executive Officer and completed by April 30, 2021. -"|"N" -"21143"|"100001"|"1997"|"2021-001"|" In Finding 2021-001, a condition was noted in which the Organization is not to currently ensuring purchased services expected to equal or exceed $25,000 are not purchased from parties listed on the government-wide System for Award Management (SAM) in accordance with the OMB guidelines. - -Management recognizes the importance of complying with grant guidelines regarding procurement and suspension and debarment.In response to Finding 2021-001, procedures will be established to ensure that purchases of goods or services under non-procurement transactions equal to or exceeding $25,000 will not include ineligible parties as listed on SAM.This review will be performed by the Chief Executive Officer and completed by April 30, 2021. -"|"N" \ No newline at end of file diff --git a/backend/data_distro/data_to_load/test_data/cfda.txt b/backend/data_distro/data_to_load/test_data/cfda.txt deleted file mode 100644 index fe772339f..000000000 --- a/backend/data_distro/data_to_load/test_data/cfda.txt +++ /dev/null @@ -1,14 +0,0 @@ -AUDITYEAR|DBKEY|EIN|CFDA|AWARDIDENTIFICATION|RD|FEDERALPROGRAMNAME|AMOUNT|CLUSTERNAME|STATECLUSTERNAME|PROGRAMTOTAL|CLUSTERTOTAL|DIRECT|PASSTHROUGHAWARD|PASSTHROUGHAMOUNT|MAJORPROGRAM|TYPEREPORT_MP|TYPEREQUIREMENT|QCOSTS2|FINDINGS|FINDINGREFNUMS|ARRA|LOANS|LOANBALANCE|FINDINGSCOUNT|ELECAUDITSID|OTHERCLUSTERNAME|CFDAPROGRAMNAME -2009|100003|730779703|93.568||N|WEATHERIZATION DHS LIHEAP|27366|||||N|||N||O|||N/A|||||23516746|| -2009|100003|730779703|10.558||N|CHILD AND ADULT CARE FOOD PROGRAM|274320|||||N|||N||O|||N/A|||||23516746|| -2009|100003|730779703|14.231||N|EMERGENCY SHELTER GRANT|222874|||||N|||N||O|||N/A|||||23516748|| -1997|100000|730776899|15.999||Y|TEST GRANT|27367|||||N|||N||O|||N/A|||||23516749|| -1998|100000|730776899|15.990||Y|TEST GRANT 2|27367|||||N|||N||O|||N/A|||||23516749|| -1999|100000|008675309|13.500||Y|TEST GRANT 3|27367|||||N|||N||O|||N/A|||||23516749|| -2000|100000|730776899|13.500||Y|TEST GRANT 4|27367|||||N|||N||O|||N/A|||||23516749|| -2001|100000|730776899|13.500||Y|TEST GRANT 5|27367|||||N|||N||O|||N/A|||||23516749|| -2014|100000|730776899|13.500||Y|TEST GRANT 6|27367|||||N|||N||O|||N/A|||||14012297|| -2003|100000|730776899|13.500||Y|PARK PROGRAM|27367|||||N|||N||O|||N/A|||||23516749|| -2014|100000|008675309|13.500||Y|TEST GRANT 6|27367|||||N|||N||O|||N/A|||||14012304|| -2014|100000|008675309|13.500||Y|TEST GRANT 6.5|27367|||||N|||N||O|||N/A|||||14012298|| -2009|100003|730779703|14.231||N|TEST GRANT 7|222874|||||N|||N||O|||N/A|||||23516745|| \ No newline at end of file diff --git a/backend/data_distro/data_to_load/test_data/cpas.txt b/backend/data_distro/data_to_load/test_data/cpas.txt deleted file mode 100644 index 98986968e..000000000 --- a/backend/data_distro/data_to_load/test_data/cpas.txt +++ /dev/null @@ -1,3 +0,0 @@ -DBKEY|AUDITYEAR|CPAFIRMNAME|CPAEIN|CPASTREET1|CPACITY|CPASTATE|CPAZIPCODE|CPACONTACT|CPATITLE|CPAPHONE|CPAFAX|CPAEMAIL -100000|2012|JOHN FLUSCHE, CPA||6851 SOUTH CANTON AVENUE|TULSA|OK|741363405|JOHN FLUSCHE|CPA|9184888753|9184889256|CPA@OKLAHOMA.NET -100000|2014|Paul Bunyan, CPA|431026561|6851 SOUTH CANTON|TULSA|OK|74136|JOHN FLUSCHE|CPA|9184888753|9184889256|CPA@OKLAHOMA.NET \ No newline at end of file diff --git a/backend/data_distro/data_to_load/test_data/eins.txt b/backend/data_distro/data_to_load/test_data/eins.txt deleted file mode 100644 index 75f848c8d..000000000 --- a/backend/data_distro/data_to_load/test_data/eins.txt +++ /dev/null @@ -1,8 +0,0 @@ -AUDITYEAR|DBKEY|EIN|EINSEQNUM -2011|100000|264831572|1 -2012|100000|264831572|1 -2018|100000|264831572| -2019|100000|264831572| -2014|100000|008675309| -2014|100000|008675310|1 -2014|100000|008675311|2 \ No newline at end of file diff --git a/backend/data_distro/data_to_load/test_data/findings.txt b/backend/data_distro/data_to_load/test_data/findings.txt deleted file mode 100644 index 05a1bb3ea..000000000 --- a/backend/data_distro/data_to_load/test_data/findings.txt +++ /dev/null @@ -1,8 +0,0 @@ -DBKEY|AUDITYEAR|ELECAUDITSID|ELECAUDITFINDINGSID|FINDINGSREFNUMS|TYPEREQUIREMENT|MODIFIEDOPINION|OTHERNONCOMPLIANCE|MATERIALWEAKNESS|SIGNIFICANTDEFICIENCY|OTHERFINDINGS|QCOSTS|REPEATFINDING|PRIORFINDINGREFNUMS -100000|2014|14012297|95|2013-023|M|N|Y|N|Y|N|N|| -|2013|14012297|96|2013-021|M|N|Y|N|Y|N|N|| -100004|2019|14012297|97|2013-023|M|N|Y|N|Y|N|N||line error| -|2013|14012304|98|2013-025|M|N|Y|N|Y|N|N|| -100000|2014|14012304|99|2021-002|B|N|Y|N|Y|N|N|| -100003|2009|23516745|99|2013-028|B|N|Y|N|Y|N|Y|| -100000|2014|14012297|97|2013-023|M|N|Y|N|Y|N|N|| \ No newline at end of file diff --git a/backend/data_distro/data_to_load/test_data/findingstext_formatted.txt b/backend/data_distro/data_to_load/test_data/findingstext_formatted.txt deleted file mode 100644 index d20cbd9b8..000000000 --- a/backend/data_distro/data_to_load/test_data/findingstext_formatted.txt +++ /dev/null @@ -1,289 +0,0 @@ -SEQ_NUMBER|DBKEY|AUDITYEAR|FINDINGREFNUMS|TEXT|CHARTSTABLES -"1"|"100000"|"2014"|"2021-002"|"2021-002 – Filing of Single Audit Report Federal Program – HUD insured mortgage under Section 213 of the National Housing Act -CFDA# – 14.126 -Significant Deficiency -Category of Finding - Other -Criteria - Pursuant to 2 CFR section 200.512(a), the reporting package shall be submitted within -the earlier of 30 days after receipt of the auditor’s report(s), or nine months after the end of -the audit period. -Condition - The Cooperative did not submit the Single Audit Reporting Package for the period -ended March 31, 2020 within nine months after the end of the audit period (December 31, 2020). -Cause - The Cooperative submitted a Single Audit Report prior to the required deadline, but it -was rejected due to the omission of the Corrective Action Plan, a component of the report -required by the OMB Uniform Guidance. The Corrective Action Plan was submitted in January -2021, and final approval of the Single Audit was received, but it was after the December 31, -2020 deadline. -Effect - Failure to submit the required Single Audit Reporting Package timely automatically results -in the Cooperative not qualifying for low-risk auditee status for the subsequent year’s single audit. -Recommendation - We recommend the Cooperative develop, document, and implement -policies and procedures for timely submission of the Single Audit Reporting Package. -Auditee’s comment - The Board of Directors will designate an individual to document financial -statement preparation processes to ensure timely submission of the Single Audit Reporting -Package. -Status - Resolved -Auditor’s non-compliance code - Z -Other -Responsible party for correction action - Craig Brinkman, CFO of REE Development (Management -Agent)"|"N" -"2"|"100000"|"2014"|"2021-002"|"Finding reference number:2021-001 -CFDA title and number (Federal award identification number and year): Capital Advance, CFDA 14.157 and 2007) - -Auditor non-compliance code:B - Failure to make required residual receipts deposit - -Finding resolution status:Resolved - -Universe population size:The universe population is not applicable to the finding. - -Sample size information:The sample size information is not applicable to the finding. - -Noncompliance information:See statement of condition 2021-001 for noncompliance information. - -Statistically valid sample:N/A - -Name of Federal agency:U.S. Department of Housing and Urban Development - -Pass-through entity:N/A - -Questioned costs:$8,402 - -Statement of Condition 2021-001 (CFDA 14.157):The Corporation did not make the required residual receipts deposit computed at March 31, 2020, in the amount of $8,402 within 60 days of fiscal year end. - -Criteria:Pursuant to paragraph 5(c) of the Regulatory Agreement, the residual receipts deposit due to the residual receipts reserve must be deposited within 60 days of fiscal year end. - -Effect:The Corporation was not in compliance with the Regulatory Agreement. - -Cause:The Corporation did not make the required deposit within 60 days of fiscal year end. - -Recommendation:Management should implement a system to ensure the required deposit to the residual receipts is made within 60 days of fiscal year end. - -Completion date:July 15, 2020 - -Management's response:Agree. Management made the required residual receipts deposit on July 15, 2020."|"N" -"2"|"10000"|"2014"|"2021-001"|"SECTION II – FINANCIAL STATEMENT FINDINGS None Reported. -SECTION III – FEDERAL AWARD FINDINGS AND QUESTIONED COSTS -Finding 2021-001: -Information on the Federal Program: CFDA 14.181 – Section 811 Capital Advance. -Compliance Requirements: All disbursements from the reserve must be approved by HUD. -Type of Finding: Noncompliance (Special Tests and Provisions). -Criteria: 24 CFR 891.405(d) Funds may be drawn from the reserve and used only in accordance with HUD guidelines and with the approval of, or as directed by, HUD. -Condition: For the year ending March 31, 2021, we reviewed the withdrawals from the -replacement reserve and noted one withdrawal exceeded the approved amount. -Context: Of the $18,110 withdrawn from the account during the year ended March 31, 2021, $242.58 was not approved. Subsequent to the audit, the Organization deposited $242.58 to the reserve account. -Effect: Organization used reserve funds that were intended for specific purposes risking availability at time of need. -Cause: No cause could be determined. -Recommendation: We recommend management review and revise controls over replacement reserves to ensure required withdrawals are approved. -Responsible Official's Response and Corrective Action Planned: The Organization agrees with the finding and recommendation, as it was human error. On June 14, 2021 a deposit was made into the replacement reserve account for $242.58. -Planned Implementation Date of Corrective Action: June 14, 2021. -Person Responsible for Corrective Action: Melanie Moe, Managing Agent."|"N" -"25140"|"194599"|"2021"|"2021-001"|"SECTION II – FINANCIAL STATEMENT FINDINGS None Reported. -SECTION III – FEDERAL AWARD FINDINGS AND QUESTIONED COSTS -Finding 2021-001: -Information on the Federal Program: CFDA 14.181 – Supportive Housing for Persons with Disabilities. -Compliance Requirements: PRAC project funds must be used only for expenses that are reasonable and necessary to the operation of the project as provided for in the Regulatory Agreement between HUD and the project owner (24 CFR section 891.400(e)). -Criteria: 24 CFR 891.400(e) Project funds must be used for the operation of the project. -Condition: For the year ending March 31, 2021, we reviewed project fund expenditures and found one instance where the organization’s records were unable to support the use of the project funds. -Context: We tested twenty-six (26) disbursements totaling $113,938 from a population of $371,091 and found one instance of noncompliance in the amount of $1,989. -Effect: Funds that were to be used for the operations of the HUD property may not be available at the time of need. -Cause: No cause could be determined. -Recommendation: We recommend management review and revise controls over credit card transactions to ensure disbursements are allowed for the operation of the project. -Responsible Official's Response and Corrective Action Planned: The Organization agrees with the finding and recommendations. Management closed the credit card account and has established a purchasing card as of April 27, 2021 (purchasing cards act like a debit card whereas the funds must be available at the time of purchase). Management has full access and control of the card. -Planned Implementation Date of Corrective Action: April 27, 2021. -Person Responsible for Corrective Action: Melanie Moe, Managing Agent."|"N" -"3"|"100000"|"2014"|"2021-001"|"Finding 2021-001 -Criteria: -Generally, a system of internal control contemplates segregation of duties such that no individual has responsibility to execute a transaction, have physical access to the related assets, and have responsibility or authority to record the transactions. - -Condition: -Due to the limited size of the Cooperative’s business staff, the Cooperative has limited segregation of duties. - -Questioned Costs: -None. - -Context: -The Cooperative has informed us that the small size of its business office staff precludes proper segregation of duties at this time. - -Effect: -The Cooperative is unable to maintain segregation of incompatible duties. - -Cause: -Limited number of staff in the business office. - -Repeat Finding: -The finding was reported in the prior year as finding 2020-001. - -Recommendation: -We recommend that the Cooperative continue to segregate incompatible duties as best it can within the limits of what the Cooperative considers to be cost beneficial. - -Current Status: -Unresolved, the Cooperative still has a limited number of staff in the business office. - -Action Taken: -The Cooperative reviews and makes improvements to its internal controls on an ongoing basis, and attempts to maximize the segregation of duties in all areas within the limits of the staff available. - -Views of Responsible Officials and Planned Corrective Actions: -The Cooperative agrees with this finding and will adhere to the corrective action plan. -"|"N" -"25156"|"100000"|"2021"|"2021-002"|"Finding 2021-002 -Criteria: -Generally, a system of internal control includes the ability to understand and prepare the Cooperative’s financial statements and related disclosures in accordance with accounting principles generally accepted in the United States of America (GAAP). - -Condition: -Due to the limited size of the Cooperative’s business staff and related resources available, the Cooperative has utilized the auditor to post adjusting journal entries and prepare the financial statements and related disclosures in accordance with accounting principles generally accepted in the United States of America. - -Questioned Costs: -None. - -Context: -The Cooperative has informed us that the small size and qualifications of its business office staff precludes the Cooperative from posting adjusting journal entries and preparing its own financial statements. - -Effect: -The Cooperative is unable to prepare GAAP based financial statements. - -Cause: -Limited number of staff and hours available preclude the Cooperative from preparing the GAAP based financial statements. The Cooperative will continue to review auditor prepared financial statements. - -Repeat Finding: -This finding was reported in the prior year as finding 2020-002. - -Recommendation: -We recommend that the Cooperative continue to review the auditor prepared adjusting journal entries and financial statements with the intention of understanding and acceptance of responsibility for reporting under generally accepted accounting principles. - -Current Status: -Unresolved, the number of staff and qualifications of staff have not changed. The Cooperative is continuing to review the auditor prepared adjusting journal entries and financial statements. - -Action Taken: -The Cooperative will continue to review the auditor prepared adjusting journal entries and financial statements with the intention of understanding and acceptance of responsibility for reporting under generally accepted accounting principles. - -Views of Responsible Officials and Planned Corrective Actions: -The Cooperative agrees with this finding and will adhere to the corrective action plan. -"|"N" -"25245"|"100000"|"2021"|"2021-001"|"Supportive Housing for Elderly Persons, CFDA #14.157 Condition:It was determined during the year ended March 31, 2021 that due to an incorrect income calculation, a current tenant’s income exceeded HUD income requirements for the Supportive Housing for Elderly Persons, CFDA #14.157. -Criteria:In order to qualify for residency, a tenant’s income must not exceed HUD regulated income limits. -Cause:The tenant’s income was incorrectly calculated at the time of move-in. -Effect:The Project was out of compliance with the requirement of Supportive Housing for Elderly Persons, CFDA #14.157 -Recommendation: It is recommended that procedures be put into place to ensure that tenant income is calculated in accordance with HUD regulations at the time of move in. -"|"N" -"25278"|"191128"|"2021"|"2021-001"|"S3800-010 – Finding Reference Number: 2021-001 - -Program Information -S3800-011: Federal Program -Mortgage Insurance for the Purchase or Refinancing of Existing Multifamily Housing Projects Section 207/223f (CFDA # 14.155) -Federal Agency: U.S. Department of Housing and Urban Development -Pass-through Entity: None -Type of Compliance Finding: N - Special Tests and Provisions - -S3800-015: Type of Finding -Federal Awards and Financial Reporting Finding - -S3800-016: Finding Resolution Status -In-process - -S3800-017: Information on Universe Population Size -N/A - -S3800-018: Sample Size Information -N/A - -S3800-019: Repeat Finding Number -N/A - -S3800-020: Criteria -The regulatory agreement requires that the Organization’s books and records are maintained in accordance with GAAP. - -S3800-030: Statement of Condition -During our audit of the Organization’s fiscal year ended March 31, 2021 federal award program, we noted that management was not reconciling the aged tenant accounts receivable subsidiary ledger to the general ledger. Also, escrow accounts including reserve for replacement were not reconciled to lender statement. The liabilities were also not completely recorded at the year end. - -S3800-032: Cause -The Organization books are maintained in QuickBooks, whereas tenant rental transactions are recorded at a detail level in a different software and the detail information is not reconciled to the general ledger. Management was not reconciling the financial statements to source documents. - -S3800-033: Effect or Potential Effect -The Organization is not in compliance with requirement to maintain books and records according to GAAP. - -S3800-035: Auditor Non-Compliance Code -S – Internal Control Deficiencies - -S3800-040: Questioned Costs -None - -S3800-045: Reporting Views of Responsible Officials -Management agreed with auditor’s finding. - -S3800-050: Context -Management was not reconciling the financial statements to source documents including reports from the software used to process tenant rental activities. - -S3800-080: Recommendation -As part of the month-end closing process, management should ensure that the accounts reconcile to source documents including reports from the software used to process tenant rental activities. - -S3800-090: Auditor’s Summary of the Auditee’s Comments on the Findings and Recommendations -Concur - -S3800-130: Response Indicator -Agree - -S3800-140: Completion Date -September 30, 2021 - -S3800-150:Response -See Corrective Action Plan -"|"N" -"25279"|"100000"|"2021"|"2021-002"|"S3800-010 – Finding Reference Number: 2021-002 - -Program Information -S3800-011: Federal Program -Mortgage Insurance for the Purchase or Refinancing of Existing Multifamily Housing Projects Section 207/223f (CFDA # 14.155) -Federal Agency: U.S. Department of Housing and Urban Development -Pass-through Entity: None -Type of Compliance Finding: N – Special Tests and Provisions - -S3800-015: Type of Finding -Federal Awards Finding - -S3800-016: Finding Resolution Status -In-progress - -S3800-017: Information on Universe Population Size -N/A - -S3800-018: Sample Size Information -N/A - -S3800-019: Repeat Finding Number -2020-001 - -S3800-020: Criteria -The regulatory agreement allow the Organization to pay a bookkeeping fee that was approved by HUD on HUD Form 9839-B, Project Owner’s & Management Agent’s Certification for Multifamily Housing Projects for Identity-of-Interest or Independent Management Agents (HUD Form 9839-B). - -S3800-030: Statement of Condition -During our audit of the Organization’s fiscal year ended March 31, 2021 federal award program, we noted that the Organization was charged the bookkeeping fee of $150 per month by the management company. HUD Form 9839-B allowed $100 per month as the bookkeeping fee. - -S3800-032: Cause -The Organization was inadvertently charged a bookkeeping fee of $150 per month instead of $100 per month. - -S3800-033: Effect or Potential Effect -The Organization was not in compliance with the regulatory agreement requirement related to bookkeeping fees allowed to be charged by the management company. -S3800-035: Auditor Non-Compliance Code -Z – Other - -S3800-040: Questioned Costs -$600 - -S3800-045: Reporting Views of Responsible Officials -The Organization agreed with auditors’ finding. - -S3800-050: Context -The Organization paid $150 per month for bookkeeping services during the year ended March 31, 2021 instead of $100 allowed by HUD Form 9839-B. - -S3800-080: Recommendation -The management company should reimburse the Organization for $3,000, the cumulative overpaid bookkeeping fees as of March 31, 2021. The Organization should pay no more than the approved bookkeeping fee going forward. - -S3800-090: Auditor’s Summary of the Auditee’s Comments on the Findings and Recommendations -Concur - -S3800-130: Response Indicator -Agree - -S3800-140: Completion Date -September 30, 2021 - -S3800-150:Response -See Corrective Action Plan -"|"N" \ No newline at end of file diff --git a/backend/data_distro/data_to_load/test_data/gen.txt b/backend/data_distro/data_to_load/test_data/gen.txt deleted file mode 100644 index 229740cca..000000000 --- a/backend/data_distro/data_to_load/test_data/gen.txt +++ /dev/null @@ -1,26 +0,0 @@ -AUDITYEAR|DBKEY|TYPEOFENTITY|FYENDDATE|AUDITTYPE|PERIODCOVERED|NUMBERMONTHS|EIN|MULTIPLEEINS|EINSUBCODE|DUNS|MULTIPLEDUNS|AUDITEENAME|STREET1|STREET2|CITY|STATE|ZIPCODE|AUDITEECONTACT|AUDITEETITLE|AUDITEEPHONE|AUDITEEFAX|AUDITEEEMAIL|AUDITEEDATESIGNED|AUDITEENAMETITLE|CPAFIRMNAME|CPASTREET1|CPASTREET2|CPACITY|CPASTATE|CPAZIPCODE|CPACONTACT|CPATITLE|CPAPHONE|CPAFAX|CPAEMAIL|CPADATESIGNED|COG_OVER|COGAGENCY|OVERSIGHTAGENCY|TYPEREPORT_FS|SP_FRAMEWORK|SP_FRAMEWORK_REQUIRED|TYPEREPORT_SP_FRAMEWORK|GOINGCONCERN|REPORTABLECONDITION|MATERIALWEAKNESS|MATERIALNONCOMPLIANCE|TYPEREPORT_MP|DUP_REPORTS|DOLLARTHRESHOLD|LOWRISK|REPORTABLECONDITION_MP|MATERIALWEAKNESS_MP|QCOSTS|CYFINDINGS|PYSCHEDULE|TOTFEDEXPEND|DATEFIREWALL|PREVIOUSDATEFIREWALL|REPORTREQUIRED|MULTIPLE_CPAS|AUDITOR_EIN|FACACCEPTEDDATE|CPAFOREIGN|CPACOUNTRY|ENTITY_TYPE|UEI|MULTIPLEUEIS -1997|100000||30-SEP-97|S|A||730776899|N|000|||DEEP FORK COMMUNITY ACTION FOUNDATION INC|PO BOX 670||OKMULGEE|OK|74447|JEFF SCHUMAN|EXECUTIVE DIRECTOR|9187562826|||02-MAR-98|JEFF SCHUMAN EXECUTIVE DIRECTOR|SAUNDERS & ASSOCIATES|630 E 17TH||ADA|OK|74820|G B SAUNDERS |MANAGING PARTNER|5804365330|5803322272||17-FEB-98|O|83|83|Q||||N|Y|Y|Y|Q||300000|N|Y|Y|N|||2195498|15-MAY-98||Y|||05-MAR-98||||| -1998|100000||30-SEP-98|S|A||730776899|N|000|||DEEP FORK COMMUNITY ACTION FOUNDATION INC|PO BOX 670|313 W 8TH |OKMULGEE|OK|74447|DIANE DUNSON|FISCAL OFFICERR|9187562826|9187566829||19-MAR-99|JEFF SCHUMAN/EXECUTIVE DIRE|SAUNDERS & ASSOCIATES.|PO BOX 1406||ADA|OK|748211406|G B SAUNDERS|MANAGING PARTNER|5803328548|5803322272||15-MAR-99|O|10|10|Q||||N|N||N|Q||300000|N|Y|Y|N|||2443678|17-JUN-99||Y|||24-MAR-99||||| -1999|100000||30-SEP-99|S|A||730776899|N|000|||DEEP FORK COMMUNITY ACTION FOUNDATION INC|PO BOX 670|313 W 8TH |OKMULGEE|OK|74447|DIANNE DUNSON|FISCAL OFFICER|9187562826|9187566829||31-JAN-00|JEFF SCHUMAN EXECUTIVE DIRECTOR\|LARRY L WILLSEY CPA PC|717 S BROADWAY||GEARY|OK|73040|LARRY L WILLSEY|PRESIDENT & CEO|4058842779|4058842779||20-JAN-00|O|10|10|U||||N|N||N|U||300000|Y|N|N|N|||2715892|15-FEB-00||N|||03-FEB-00||||| -2000|100000||30-SEP-00|S|A||730776899|N|000|||DEEP FORK COMMUNITY ACTION FOUNDATION INC|PO BOX 670||OKMULGEE|OK|74447|DIANNE DUNSON|FISCAL OFFICER|9187562826|9187566829||10-JAN-01|JEFF SCHUMAN/ EXECUTIVE DIRECTOR|LARRY L WILLSEY CPA PC|717 S BROADWAY||GEARY|OK|73040|LARRY L. WILLSEY|PRESIDENT & CEO|4058842779|||05-JAN-01|O|10|10|U||||N|N||N|U||300000|Y|N|N|N|||2875293|28-FEB-01||N|||19-JAN-01||||| -2001|100000|908|30-SEP-01|S|A||730776899|N|000|||DEEP FORK COMMUNITY ACTION FOUNDATION INC|P.O. BOX 670||OKMULGEE|OK|74447|DIANNE DUNSON|FISCAL OFFICER|9187562826|9187566829||11-JAN-02|JEFF SCHUMAN EXECUTIVE DIRECTOR|LARRY L. WILLSEY, CPA, PC|717 S. BROADWAY||GEARY|OK|73040|LARRY L.WILLSEY |PRESIDENT & CEO|4058842776||WILLSEYL@PLDI.NET|09-JAN-02|O||10|U||||N|N||N|U|N|300000|Y|N||N|N|N|2875169|12-MAR-02|||||17-JAN-02||||| -2002|100000|908|30-SEP-02|S|A||730776899|N|000|||DEEP FORK COMMUNITY ACTION FOUNDATION, INC.|P.O. BOX 670||OKMULGEE|OK|74447|DIANNE DUNSON|FISCAL OFFICER|9187562826|9187566829||08-JAN-03|JEFF SCHUMAN EXEC DIR|LARRY L. WILLSEY, CPA, PC|717 S. BROADWAY||GEARY|OK|73040|LARRY L. WILLSEY|PRES & CEO|4058842779||WILLSEYL@PLDI.NET|04-JAN-03|O||10|U||||N|N||N|U|N|300000|Y|N|N|N|N|N|3378800|30-JAN-03|||||13-JAN-03||||| -2003|100000|908|30-SEP-03|S|A||730776899|N|000|||DEEP FORK COMMUNITY ACTION FOUNDATION, INC.|P.O. BOX 670||OKMULGEE|OK|74447|DIANNE DUNSON|FISCAL OFFICER|9187562826|9187566829||30-DEC-03|JEFFERY SCHUMAN/EXECUTIVE DIRECTOR|LARRY L. WILLSEY, CPA, PC|717 S. BROADWAY||GEARY|OK|73040|LARRY WILLSEY|PRES & CEO|4058842779|||19-DEC-03|O||10|U||||N|N||N|U|N|300000|Y|N|N|N|N|N|3652636|12-FEB-04|||||31-DEC-03||||| -2004|100000|908|30-SEP-04|S|A||730776899|N|000|||DEEP FORK COMMUNITY ACTION FOUNDATION, INC.|P.O. BOX 670||OKMULGEE|OK|74447|LINDA BESHEAR|CHIEF FINANCIAL OFFICER|9187562826|9187566829||23-MAR-05|JEFF SCHUMAN EXECUTIVE DIRECTOR|LARRY L WILLSEY, CPA, PC|717 S BROADWAY||GEARY|OK|73040|LARRY WILLSEY|PRES & CEO|4058842779|4058842779|WILLSEYL@PLDI.NET|15-MAR-05|O||10|U||||N|Y|Y|Y|U|N|300000|Y|N|N|N|N|N|4002250|15-FEB-06|||||28-MAR-05||||| -2005|100000|908|30-SEP-05|S|A||730776899|N|000|||DEEP FORK COMMUNITY ACTION FOUNDATION, INC.|P.O. BOX 670||OKMULGEE|OK|74447|LINDA BESHEAR|CHIEF FINANCIAL OFFICER|9187562826|9187566829||08-FEB-06|JEFF SCHUMAN EXECUTIVE DIRECTOR|LARRY L. WILLSEY, CPA, PC|717 S. BROADWAY||GEARY|OK|73040|LARRY WILLSEY|PRES & CEO|4058842779||WILLSEYL@PLDI.NET|25-JAN-06|O||10|U||||N|Y|N|N|U|N|300000|N|N|N|N|N|N|4021680|11-JUL-07|||||13-FEB-06||||| -2006|100000|908|30-SEP-06|S|A||730776899|N|000|||DEEP FORK COMMUNITY ACTION FOUNDATION, INC.|P.O. BOX 670||OKMULGEE|OK|74447|LINDA BESHEAR|CHIEF FINANCIAL OFFICER|9187562826|9187566829||15-FEB-07|JEFF SCHUMAN EXECUTIVE DIRECTOR|LARRY L. WILLSEY, CPA, PC|717 S. BROADWAY||GEARY|OK|73040|LARRY WILLSEY|PRES & CEO|4058842779||WILLSEYL@PLDI.NET|09-FEB-07|O||10|U||||N|Y|Y|N|U|N|300000|N|N|N|N|N|N|3783845|07-JAN-08|||||20-FEB-07||||| -2008|100000|908|30-SEP-08|S|A||730776899|N||136240483|N|DEEP FORK COMMUNITY ACTION FOUNDATION, INC.|PO BOX 670||OKMULGEE|OK|74447|JEFF SCHUMAN|EXECUTIVE DIRECTOR|9187562826|9187566829|DEEPFORKCA@AOL.COM|13-MAR-09|JEFF SCHUMAN-EXECUTIVE DIRECTOR|SAUNDERS & ASSOCIATES, PLLC|PO BOX 1406||ADA|OK|748211406|G. B. SAUNDERS|MANAGING MEMBER|5803328548|5803322272|SNDRSGRP@YAHOO.COM|10-MAR-09|O||97|U||||N|N||N|U|N|300000|N|N|N|N|N|N|3882054|12-JUN-09|||N||13-MAR-09||||| -2009|100000|908|30-SEP-09|S|A||730776899|N||119737203|N|DEEP FORK COMMUNITY ACTION FOUNDATION, INC.|PO BOX 670||OKMULGEE|OK|74447|JEFF SCHUMAN|EXECUTIVE DIRECTOR|9187562826|9187566829||05-APR-10|JEFF SCHUMAN-EXECUTIVE DIRECTOR|SAUNDERS & ASSOCIATES, PLLC|PO BOX 1406||ADA|OK|748211406|G. B. SAUNDERS|MANAGING MEMBER|5803328548|5803322272|SNDRSGRP@YAHOO.COM|02-APR-10|O||97|U||||N|N||N|U|N|300000|Y|N|N|N|N|N|4344589|08-APR-10|||N||05-APR-10||||| -2010|100000|908|30-SEP-10|S|A||730776899|N||136240483|N|DEEP FORK COMMUNITY ACTION FOUNDATION, INC.|PO BOX 670||OKMULGEE|OK|74447|JEFF SCHUMAN|EXECUTIVE DIRECTOR|9187562826|9187566829|DEEPFORKCA@AOL.COM|08-SEP-11|LINDA BESHEAR-CFO|SAUNDERS & ASSOCIATES, PLLC|PO BOX 1406||ADA|OK|748211406|G. B. SAUNDERS|MANAGING MEMBER|5803328548|5803322272|GSAUNDERS@SAUNDERSCPAS.COM|06-SEP-11|O||97|U||||N|Y|Y|N|U|N|300000|Y|Y|Y|N|Y|N|4998203|09-SEP-11|||N||08-SEP-11||||| -2011|100000|908|30-SEP-11|S|A||730776899|N||136240483|N|DEEP FORK COMMUNITY ACTION FOUNDATION, INC.|PO BOX 670||OKMULGEE|OK|74447|JEFF SCHUMAN|EXECUTIVE DIRECTOR|9187562826|9187566829|DEEPFORKCA@AOL.COM|29-JAN-13|LINDA BESHEAR-CHIEF FINANCIAL OFFICER|SAUNDERS & ASSOCIATES, PLLC|PO BOX 1406||ADA|OK|748211406|G. B. SAUNDERS|MANAGING MEMBER|5803328548|5803322272|GSAUNDERS@SAUNDERSCPAS.COM|28-JAN-13|O||97|Q||||N|N|Y|N|U|N|300000|N|N|Y|N|Y|N|4715573|14-FEB-13|||N||29-JAN-13||||| -2012|100000|908|30-SEP-12|S|A||730776899|N||119737203|N|DEEP FORK COMMUNITY ACTION FOUNDATION, INC.|PO BOX 670||OKMULGEE|OK|74447|CHRISTIE BALDRIDGE|DIRECTOR|9187562826|9187562123|CHRISTIEBALDRIDGE-DEEPFORK@YAHOO.COM|06-SEP-13|CHRISTIE BALDRIDGE-EXEC DIRECTOR|CBEW PROFESSIONAL GROUP, LLP|PO BOX 790||CUSHING|OK|74023|CHUCK CROOKS CPA|PARTNER|9182254216|9182254315|CCROOKS@CBEW.COM|06-SEP-13|O||10|Q||||Y|N||Y|Q|N|300000|N|N|N|N|Y|N|4016381|09-SEP-13|||N||28-JUN-13||||| -2013|100000|908|30-SEP-13|S|A||730776899|N||119737203|N|PAWNEE DEPARTMENT OF PARKS AND RECREATION|PO BOX 670||PAWNEE|IL|74447|Leslie Knope|EXECUTIVE DIRECTOR|9187562826|9187562123|CHRISTIEBALDRIDGE-DEEPFORK@YAHOO.COM|30-JUN-14|CHRISTIE BALDRIDGE-EXECUTIVE DIRECTOR|CONES OF DUNSHIRE INC.|ANNE MARIE ELFRINK, MS, CPA||TULSA|OK|74137|ANNE ELFRINK|OWNER|9183612133|9185124280|ANNE.ELFRINK@CPA.COM|19-JUN-14|O||10|U||||Y|N|Y|N|U|N|300000|N|N|N|N|N|N|2486827|01-JUL-14|||N|271258466|30-JUN-14||||AAAFQYLGJZS7|Y -2014|100000|908|30-SEP-14|S|A||730776899|N||119737203|N|DEEP FORK COMMUNITY ACTION FOUNDATION, INC.|PO BOX 670||OKMULGEE|OK|74447|CHRISTIE BALDRIDGE|EXECUTIVE DIRECTOR|9187562826|9187562123|CHRISTIEBALDRIDGE-DEEPFORK@YAHOO.COM|01-JUN-15|GREG HAMBAY-CONTRACT FISCAL OFFICER|Unique CPA Name|PO BOX 1406||ADA|OK|748211406|G. B. SAUNDERS|MANAGING MEMBER|5803328548|5803322272|GSAUNDERS@SAUNDERSCPAS.COM|29-MAY-15|O||10|U||||N|N|N|N|U|N|300000|N|N|N|N|N|N|2105528|02-JUN-15|||N|208209116|01-JUN-15||||| -2015|100000|908|30-SEP-15|S|A||730776899|N||119737203|N|DEEP FORK COMMUNITY ACTION FOUNDATION, INC.|PO BOX 670||OKMULGEE|OK|74447|CHRISTIE BALDRIDGE|EXECUTIVE DIRECTOR|9187562826|9187562123|CHRISTIEBALDRIDGE-DEEPFORK@YAHOO.COM|18-FEB-16|GREG HAMBAY-CONTRACT CPA|SAUNDERS & ASSOCIATES, PLLC|PO BOX 1406||ADA|OK|748211406|G. B. SAUNDERS|MANAGING MEMBER|5803328548|5803322272|GSAUNDERS@SAUNDERSCPAS.COM|03-FEB-16|O||10|U||||N|N|N|N|U|N|300000|N|N|N|N|N|N|2110965|19-FEB-16|||N|208209116|18-FEB-16||||| -2016|100000|908|30-SEP-16|S|A||730776899|N||119737203|N|DEEP FORK COMMUNITY ACTION FOUNDATION, INC.|PO BOX 670||OKMULGEE |OK|74447|CHRISTIE BALDRIDGE|EXECUTIVE DIRECTOR|9187562826||EXECUTIVEDIRECTOR@DFCAF.ORG|09-MAR-17|GREG HAMBAY-CONTRACT CFO|SAUNDERS & ASSOCIATES, PLLC|PO BOX 1406||ADA|OK|748211406|G. B. SAUNDERS|MANAGING MEMBER|5803328548||GSAUNDERS@SAUNDERSCPAS.COM|10-FEB-17|O||10|U||||N|N|N|N|U|N|750000|Y|N|N|N|N|N|2254950|10-MAR-17|||N|208209116|09-MAR-17|||Non-profit|| -2017|100000|908|30-SEP-17|S|A||730776899|N||119737203|N|DEEP FORK COMMUNITY ACTION FOUNDATION, INC.|PO BOX 670||OKMULGEE|OK|74447|CHRISTIE BALDRIDGE|EXECUTIVE DIRECTOR|9187562826||EXECUTIVEDIRECTOR@DFCAF.ORG|09-MAR-18|GREG HAMBAY-CONTRACT CFO|SAUNDERS & ASSOCIATES, PLLC|PO BOX 1406||ADA|OK|748211406|G. B. SAUNDERS|MANAGING MEMBER|5803328548||GSAUNDERS@SAUNDERSCPAS.COM|23-FEB-18|O||10|U||||N|N|N|N|U|N|750000|Y|N|N|N|N|N|2418820|12-MAR-18|||N|208209116|09-MAR-18|||Non-profit|| -2018|100000|908|30-SEP-18|S|A||730776899|N||119737203|N|DEEP FORK COMMUNITY ACTION FOUNDATION, INC.|PO BOX 670||OKMULGEE|OK|74447|CHRISTIE BALDRIDGE|EXECUTIVE DIRECTOR|9187562826||EXECUTIVEDIRECTOR@DFCAF.ORG|12-APR-19|GREG HAMBAY-CONTRACT FISCAL OFFICER|SAUNDERS & ASSOCIATES, PLLC|PO BOX 1406||ADA|OK|748211406|G. B. SAUNDERS|MANAGING MEMBER|5803328548||GSAUNDERS@SAUNDERSCPAS.COM|03-APR-19|O||10|U||||N|N|N|N|U|N|750000|Y|N|N|N|N|N|2492090|16-APR-19|||N|208209116|12-APR-19|||Non-profit|| -2019|100000|908|30-SEP-19|S|A||730776899|N||119737203|N|DEEP FORK COMMUNITY ACTION FOUNDATION, INC. |PO BOX 670||OKMULGEE|OK|74447|CHRISTIE BALDRIDGE|EXECUTIVE DIRECTOR|9187562826||EXECUTIVEDIRECTOR@DFCAF.ORG|17-MAR-20|GREG HAMBAY-CONTRACT CPA|SAUNDERS & ASSOCIATES, PLLC|PO BOX 1406||ADA|OK|748211406|G.B. SAUNDERS|MANAGING MEMBER|5803328548||GSAUNDERS@SAUNDERSCPAS.COM|05-MAR-20|O||10|U||||N|N|N|N|U|N|750000|Y|N|N|N|N|N|2883811|03-APR-20|||N|208209116|17-MAR-20||US|Non-profit|| -2020|100000|908|30-SEP-20|S|A||730776899|N||119737203|N|DEEP FORK COMMUNITY ACTION FOUNDATION, INC.|PO BOX 670||OKMULGEE|OK|74447|CHRISTIE BALDRIDGE|EXECUTIVE DIRECTOR|9187562826||EXECUTIVEDIRECTOR@DFCAF.ORG|17-MAR-21|GREG HAMBAY-CONTRACT FISCAL OFFICER|SAUNDERS & ASSOCIATES, PLLC|PO BOX 1406||ADA|OK|748211406|G. B. SAUNDERS|MANAGING MEMBER|5803328548||GSAUNDERS@SAUNDERSCPAS.COM|17-MAR-21|O||10|U||||N|N|N|N|U|N|750000|Y|N|N|N|N|N|2695200|19-MAR-21|||N|208209116|17-MAR-21||US|Non-profit|| -2021|100000|908|30-SEP-21|S|A||730776899|N||119737203|N|DEEP FORK COMMUNITY ACTION FOUNDATION, INC.|PO BOX 670||OKMULGEE|OK|74447|CHRISTIE BALDRIDGE|EXECUTIVE DIRECTOR|9187562826||EXECUTIVEDIRECTOR@DFCAF.ORG|08-APR-22|CHRISTIE BALDRIDGE-EXECUTIVE DIRECTOR|SAUNDERS & ASSOCIATES, PLLC|PO BOX 1406||ADA|OK|748211406|G. B. SAUNDERS|MANAGING MEMBER|5803328548||GSAUNDERS@SAUNDERSCPAS.COM|31-MAR-22|O||10|U||||N|N|N|N|U|N|750000|Y|N|N|N|N|N|3338396|15-APR-22|||N|208209116|08-APR-22||US|Non-profit|| -1997|100001||31-OCT-97|S|A||730777705|N|000|||UNITED COMMUNITY ACTION PROGRAM INC|501 N SIXTH ST ||PAWNEE|OK|74058|JOHNNY BRYANT|EXECUTIVE DIRECTOR|9187623041|||30-JUN-98|JOHNNY BRYANT/EXECUTIVE DIRECTOR|SAUNDERS & ASSOCIATES|630 E 17TH||ADA|OK|74820|LYNN SAUNDERS|PARTNER|4054365330|||26-JUN-98|C|93||U||||N|Y|N|N|U||300000|N|Y|N|N|||5217400|01-OCT-98||Y|||11-SEP-98||||A88888889| \ No newline at end of file diff --git a/backend/data_distro/data_to_load/test_data/notes.txt b/backend/data_distro/data_to_load/test_data/notes.txt deleted file mode 100644 index adbe7fbe3..000000000 --- a/backend/data_distro/data_to_load/test_data/notes.txt +++ /dev/null @@ -1,5 +0,0 @@ -ID|REPORTID|VERSION|AUDITYEAR|DBKEY|SEQ_NUMBER|TYPE_ID|NOTE_INDEX|TITLE|CONTENT -180887|876492|1|2021|100000|3|3||BASIS OF PRESENTATION|The accompanying schedule of expenditures of federal awards (SEFA) for the year ended January 2, 2021 includes the federal grant activity of Goodwill only and not the consolidated affiliate and is presented on the accrual basis of accounting. The information in the SEFA is presented in accordance with the requirements of Title 2 U.S. Code of Federal Regulations (CFR) Part 200, Uniform Administrative Requirements, Cost Principles, and Audit Requirements for Federal Awards. Goodwills consolidated affiliate, GEI, received approximately $779,000 in federal awards which are not included in Goodwills accompanying SEFA for 2020. GEI was independently audited during its fiscal year end of June 30, 2020 in accordance with Title 2 U.S. Code of Federal Regulations (CFR) Part 200. The consolidated financial statement classifications may include other financial activity for reporting purposes. Therefore, some of the amounts presented in the SEFA may differ from amounts presented in, or used in the preparation of, the consolidated financial statements. -180888|876492|1|2021|100000|2|2|2|10% De Minimis Cost Rate|The auditee did not use the de minimis cost rate. -180889|876492|1|2021|100000|1|1||Significant Accounting Policies Used in Preparing the SEFA|Expenditures reported on the SEFA are reported on the accrual basis of accounting. Such expenditures are recognized following the cost principles contained in the Uniform Guidance, wherein certain types of expenditures are not allowable or are limited as to reimbursement. Goodwill has elected not to use the 10% de minimis indirect cost rate as allowed under the Uniform Guidance. -183559|880711|1|2021|100000|4|1||Significant Accounting Policies Used in Preparing the SEFA|Note A- Basis of PresentationThe accompanying schedule of expenditures of federal awards includes the federal award (the Schedule) of Citizens of Lake County for Health Care, Inc. under programs of the federal government for the year ended January 31, 2021. The information in this Schedule is presented in accordance with the requirements of Title 2 U.S. Code of Federal Regulations Part 200, Uniform Administrative Requirements, Cost Principles, and Audit Requirements for Federal Awards (Uniform Guidance). Because the Schedule presents only a selected portion of the operations of Citizens of Lake County for Health Care, Inc., it is not intended to and does not present the financial position, changes in net assets, or cash flows of Citizens of Lake County for Health Care, Inc.Note B-Summary of Significant Accounting PoliciesExpenditures reported on the Schedule are reported on the accrual basis of accounting. Such expenditures are recognized following the cost principles contained in the Uniform Guidance, wherein certain types of expenditures are not allowable or are limited as to reimbursement. Negative amounts shown on the Schedule represent adjustments or credits made in the normal course of business to amounts reported as expenditures in prior years. Citizens of Lake County for Health Care, Inc. has elected not to use the 10 percent de minimus indirect cost rate allowed under Uniform Guidance.Note C- SubrecipientsThe Organization provided no federal awards to subrecipients. \ No newline at end of file diff --git a/backend/data_distro/data_to_load/test_data/passthrough.txt b/backend/data_distro/data_to_load/test_data/passthrough.txt deleted file mode 100644 index 8cf959c2e..000000000 --- a/backend/data_distro/data_to_load/test_data/passthrough.txt +++ /dev/null @@ -1,4 +0,0 @@ -DBKEY|AUDITYEAR|ELECAUDITSID|PASSTHROUGHNAME|PASSTHROUGHID -100000|1997|33633651|FOOD BANK OF THE ROCKIES|N/A -100000|2016|33633655|COLORADO DEPARTMENT OF PUBLIC HEALTH AND ENVIRONMENT|ENVHL202055881-00 -100000|2021|34514996|CALIFORNIA DSS|68-0287677 \ No newline at end of file diff --git a/backend/data_distro/data_to_load/test_data/revisions.txt b/backend/data_distro/data_to_load/test_data/revisions.txt deleted file mode 100644 index f27c78f22..000000000 --- a/backend/data_distro/data_to_load/test_data/revisions.txt +++ /dev/null @@ -1,16 +0,0 @@ -DBKEY|AUDITYEAR|GENINFO|GENINFO_EXPLAIN|FEDERALAWARDS|FEDERALAWARDS_EXPLAIN|NOTESTOSEFA|NOTESTOSEFA_EXPLAIN|AUDITINFO|AUDITINFO_EXPLAIN|FINDINGS|FINDINGS_EXPLAIN|FINDINGSTEXT|FINDINGSTEXT_EXPLAIN|CAP|CAP_EXPLAIN|OTHER|OTHER_EXPLAIN|ELECRPTREVISIONID -49340|2021|||ADDED OR REMOVED|ADDED $268,470 FOR CFDA #93.434 THAT WAS PREVIOUSLY INADVERTENTLY LEFT OUT.|||||||||||||15604 -252617|2021|||||||||||||||OTHER|ADDED AUDITED FINANCIALS WITH THE REPORT|14419 -98439|2021|||MAJOR PROGRAM|CARES ACT WAS RE-AUDITED AS A MAJOR HIGH RISK PROGRAM ( TYPE A ) AS THE SPENDING WAS RELATED TO COVID 19|||||||||||||15785 -33096|2021|||PASS-THROUGH FROM|CORRECTION OF GRANT ID|||||||||||||17418 -185803|2021|||||||||||EDITED|FILING HAD A TYPO.|||||16724 -160251|2021|||||||||||||EDITED|ADDED DATES FOR CORRECTIVE ACTION TO TAKE PLACE AND THE NAME AND TITLE OF THE DISTRICT CONTACT.|||12916 -179959|2021|||||||SIGNIFICANT DEFICIENCY|ADDED CORRECTIVE PLAN.|||||||||13371 -251665|2021|||||||||||EDITED|TWO FINDING WERE LEFT OFF|EDITED|TWO FINDINGS WERE LEFT OFF|||15502 -100000|2021|||MAJOR PROGRAM|EDUCATION STABILIZATION FUND ADDED AS MAJOR PROGRAM.|||||||||||||15119 -169715|2021|||CFDA NUMBER|UPDATED THE DATA COLLECTION FORM (DCF) TO INDICATE THE ALPHA CHARACTER THAT IS ASSIGNED TO CFDA 84.425.|||||||||||||15223 -25877|2021|||MAJOR PROGRAM|CHANGED HIGHER EDUCATION EMERGENCY RELIEF FUNDS (HEERF) AWARDS TO BE AUDITED AS A MAJOR PROGRAM|||||||||||||16930 -157605|2021|||MAJOR PROGRAM|A CHANGE TO THE MAJOR PROGRAMS IN THE FEDERAL AWARDS SECTION|||||||||||||14053 -223855|2021|||ADDED OR REMOVED,CFDA NUMBER|CORRECTED CFDA #|||||||||||||16043 -187368|2021|||ADDED OR REMOVED,AMOUNT EXPENDED|IT WAS DETERMINED THAT ADDITIONAL FUNDS WERE TO BE INCLUDED IN ADDITION TO CHANGES WITH EXISTING FUND AMOUNTS DUE TO TIMING DIFFERENCES WITH FISCAL YEARS.|||||||||||||14085 -190831|2021|||||||||ADDED OR REMOVED|AUDITORS DID NOT PROPERLY IDENTIFY THE FEDERAL FINDING |||||||13176 \ No newline at end of file diff --git a/backend/data_distro/data_to_load/test_data/ueis.txt b/backend/data_distro/data_to_load/test_data/ueis.txt deleted file mode 100644 index 1d9d053a8..000000000 --- a/backend/data_distro/data_to_load/test_data/ueis.txt +++ /dev/null @@ -1,4 +0,0 @@ -AUDITYEAR|DBKEY|UEI|UEISEQNUM -2013|100000|LLCFQYLGJZS7|000 -2013|100000|GPQ2K36AJHG3|002 -2013|100000|NJWKWGVY9898|001 \ No newline at end of file diff --git a/backend/data_distro/docs.py b/backend/data_distro/docs.py deleted file mode 100644 index 2a283ebe3..000000000 --- a/backend/data_distro/docs.py +++ /dev/null @@ -1,257 +0,0 @@ -""" -Using the OpenAPI structure to add docs for data -The field name is going to be a short name, the long name is going to be a short explanation and the description is going to be for the data source. - -This is where the model docs descriptions come from. Keep formatting consistent so we can automatically create upload mappings and documentation. - -These strings are formatted: -"Data sources:
: ; : Census mapping: , " - -If more than one table populates that field: -"Data sources: : ; : Census mapping:
, (AND) Data sources: : ; : Census mapping:
, " - -""" - -""" Narrative API documentation. """ -API_DESCRIPTION = """Data from the Federal Audit Clearinghouse""" - - -""" Model choices """ -# These have not been implemented yet, we will see if the data allows for it - -# TYPEREPORT_FS -# TYPEREPORT_SP_FRAMEWORK -# TYPEREPORT_MP -type_reports_choices = [ - ("U", "Unqualifed"), - ("Q", "Qualified"), - ("A", "Adverse"), - ("D", "Disclaimer"), -] - -# SP_FRAMEWORK -sp_framework_choices = [ - ("Cash basis", "Cash basis"), - ("Tax basis", "Tax basis"), - ("Regulatory basis", "Regulatory basis"), - ("Contractual basis", "Contractual basis"), - ("Other basis", "Other basis"), -] - -# TYPEREQUIREMENT -type_requirement_choices = [ - ("A", "Activities allowed or unallowed"), - ("B", "Allowable costs/cost principles"), - ("C", "Cash management"), - ("D", "Davis-Bacon Act"), - ("E", "Eligibility"), - ("F", "Equipment and real property management"), - ("G", "Matching, level of effort, earmarking"), - ("H", "Period of availability of Federal funds"), - ("I", "Procurement and suspension and debarment"), - ("J", "Program income"), - ("K", "Real property acquisition and relocation assistance"), - ("L", "Reporting"), - ("M", "Subrecipient monitoring"), - ("N", "Special tests and provisions"), - ("O", "None"), - ("P", "Other"), -] - -# OVERSIGHTAGENCY. -cognizant_agency_over_choices = [ - ("C", "Cognizant agency"), - ("O", "Oversight agency"), -] - -# TYPE_ID -type_id_choices = [ - ("1", "Accounting Standards"), - ("2", "10% Rule"), - ("3", "Additional"), - ("4", "Special"), -] - - -""" -Advanced explanation docs - -These have special formatting so we can map data models to the public downloads. That makes uploading data easier. -""" - -# check data source -agency_prior_findings = "Data sources: SF-SAC 1997-2000: III/5; SF-SAC 2001-2003: III/9; SF-SAC 2004-2007: III/8; SF-SAC 2008-2009: III/8; SF-SAC 2010-2012: III/8; SF-SAC 2013-2015: III/5; SF-SAC 2016-2018: III/3/d; SF-SAC 2019-2021: III/3/d; SF-SAC 2022: III/3/d Census mapping: AGENCIES, AGENCY" -agency_cfda = "Data sources: SF-SAC 1997-2000: III/5; SF-SAC 2001-2003: III/9; SF-SAC 2004-2007: III/8; SF-SAC 2008-2009: III/8; SF-SAC 2010-2012: III/8; SF-SAC 2013-2015: III/5; SF-SAC 2016-2018: III/3/d; SF-SAC 2019-2021: III/3/d; SF-SAC 2022: III/3/d Census mapping: AGENCIES, AGENCYCFDA" -audit_year_captext = "Census mapping: CAPTEXT, AUDITYEAR" -audit_year_cfdainfo = "Census mapping: CFDA INFO, AUDITYEAR" -audit_year_findings = "Census mapping: FINDINGS, AUDITYEAR" -audit_year_findingstext = "Census mapping: FINDINGSTEXT, AUDITYEAR" -audit_year_general = "Census mapping: GENERAL, AUDITYEAR" -audit_year_notes = "Census mapping: NOTES, AUDITYEAR" -audit_year_passthrough = "Census mapping: PASSTHROUGH, AUDITYEAR" -audit_year_revisions = "Census mapping: REVISIONS, AUDITYEAR" -dbkey_captext = "Census mapping: CAPTEXT, DBKEY" -dbkey_cfdainfo = "Census mapping: CFDA INFO, DBKEY" -dbkey_findings = "Census mapping: FINDINGS, DBKEY" -dbkey_findingstext = "Census mapping: FINDINGSTEXT, DBKEY" -dbkey_general = "Census mapping: GENERAL, DBKEY" -dbkey_notes = "Census mapping: NOTES, DBKEY" -dbkey_passthrough = "Census mapping: PASSTHROUGH, DBKEY" -dbkey_revisions = "Census mapping: REVISIONS, DBKEY" - -ein_list = "Data sources: SF-SAC 1997-2000: I/5/a; SF-SAC 2001-2003: I/5/a; SF-SAC 2004-2007: I/5/a; SF-SAC 2008-2009: I/4/a; SF-SAC 2010-2012: I/4/a; SF-SAC 2013-2015: I/4/a; SF-SAC 2016-2018: I/4/a; SF-SAC 2019-2021: I/4/a; SF-SAC 2022: I/4/a Census mapping: GENERAL, EIN (AND) Data sources: SF-SAC 2001-2003: I/5/c; SF-SAC 2004-2007: I/5/c; SF-SAC 2008-2009: I/4/c; SF-SAC 2010-2012: I/4/c; SF-SAC 2013-2015: I/4/c; SF-SAC 2016-2018: I/4/c; SF-SAC 2019-2021: I/4/c; SF-SAC 2022: I/4/c Census mapping: EIN INFO, EIN" -charts_tables_captext = "Census mapping: CAPTEXT, CHARTSTABLES" -charts_tables_findingstext = "Census mapping: FINDINGSTEXT, CHARTSTABLES" -finding_ref_nums_captext = "Data sources: SF-SAC 2019-2021: IV/1; SF-SAC 2022: IV/1 Census mapping: CAPTEXT, FINDINGREFNUMS" -finding_ref_nums_cfdainfo = "Data sources: SF-SAC 1997-2000: III/7/e; SF-SAC 2001-2003: III/11/b; SF-SAC 2004-2007: III/10/b; SF-SAC 2008-2009: III/10/b; SF-SAC 2010-2012: III/10/b; SF-SAC 2013-2015: III/7/d; SF-SAC 2016-2018: III/4/e; SF-SAC 2019-2021: III/4/e; SF-SAC 2022: III/4/e Census mapping: CFDA INFO, FINDINGREFNUMS" -finding_ref_nums_findings = "Data sources: SF-SAC 2013-2015: III/7/d; SF-SAC 2016-2018: III/4/e; SF-SAC 2019-2021: III/4/e; SF-SAC 2022: III/4/e Census mapping: FINDINGS, FINDINGSREFNUMS" -finding_ref_nums_findingstext = "Data sources: SF-SAC 2019-2021: III/5/a; SF-SAC 2022: III/5/a Census mapping: FINDINGSTEXT, FINDINGREFNUMS" -seq_number_captext = "Census mapping: CAPTEXT, SEQ_NUMBER" -seq_number_findingstext = "Census mapping: FINDINGSTEXT, SEQ_NUMBER" -seq_number_notes = "Census mapping: NOTES, SEQ_NUMBER" -text_captext = "Data sources: SF-SAC 2019-2021: IV/2; SF-SAC 2022: IV/2 Census mapping: CAPTEXT, TEXT" -text_findingstext = "Data sources: SF-SAC 2019-2021: III/5/b; SF-SAC 2022: III/5/b Census mapping: FINDINGSTEXT, TEXT" -amount = "Data sources: SF-SAC 1997-2000: III/6/c; SF-SAC 2001-2003: III/10/d; SF-SAC 2004-2007: III/9/e; SF-SAC 2008-2009: III/9/e; SF-SAC 2010-2012: III/9/f; SF-SAC 2013-2015: III/6/d; SF-SAC 2016-2018: II/1/e; SF-SAC 2019-2021: II/1/e; SF-SAC 2022: II/1/e Census mapping: CFDA INFO, AMOUNT" -arra = "Data sources: SF-SAC 2010-2012: III/9/d; SF-SAC 2013-2015: III/6/g Census mapping: CFDA INFO, ARRA" -award_identification = "Data sources: SF-SAC 2016-2018: II/1/c; SF-SAC 2019-2021: II/1/c; SF-SAC 2022: II/1/c Census mapping: CFDA INFO, AWARDIDENTIFICATION" -cfda = "Data sources: SF-SAC 1997-2000: III/6/a; SF-SAC 2001-2003: III/10/a; SF-SAC 2004-2007: III/9/a & III/9/b combined; SF-SAC 2008-2009: III/9/a & III/9/b combined; SF-SAC 2010-2012: III/9/a & III/9/b combined; SF-SAC 2013-2015: III/6/a & III/6/b combined; SF-SAC 2016-2018: II/1/a & II/1/b combined; SF-SAC 2019-2021: II/1/a & II/1/b combined; SF-SAC 2022: II/1/a & II/1/b combined Census mapping: CFDA INFO, CFDA" -cfda_program_name = "Census mapping: CFDA INFO, CFDAPROGRAMNAME" -cluster_name = "Data sources: SF-SAC 2016-2018: II/1/f; SF-SAC 2019-2021: II/1/f; SF-SAC 2022: II/1/f Census mapping: CFDA INFO, CLUSTERNAME" -cluster_total = "Data sources: SF-SAC 2016-2018: II/1/h; SF-SAC 2019-2021: II/1/h; SF-SAC 2022: II/1/h Census mapping: CFDA INFO, CLUSTERTOTAL" -direct = "Data sources: SF-SAC 2001-2003: III/10/e; SF-SAC 2004-2007: III/9/f; SF-SAC 2008-2009: III/9/f; SF-SAC 2010-2012: III/9/g; SF-SAC 2013-2015: III/6/h; SF-SAC 2016-2018: II/1/k; SF-SAC 2019-2021: II/1/k; SF-SAC 2022: II/1/k Census mapping: CFDA INFO, DIRECT" -elec_audits_id_cfdainfo = "Census mapping: CFDA INFO, ELECAUDITSID" -elec_audits_id_findings = "Census mapping: FINDINGS, ELECAUDITSID" -elec_audits_id_passthrough = "Census mapping: PASSTHROUGH, ELECAUDITSID" -federal_program_name = "Data sources: SF-SAC 1997-2000: III/6/b; SF-SAC 2001-2003: III/10/c; SF-SAC 2004-2007: III/9/d; SF-SAC 2008-2009: III/9/d; SF-SAC 2010-2012: III/9/e; SF-SAC 2013-2015: III/6/c; SF-SAC 2016-2018: II/1/d; SF-SAC 2019-2021: II/1/d; SF-SAC 2022: II/1/d Census mapping: CFDA INFO, FEDERALPROGRAMNAME" -findings_count = "Data sources: SF-SAC 2013-2015: III/6/k; SF-SAC 2016-2018: III/1/c; SF-SAC 2019-2021: III/1/c; SF-SAC 2022: III/1/c Census mapping: CFDA INFO, FINDINGSCOUNT" -loan_balance = "Data sources: SF-SAC 2016-2018: II/1/j; SF-SAC 2019-2021: II/1/j; SF-SAC 2022: II/1/j Census mapping: CFDA INFO, LOANBALANCE" -loans = "Data sources: SF-SAC 2013-2015: III/6/f; SF-SAC 2016-2018: II/1/i; SF-SAC 2019-2021: II/1/i; SF-SAC 2022: II/1/i Census mapping: CFDA INFO, LOANS" -major_program = "Data sources: SF-SAC 1997-2000: III/7/a; SF-SAC 2001-2003: III/10/f; SF-SAC 2004-2007: III/9/g; SF-SAC 2008-2009: III/9/g; SF-SAC 2010-2012: III/9/h; SF-SAC 2013-2015: III/6/i; SF-SAC 2016-2018: III/1/a; SF-SAC 2019-2021: III/1/a; SF-SAC 2022: III/1/a Census mapping: CFDA INFO, MAJORPROGRAM" -other_cluster_name = "Census mapping: CFDA INFO, OTHERCLUSTERNAME" -passthrough_amount = "Data sources: SF-SAC 2016-2018: II/1/o; SF-SAC 2019-2021: II/1/o; SF-SAC 2022: II/1/o Census mapping: CFDA INFO, PASSTHROUGHAMOUNT" -passthrough_award = "Data sources: SF-SAC 2016-2018: II/1/n; SF-SAC 2019-2021: II/1/n; SF-SAC 2022: II/1/n Census mapping: CFDA INFO, PASSTHROUGHAWARD" -program_total = "Data sources: SF-SAC 2016-2018: II/1/g; SF-SAC 2019-2021: II/1/g; SF-SAC 2022: II/1/g Census mapping: CFDA INFO, PROGRAMTOTAL" -research_and_development = "Data sources: SF-SAC 2001-2003: III/10/b; SF-SAC 2004-2007: III/9/c; SF-SAC 2008-2009: III/9/c; SF-SAC 2010-2012: III/9/c; SF-SAC 2013-2015: III/6/e Census mapping: CFDA INFO, RD" -state_cluster_name = "Census mapping: CFDA INFO, STATECLUSTERNAME" -type_report_major_program_cfdainfo = "Data sources: SF-SAC 2004-2007: III/9/h; SF-SAC 2008-2009: III/9/h; SF-SAC 2010-2012: III/9/i; SF-SAC 2013-2015: III/6/j; SF-SAC 2016-2018: III/1/b; SF-SAC 2019-2021: III/1/b; SF-SAC 2022: III/1/b Census mapping: CFDA INFO, TYPEREPORT_MP" -type_report_major_program_general = "Data sources: SF-SAC 1997-2000: III/1; SF-SAC 2001-2003: III/1 Census mapping: GENERAL, TYPEREPORT_MP" -type_requirement_cfdainfo = "Data sources: SF-SAC 1997-2000: III/7/b; SF-SAC 2001-2003: III/11/a; SF-SAC 2004-2007: III/10/a; SF-SAC 2008-2009: III/10/a; SF-SAC 2010-2012: III/10/a; SF-SAC 2013-2015: III/7/e; SF-SAC 2016-2018: III/4/f; SF-SAC 2019-2021: III/4/f; SF-SAC 2022: III/4/f Census mapping: CFDA INFO, TYPEREQUIREMENT" -type_requirement_findings = "Data sources: SF-SAC 2013-2015: III/7/e; SF-SAC 2016-2018: III/4/f; SF-SAC 2019-2021: III/4/f; SF-SAC 2022: III/4/f Census mapping: FINDINGS, TYPEREQUIREMENT" -duns_list = "Data sources: SF-SAC 2004-2007: I/5/git ad; SF-SAC 2008-2009: I/4/d; SF-SAC 2010-2012: I/4/d; SF-SAC 2013-2015: I/4/d; SF-SAC 2016-2018: I/4/d; SF-SAC 2019-2021: I/4/d; SF-SAC 2022: I/4/d Census mapping: GENERAL, DUNS (AND) Data sources: SF-SAC 2004-2007: I/5/f; SF-SAC 2008-2009: I/4/f; SF-SAC 2010-2012: I/4/f; SF-SAC 2013-2015: I/4/f; SF-SAC 2016-2018: I/4/f; SF-SAC 2019-2021: I/4/f; SF-SAC 2022: I/4/f Census mapping: DUN INFO, DUNS" -elec_audit_findings_id = "Census mapping: FINDINGS, ELECAUDITFINDINGSID" -material_weakness_findings = "Data sources: SF-SAC 2013-2015: III/7/h; SF-SAC 2016-2018: III/4/i; SF-SAC 2019-2021: III/4/i; SF-SAC 2022: III/4/i Census mapping: FINDINGS, MATERIALWEAKNESS" -material_weakness_general = "Data sources: SF-SAC 1997-2000: II/4; SF-SAC 2001-2003: II/4; SF-SAC 2004-2007: II/4; SF-SAC 2008-2009: II/4; SF-SAC 2010-2012: II/4; SF-SAC 2013-2015: II/4; SF-SAC 2016-2018: III/2/d; SF-SAC 2019-2021: III/2/d; SF-SAC 2022: III/2/d Census mapping: GENERAL, MATERIALWEAKNESS" -modified_opinion = "Data sources: SF-SAC 2013-2015: III/7/f; SF-SAC 2016-2018: III/4/g; SF-SAC 2019-2021: III/4/g; SF-SAC 2022: III/4/g Census mapping: FINDINGS, MODIFIEDOPINION" -other_findings = "Data sources: SF-SAC 2013-2015: III/7/j; SF-SAC 2016-2018: III/4/k; SF-SAC 2019-2021: III/4/k; SF-SAC 2022: III/4/k Census mapping: FINDINGS, OTHERFINDINGS" -other_non_compliance = "Data sources: SF-SAC 2013-2015: III/7/g; SF-SAC 2016-2018: III/4/h; SF-SAC 2019-2021: III/4/h; SF-SAC 2022: III/4/h Census mapping: FINDINGS, OTHERNONCOMPLIANCE" -prior_finding_ref_nums = "Data sources: SF-SAC 2016-2018: III/4/n; SF-SAC 2019-2021: III/4/n; SF-SAC 2022: III/4/n Census mapping: FINDINGS, PRIORFINDINGREFNUMS" -questioned_costs_findings = "Data sources: SF-SAC 2013-2015: III/7/k; SF-SAC 2016-2018: III/4/l; SF-SAC 2019-2021: III/4/l; SF-SAC 2022: III/4/l Census mapping: FINDINGS, QCOSTS" -questioned_costs_general = "Data sources: SF-SAC 2001-2003: III/7; SF-SAC 2004-2007: III/6; SF-SAC 2008-2009: III/6; SF-SAC 2010-2012: III/6 Census mapping: GENERAL, QCOSTS" -repeat_finding = "Data sources: SF-SAC 2016-2018: III/4/m; SF-SAC 2019-2021: III/4/m; SF-SAC 2022: III/4/m Census mapping: FINDINGS, REPEATFINDING" -significant_deficiency = "Data sources: SF-SAC 2013-2015: III/7/i; SF-SAC 2016-2018: III/4/j; SF-SAC 2019-2021: III/4/j; SF-SAC 2022: III/4/j Census mapping: FINDINGS, SIGNIFICANTDEFICIENCY" -auditee_certify_name = "Data sources: SF-SAC 1997-2000: I/6/g; SF-SAC 2001-2003: I/6/g; SF-SAC 2004-2007: I/6/g; SF-SAC 2008-2009: I/5/g; SF-SAC 2010-2012: I/5/g; SF-SAC 2013-2015: certifications; SF-SAC 2016-2018: certifications; SF-SAC 2019-2021: certifications; SF-SAC 2022: certifications Census mapping: GENERAL, AUDITEECERTIFYNAME" -auditee_certify_title = "Data sources: SF-SAC 1997-2000: I/6/g; SF-SAC 2001-2003: I/6/g; SF-SAC 2004-2007: I/6/g; SF-SAC 2008-2009: I/5/g; SF-SAC 2010-2012: I/5/g; SF-SAC 2013-2015: certifications; SF-SAC 2016-2018: certifications; SF-SAC 2019-2021: certifications; SF-SAC 2022: certifications Census mapping: GENERAL, AUDITEECERTIFYTITLE" -auditee_contact = "Data sources: SF-SAC 1997-2000: I/6/c; SF-SAC 2001-2003: I/6/c; SF-SAC 2004-2007: I/6/c; SF-SAC 2008-2009: I/5/c; SF-SAC 2010-2012: I/5/c; SF-SAC 2013-2015: I/5/c; SF-SAC 2016-2018: I/5/c; SF-SAC 2019-2021: I/5/c; SF-SAC 2022: I/5/c Census mapping: GENERAL, AUDITEECONTACT" -auditee_date_signed = "Data sources: SF-SAC 1997-2000: I/6/g; SF-SAC 2001-2003: I/6/g; SF-SAC 2004-2007: I/6/g; SF-SAC 2008-2009: I/5/g; SF-SAC 2010-2012: I/5/g; SF-SAC 2013-2015: certifications; SF-SAC 2016-2018: certifications; SF-SAC 2019-2021: certifications; SF-SAC 2022: certifications Census mapping: GENERAL, AUDITEEDATESIGNED" -auditee_email = "Data sources: SF-SAC 1997-2000: I/6/f; SF-SAC 2001-2003: I/6/f; SF-SAC 2004-2007: I/6/f; SF-SAC 2008-2009: I/5/f; SF-SAC 2010-2012: I/5/f; SF-SAC 2013-2015: I/5/f; SF-SAC 2016-2018: I/5/e; SF-SAC 2019-2021: I/5/e; SF-SAC 2022: I/5/e Census mapping: GENERAL, AUDITEEEMAIL" -auditee_fax = "Data sources: SF-SAC 1997-2000: I/6/e; SF-SAC 2001-2003: I/6/e; SF-SAC 2004-2007: I/6/e; SF-SAC 2008-2009: I/5/e; SF-SAC 2010-2012: I/5/e; SF-SAC 2013-2015: I/5/e Census mapping: GENERAL, AUDITEEFAX" -auditee_name = "Data sources: SF-SAC 1997-2000: I/6/a; SF-SAC 2001-2003: I/6/a; SF-SAC 2004-2007: I/6/a; SF-SAC 2008-2009: I/5/a; SF-SAC 2010-2012: I/5/a; SF-SAC 2013-2015: I/5/a; SF-SAC 2016-2018: I/5/a; SF-SAC 2019-2021: I/5/a; SF-SAC 2022: I/5/a Census mapping: GENERAL, AUDITEENAME" -auditee_name_title = "Data sources: SF-SAC 1997-2000: I/6/g; SF-SAC 2001-2003: I/6/g; SF-SAC 2004-2007: I/6/g; SF-SAC 2008-2009: I/5/g; SF-SAC 2010-2012: I/5/g; SF-SAC 2013-2015: certifications; SF-SAC 2016-2018: certifications; SF-SAC 2019-2021: certifications; SF-SAC 2022: certifications Census mapping: GENERAL, AUDITEENAMETITLE" -auditee_phone = "Data sources: SF-SAC 1997-2000: I/6/d; SF-SAC 2001-2003: I/6/d; SF-SAC 2004-2007: I/6/d; SF-SAC 2008-2009: I/5/d; SF-SAC 2010-2012: I/5/d; SF-SAC 2013-2015: I/5/d; SF-SAC 2016-2018: I/5/d; SF-SAC 2019-2021: I/5/d; SF-SAC 2022: I/5/d Census mapping: GENERAL, AUDITEEPHONE" -auditee_title = "Data sources: SF-SAC 1997-2000: I/6/c; SF-SAC 2001-2003: I/6/c; SF-SAC 2004-2007: I/6/c; SF-SAC 2008-2009: I/5/c; SF-SAC 2010-2012: I/5/c; SF-SAC 2013-2015: I/5/c; SF-SAC 2016-2018: I/5/c; SF-SAC 2019-2021: I/5/c; SF-SAC 2022: I/5/c Census mapping: GENERAL, AUDITEETITLE" -audit_type = "Data sources: SF-SAC 1997-2000: I/2; SF-SAC 2001-2003: I/2; SF-SAC 2004-2007: I/2; SF-SAC 2008-2009: I/2; SF-SAC 2010-2012: I/2; SF-SAC 2013-2015: I/2; SF-SAC 2016-2018: I/2; SF-SAC 2019-2021: I/2; SF-SAC 2022: I/2 Census mapping: GENERAL, AUDITTYPE" -city = "Data sources: SF-SAC 1997-2000: I/6/b; SF-SAC 2001-2003: I/6/b; SF-SAC 2004-2007: I/6/b; SF-SAC 2008-2009: I/5/b; SF-SAC 2010-2012: I/5/b; SF-SAC 2013-2015: I/5/b; SF-SAC 2016-2018: I/5/b; SF-SAC 2019-2021: I/5/b; SF-SAC 2022: I/5/b Census mapping: GENERAL, CITY" -cognizant_agency = "Data sources: SF-SAC 1997-2000: I/9; SF-SAC 2001-2003: I/9 Census mapping: GENERAL, COGAGENCY" -completed_on = "Census mapping: GENERAL, COMPLETED_ON" -component_date_received = "Census mapping: GENERAL, COMPONENT DATE RECEIVED" -cpa_city = "Data sources: SF-SAC 1997-2000: I/7/b; SF-SAC 2001-2003: I/7/b; SF-SAC 2004-2007: I/7/b; SF-SAC 2008-2009: I/6/b; SF-SAC 2010-2012: I/6/b; SF-SAC 2013-2015: I/6/c; SF-SAC 2016-2018: I/6/c; SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPACITY (AND) Data sources: SF-SAC 2008-2009: I/8/b; SF-SAC 2010-2012: I/8/b; SF-SAC 2013-2015: I/8/d; SF-SAC 2016-2018: I/8/d; SF-SAC 2019-2021: I/6/h/iv; SF-SAC 2022: I/6/h/iv Census mapping: MULTIPLE CPAS INFO, CPACITY" -cpa_contact = "Data sources: SF-SAC 1997-2000: I/7/c; SF-SAC 2001-2003: I/7/c; SF-SAC 2004-2007: I/7/c; SF-SAC 2008-2009: I/6/c; SF-SAC 2010-2012: I/6/c; SF-SAC 2013-2015: I/6/d; SF-SAC 2016-2018: I/6/d; SF-SAC 2019-2021: I/6/d; SF-SAC 2022: I/6/d Census mapping: GENERAL, CPACONTACT (AND) Data sources: SF-SAC 2008-2009: I/8/c; SF-SAC 2010-2012: I/8/c; SF-SAC 2013-2015: I/8/g; SF-SAC 2016-2018: I/8/g; SF-SAC 2019-2021: I/6/h/vii; SF-SAC 2022: I/6/h/vii Census mapping: MULTIPLE CPAS INFO, CPACONTACT" -cpa_country = "Data sources: SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPACOUNTRY" -cpa_date_signed = "Data sources: SF-SAC 1997-2000: I/7/g; SF-SAC 2001-2003: I/7/g; SF-SAC 2004-2007: I/7/g; SF-SAC 2008-2009: I/6/g; SF-SAC 2010-2012: I/6/g; SF-SAC 2013-2015: certifications; SF-SAC 2016-2018: certifications; SF-SAC 2019-2021: certifications; SF-SAC 2022: certifications Census mapping: GENERAL, CPADATESIGNED" -cpa_email = "Data sources: SF-SAC 1997-2000: I/7/f; SF-SAC 2001-2003: I/7/f; SF-SAC 2004-2007: I/7/f; SF-SAC 2008-2009: I/6/f; SF-SAC 2010-2012: I/6/f; SF-SAC 2013-2015: I/6/g; SF-SAC 2016-2018: I/6/f; SF-SAC 2019-2021: I/6/f; SF-SAC 2022: I/6/f Census mapping: GENERAL, CPAEMAIL (AND) Data sources: SF-SAC 2008-2009: I/8/f; SF-SAC 2010-2012: I/8/f; SF-SAC 2013-2015: I/8/k; SF-SAC 2016-2018: I/8/k; SF-SAC 2019-2021: I/6/h/x; SF-SAC 2022: I/6/h/x Census mapping: MULTIPLE CPAS INFO, CPAEMAIL" -cpa_fax = "Data sources: SF-SAC 1997-2000: I/7/e; SF-SAC 2001-2003: I/7/e; SF-SAC 2004-2007: I/7/e; SF-SAC 2008-2009: I/6/e; SF-SAC 2010-2012: I/6/e; SF-SAC 2013-2015: I/6/f Census mapping: GENERAL, CPAFAX (AND) Data sources: SF-SAC 2008-2009: I/8/e; SF-SAC 2010-2012: I/8/e; SF-SAC 2013-2015: I/8/j; SF-SAC 2016-2018: I/8/j Census mapping: MULTIPLE CPAS INFO, CPAFAX" -cpa_firm_name = "Data sources: SF-SAC 1997-2000: I/7/a; SF-SAC 2001-2003: I/7/a; SF-SAC 2004-2007: I/7/a; SF-SAC 2008-2009: I/6/a; SF-SAC 2010-2012: I/6/a; SF-SAC 2013-2015: I/6/a; SF-SAC 2016-2018: I/6/a; SF-SAC 2019-2021: I/6/a; SF-SAC 2022: I/6/a Census mapping: GENERAL, CPAFIRMNAME (AND) Data sources: SF-SAC 2008-2009: I/8/a; SF-SAC 2010-2012: I/8/a; SF-SAC 2013-2015: I/8/a; SF-SAC 2016-2018: I/8/a; SF-SAC 2019-2021: I/6/h/i; SF-SAC 2022: I/6/h/i Census mapping: MULTIPLE CPAS INFO, CPAFIRMNAME" -cpa_foreign = "Data sources: SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPAFOREIGN" -cpa_phone = "Data sources: SF-SAC 1997-2000: I/7/d; SF-SAC 2001-2003: I/7/d; SF-SAC 2004-2007: I/7/d; SF-SAC 2008-2009: I/6/d; SF-SAC 2010-2012: I/6/d; SF-SAC 2013-2015: I/6/e; SF-SAC 2016-2018: I/6/e; SF-SAC 2019-2021: I/6/e; SF-SAC 2022: I/6/e Census mapping: GENERAL, CPAPHONE (AND) Data sources: SF-SAC 2008-2009: I/8/d; SF-SAC 2010-2012: I/8/d; SF-SAC 2013-2015: I/8/i; SF-SAC 2016-2018: I/8/i; SF-SAC 2019-2021: I/6/h/ix; SF-SAC 2022: I/6/h/ix Census mapping: MULTIPLE CPAS INFO, CPAPHONE" -cpa_state = "Data sources: SF-SAC 1997-2000: I/7/b; SF-SAC 2001-2003: I/7/b; SF-SAC 2004-2007: I/7/b; SF-SAC 2008-2009: I/6/b; SF-SAC 2010-2012: I/6/b; SF-SAC 2013-2015: I/6/c; SF-SAC 2016-2018: I/6/c; SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPASTATE (AND) Data sources: SF-SAC 2008-2009: I/8/b; SF-SAC 2010-2012: I/8/b; SF-SAC 2013-2015: I/8/e; SF-SAC 2016-2018: I/8/e; SF-SAC 2019-2021: I/6/h/v; SF-SAC 2022: I/6/h/v Census mapping: MULTIPLE CPAS INFO, CPASTATE" -cpa_street1 = "Data sources: SF-SAC 1997-2000: I/7/b; SF-SAC 2001-2003: I/7/b; SF-SAC 2004-2007: I/7/b; SF-SAC 2008-2009: I/6/b; SF-SAC 2010-2012: I/6/b; SF-SAC 2013-2015: I/6/c; SF-SAC 2016-2018: I/6/c; SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPASTREET1 (AND) Data sources: SF-SAC 2008-2009: I/8/b; SF-SAC 2010-2012: I/8/b; SF-SAC 2013-2015: I/8/c; SF-SAC 2016-2018: I/8/c; SF-SAC 2019-2021: I/6/h/iii; SF-SAC 2022: I/6/h/iii Census mapping: MULTIPLE CPAS INFO, CPASTREET1" -cpa_street2 = "Data sources: SF-SAC 1997-2000: I/7/b; SF-SAC 2001-2003: I/7/b; SF-SAC 2004-2007: I/7/b; SF-SAC 2008-2009: I/6/b; SF-SAC 2010-2012: I/6/b; SF-SAC 2013-2015: I/6/c; SF-SAC 2016-2018: I/6/c; SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPASTREET2" -cpa_title = "Data sources: SF-SAC 1997-2000: I/7/c; SF-SAC 2001-2003: I/7/c; SF-SAC 2004-2007: I/7/c; SF-SAC 2008-2009: I/6/c; SF-SAC 2010-2012: I/6/c; SF-SAC 2013-2015: I/6/d; SF-SAC 2016-2018: I/6/d; SF-SAC 2019-2021: I/6/d; SF-SAC 2022: I/6/d Census mapping: GENERAL, CPATITLE (AND) Data sources: SF-SAC 2008-2009: I/8/c; SF-SAC 2010-2012: I/8/c; SF-SAC 2013-2015: I/8/h; SF-SAC 2016-2018: I/8/h; SF-SAC 2019-2021: I/6/h/viii; SF-SAC 2022: I/6/h/viii Census mapping: MULTIPLE CPAS INFO, CPATITLE" -cpa_zip_code = "Data sources: SF-SAC 1997-2000: I/7/b; SF-SAC 2001-2003: I/7/b; SF-SAC 2004-2007: I/7/b; SF-SAC 2008-2009: I/6/b; SF-SAC 2010-2012: I/6/b; SF-SAC 2013-2015: I/6/c; SF-SAC 2016-2018: I/6/c; SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPAZIPCODE (AND) Data sources: SF-SAC 2008-2009: I/8/b; SF-SAC 2010-2012: I/8/b; SF-SAC 2013-2015: I/8/f; SF-SAC 2016-2018: I/8/f; SF-SAC 2019-2021: I/6/h/vi; SF-SAC 2022: I/6/h/vi Census mapping: MULTIPLE CPAS INFO, CPAZIPCODE" -current_or_former_findings = "Data sources: SF-SAC 2001-2003: III/9; SF-SAC 2004-2007: III/8; SF-SAC 2008-2009: III/8; SF-SAC 2010-2012: III/8; SF-SAC 2013-2015: III/5; SF-SAC 2016-2018: III/3/d; SF-SAC 2019-2021: III/3/d; SF-SAC 2022: III/3/d Census mapping: GENERAL, CYFINDINGS" -dollar_threshold = "Data sources: SF-SAC 1997-2000: III/2; SF-SAC 2001-2003: III/3; SF-SAC 2004-2007: III/2; SF-SAC 2008-2009: III/2; SF-SAC 2010-2012: III/2; SF-SAC 2013-2015: III/2; SF-SAC 2016-2018: III/3/b; SF-SAC 2019-2021: III/3/b; SF-SAC 2022: III/3/b Census mapping: GENERAL, DOLLARTHRESHOLD" -dup_reports = "Data sources: SF-SAC 2001-2003: III/2; SF-SAC 2004-2007: III/1; SF-SAC 2008-2009: III/1; SF-SAC 2010-2012: III/1; SF-SAC 2013-2015: III/1; SF-SAC 2016-2018: III/3/a; SF-SAC 2019-2021: III/3/a; SF-SAC 2022: III/3/a Census mapping: GENERAL, DUP_REPORTS" -ein_subcode = "Census mapping: GENERAL, EINSUBCODE" -entity_type = "Census mapping: GENERAL, ENTITY_TYPE" -fac_accepted_date = "Census mapping: GENERAL, FACACCEPTEDDATE" -form_date_received = "Census mapping: GENERAL, FORM DATE RECEIVED" -fy_end_date = "Data sources: SF-SAC 1997-2000: Part I, Item 1; SF-SAC 2001-2003: Part I, Item 1; SF-SAC 2004-2007: Part I, Item 1; SF-SAC 2008-2009: Part I, Item 1; SF-SAC 2010-2012: Part I, Item 1; SF-SAC 2013-2015: Part I, Item 1; SF-SAC 2016-2018: Part I, Item 1; SF-SAC 2019-2021: I/1/b; SF-SAC 2022: I/1/b Census mapping: GENERAL, FYENDDATE" -fy_start_date = "Data sources: SF-SAC 2019-2021: Part I, Item 1(a); SF-SAC 2022: Part I, Item 1(a) Census mapping: GENERAL, FYSTARTDATE" -going_concern = "Data sources: SF-SAC 1997-2000: II/2; SF-SAC 2001-2003: II/2; SF-SAC 2004-2007: II/2; SF-SAC 2008-2009: II/2; SF-SAC 2010-2012: II/2; SF-SAC 2013-2015: II/2; SF-SAC 2016-2018: III/2/b; SF-SAC 2019-2021: III/2/b; SF-SAC 2022: III/2/b Census mapping: GENERAL, GOINGCONCERN" -initial_date_received = "Census mapping: GENERAL, INITIAL DATE RECEIVED" -low_risk = "Data sources: SF-SAC 1997-2000: III/3; SF-SAC 2001-2003: III/4; SF-SAC 2004-2007: III/3; SF-SAC 2008-2009: III/3; SF-SAC 2010-2012: III/3; SF-SAC 2013-2015: III/3; SF-SAC 2016-2018: III/3/c; SF-SAC 2019-2021: III/3/c; SF-SAC 2022: III/3/c Census mapping: GENERAL, LOWRISK" -material_noncompliance = "Data sources: SF-SAC 1997-2000: II/5; SF-SAC 2001-2003: II/5; SF-SAC 2004-2007: II/5; SF-SAC 2008-2009: II/5; SF-SAC 2010-2012: II/5; SF-SAC 2013-2015: II/5; SF-SAC 2016-2018: III/2/e; SF-SAC 2019-2021: III/2/e; SF-SAC 2022: III/2/e Census mapping: GENERAL, MATERIALNONCOMPLIANCE" -material_weakness_major_program = "Data sources: SF-SAC 2001-2003: III/6; SF-SAC 2004-2007: III/5; SF-SAC 2008-2009: III/5; SF-SAC 2010-2012: III/5 Census mapping: GENERAL, MATERIALWEAKNESS_MP" -multiple_cpas = "Data sources: SF-SAC 2008-2009: I/7/a; SF-SAC 2010-2012: I/7/a; SF-SAC 2013-2015: I/7; SF-SAC 2016-2018: I/7; SF-SAC 2019-2021: I/6/g; SF-SAC 2022: I/6/g Census mapping: GENERAL, MULTIPLE_CPAS" -multiple_duns = "Data sources: SF-SAC 2004-2007: I/5/e; SF-SAC 2008-2009: I/4/e; SF-SAC 2010-2012: I/4/e; SF-SAC 2013-2015: I/4/e; SF-SAC 2016-2018: I/4/e; SF-SAC 2019-2021: I/4/e; SF-SAC 2022: I/4/e Census mapping: GENERAL, MULTIPLEDUNS" -multiple_eins = "Data sources: SF-SAC 1997-2000: I/5/b; SF-SAC 2001-2003: I/5/b; SF-SAC 2004-2007: I/5/b; SF-SAC 2008-2009: I/4/b; SF-SAC 2010-2012: I/4/b; SF-SAC 2013-2015: I/4/b; SF-SAC 2016-2018: I/4/b; SF-SAC 2019-2021: I/4/b; SF-SAC 2022: I/4/b Census mapping: GENERAL, MULTIPLEEINS" -multiple_ueis = "Data sources: SF-SAC 2022: I/4/h Census mapping: GENERAL, MULTIPLEUEIS" -number_months = "Data sources: SF-SAC 1997-2000: I/3; SF-SAC 2001-2003: I/3; SF-SAC 2004-2007: I/3; SF-SAC 2008-2009: I/3; SF-SAC 2010-2012: I/3; SF-SAC 2013-2015: I/3; SF-SAC 2016-2018: I/3; SF-SAC 2019-2021: I/3; SF-SAC 2022: I/3 Census mapping: GENERAL, NUMBERMONTHS" -oversight_agency = "Data sources: SF-SAC 1997-2000: I/9; SF-SAC 2001-2003: I/9 Census mapping: GENERAL, OVERSIGHTAGENCY" -period_covered = "Data sources: SF-SAC 1997-2000: I/3; SF-SAC 2001-2003: I/3; SF-SAC 2004-2007: I/3; SF-SAC 2008-2009: I/3; SF-SAC 2010-2012: I/3; SF-SAC 2013-2015: I/3; SF-SAC 2016-2018: I/3; SF-SAC 2019-2021: I/3; SF-SAC 2022: I/3 Census mapping: GENERAL, PERIODCOVERED" -previous_completed_on = "Census mapping: GENERAL, PREVIOUS_COMPLETED_ON" -prior_year_schedule = "Data sources: SF-SAC 2001-2003: III/8; SF-SAC 2004-2007: III/7; SF-SAC 2008-2009: III/7; SF-SAC 2010-2012: III/7; SF-SAC 2013-2015: III/4 Census mapping: GENERAL, PYSCHEDULE" -reportable_condition = "Data sources: SF-SAC 1997-2000: II/3; SF-SAC 2001-2003: II/3; SF-SAC 2004-2007: II/3; SF-SAC 2008-2009: II/3; SF-SAC 2010-2012: II/3; SF-SAC 2013-2015: II/3; SF-SAC 2016-2018: III/2/c; SF-SAC 2019-2021: III/2/c; SF-SAC 2022: III/2/c Census mapping: GENERAL, REPORTABLECONDITION" -significant_deficiency_general = "Data sources: SF-SAC 1997-2000: II/3; SF-SAC 2001-2003: II/3; SF-SAC 2004-2007: II/3; SF-SAC 2008-2009: II/3; SF-SAC 2010-2012: II/3; SF-SAC 2013-2015: II/3; SF-SAC 2016-2018: III/2/c; SF-SAC 2019-2021: III/2/c; SF-SAC 2022: III/2/c Census mapping: GENERAL, SIGNIFICANTDEFICIENCY" -significant_deficiency_findings = "Data sources: SF-SAC 1997-2000: II/3; SF-SAC 2001-2003: II/3; SF-SAC 2004-2007: II/3; SF-SAC 2008-2009: II/3; SF-SAC 2010-2012: II/3; SF-SAC 2013-2015: II/3; SF-SAC 2016-2018: III/2/c; SF-SAC 2019-2021: III/2/c; SF-SAC 2022: III/2/c Census mapping: FINDINGS, SIGNIFICANTDEFICIENCY" -reportable_condition_major_program = "Data sources: SF-SAC 2001-2003: III/5; SF-SAC 2004-2007: III/4; SF-SAC 2008-2009: III/4; SF-SAC 2010-2012: III/4 Census mapping: GENERAL, REPORTABLECONDITION_MP" -report_required = "Data sources: SF-SAC 1997-2000: III/5; SF-SAC 2001-2003: III/9; SF-SAC 2004-2007: III/8 Census mapping: GENERAL, REPORTREQUIRED" -sp_framework = "Data sources: SF-SAC 2016-2018: III/2/a/ii; SF-SAC 2019-2021: III/2/a/i; SF-SAC 2022: III/2/a/i Census mapping: GENERAL, SP_FRAMEWORK" -sp_framework_required = "Data sources: SF-SAC 2016-2018: III/2/a/iii; SF-SAC 2019-2021: III/2/a/ii; SF-SAC 2022: III/2/a/ii Census mapping: GENERAL, SP_FRAMEWORK_REQUIRED" -state = "Data sources: SF-SAC 1997-2000: I/6/b; SF-SAC 2001-2003: I/6/b; SF-SAC 2004-2007: I/6/b; SF-SAC 2008-2009: I/5/b; SF-SAC 2010-2012: I/5/b; SF-SAC 2013-2015: I/5/b; SF-SAC 2016-2018: I/5/b; SF-SAC 2019-2021: I/5/b; SF-SAC 2022: I/5/b Census mapping: GENERAL, STATE" -street1 = "Data sources: SF-SAC 1997-2000: I/6/b; SF-SAC 2001-2003: I/6/b; SF-SAC 2004-2007: I/6/b; SF-SAC 2008-2009: I/5/b; SF-SAC 2010-2012: I/5/b; SF-SAC 2013-2015: I/5/b; SF-SAC 2016-2018: I/5/b; SF-SAC 2019-2021: I/5/b; SF-SAC 2022: I/5/b Census mapping: GENERAL, STREET1" -street2 = "Data sources: SF-SAC 1997-2000: I/6/b; SF-SAC 2001-2003: I/6/b; SF-SAC 2004-2007: I/6/b; SF-SAC 2008-2009: I/5/b; SF-SAC 2010-2012: I/5/b; SF-SAC 2013-2015: I/5/b; SF-SAC 2016-2018: I/5/b; SF-SAC 2019-2021: I/5/b; SF-SAC 2022: I/5/b Census mapping: GENERAL, STREET2" -total_fed_expenditures = "Data sources: SF-SAC 1997-2000: III/6/c- Total; SF-SAC 2001-2003: III/10/d -Total; SF-SAC 2004-2007: III/9/e -Total; SF-SAC 2008-2009: III/9/e -Total; SF-SAC 2010-2012: III/9/f -Total; SF-SAC 2013-2015: III/6/d -Total; SF-SAC 2016-2018: II/1/e- Total; SF-SAC 2019-2021: II/1/e - Total; SF-SAC 2022: II/1/e - Total Census mapping: GENERAL, TOTFEDEXPEND" -type_of_entity = "Census mapping: GENERAL, TYPEOFENTITY" -type_report_financial_statements = "Data sources: SF-SAC 1997-2000: II/1; SF-SAC 2001-2003: II/1; SF-SAC 2004-2007: II/1; SF-SAC 2008-2009: II/1; SF-SAC 2010-2012: II/1; SF-SAC 2013-2015: II/1; SF-SAC 2016-2018: III/2/a/i; SF-SAC 2019-2021: III/2/a; SF-SAC 2022: III/2/a Census mapping: GENERAL, TYPEREPORT_FS" -type_report_special_purpose_framework = "Data sources: SF-SAC 2016-2018: III/2/a/iv; SF-SAC 2019-2021: III/2/a/iii; SF-SAC 2022: III/2/a/iii Census mapping: GENERAL, TYPEREPORT_SP_FRAMEWORK" -uei_general = "Data sources: SF-SAC 2022: I/4/g Census mapping: GENERAL, UEI" -uei_ueiinfo = "Data sources: SF-SAC 2004-2007: I/5/f; SF-SAC 2008-2009: I/4/f; SF-SAC 2010-2012: I/4/f; SF-SAC 2013-2015: I/4/f; SF-SAC 2016-2018: I/4/f; SF-SAC 2019-2021: I/4/f; SF-SAC 2022: I/4/i Census mapping: UEI INFO, UEI" -zip_code = "Data sources: SF-SAC 1997-2000: I/6/b; SF-SAC 2001-2003: I/6/b; SF-SAC 2004-2007: I/6/b; SF-SAC 2008-2009: I/5/b; SF-SAC 2010-2012: I/5/b; SF-SAC 2013-2015: I/5/b; SF-SAC 2016-2018: I/5/b; SF-SAC 2019-2021: I/5/b; SF-SAC 2022: I/5/b Census mapping: GENERAL, ZIPCODE" -auditor_ein = "Data sources: SF-SAC 2013-2015: I/6/b; SF-SAC 2016-2018: I/6/b; SF-SAC 2019-2021: I/6/b; SF-SAC 2022: I/6/b Census mapping: GENERAL, AUDITOR_EIN (AND) Data sources: SF-SAC 2013-2015: I/8/b; SF-SAC 2016-2018: I/8/b; SF-SAC 2019-2021: I/6/h/ii; SF-SAC 2022: I/6/h/ii Census mapping: MULTIPLE CPAS INFO, CPAEIN" -seqnum = ( - "Census mapping: GENERAL, SEQNUM (AND) Census mapping: MULTIPLE CPAS INFO, SEQNUM" -) -content = "Data sources: SF-SAC 2019-2021: II/2; SF-SAC 2022: II/2 Census mapping: NOTES, CONTENT" -fac_id = "Census mapping: NOTES, ID" -note_index = "Census mapping: NOTES, NOTE_INDEX" -report_id = "Census mapping: NOTES, REPORTID" -title = "Data sources: SF-SAC 2019-2021: II/2; SF-SAC 2022: II/2 Census mapping: NOTES, TITLE" -type_id = "Census mapping: NOTES, TYPE_ID" -version = "Census mapping: NOTES, VERSION" -passthrough_id = "Data sources: SF-SAC 2016-2018: II/1/m; SF-SAC 2019-2021: II/1/m; SF-SAC 2022: II/1/m Census mapping: PASSTHROUGH, PASSTHROUGHID" -passthrough_name = "Data sources: SF-SAC 2016-2018: II/1/l; SF-SAC 2019-2021: II/1/l; SF-SAC 2022: II/1/l Census mapping: PASSTHROUGH, PASSTHROUGHNAME" -audit_info = "Census mapping: REVISIONS, AUDITINFO" -auditinfo_explain = "Census mapping: REVISIONS, AUDITINFO_EXPLAIN" -cap = "Census mapping: REVISIONS, CAP" -cap_explain = "Census mapping: REVISIONS, CAP_EXPLAIN" -elec_report_revision_id = "Census mapping: REVISIONS, ELECRPTREVISIONID" -federal_awards = "Census mapping: REVISIONS, FEDERALAWARDS" -federal_awards_explain = "Census mapping: REVISIONS, FEDERALAWARDS_EXPLAIN" -findings = "Census mapping: CFDA INFO, FINDINGS" -findings_revisions = "Census mapping: REVISIONS, FINDINGS" -findings_explain = "Census mapping: REVISIONS, FINDINGS_EXPLAIN" -findings_text = "Census mapping: REVISIONS, FINDINGSTEXT" -findings_text_explain = "Census mapping: REVISIONS, FINDINGSTEXT_EXPLAIN" -general_info = "Census mapping: REVISIONS, GENINFO" -general_info_explain = "Census mapping: REVISIONS, GENINFO_EXPLAIN" -notes_to_sefa = "Census mapping: REVISIONS, NOTESTOSEFA" -notes_to_sefa_explain = "Census mapping: REVISIONS, NOTESTOSEFA_EXPLAIN" -other = "Census mapping: REVISIONS, OTHER" -other_explain = "Census mapping: REVISIONS, OTHER_EXPLAIN" -uei_seq_num = "Census mapping: UEI INFO, UEISEQNUM" -# adding manually -cognizant_agency_over = "Census mapping: GENERAL, COG_OVER" -date_firewall = "Census mapping: GENERAL, DATEFIREWALL" -previous_date_firewall = "Census mapping: GENERAL, PREVIOUSDATEFIREWALL" -questioned_costs_FederalAward = "Census mapping: CFDA INFO, QCOSTS2" diff --git a/backend/data_distro/management/commands/add_pdfs.py b/backend/data_distro/management/commands/add_pdfs.py deleted file mode 100644 index eb711023e..000000000 --- a/backend/data_distro/management/commands/add_pdfs.py +++ /dev/null @@ -1,150 +0,0 @@ -import os -import logging -import boto3 -from botocore.exceptions import ClientError - -from django.core.management.base import BaseCommand -from django.conf import settings - -from data_distro import models as mods - -logger = logging.getLogger(__name__) - - -class Command(BaseCommand): - help = """ - This only works for 2007 or earlier. - - Moves PDFs from source bucket to the bucket in the env. - - To run the script, add the Census AWS values to the environment. - In cloud.gov use UUPS, you will need to include the existing env in - the commands https://cli.cloudfoundry.org/en-US/v6/update-user-provided-service.html. - - Then, you can run the script by pushing a task runner to cloud.gov and giving ith the add_pdfs - management command. - - Update public_doc_query once we know how to determine the mapping of records to PDFs. - Create a private_doc_query() and call add_to_private() for non-public PDFs. - """ - - def handle(self, *args, **kwargs): - public_doc_records = public_doc_query() - for doc in public_doc_records: - pdf_name = create_name(doc) - # We don't want to delete the original so we are not moving and we can't rename and copy at the same time - try: - temp_name = grab_doc(pdf_name) - add_me = True - except ClientError: - add_me = False - logger.error(f"DOWNLOAD FAILED: {pdf_name}") - - if add_me is True: - url = add_to_public( - pdf_name, doc["audit_year"], doc["dbkey"], temp_name - ) - add_to_model(doc["id"], url) - - -def create_name(doc): - if "report_id" in doc: - pdf_name = "{0}{1}.pdf".format(doc["version_number"], doc["version_number"]) - else: - pdf_name = "{0}{1}.pdf".format(doc["dbkey"], doc["audit_year"]) - - return pdf_name - - -def public_doc_query(): - """This only works for 2007 or earlier""" - kwargs = { - "years": [ - "1997", - "1998", - "1999", - "2000", - "2001", - "2002", - "2003", - "2004", - "2005", - "2006", - "2007", - ], - "is_public": True, - "pdf_urls": [None, []], - } - older_records = ( - mods.General.objects.filter(**kwargs).values("audit_year", "dbkey", "id").dict() - ) - - """This should work for 2008 or later, but we don't have the data""" - # kwargs = { - # "years":[ - # "2008", "2009","2010","2011","2012", - # "2013","2014","2015", "2016", "2017", - # "2018", "2019", "2020","2021", "2022", - # "2023", - # ], - # "is_public": True, - # "pdf_urls": [None, []] - # } - # newer_records = mods.General.objects.filter(**kwargs).values('audit_year', 'dbkey', 'id', 'version', 'report_id').dict() - # records = older_records | newer_records - # - # return records.dict() - - return older_records.dict() - - -def grab_doc(pdf_name): - temp_name = "data_distro/data_to_load/{}".format(pdf_name) - census_bucket = settings.AWS_CENSUS_STORAGE_BUCKET_NAME - AWS_S3_CREDS = { - "aws_access_key_id": settings.AWS_CENSUS_ACCESS_KEY_ID, - "aws_secret_access_key": settings.AWS_CENSUS_SECRET_ACCESS_KEY, - "region_name": settings.AWS_S3_CENSUS_REGION_NAME, - } - s3 = boto3.client("s3", **AWS_S3_CREDS) - s3.download_file(census_bucket, pdf_name, temp_name) - - return temp_name - - -def add_to_public(pdf_name, audit_year, dbkey, temp_name): - public_bucket = settings.AWS_STORAGE_BUCKET_NAME - AWS_S3_CREDS = { - "aws_access_key_id": settings.AWS_ACCESS_KEY_ID, - "aws_secret_access_key": settings.AWS_SECRET_ACCESS_KEY, - "region_name": settings.AWS_S3_REGION_NAME, - } - s3_client = boto3.client("s3", **AWS_S3_CREDS) - new_file_name = f"collections/{audit_year}/pdf/{dbkey}-{pdf_name}" - s3_client.upload_file(temp_name, public_bucket, new_file_name) - os.remove(new_file_name) - - url = f"https://{public_bucket}.s3.{settings.AWS_S3_REGION_NAME}.amazonaws.com/{new_file_name}" - return url - - -def add_to_private(pdf_name, audit_year, dbkey, temp_name): - private_bucket = settings.AWS_PRIVATE_STORAGE_BUCKET_NAME - AWS_S3_CREDS = { - "aws_access_key_id": settings.AWS_PRIVATE_ACCESS_KEY_ID, - "aws_secret_access_key": settings.AWS_PRIVATE_SECRET_ACCESS_KEY, - "region_name": settings.AWS_S3_PRIVATE_REGION_NAME, - } - s3_client = boto3.client("s3", **AWS_S3_CREDS) - new_file_name = f"collections/{audit_year}/pdf/{dbkey}-{pdf_name}" - s3_client.upload_file(temp_name, private_bucket, new_file_name) - os.remove(new_file_name) - - url = f"https://{private_bucket}.s3.{settings.AWS_S3_PRIVATE_REGION_NAME}.amazonaws.com/{new_file_name}" - return url - - -def add_to_model(id, url): - record = mods.General.objects.get(id=id) - record.pdf_urls = [url] - record.save() diff --git a/backend/data_distro/management/commands/create_distro_api.py b/backend/data_distro/management/commands/create_distro_api.py deleted file mode 100644 index ea7ec80ce..000000000 --- a/backend/data_distro/management/commands/create_distro_api.py +++ /dev/null @@ -1,37 +0,0 @@ -from django.core.management.base import BaseCommand - -from psycopg2._psycopg import connection - -from django.conf import settings - - -class Command(BaseCommand): - help = """ - Runs sql scripts in data_distro/api_views to recreate views for the postgrest API. - - Use -f to specify one file to recreate views in that file. - - """ - - def add_arguments(self, parser): - parser.add_argument("-f", "--file", type=str, help="file name") - - def handle(self, *args, **kwargs): - if kwargs["file"] is not None: - files = [kwargs["file"]] - else: - files = ["basic_views.sql", "findings.sql", "general.sql"] - - cloudgov = ["DEVELOPMENT", "PREVIEW", "STAGING", "PRODUCTION"] - if settings.ENVIRONMENT not in cloudgov: - conn_string = "dbname='postgres' user='postgres' port='5432' host='db'" - else: - conn_string = settings.CONNECTION_STRING - - for filename in files: - conn = connection(conn_string) - conn.autocommit = True - with conn.cursor() as curs: - filename = f"data_distro/api_views/{filename}" - sql = open(filename, "r").read() - curs.execute(sql) diff --git a/backend/data_distro/management/commands/create_docs.py b/backend/data_distro/management/commands/create_docs.py deleted file mode 100644 index 1f75621f2..000000000 --- a/backend/data_distro/management/commands/create_docs.py +++ /dev/null @@ -1,161 +0,0 @@ -import csv -import inspect - -from psycopg2 import sql -from psycopg2._psycopg import connection - -from django.apps import apps -from django.conf import settings -from django.core.management.base import BaseCommand - - -class Command(BaseCommand): - help = """ - Create a csv dictionary in data_distro/mappings/FAC_data_dict.csv. - Adds column comments to sql. - """ - - def handle(self, *args, **kwargs): - distro_classes = apps.all_models["data_distro"] - definations = map_models(distro_classes) - create_csv(definations) - create_sql_comments(distro_classes, definations) - - -def map_models(distro_classes): - definations = [] - for model in distro_classes: - mod_class = distro_classes[model] - mod_name = mod_class.__name__ - fields = mod_class._meta.get_fields() - for fac_field in fields: - field_name = fac_field.name - try: - help_text = fac_field.help_text - except AttributeError: - help_text = None - - try: - verbose_name = fac_field.verbose_name - except AttributeError: - verbose_name = None - - try: - max_len = str(fac_field.max_length) - except AttributeError: - max_len = None - if max_len not in [None, "None"]: - field_type = str(fac_field.get_internal_type()) + " Limit: " + max_len - else: - field_type = fac_field.get_internal_type() - - field_def = { - "Model name": mod_name, - "Field name": field_name, - "Description": verbose_name, - "Data Source": help_text, - "Validation": field_type, - } - definations.append(field_def) - - return definations - - -def create_csv(definations): - with open("data_distro/mappings/FAC_data_dict.csv", "w", newline="") as csvfile: - fieldnames = [ - "Model name", - "Field name", - "Description", - "Data Source", - "Validation", - ] - writer = csv.DictWriter(csvfile, fieldnames=fieldnames) - writer.writeheader() - for line in definations: - writer.writerow(line) - - -def create_sql_comments(distro_classes, definations): - if settings.ENVIRONMENT not in ["DEVELOPMENT", "PREVIEW", "STAGING", "PRODUCTION"]: - conn_string = "dbname='postgres' user='postgres' port='5432' host='db'" - else: - conn_string = settings.CONNECTION_STRING - - api_views = { - "Auditee": "api.vw_auditee", - "Auditor": "api.vw_auditor", - "CapText": "api.vw_cap_text", - "FederalAward": "api.vw_federal_award", - "Finding": "api.vw_findings", - "FindingText": "api.vw_findings_text", - "General": "api.vw_general", - "Note": "api.vw_note", - "Passthrough": "api.vw_passthrough", - "Revision": "api.vw_revision", - } - - # Add docs to tables and views - for model in distro_classes: - mod_class = distro_classes[model] - model_name = mod_class.__name__ - doc = inspect.getdoc(mod_class) - - conn = connection(conn_string) - conn.autocommit = True - with conn.cursor() as curs: - curs.execute( - sql.SQL("COMMENT ON TABLE {} is %s;").format( - sql.Identifier("data_distro_{0}".format(model_name.lower())), - ), - (doc,), - ) - if model_name in api_views: - view = api_views[model_name] - curs.execute( - sql.SQL("COMMENT ON VIEW {} is %s;".format(view)), - (doc,), - ) - - # Add docs to fields - for define_txt in definations: - model_name = define_txt["Model name"] - if define_txt["Description"] is not None: - field_type = define_txt["Validation"] - if field_type not in ["ForeignKey", "ManyToManyField"]: - full_defination = str(define_txt["Description"]) - if define_txt["Data Source"] is not None: - full_defination = " ".join( - [ - full_defination, - str(define_txt["Data Source"]), - ] - ) - # add def to table - conn = connection(conn_string) - conn.autocommit = True - with conn.cursor() as curs: - curs.execute( - # These should be safe strings, but I am going to treat them with caution anyway. - sql.SQL("COMMENT ON COLUMN {}.{} is %s;").format( - sql.Identifier( - "data_distro_{0}".format(model_name.lower()) - ), - sql.Identifier(define_txt["Field name"]), - ), - (full_defination,), - ) - # add def to view - if model_name in api_views: - view = api_views[model_name] - conn = connection(conn_string) - conn.autocommit = True - with conn.cursor() as curs: - curs.execute( - # These should be safe strings, but I am going to treat them with caution anyway. - sql.SQL("COMMENT ON COLUMN {}.{} is %s;").format( - sql.SQL(view), - sql.Identifier(define_txt["Field name"]), - ), - (full_defination,), - ) diff --git a/backend/data_distro/management/commands/create_upload_mapping.py b/backend/data_distro/management/commands/create_upload_mapping.py deleted file mode 100644 index d85ffa6b7..000000000 --- a/backend/data_distro/management/commands/create_upload_mapping.py +++ /dev/null @@ -1,112 +0,0 @@ -import json -import logging - -from django.apps import apps -from django.core.management.base import BaseCommand - -from data_distro.mappings.upload_dictonaries import ( - tables, - file_to_table_name_mapping, -) - - -logger = logging.getLogger(__name__) - - -class Command(BaseCommand): - help = """ - Crates a mapping that can be used by public_data_loader to map data from the downloads - to the models, using the documentation in the models. - - 1) Make sure things like new_fields and table mappings are up to date - 2) Check the outputs to make sure that things make sense. - - You will need to do a manual check on the upload mapping, If a data column needs - to go to more than one model, that needs to be addressed in the upload script. For - example, AUDITOR_EIN has the same info reported on two of the upload tables, so you - only need to upload it once. - - Output will appear in data_distro/mappings/upload_mapping.json - - sample_upload_mapping_structure = { - "table file name": { - "column_name": ["model_name", "django_field_name"], - "column_name2": ["model_name", "django_field_name2"], - } - } - - See docs/data_loaing.md for more details. - """ - - def handle(self, *args, **kwargs): - add_realtional = [] - blank_help = [] - leftovers = [] - # preload tables into a dict - upload_mapping = {} - for table_title in tables: - upload_mapping[table_title] = {} - - new_fields = [ - # django generates - "id", - # I added - "is_public", - "data_source", - "create_date", - "modified_date", - "pdf_urls" - # relational links. These will change if you move fields around - "general", - "findings_text", - ] - - leftovers = [] - - distro_classes = apps.all_models["data_distro"] - # this should be enough to make a key - for model in distro_classes: - mod_class = distro_classes[model] - mod_name = mod_class.__name__ - fields = mod_class._meta.get_fields() - for field in fields: - f_name = field.name - try: - help_text = field.help_text - except AttributeError: - help_text = "" - add_realtional.append([f_name, model]) - new_fields.append(f_name) - if help_text != "": - help_text = field.help_text - sources = help_text.split(" (AND) ") - for source in sources: - cen_source = source.split("Census mapping: ", 1)[1] - table_doc_name = cen_source.split(", ", 1)[0] - column_name = cen_source.split(", ", 1)[1] - table_file_name = file_to_table_name_mapping[ - table_doc_name.upper().replace(" ", "") - ] - upload_mapping[table_file_name][column_name] = [ - mod_name, - f_name, - ] - else: - if f_name not in new_fields: - blank_help.append(f_name) - else: - # just a check - leftovers.append(f_name) - - if len(blank_help) > 0: - logger.warn(f"~ WARNING ~ Check blank fields: blank_help={blank_help}") - - # this should be relational fields - logger.warn( - f"Fields with no help (relational and array models that need some custom logic for loading): add_realtional={add_realtional}" - ) - - logger.warn(f"Data not in mapping: {leftovers}") - - with open("data_distro/mappings/new_upload_mapping.json", "w") as outfile: - json.dump(upload_mapping, outfile, indent=2) diff --git a/backend/data_distro/management/commands/handle_errors.py b/backend/data_distro/management/commands/handle_errors.py deleted file mode 100644 index 8cc9601e5..000000000 --- a/backend/data_distro/management/commands/handle_errors.py +++ /dev/null @@ -1,147 +0,0 @@ -"""Functions that the public data loader uses to handle errors""" - -import logging -import json -import os - -from datetime import datetime - -logger = logging.getLogger(__name__) - - -def set_up_error_files(): - progress_files = ( - "data_distro/data_to_load/run_logs/Lines_in_progress.json", - "data_distro/data_to_load/run_logs/Errors_in_progress.json", - "data_distro/data_to_load/run_logs/Exceptions_in_progress.json", - ) - for file_name in progress_files: - file = open(file_name, "w") - file.close() - - -def make_option_string(**kwargs): - if kwargs["file"] is not None: - options = kwargs["file"][:-4].replace("/", "_") - elif kwargs["year"] is not None: - options = kwargs["year"] - else: - options = "all" - return options - - -def finish_error_files(date_stamp, options): - """Rename with date stamp or delete if empty""" - - progress_files = ( - "data_distro/data_to_load/run_logs/Lines_in_progress.json", - "data_distro/data_to_load/run_logs/Errors_in_progress.json", - "data_distro/data_to_load/run_logs/Exceptions_in_progress.json", - ) - new_names = ( - f"data_distro/data_to_load/run_logs/Lines_{options}_{date_stamp}.json", - f"data_distro/data_to_load/run_logs/Errors_{options}_{date_stamp}.json", - f"data_distro/data_to_load/run_logs/Exceptions_{options}_{date_stamp}.json", - ) - - error_files = [] - for progress, new in zip(progress_files, new_names): - if os.path.getsize(progress) == 0: - os.remove(progress) - else: - os.rename(progress, new) - error_files.append(new) - - return error_files - - -def add_to_file(file_name, paylod): - """Keeping track of errors in a file as the script runs""" - data = [] - with open(file_name, "r+") as outfile: - if os.path.getsize(file_name) != 0: - data = json.loads(outfile.read()) - if data is None: - data = [] - data.append(paylod) - outfile.seek(0) - json.dump(data, outfile, indent=2, default=str) - outfile.truncate() - - -def handle_badlines(bad_line: list[str]) -> list[str] | None: - """Making sure all data is accounted for""" - - logger.warn( - f""" - ---------------------BAD LINE--------------------- - {bad_line} - ------------------------------------------------- - """ - ) - - line_file = "data_distro/data_to_load/run_logs/Lines_in_progress.json" - add_to_file(line_file, bad_line) - - return None - - -def handle_exceptions(table, file_path, instance_dict, error_trace): - """Add detailed explanations to the logs and keep track of each type of error""" - - logger.warn( - f""" - ---------------------PROBLEM--------------------- - {table}, {file_path} - ---- - {instance_dict} - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - {error_trace} - ------------------------------------------------- - """ - ) - - error_file = "data_distro/data_to_load/run_logs/Errors_in_progress.json" - add_to_file(error_file, {table: instance_dict}) - - exception_file = "data_distro/data_to_load/run_logs/Exceptions_in_progress.json" - add_to_file(exception_file, error_trace) - - -def log_results(expected_objects_dict, kwargs): - """This is helpful for debugging""" - date_stamp = str(datetime.now())[:-7] - options = make_option_string(**kwargs) - errors = finish_error_files(date_stamp, options) - - payload = { - "expected_objects_dict": expected_objects_dict, - "error_logs": errors, - } - - if len(errors) > 0: - logger.warning( - f""" - ############################### - Expected Objects: {expected_objects_dict} - ############################### - See error logs: {errors} - ############################### - ❌ Check run_logs for error details""" - ) - - else: - logger.warning( - f""" - ############################### - Expected Objects: {expected_objects_dict} - ############################### - Successful upload 🏆""" - ) - - with open( - f"data_distro/data_to_load/run_logs/Results_{options}_{date_stamp}.json", "w" - ) as outfile: - json.dump(payload, outfile) - - return date_stamp diff --git a/backend/data_distro/management/commands/link_data.py b/backend/data_distro/management/commands/link_data.py deleted file mode 100644 index 4fc8fc144..000000000 --- a/backend/data_distro/management/commands/link_data.py +++ /dev/null @@ -1,175 +0,0 @@ -"""Functions that the public data loader uses to build relationships between models """ - -import traceback - -from data_distro import models as mods -from data_distro.management.commands.handle_errors import handle_exceptions - - -def link_objects_findings(objects_dict): - """Adds relationships between finding and finding text""" - if objects_dict is not None and "Finding" in objects_dict: - findings_instance = objects_dict["Finding"] - finding_ref_nums = findings_instance.finding_ref_number - dbkey = str(findings_instance.dbkey) - audit_year = findings_instance.audit_year - - # findings text to finding - findings_text = mods.FindingText.objects.filter( - dbkey=dbkey, - audit_year=audit_year, - finding_ref_number=finding_ref_nums, - ) - for finding_text in findings_text: - findings_instance.findings_text.add(finding_text) - findings_instance.save() - - # finding to award, there should just be one but I don't want a hard fail if it can't be found - awards_instances = mods.FederalAward.objects.filter( - dbkey=dbkey, - audit_year=audit_year, - audit_id=findings_instance.audit_id, - ) - for awards_instance in awards_instances: - awards_instance.findings.add(findings_instance) - awards_instance.save() - - # finding to general is taken care of in general processing - - -def link_objects_cpas(objects_dict, row): - """Adds relationships between the general table and auditors for the cpas table""" - auditor_instance = objects_dict["Auditor"] - dbkey = row["DBKEY"] - audit_year = row["AUDITYEAR"] - gen_instance = mods.General.objects.get(dbkey=dbkey, audit_year=audit_year) - gen_instance.secondary_auditors.add(auditor_instance) - gen_instance.save() - - -def link_objects_general(objects_dict): - """Adds relationships between the General model and other models""" - # General model instance - instance = objects_dict["General"] - dbkey = instance.dbkey - audit_year = instance.audit_year - - # Models that link to general - - auditee = objects_dict["Auditee"] - instance.auditee = auditee - - auditor = objects_dict["Auditor"] - instance.primary_auditor = auditor - - fed_awards = mods.FederalAward.objects.filter(dbkey=dbkey, audit_year=audit_year) - for award in fed_awards: - instance.federal_awards.add(award) - - findings = mods.Finding.objects.filter(dbkey=dbkey, audit_year=audit_year) - for finding in findings: - instance.findings.add(finding) - - findings_text = mods.FindingText.objects.filter(dbkey=dbkey, audit_year=audit_year) - for finding_text in findings_text: - instance.findings_text.add(finding_text) - - cap_texts = mods.CapText.objects.filter(dbkey=dbkey, audit_year=audit_year) - for cap_text in cap_texts: - instance.cap_text.add(cap_text) - - notes = mods.Note.objects.filter(dbkey=dbkey, audit_year=audit_year) - for note in notes: - instance.notes.add(note) - - revisions = mods.Revision.objects.filter(dbkey=dbkey, audit_year=audit_year) - for revision in revisions: - instance.revision = revision - - passthroughs = mods.Passthrough.objects.filter(dbkey=dbkey, audit_year=audit_year) - for passthrough in passthroughs: - instance.passthrough.add(passthrough) - - instance.save() - - -def link_lists(csv_dict, payload_name): - """ - These were their own data model but we are going to use an array field. - This adds the fields in the right order. It should run after general. - """ - for row in csv_dict: - try: - dbkey = row["DBKEY"] - audit_year = row["AUDITYEAR"] - payload = row[payload_name] - general_instance = mods.General.objects.filter( - dbkey=dbkey, audit_year=audit_year - )[0] - auditee_instance = general_instance.auditee - - if payload_name == "DUNS": - existing_list = auditee_instance.duns_list - if payload not in existing_list: - existing_list.append(int(payload)) - auditee_instance.duns_list = existing_list - auditee_instance.save() - elif payload_name == "UEI": - existing_list = auditee_instance.uei_list - if payload not in existing_list: - existing_list.append(str(payload)) - auditee_instance.uei_list = existing_list - auditee_instance.save() - else: - existing_list = auditee_instance.ein_list - if payload not in existing_list: - existing_list.append(int(payload)) - auditee_instance.ein_list = existing_list - auditee_instance.save() - except Exception: - handle_exceptions( - str(payload_name), - None, - str(row), - traceback.format_exc(), - ) - - -def link_agency(csv_dict, file_name): - """ - The agency table populates FederalAward agency_prior_findings_list. - """ - for row in csv_dict: - try: - dbkey = row["DBKEY"] - audit_year = row["AUDITYEAR"] - agency = row["AGENCY"] - ein = row["EIN"] - - # I am not sure if only one or multiples can be returned - award_instances = mods.FederalAward.objects.filter( - dbkey=dbkey, - audit_year=audit_year, - cpa_ein=ein, - ) - - for award_instance in award_instances: - agency_list = award_instance.agency_prior_findings_list - - # 00 had been representing none, we can just use an empty list instead - if agency_list is None: - award_instance.agency_prior_findings_list = [] - agency_list = [] - - if agency not in agency_list and agency != "00": - agency_list.append(agency) - award_instance.agency_prior_findings_list = agency_list - award_instance.save() - - except Exception: - handle_exceptions( - "agency", - None, - str(row), - traceback.format_exc(), - ) diff --git a/backend/data_distro/management/commands/load_files.py b/backend/data_distro/management/commands/load_files.py deleted file mode 100644 index dc3094df7..000000000 --- a/backend/data_distro/management/commands/load_files.py +++ /dev/null @@ -1,221 +0,0 @@ -import os -from pandas import read_csv -import logging - -from data_distro.management.commands.process_data import ( - transform_and_save, - transform_and_save_w_exceptions, -) -from data_distro.models import General -from data_distro.management.commands.link_data import ( - link_objects_findings, - link_objects_cpas, - link_objects_general, - link_lists, - link_agency, -) -from data_distro.management.commands.parse_config import ( - panda_config, - panda_config_formatted, - panda_config_base, -) - - -logger = logging.getLogger(__name__) - - -def load_generic( - row, - csv_dict, - table, - file_path, -): - objects_dict = transform_and_save( - row, - csv_dict, - table, - file_path, - ) - if table == "findings": - link_objects_findings(objects_dict) - - -def load_cfda( - row, - csv_dict, - table, - file_path, -): - transform_and_save_w_exceptions( - row, - csv_dict, - table, - file_path, - ) - - -def load_cpas( - row, - csv_dict, - table, - file_path, -): - objects_dict = transform_and_save_w_exceptions( - row, - csv_dict, - table, - file_path, - ) - link_objects_cpas(objects_dict, row) - - -def load_general( - row, - csv_dict, - table, - file_path, -): - # Since we can add additional information later, like additional eins, agencies, and auditors, we don't want to do a find or create call on this data. I am adding an upfront check. - try: - General.objects.get(dbkey=row["DBKEY"], audit_year=row["AUDITYEAR"]) - loaded = True - except General.DoesNotExist: - loaded = False - - if loaded is False: - for row in csv_dict: - objects_dict = transform_and_save_w_exceptions( - row, - csv_dict, - "gen", - file_path, - ) - - link_objects_general(objects_dict) - - -def process_table(table, csv_dict, file_path, expected_object_count): - """Just to speed things up check things per table and not per row or element""" - logger.warning(f"------------Table: {table}--------------") - if table not in ["gen", "general", "cpas", "cfda"]: - for row in csv_dict: - load_generic( - row, - csv_dict, - table, - file_path, - ) - elif table == "cpas": - for row in csv_dict: - load_cpas( - row, - csv_dict, - table, - file_path, - ) - elif table == "cfda": - for row in csv_dict: - load_cfda( - row, - csv_dict, - table, - file_path, - ) - else: - # Some years the table is called gen and sometimes general - for row in csv_dict: - load_general( - row, - csv_dict, - "gen", - file_path, - ) - - logger.warning( - "finished {0} chunk - last row DBKEY {1}, objects count = {2}".format( - table, row["DBKEY"], expected_object_count - ) - ) - - -def load_files(load_file_names): - """Load files into django models""" - expected_objects_dict = {} - - for file in load_file_names: - file_path = f"data_distro/data_to_load/{file}" - file_name = file_path.replace("data_distro/data_to_load/", "") - # Remove numbers, there are years in the file names, remove file extension - table = "".join([i for i in file_name if not i.isdigit()])[:-4] - # Remove for testing - table = table.replace("test_data/", "") - logger.warning(f"Starting to load {file_name}...") - expected_object_count = 0 - - if "formatted" in file_path: - # These need a quote char - config = panda_config_formatted - else: - # These do better ignoring the quote char - config = panda_config - - for i, chunk in enumerate(read_csv(file_path, **config)): - csv_dict = chunk.to_dict(orient="records") - expected_object_count += len(csv_dict) - process_table(table, csv_dict, file_path, expected_object_count) - - expected_objects_dict[file_name] = expected_object_count - logger.warning( - f"Finished {file_name}, {expected_object_count} expected objects" - ) - - return expected_objects_dict - - -def load_lists(file): - """ - These were their own data model but we are going to use an array field. - This adds the fields in the right order. It should run after general. - """ - file_path = f"data_distro/data_to_load/{file}" - if "duns" in file: - sort_by = "DUNSEQNUM" - payload_name = "DUNS" - elif "ueis" in file: - sort_by = "UEISEQNUM" - payload_name = "UEI" - else: - sort_by = "EINSEQNUM" - payload_name = "EIN" - - if os.path.isfile(file_path) is False: - # Most years don't have UEI. This will gracefully fail if the file is not there. - return {payload_name: {file_path: "not_found"}} - - logger.warning(f"------------Table: {payload_name}--------------") - - # Can't do chunks because we want to order the dataframe - data_frame = read_csv(file_path, **panda_config_base) - # This will make sure we load the lists in the right order - data_frame = data_frame.sort_values(by=sort_by, na_position="first") - csv_dict = data_frame.to_dict(orient="records") - expected_object_count = len(csv_dict) - - link_lists(csv_dict, payload_name) - - return {payload_name: expected_object_count} - - -def load_agency(file_name): - """ - De-duping agency and adding as relationships - """ - logger.warning("------------Table: agency--------------") - file_path = f"data_distro/data_to_load/{file_name}" - data_frame = read_csv(file_path, **panda_config_base) - csv_dict = data_frame.to_dict(orient="records") - expected_object_count = len(csv_dict) - - link_agency(csv_dict, file_name) - - return {"agency": expected_object_count} diff --git a/backend/data_distro/management/commands/load_test_data.py b/backend/data_distro/management/commands/load_test_data.py deleted file mode 100644 index eb1d69b6b..000000000 --- a/backend/data_distro/management/commands/load_test_data.py +++ /dev/null @@ -1,66 +0,0 @@ -import os -import logging -from io import StringIO - -from django.core.management.base import BaseCommand -from django.core.management import call_command - -from data_distro.management.commands.handle_errors import make_option_string -from data_distro.management.commands.load_files import ( - load_files, - load_agency, - load_lists, -) - -logger = logging.getLogger(__name__) - - -class Command(BaseCommand): - help = """ - For local development run this to add some data_distro records so you can have some data to see and work with. - """ - - def handle(self, *args, **kwargs): - # I am using our test data so the findings file has intentional errors - - # load the rest of the files normally - files_to_load_1 = [ - "test_data/cfda.txt", - "test_data/findingstext_formatted.txt", - ] - files_to_load_2 = [ - "test_data/captext_formatted.txt", - "test_data/notes.txt", - "test_data/revisions.txt", - "test_data/passthrough.txt", - "test_data/gen.txt", - "test_data/cpas.txt", - ] - - load_files(files_to_load_1) - load_findings_with_error() - load_files(files_to_load_2) - load_lists("test_data/duns.txt") - load_lists("test_data/eins.txt") - load_lists("test_data/ueis.txt") - load_agency("test_data/agency.txt") - - logger.warn("Test data loading complete") - - -def load_findings_with_error(): - out = "" - date_stamp = call_command( - "public_data_loader", - stdout=out, - stderr=StringIO(), - **{"file": "test_data/findings.txt"}, - ) - options = make_option_string(**{"file": "test_data/findings.txt"}) - # clean up error files - os.remove(f"data_distro/data_to_load/run_logs/Results_{options}_{date_stamp}.json") - os.remove( - f"data_distro/data_to_load/run_logs/Exceptions_{options}_{date_stamp}.json" - ) - os.remove(f"data_distro/data_to_load/run_logs/Lines_{options}_{date_stamp}.json") - os.remove(f"data_distro/data_to_load/run_logs/Errors_{options}_{date_stamp}.json") diff --git a/backend/data_distro/management/commands/parse_config.py b/backend/data_distro/management/commands/parse_config.py deleted file mode 100644 index 110e002da..000000000 --- a/backend/data_distro/management/commands/parse_config.py +++ /dev/null @@ -1,21 +0,0 @@ -import csv - -from data_distro.management.commands.handle_errors import handle_badlines - - -# shared settings -panda_shared = { - "sep": "|", - "encoding": "mac-roman", - "on_bad_lines": handle_badlines, - "engine": "python", -} - -# For loading lists like eins_list, and duns_list it can't be loaded in chunks because we need to sort the data frame first to ensure the objects are added in the right order. -panda_config_base = panda_shared | {"quoting": csv.QUOTE_NONE} - -# Most tables are processed better without quotes -panda_config = panda_config_base | {"chunksize": 30000, "quoting": csv.QUOTE_NONE} - -# Formatted tables need quotes -panda_config_formatted = panda_shared | {"chunksize": 30000} diff --git a/backend/data_distro/management/commands/process_data.py b/backend/data_distro/management/commands/process_data.py deleted file mode 100644 index 1a497f8df..000000000 --- a/backend/data_distro/management/commands/process_data.py +++ /dev/null @@ -1,246 +0,0 @@ -""" -Functions that the public data loader uses to process and transform data. -These functions look at one row of data at a time and save results. -""" - -import re -import traceback -from dateutil import parser # type: ignore - -from django.apps import apps - -from data_distro.mappings.upload_mapping import upload_mapping -from data_distro.mappings.upload_dictonaries import boolean_fields -from data_distro.management.commands.handle_errors import handle_exceptions - - -def create_model_dict(): - """creates {"model_name": < model_object >}""" - model_dict = {} - distro_classes = apps.all_models["data_distro"] - - for model in distro_classes: - mod_class = distro_classes[model] - mod_name = mod_class.__name__ - model_dict[mod_name] = mod_class - - return model_dict - - -def data_transform(field_name, payload): - """Some fileld data needs to be altered in order to load it""" - if field_name in boolean_fields: - boolean_conversion = {"Y": True, "N": False} - return boolean_conversion.get(payload, None) - # This is how pandas represents nulls - elif str(payload) == "nan": - return None - # Dates are only in the gen table - elif "date" in field_name: - return parser.parse(payload) - # Gets rid of some stray characters - elif "phone" in field_name or "fax" in field_name: - payload = int(re.sub("[^0-9]", "", str(payload))) - # Some of these were getting converted to decimals - elif field_name == "dbkey": - payload = str(int(payload)) - # These should be integers, but Pandas can think they are floats - elif field_name == "cognizant_agency" or field_name == "cfda": - if type(payload) is float: - if payload.is_integer(): - payload = str(int(payload)) - - # ## debug which column is triggering an int out of range error - # if type(payload) == int: - # if payload > 2147483647: - # logger.warn("PROBLEM int~~~~~~~~~~~~~~~", field_name, payload) - # if type(payload) == int: - # if payload > 2147483647: - # logger.warn("PROBLEM float~~~~~~~~~~~~~", field_name, payload) - - return payload - - -def transform_payload(row, table, column, instances_dict): - """Map out new names from the download names""" - model_name = upload_mapping[table][column][0] - field_name = upload_mapping[table][column][1] - field_data = row[column] - - payload = data_transform(field_name, field_data) - - if model_name in instances_dict.keys(): - instances_dict[model_name][field_name] = payload - else: - instances_dict[model_name] = {} - instances_dict[model_name][field_name] = payload - - return instances_dict - - -def add_metadata(instances_dict, model_name): - """Adding a data source and prepping the list fields""" - for model_name in instances_dict.keys(): - instances_dict[model_name]["is_public"] = True - - return instances_dict - - -def add_metadata_general(instances_dict, model_name): - """Add relevant metadata for what we extract from the General table""" - for model_name in instances_dict.keys(): - instances_dict[model_name]["is_public"] = True - if model_name == "General": - instances_dict[model_name]["data_source"] = "public downloads" - - return instances_dict - - -def create_instances_dict(row, table): - """ - Save the data in the row as data ready for model instances and create a dictionary of the new instances. (For simple tables.) - sample objects_dict structure {"gen": {id: "x", name: "y"}, 'auditee': {id: "x", name: "y"}} - """ - columns = [str(key) for key in row] - instances_dict = {} - - for column in columns: - instances_dict = transform_payload(row, table, column, instances_dict) - - return instances_dict - - -def create_instances_dict_w_exceptions(row, table, skip_list): - """ - Save the data in the row as data ready for model instances and create a dictionary of the new instances. (For tables that have a lot of exceptions to the rules) - sample objects_dict structure {"gen": {id: "x", name: "y"}, 'auditee': {id: "x", name: "y"}} - """ - columns = [str(key) for key in row] - instances_dict = {} - - for column in columns: - mapping = table + column - if mapping not in skip_list: - instances_dict = transform_payload(row, table, column, instances_dict) - elif mapping == "genDUNS": - instances_dict.setdefault("Auditee", {}) - if str(row["DUNS"]) == "nan": - instances_dict["Auditee"]["duns_list"] = [] - else: - instances_dict["Auditee"]["duns_list"] = [int(row["DUNS"])] - elif mapping == "genEIN": - instances_dict.setdefault("Auditee", {}) - if str(row["EIN"]) == "nan": - instances_dict["Auditee"]["ein_list"] = [] - else: - instances_dict["Auditee"]["ein_list"] = [int(row["EIN"])] - elif mapping == "genUEI": - instances_dict.setdefault("Auditee", {}) - if str(row["UEI"]) == "nan": - instances_dict["Auditee"]["uei_list"] = [] - else: - instances_dict["Auditee"]["uei_list"] = [str(row["UEI"])] - - return instances_dict - - -def create_objects_dict(instances_dict): - """ - Save the data in the row as a model instances and create a dictionary of the new instances. - sample objects_dict structure {"gen": , 'auditee': } - """ - objects_dict = {} - model_dict = create_model_dict() - - for model_name in instances_dict: - fac_model = model_dict[model_name] - instances_dict = add_metadata(instances_dict, model_name) - new_instance, _created = fac_model.objects.get_or_create( - **instances_dict[model_name] - ) - - objects_dict[model_name] = new_instance - - return objects_dict - - -def transform_and_save( - row, - csv_dict, - table, - file_path, -): - """ - For each row in the download, it looks at the data element and skips, or passes on the data for cleaning. - Then, it adds metadata and calls the save function for the created objects. - """ - try: - instances_dict = create_instances_dict(row, table) - objects_dict = create_objects_dict(instances_dict) - return objects_dict - - except Exception: - handle_exceptions( - str(table), - str(file_path), - instances_dict, - traceback.format_exc(), - ) - return None - - -def transform_and_save_w_exceptions( - row, - csv_dict, - table, - file_path, -): - """ - For each row in the download, it looks at the data element and skips, or passes on the data for cleaning. - Then, it adds metadata and calls the save function for the created objects. - - This function has additional checks and links relevant for loading the gen and cpas tables. - """ - model_dict = create_model_dict() - try: - # These fields are not processed with the transform_payload function - skip_list = [ - # removed - "genMULTIPLEEINS", - "genMULTIPLEDUNS", - "genMULTIPLE_CPAS", - "genMULTIPLEUEIS", - # stored in 2 places - "genAUDITOR_EIN", - # processed later - "genDUNS", - "genEIN", - "genUEI", - "cpasAUDITYEAR", - "cpasDBKEY", - ] - - instances_dict = create_instances_dict_w_exceptions(row, table, skip_list) - - # Save each model instance from the instances_dict - objects_dict = {} - for model_name in instances_dict: - instances_dict = add_metadata_general(instances_dict, model_name) - fac_model = model_dict[model_name] - new_instance, _created = fac_model.objects.get_or_create( - **instances_dict[model_name] - ) - - objects_dict[model_name] = new_instance - - return objects_dict - - except Exception: - handle_exceptions( - str(table), - str(file_path), - instances_dict, - traceback.format_exc(), - ) - - return None diff --git a/backend/data_distro/management/commands/public_data_loader.py b/backend/data_distro/management/commands/public_data_loader.py deleted file mode 100644 index b362e9d57..000000000 --- a/backend/data_distro/management/commands/public_data_loader.py +++ /dev/null @@ -1,130 +0,0 @@ -""" -Download data from https://facdissem.census.gov/PublicDataDownloads.aspx -Then unzip the files and place the them in data_distro/data_to_load/ - -Load them with: manage.py public_data_loader -""" - -from django.core.management.base import BaseCommand - -from data_distro.management.commands.load_files import ( - load_files, - load_lists, - load_agency, -) -from data_distro.management.commands.handle_errors import ( - set_up_error_files, - log_results, -) - - -def lookup_files(year): - """Different years have different files. Dependent objects are created first.""" - all_files = [ - f"cfda{year}.txt", - f"findingstext_formatted{year}.txt", - f"findings{year}.txt", - f"captext_formatted{year}.txt", - f"notes{year}.txt", - f"revisions{year}.txt", - f"passthrough{year}.txt", - f"gen{year}.txt", - f"cpas{year}.txt", - ] - files_18 = [ - f"cfda{year}.txt", - f"findings{year}.txt", - f"passthrough{year}.txt", - f"gen{year}.txt", - f"cpas{year}.txt", - ] - files_13 = [ - f"cfda{year}.txt", - f"findings{year}.txt", - f"gen{year}.txt", - f"cpas{year}.txt", - ] - # I am going to see if I can save time by doing 97-09 as one task - files_09 = [ - f"cfda{year}.txt", - f"gen{year}.txt", - f"cpas{year}.txt", - ] - - if year is None: - year = "" - load_file_names = all_files - elif int(year) >= 19: - load_file_names = all_files - elif int(year) >= 18: - load_file_names = files_18 - elif int(year) >= 13: - load_file_names = files_13 - elif int(year) >= 9: - load_file_names = files_09 - else: - load_file_names = all_files - - return load_file_names - - -class Command(BaseCommand): - help = """ - Loads data from public download files into Django models. Add the data to "/backend/data_distro/data_to_load". \ - If you just want one file, you can pass the name of the file with -f. - - Requires pandas. - - See docs/data_loaing.md for more details. - """ - - def add_arguments(self, parser): - parser.add_argument("-f", "--file", type=str, help="file name") - parser.add_argument( - "-y", - "--year", - type=str, - help="Two digit year of downloads, as they appear in the file names. Leave blank for all years. Not needed if using file name kwarg.", - ) - - def handle(self, *args, **kwargs): - """ - 1) Find the files for upload - 2) Grab just the files we want - 3) Load data into Django models - 4) Add relationships - """ - set_up_error_files() - - if kwargs["file"] is not None: - load_file_names = kwargs["file"] - if ( - "duns" in load_file_names - or "ein" in load_file_names - or "ueis" in load_file_names - ): - expected_objects_dict = load_lists(load_file_names) - elif "agency" in load_file_names: - expected_objects_dict = load_agency(load_file_names) - else: - expected_objects_dict = load_files([load_file_names]) - - else: - year = kwargs["year"] - load_file_names = lookup_files(year) - objects_dict = load_files(load_file_names) - duns_objects_dict = load_lists(f"duns{year}.txt") - eins_objects_dict = load_lists(f"eins{year}.txt") - uei_objects_dict = load_lists(f"ueis{year}.txt") - agency_objects_dict = load_agency(f"agency{year}.txt") - - expected_objects_dict = ( - objects_dict - | duns_objects_dict - | eins_objects_dict - | agency_objects_dict - | uei_objects_dict - ) - - timestamp = log_results(expected_objects_dict, kwargs) - return str(timestamp) diff --git a/backend/data_distro/management/commands/test_pandas.py b/backend/data_distro/management/commands/test_pandas.py deleted file mode 100644 index 3d53b38d1..000000000 --- a/backend/data_distro/management/commands/test_pandas.py +++ /dev/null @@ -1,66 +0,0 @@ -from pandas import read_csv -import logging - -from django.core.management.base import BaseCommand - -from data_distro.management.commands.public_data_loader import lookup_files -from data_distro.management.commands.handle_errors import set_up_error_files -from data_distro.management.commands.load_files import ( - panda_config, - panda_config_formatted, -) - -logger = logging.getLogger(__name__) - - -class Command(BaseCommand): - help = """ - Find parsing errors. Run the pandas to find bad data and manually edit files. This won't catch smaller errors. - """ - - def add_arguments(self, parser): - parser.add_argument("-f", "--file", type=str, help="file name") - parser.add_argument( - "-y", - "--year", - type=str, - help="Two digit year of downloads, as they appear in the file names. Leave blank for all years. Not needed if using file name kwarg.", - ) - - def handle(self, *args, **kwargs): - if kwargs["file"] is not None: - load_file_names = [kwargs["file"]] - - else: - year = kwargs["year"] - load_file_names = lookup_files(year) - - test_panda_parsing(load_file_names) - - -def test_panda_parsing(load_file_names): - set_up_error_files() - for file in load_file_names: - file_path = f"data_distro/data_to_load/{file}" - file_name = file_path.replace("data_distro/data_to_load/", "") - # Remove numbers, there are years in the file names, remove file extension - table = "".join([i for i in file_name if not i.isdigit()])[:-4] - # Remove for testing - table = table.replace("test_data/", "") - logger.warning(f"Starting to load {file_name}...") - expected_object_count = 0 - - if "formatted" in file_path: - # These need a quote char - config = panda_config_formatted - else: - # These do better ignoring the quote char - config = panda_config - - for i, chunk in enumerate(read_csv(file_path, **config)): - csv_dict = chunk.to_dict(orient="records") - expected_object_count += len(csv_dict) - - logger.warning(f"finished {table} chunk") - - logger.warning(f"--{expected_object_count} expected {table} objects--") diff --git a/backend/data_distro/mappings/FAC_data_dict.csv b/backend/data_distro/mappings/FAC_data_dict.csv deleted file mode 100644 index 022994b2d..000000000 --- a/backend/data_distro/mappings/FAC_data_dict.csv +++ /dev/null @@ -1,246 +0,0 @@ -Model name,Field name,Description,Data Source,Validation -Agency,id,ID,,BigAutoField -Agency,agency_aln,"Assistance Listing Number (ALN), a 2-digit prefix of Federal Agency",,CharField Limit: 40 -Agency,agency_cfda,"Catalog of Federal Domestic Assistance (CFDA) code, a 2-digit prefix of Federal Agency requiring copy of audit.","Data sources: SF-SAC 1997-2000: III/5; SF-SAC 2001-2003: III/9; SF-SAC 2004-2007: III/8; SF-SAC 2008-2009: III/8; SF-SAC 2010-2012: III/8; SF-SAC 2013-2015: III/5; SF-SAC 2016-2018: III/3/d; SF-SAC 2019-2021: III/3/d; SF-SAC 2022: III/3/d Census mapping: AGENCIES, AGENCYCFDA",IntegerField -Agency,agency_name,Name of the Federal Agency requiring copy of audit report,,CharField Limit: 125 -Agency,federal_program_name,Name of Federal Program,"Data sources: SF-SAC 1997-2000: III/6/b; SF-SAC 2001-2003: III/10/c; SF-SAC 2004-2007: III/9/d; SF-SAC 2008-2009: III/9/d; SF-SAC 2010-2012: III/9/e; SF-SAC 2013-2015: III/6/c; SF-SAC 2016-2018: II/1/d; SF-SAC 2019-2021: II/1/d; SF-SAC 2022: II/1/d Census mapping: CFDA INFO, FEDERALPROGRAMNAME",CharField Limit: 300 -Agency,is_public,"True for public records, False for non-public records",,BooleanField -Auditee,general,,,ForeignKey -Auditee,id,ID,,BigAutoField -Auditee,auditee_certify_name,Name of Auditee Certifying Official,"Data sources: SF-SAC 1997-2000: I/6/g; SF-SAC 2001-2003: I/6/g; SF-SAC 2004-2007: I/6/g; SF-SAC 2008-2009: I/5/g; SF-SAC 2010-2012: I/5/g; SF-SAC 2013-2015: certifications; SF-SAC 2016-2018: certifications; SF-SAC 2019-2021: certifications; SF-SAC 2022: certifications Census mapping: GENERAL, AUDITEECERTIFYNAME",CharField Limit: 50 -Auditee,auditee_certify_title,Title of Auditee Certifying Official,"Data sources: SF-SAC 1997-2000: I/6/g; SF-SAC 2001-2003: I/6/g; SF-SAC 2004-2007: I/6/g; SF-SAC 2008-2009: I/5/g; SF-SAC 2010-2012: I/5/g; SF-SAC 2013-2015: certifications; SF-SAC 2016-2018: certifications; SF-SAC 2019-2021: certifications; SF-SAC 2022: certifications Census mapping: GENERAL, AUDITEECERTIFYTITLE",CharField Limit: 50 -Auditee,auditee_contact,Name of Auditee Contact,"Data sources: SF-SAC 1997-2000: I/6/c; SF-SAC 2001-2003: I/6/c; SF-SAC 2004-2007: I/6/c; SF-SAC 2008-2009: I/5/c; SF-SAC 2010-2012: I/5/c; SF-SAC 2013-2015: I/5/c; SF-SAC 2016-2018: I/5/c; SF-SAC 2019-2021: I/5/c; SF-SAC 2022: I/5/c Census mapping: GENERAL, AUDITEECONTACT",CharField Limit: 50 -Auditee,auditee_email,Auditee Email address,"Data sources: SF-SAC 1997-2000: I/6/f; SF-SAC 2001-2003: I/6/f; SF-SAC 2004-2007: I/6/f; SF-SAC 2008-2009: I/5/f; SF-SAC 2010-2012: I/5/f; SF-SAC 2013-2015: I/5/f; SF-SAC 2016-2018: I/5/e; SF-SAC 2019-2021: I/5/e; SF-SAC 2022: I/5/e Census mapping: GENERAL, AUDITEEEMAIL",CharField Limit: 60 -Auditee,auditee_fax,Auditee Fax Number (optional),"Data sources: SF-SAC 1997-2000: I/6/e; SF-SAC 2001-2003: I/6/e; SF-SAC 2004-2007: I/6/e; SF-SAC 2008-2009: I/5/e; SF-SAC 2010-2012: I/5/e; SF-SAC 2013-2015: I/5/e Census mapping: GENERAL, AUDITEEFAX",PositiveBigIntegerField -Auditee,auditee_name,Name of the Auditee,"Data sources: SF-SAC 1997-2000: I/6/a; SF-SAC 2001-2003: I/6/a; SF-SAC 2004-2007: I/6/a; SF-SAC 2008-2009: I/5/a; SF-SAC 2010-2012: I/5/a; SF-SAC 2013-2015: I/5/a; SF-SAC 2016-2018: I/5/a; SF-SAC 2019-2021: I/5/a; SF-SAC 2022: I/5/a Census mapping: GENERAL, AUDITEENAME",CharField Limit: 70 -Auditee,auditee_name_title,Title of Auditee Certifying Official,"Data sources: SF-SAC 1997-2000: I/6/g; SF-SAC 2001-2003: I/6/g; SF-SAC 2004-2007: I/6/g; SF-SAC 2008-2009: I/5/g; SF-SAC 2010-2012: I/5/g; SF-SAC 2013-2015: certifications; SF-SAC 2016-2018: certifications; SF-SAC 2019-2021: certifications; SF-SAC 2022: certifications Census mapping: GENERAL, AUDITEENAMETITLE",CharField Limit: 70 -Auditee,auditee_phone,Auditee Phone Number,"Data sources: SF-SAC 1997-2000: I/6/d; SF-SAC 2001-2003: I/6/d; SF-SAC 2004-2007: I/6/d; SF-SAC 2008-2009: I/5/d; SF-SAC 2010-2012: I/5/d; SF-SAC 2013-2015: I/5/d; SF-SAC 2016-2018: I/5/d; SF-SAC 2019-2021: I/5/d; SF-SAC 2022: I/5/d Census mapping: GENERAL, AUDITEEPHONE",PositiveBigIntegerField -Auditee,auditee_title,Title of Auditee Contact,"Data sources: SF-SAC 1997-2000: I/6/c; SF-SAC 2001-2003: I/6/c; SF-SAC 2004-2007: I/6/c; SF-SAC 2008-2009: I/5/c; SF-SAC 2010-2012: I/5/c; SF-SAC 2013-2015: I/5/c; SF-SAC 2016-2018: I/5/c; SF-SAC 2019-2021: I/5/c; SF-SAC 2022: I/5/c Census mapping: GENERAL, AUDITEETITLE",CharField Limit: 40 -Auditee,auditee_street1,Auditee Street Address,"Data sources: SF-SAC 1997-2000: I/6/b; SF-SAC 2001-2003: I/6/b; SF-SAC 2004-2007: I/6/b; SF-SAC 2008-2009: I/5/b; SF-SAC 2010-2012: I/5/b; SF-SAC 2013-2015: I/5/b; SF-SAC 2016-2018: I/5/b; SF-SAC 2019-2021: I/5/b; SF-SAC 2022: I/5/b Census mapping: GENERAL, STREET1",CharField Limit: 45 -Auditee,auditee_street2,Auditee Street Address,"Data sources: SF-SAC 1997-2000: I/6/b; SF-SAC 2001-2003: I/6/b; SF-SAC 2004-2007: I/6/b; SF-SAC 2008-2009: I/5/b; SF-SAC 2010-2012: I/5/b; SF-SAC 2013-2015: I/5/b; SF-SAC 2016-2018: I/5/b; SF-SAC 2019-2021: I/5/b; SF-SAC 2022: I/5/b Census mapping: GENERAL, STREET2",CharField Limit: 45 -Auditee,auditee_city,Auditee City,"Data sources: SF-SAC 1997-2000: I/6/b; SF-SAC 2001-2003: I/6/b; SF-SAC 2004-2007: I/6/b; SF-SAC 2008-2009: I/5/b; SF-SAC 2010-2012: I/5/b; SF-SAC 2013-2015: I/5/b; SF-SAC 2016-2018: I/5/b; SF-SAC 2019-2021: I/5/b; SF-SAC 2022: I/5/b Census mapping: GENERAL, CITY",CharField Limit: 30 -Auditee,auditee_state,Auditee State,"Data sources: SF-SAC 1997-2000: I/6/b; SF-SAC 2001-2003: I/6/b; SF-SAC 2004-2007: I/6/b; SF-SAC 2008-2009: I/5/b; SF-SAC 2010-2012: I/5/b; SF-SAC 2013-2015: I/5/b; SF-SAC 2016-2018: I/5/b; SF-SAC 2019-2021: I/5/b; SF-SAC 2022: I/5/b Census mapping: GENERAL, STATE",CharField Limit: 2 -Auditee,ein_list,ein list,,ArrayField -Auditee,ein_subcode,Subcode assigned to the EIN.,"Census mapping: GENERAL, EINSUBCODE",IntegerField -Auditee,auditee_zip_code,Auditee Zip Code,"Data sources: SF-SAC 1997-2000: I/6/b; SF-SAC 2001-2003: I/6/b; SF-SAC 2004-2007: I/6/b; SF-SAC 2008-2009: I/5/b; SF-SAC 2010-2012: I/5/b; SF-SAC 2013-2015: I/5/b; SF-SAC 2016-2018: I/5/b; SF-SAC 2019-2021: I/5/b; SF-SAC 2022: I/5/b Census mapping: GENERAL, ZIPCODE",CharField Limit: 12 -Auditee,duns_list,duns list,,ArrayField -Auditee,uei_list,uei list,,ArrayField -Auditee,is_public,True if appears in a public record,,BooleanField -Auditor,primary_auditor,,,ForeignKey -Auditor,secondary_auditor,,,ManyToManyField -Auditor,id,ID,,BigAutoField -Auditor,cpa_phone,CPA phone number,"Data sources: SF-SAC 1997-2000: I/7/d; SF-SAC 2001-2003: I/7/d; SF-SAC 2004-2007: I/7/d; SF-SAC 2008-2009: I/6/d; SF-SAC 2010-2012: I/6/d; SF-SAC 2013-2015: I/6/e; SF-SAC 2016-2018: I/6/e; SF-SAC 2019-2021: I/6/e; SF-SAC 2022: I/6/e Census mapping: GENERAL, CPAPHONE (AND) Data sources: SF-SAC 2008-2009: I/8/d; SF-SAC 2010-2012: I/8/d; SF-SAC 2013-2015: I/8/i; SF-SAC 2016-2018: I/8/i; SF-SAC 2019-2021: I/6/h/ix; SF-SAC 2022: I/6/h/ix Census mapping: MULTIPLE CPAS INFO, CPAPHONE",PositiveBigIntegerField -Auditor,cpa_fax,CPA fax number (optional),"Data sources: SF-SAC 1997-2000: I/7/e; SF-SAC 2001-2003: I/7/e; SF-SAC 2004-2007: I/7/e; SF-SAC 2008-2009: I/6/e; SF-SAC 2010-2012: I/6/e; SF-SAC 2013-2015: I/6/f Census mapping: GENERAL, CPAFAX (AND) Data sources: SF-SAC 2008-2009: I/8/e; SF-SAC 2010-2012: I/8/e; SF-SAC 2013-2015: I/8/j; SF-SAC 2016-2018: I/8/j Census mapping: MULTIPLE CPAS INFO, CPAFAX",PositiveBigIntegerField -Auditor,cpa_state,CPA State,"Data sources: SF-SAC 1997-2000: I/7/b; SF-SAC 2001-2003: I/7/b; SF-SAC 2004-2007: I/7/b; SF-SAC 2008-2009: I/6/b; SF-SAC 2010-2012: I/6/b; SF-SAC 2013-2015: I/6/c; SF-SAC 2016-2018: I/6/c; SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPASTATE (AND) Data sources: SF-SAC 2008-2009: I/8/b; SF-SAC 2010-2012: I/8/b; SF-SAC 2013-2015: I/8/e; SF-SAC 2016-2018: I/8/e; SF-SAC 2019-2021: I/6/h/v; SF-SAC 2022: I/6/h/v Census mapping: MULTIPLE CPAS INFO, CPASTATE",CharField Limit: 2 -Auditor,cpa_city,CPA City,"Data sources: SF-SAC 1997-2000: I/7/b; SF-SAC 2001-2003: I/7/b; SF-SAC 2004-2007: I/7/b; SF-SAC 2008-2009: I/6/b; SF-SAC 2010-2012: I/6/b; SF-SAC 2013-2015: I/6/c; SF-SAC 2016-2018: I/6/c; SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPACITY (AND) Data sources: SF-SAC 2008-2009: I/8/b; SF-SAC 2010-2012: I/8/b; SF-SAC 2013-2015: I/8/d; SF-SAC 2016-2018: I/8/d; SF-SAC 2019-2021: I/6/h/iv; SF-SAC 2022: I/6/h/iv Census mapping: MULTIPLE CPAS INFO, CPACITY",CharField Limit: 30 -Auditor,cpa_title,Title of CPA Contact,"Data sources: SF-SAC 1997-2000: I/7/c; SF-SAC 2001-2003: I/7/c; SF-SAC 2004-2007: I/7/c; SF-SAC 2008-2009: I/6/c; SF-SAC 2010-2012: I/6/c; SF-SAC 2013-2015: I/6/d; SF-SAC 2016-2018: I/6/d; SF-SAC 2019-2021: I/6/d; SF-SAC 2022: I/6/d Census mapping: GENERAL, CPATITLE (AND) Data sources: SF-SAC 2008-2009: I/8/c; SF-SAC 2010-2012: I/8/c; SF-SAC 2013-2015: I/8/h; SF-SAC 2016-2018: I/8/h; SF-SAC 2019-2021: I/6/h/viii; SF-SAC 2022: I/6/h/viii Census mapping: MULTIPLE CPAS INFO, CPATITLE",CharField Limit: 40 -Auditor,cpa_street1,CPA Street Address,"Data sources: SF-SAC 1997-2000: I/7/b; SF-SAC 2001-2003: I/7/b; SF-SAC 2004-2007: I/7/b; SF-SAC 2008-2009: I/6/b; SF-SAC 2010-2012: I/6/b; SF-SAC 2013-2015: I/6/c; SF-SAC 2016-2018: I/6/c; SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPASTREET1 (AND) Data sources: SF-SAC 2008-2009: I/8/b; SF-SAC 2010-2012: I/8/b; SF-SAC 2013-2015: I/8/c; SF-SAC 2016-2018: I/8/c; SF-SAC 2019-2021: I/6/h/iii; SF-SAC 2022: I/6/h/iii Census mapping: MULTIPLE CPAS INFO, CPASTREET1",CharField Limit: 45 -Auditor,cpa_street2,"CPA Street Address, line 2","Data sources: SF-SAC 1997-2000: I/7/b; SF-SAC 2001-2003: I/7/b; SF-SAC 2004-2007: I/7/b; SF-SAC 2008-2009: I/6/b; SF-SAC 2010-2012: I/6/b; SF-SAC 2013-2015: I/6/c; SF-SAC 2016-2018: I/6/c; SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPASTREET2",CharField Limit: 45 -Auditor,cpa_zip_code,CPA Zip Code,"Data sources: SF-SAC 1997-2000: I/7/b; SF-SAC 2001-2003: I/7/b; SF-SAC 2004-2007: I/7/b; SF-SAC 2008-2009: I/6/b; SF-SAC 2010-2012: I/6/b; SF-SAC 2013-2015: I/6/c; SF-SAC 2016-2018: I/6/c; SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPAZIPCODE (AND) Data sources: SF-SAC 2008-2009: I/8/b; SF-SAC 2010-2012: I/8/b; SF-SAC 2013-2015: I/8/f; SF-SAC 2016-2018: I/8/f; SF-SAC 2019-2021: I/6/h/vi; SF-SAC 2022: I/6/h/vi Census mapping: MULTIPLE CPAS INFO, CPAZIPCODE",CharField Limit: 12 -Auditor,cpa_country,CPA Country,"Data sources: SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPACOUNTRY",CharField Limit: 6 -Auditor,cpa_contact,Name of CPA Contact,"Data sources: SF-SAC 1997-2000: I/7/c; SF-SAC 2001-2003: I/7/c; SF-SAC 2004-2007: I/7/c; SF-SAC 2008-2009: I/6/c; SF-SAC 2010-2012: I/6/c; SF-SAC 2013-2015: I/6/d; SF-SAC 2016-2018: I/6/d; SF-SAC 2019-2021: I/6/d; SF-SAC 2022: I/6/d Census mapping: GENERAL, CPACONTACT (AND) Data sources: SF-SAC 2008-2009: I/8/c; SF-SAC 2010-2012: I/8/c; SF-SAC 2013-2015: I/8/g; SF-SAC 2016-2018: I/8/g; SF-SAC 2019-2021: I/6/h/vii; SF-SAC 2022: I/6/h/vii Census mapping: MULTIPLE CPAS INFO, CPACONTACT",CharField Limit: 50 -Auditor,cpa_email,CPA mail address (optional),"Data sources: SF-SAC 1997-2000: I/7/f; SF-SAC 2001-2003: I/7/f; SF-SAC 2004-2007: I/7/f; SF-SAC 2008-2009: I/6/f; SF-SAC 2010-2012: I/6/f; SF-SAC 2013-2015: I/6/g; SF-SAC 2016-2018: I/6/f; SF-SAC 2019-2021: I/6/f; SF-SAC 2022: I/6/f Census mapping: GENERAL, CPAEMAIL (AND) Data sources: SF-SAC 2008-2009: I/8/f; SF-SAC 2010-2012: I/8/f; SF-SAC 2013-2015: I/8/k; SF-SAC 2016-2018: I/8/k; SF-SAC 2019-2021: I/6/h/x; SF-SAC 2022: I/6/h/x Census mapping: MULTIPLE CPAS INFO, CPAEMAIL",CharField Limit: 60 -Auditor,cpa_firm_name,CPA Firm Name,"Data sources: SF-SAC 1997-2000: I/7/a; SF-SAC 2001-2003: I/7/a; SF-SAC 2004-2007: I/7/a; SF-SAC 2008-2009: I/6/a; SF-SAC 2010-2012: I/6/a; SF-SAC 2013-2015: I/6/a; SF-SAC 2016-2018: I/6/a; SF-SAC 2019-2021: I/6/a; SF-SAC 2022: I/6/a Census mapping: GENERAL, CPAFIRMNAME (AND) Data sources: SF-SAC 2008-2009: I/8/a; SF-SAC 2010-2012: I/8/a; SF-SAC 2013-2015: I/8/a; SF-SAC 2016-2018: I/8/a; SF-SAC 2019-2021: I/6/h/i; SF-SAC 2022: I/6/h/i Census mapping: MULTIPLE CPAS INFO, CPAFIRMNAME",CharField Limit: 64 -Auditor,cpa_foreign,CPA Address - if international,"Data sources: SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPAFOREIGN",CharField Limit: 200 -Auditor,cpa_ein,CPA Firm EIN (only available for audit years 2013 and beyond),"Data sources: SF-SAC 2013-2015: I/6/b; SF-SAC 2016-2018: I/6/b; SF-SAC 2019-2021: I/6/b; SF-SAC 2022: I/6/b Census mapping: GENERAL, AUDITOR_EIN (AND) Data sources: SF-SAC 2013-2015: I/8/b; SF-SAC 2016-2018: I/8/b; SF-SAC 2019-2021: I/6/h/ii; SF-SAC 2022: I/6/h/ii Census mapping: MULTIPLE CPAS INFO, CPAEIN",IntegerField -Auditor,sequence_number,Order that Auditors were reported on page 5 of SF-SAC (only for secondary_auditors),"Census mapping: GENERAL, SEQNUM (AND) Census mapping: MULTIPLE CPAS INFO, SEQNUM",IntegerField -Auditor,is_public,True if appears in a public record,,BooleanField -FindingText,finding,,,ManyToManyField -FindingText,general,,,ManyToManyField -FindingText,id,ID,,BigAutoField -FindingText,charts_tables,Indicates whether or not the text contained charts or tables that could not be entered due to formatting restrictions,"Census mapping: FINDINGSTEXT, CHARTSTABLES",BooleanField Limit: 1 -FindingText,finding_ref_number,Audit Finding Reference Number,"Data sources: SF-SAC 2019-2021: III/5/a; SF-SAC 2022: III/5/a Census mapping: FINDINGSTEXT, FINDINGREFNUMS",CharField Limit: 100 -FindingText,sequence_number,Order that the findings text was reported,"Census mapping: FINDINGSTEXT, SEQ_NUMBER",IntegerField -FindingText,text,Content of the finding text,"Data sources: SF-SAC 2019-2021: III/5/b; SF-SAC 2022: III/5/b Census mapping: FINDINGSTEXT, TEXT",TextField -FindingText,dbkey,Audit Year and DBKEY (database key) combined make up the primary key.,"Census mapping: FINDINGSTEXT, DBKEY",CharField Limit: 40 -FindingText,audit_year,Audit Year and DBKEY (database key) combined make up the primary key.,"Census mapping: FINDINGSTEXT, AUDITYEAR",CharField Limit: 40 -FindingText,is_public,"True for public records, False for non-public records",,BooleanField -Finding_findings_text,id,ID,,BigAutoField -Finding_findings_text,finding,finding,,ForeignKey -Finding_findings_text,findingtext,findingtext,,ForeignKey -Finding,federalaward,,,ManyToManyField -Finding,general,,,ManyToManyField -Finding,id,ID,,BigAutoField -Finding,finding_ref_number,Findings Reference Numbers,"Data sources: SF-SAC 2013-2015: III/7/d; SF-SAC 2016-2018: III/4/e; SF-SAC 2019-2021: III/4/e; SF-SAC 2022: III/4/e Census mapping: FINDINGS, FINDINGSREFNUMS",CharField Limit: 100 -Finding,audit_id,FAC system generated sequence number used to link to Findings data between CFDA Info and Findings,"Census mapping: FINDINGS, ELECAUDITSID",IntegerField -Finding,audit_findings_id,FAC system generated sequence number for finding,"Census mapping: FINDINGS, ELECAUDITFINDINGSID",IntegerField -Finding,prior_finding_ref_numbers,Audit finding reference numbers from the immediate prior audit,"Data sources: SF-SAC 2016-2018: III/4/n; SF-SAC 2019-2021: III/4/n; SF-SAC 2022: III/4/n Census mapping: FINDINGS, PRIORFINDINGREFNUMS",CharField Limit: 100 -Finding,modified_opinion,Modified Opinion finding,"Data sources: SF-SAC 2013-2015: III/7/f; SF-SAC 2016-2018: III/4/g; SF-SAC 2019-2021: III/4/g; SF-SAC 2022: III/4/g Census mapping: FINDINGS, MODIFIEDOPINION",BooleanField -Finding,other_non_compliance,Other Noncompliance finding,"Data sources: SF-SAC 2013-2015: III/7/g; SF-SAC 2016-2018: III/4/h; SF-SAC 2019-2021: III/4/h; SF-SAC 2022: III/4/h Census mapping: FINDINGS, OTHERNONCOMPLIANCE",BooleanField -Finding,material_weakness,Material Weakness finding,"Data sources: SF-SAC 2013-2015: III/7/h; SF-SAC 2016-2018: III/4/i; SF-SAC 2019-2021: III/4/i; SF-SAC 2022: III/4/i Census mapping: FINDINGS, MATERIALWEAKNESS",BooleanField -Finding,significant_deficiency,Significant Deficiency finding,"Data sources: SF-SAC 1997-2000: II/3; SF-SAC 2001-2003: II/3; SF-SAC 2004-2007: II/3; SF-SAC 2008-2009: II/3; SF-SAC 2010-2012: II/3; SF-SAC 2013-2015: II/3; SF-SAC 2016-2018: III/2/c; SF-SAC 2019-2021: III/2/c; SF-SAC 2022: III/2/c Census mapping: FINDINGS, SIGNIFICANTDEFICIENCY",BooleanField -Finding,other_findings,Other findings,"Data sources: SF-SAC 2013-2015: III/7/j; SF-SAC 2016-2018: III/4/k; SF-SAC 2019-2021: III/4/k; SF-SAC 2022: III/4/k Census mapping: FINDINGS, OTHERFINDINGS",BooleanField -Finding,questioned_costs,Questioned Costs,"Data sources: SF-SAC 2013-2015: III/7/k; SF-SAC 2016-2018: III/4/l; SF-SAC 2019-2021: III/4/l; SF-SAC 2022: III/4/l Census mapping: FINDINGS, QCOSTS",BooleanField -Finding,repeat_finding,Indicates whether or not the audit finding was a repeat of an audit finding in the immediate prior audit,"Data sources: SF-SAC 2016-2018: III/4/m; SF-SAC 2019-2021: III/4/m; SF-SAC 2022: III/4/m Census mapping: FINDINGS, REPEATFINDING",BooleanField -Finding,type_requirement,Type Requirement Failure,"Data sources: SF-SAC 2013-2015: III/7/e; SF-SAC 2016-2018: III/4/f; SF-SAC 2019-2021: III/4/f; SF-SAC 2022: III/4/f Census mapping: FINDINGS, TYPEREQUIREMENT",CharField Limit: 40 -Finding,audit_year,Audit Year and DBKEY (database key) combined make up the primary key.,"Census mapping: FINDINGS, AUDITYEAR",CharField Limit: 40 -Finding,dbkey,Audit Year and DBKEY (database key) combined make up the primary key.,"Census mapping: FINDINGS, DBKEY",CharField Limit: 40 -Finding,is_public,"True for public records, False for non-public records",,BooleanField -Finding,findings_text,findings text,,ManyToManyField -FederalAward_findings,id,ID,,BigAutoField -FederalAward_findings,federalaward,federalaward,,ForeignKey -FederalAward_findings,finding,finding,,ForeignKey -FederalAward,general,,,ManyToManyField -FederalAward,id,ID,,BigAutoField -FederalAward,audit_id,FAC system generated sequence number used to link to Findings data between CFDA Info and Findings,"Census mapping: CFDA INFO, ELECAUDITSID",IntegerField -FederalAward,finding_ref_numbers,Findings Reference Numbers,"Data sources: SF-SAC 1997-2000: III/7/e; SF-SAC 2001-2003: III/11/b; SF-SAC 2004-2007: III/10/b; SF-SAC 2008-2009: III/10/b; SF-SAC 2010-2012: III/10/b; SF-SAC 2013-2015: III/7/d; SF-SAC 2016-2018: III/4/e; SF-SAC 2019-2021: III/4/e; SF-SAC 2022: III/4/e Census mapping: CFDA INFO, FINDINGREFNUMS",CharField Limit: 100 -FederalAward,agency_prior_findings_list,agency prior findings list,,ArrayField -FederalAward,federal_program_name,Name of Federal Program,"Data sources: SF-SAC 1997-2000: III/6/b; SF-SAC 2001-2003: III/10/c; SF-SAC 2004-2007: III/9/d; SF-SAC 2008-2009: III/9/d; SF-SAC 2010-2012: III/9/e; SF-SAC 2013-2015: III/6/c; SF-SAC 2016-2018: II/1/d; SF-SAC 2019-2021: II/1/d; SF-SAC 2022: II/1/d Census mapping: CFDA INFO, FEDERALPROGRAMNAME",CharField Limit: 300 -FederalAward,agency_name,Name of Federal Program (auto-generated by FAC from the CFDA catalog),"Census mapping: CFDA INFO, CFDAPROGRAMNAME",CharField Limit: 300 -FederalAward,agency_cfda,Federal Agency Prefix and Extension,"Data sources: SF-SAC 1997-2000: III/6/a; SF-SAC 2001-2003: III/10/a; SF-SAC 2004-2007: III/9/a & III/9/b combined; SF-SAC 2008-2009: III/9/a & III/9/b combined; SF-SAC 2010-2012: III/9/a & III/9/b combined; SF-SAC 2013-2015: III/6/a & III/6/b combined; SF-SAC 2016-2018: II/1/a & II/1/b combined; SF-SAC 2019-2021: II/1/a & II/1/b combined; SF-SAC 2022: II/1/a & II/1/b combined Census mapping: CFDA INFO, CFDA",CharField Limit: 52 -FederalAward,award_identification,"Other data used to identify the award which is not a CFDA number (e.g., program year, contract number)","Data sources: SF-SAC 2016-2018: II/1/c; SF-SAC 2019-2021: II/1/c; SF-SAC 2022: II/1/c Census mapping: CFDA INFO, AWARDIDENTIFICATION",CharField Limit: 50 -FederalAward,cpa_ein,Primary Employer Identification Number,"Data sources: SF-SAC 2013-2015: I/6/b; SF-SAC 2016-2018: I/6/b; SF-SAC 2019-2021: I/6/b; SF-SAC 2022: I/6/b Census mapping: GENERAL, AUDITOR_EIN (AND) Data sources: SF-SAC 2013-2015: I/8/b; SF-SAC 2016-2018: I/8/b; SF-SAC 2019-2021: I/6/h/ii; SF-SAC 2022: I/6/h/ii Census mapping: MULTIPLE CPAS INFO, CPAEIN",IntegerField -FederalAward,research_and_development,Indicate whether or not the program is a Research and Development program,"Data sources: SF-SAC 2001-2003: III/10/b; SF-SAC 2004-2007: III/9/c; SF-SAC 2008-2009: III/9/c; SF-SAC 2010-2012: III/9/c; SF-SAC 2013-2015: III/6/e Census mapping: CFDA INFO, RD",BooleanField -FederalAward,loans,Indicate whether or not the program is a Loan or Loan Guarantee (only available for audit years 2013 and beyond),"Data sources: SF-SAC 2013-2015: III/6/f; SF-SAC 2016-2018: II/1/i; SF-SAC 2019-2021: II/1/i; SF-SAC 2022: II/1/i Census mapping: CFDA INFO, LOANS",BooleanField -FederalAward,arra,American Recovery and Reinvestment Act Funded Program,"Data sources: SF-SAC 2010-2012: III/9/d; SF-SAC 2013-2015: III/6/g Census mapping: CFDA INFO, ARRA",BooleanField -FederalAward,direct,Indicate whether or not the award was received directly from a Federal awarding agency,"Data sources: SF-SAC 2001-2003: III/10/e; SF-SAC 2004-2007: III/9/f; SF-SAC 2008-2009: III/9/f; SF-SAC 2010-2012: III/9/g; SF-SAC 2013-2015: III/6/h; SF-SAC 2016-2018: II/1/k; SF-SAC 2019-2021: II/1/k; SF-SAC 2022: II/1/k Census mapping: CFDA INFO, DIRECT",BooleanField -FederalAward,passthrough_award,Indicates whether or not funds were passed through to any subrecipients for the Federal program,"Data sources: SF-SAC 2016-2018: II/1/n; SF-SAC 2019-2021: II/1/n; SF-SAC 2022: II/1/n Census mapping: CFDA INFO, PASSTHROUGHAWARD",BooleanField -FederalAward,major_program,Indicate whether or not the Federal program is a major program,"Data sources: SF-SAC 1997-2000: III/7/a; SF-SAC 2001-2003: III/10/f; SF-SAC 2004-2007: III/9/g; SF-SAC 2008-2009: III/9/g; SF-SAC 2010-2012: III/9/h; SF-SAC 2013-2015: III/6/i; SF-SAC 2016-2018: III/1/a; SF-SAC 2019-2021: III/1/a; SF-SAC 2022: III/1/a Census mapping: CFDA INFO, MAJORPROGRAM",BooleanField -FederalAward,amount,Amount Expended for the Federal Program,"Data sources: SF-SAC 1997-2000: III/6/c; SF-SAC 2001-2003: III/10/d; SF-SAC 2004-2007: III/9/e; SF-SAC 2008-2009: III/9/e; SF-SAC 2010-2012: III/9/f; SF-SAC 2013-2015: III/6/d; SF-SAC 2016-2018: II/1/e; SF-SAC 2019-2021: II/1/e; SF-SAC 2022: II/1/e Census mapping: CFDA INFO, AMOUNT",BigIntegerField -FederalAward,program_total,Total Federal awards expended for each individual Federal program is auto-generated by summing the amount expended for all line items with the same CFDA Prefix and Extension,"Data sources: SF-SAC 2016-2018: II/1/g; SF-SAC 2019-2021: II/1/g; SF-SAC 2022: II/1/g Census mapping: CFDA INFO, PROGRAMTOTAL",BigIntegerField -FederalAward,cluster_total,Total Federal awards expended for each individual Federal program is auto-generated by summing the amount expended for all line items with the same Cluster Name,"Data sources: SF-SAC 2016-2018: II/1/h; SF-SAC 2019-2021: II/1/h; SF-SAC 2022: II/1/h Census mapping: CFDA INFO, CLUSTERTOTAL",BigIntegerField -FederalAward,passthrough_amount,Amount passed through to subrecipients,"Data sources: SF-SAC 2016-2018: II/1/o; SF-SAC 2019-2021: II/1/o; SF-SAC 2022: II/1/o Census mapping: CFDA INFO, PASSTHROUGHAMOUNT",BigIntegerField -FederalAward,loan_balance,The loan or loan guarantee (loan) balance outstanding at the end of the audit period. A response of ‘N/A’ is acceptable.,"Data sources: SF-SAC 2016-2018: II/1/j; SF-SAC 2019-2021: II/1/j; SF-SAC 2022: II/1/j Census mapping: CFDA INFO, LOANBALANCE",CharField Limit: 40 -FederalAward,cluster_name,The name of the cluster,"Data sources: SF-SAC 2016-2018: II/1/f; SF-SAC 2019-2021: II/1/f; SF-SAC 2022: II/1/f Census mapping: CFDA INFO, CLUSTERNAME",CharField Limit: 75 -FederalAward,state_cluster_name,The name of the state cluster,"Census mapping: CFDA INFO, STATECLUSTERNAME",CharField Limit: 75 -FederalAward,other_cluster_name,The name of the cluster (if not listed in the Compliance Supplement),"Census mapping: CFDA INFO, OTHERCLUSTERNAME",CharField Limit: 75 -FederalAward,type_requirement,Type Requirement Failure,"Data sources: SF-SAC 1997-2000: III/7/b; SF-SAC 2001-2003: III/11/a; SF-SAC 2004-2007: III/10/a; SF-SAC 2008-2009: III/10/a; SF-SAC 2010-2012: III/10/a; SF-SAC 2013-2015: III/7/e; SF-SAC 2016-2018: III/4/f; SF-SAC 2019-2021: III/4/f; SF-SAC 2022: III/4/f Census mapping: CFDA INFO, TYPEREQUIREMENT",CharField Limit: 40 -FederalAward,type_report_major_program,Type of Report Issued on the Major Program Compliance,"Data sources: SF-SAC 2004-2007: III/9/h; SF-SAC 2008-2009: III/9/h; SF-SAC 2010-2012: III/9/i; SF-SAC 2013-2015: III/6/j; SF-SAC 2016-2018: III/1/b; SF-SAC 2019-2021: III/1/b; SF-SAC 2022: III/1/b Census mapping: CFDA INFO, TYPEREPORT_MP",CharField Limit: 40 -FederalAward,findings_page,Items on the Findings page,"Census mapping: CFDA INFO, FINDINGS",TextField -FederalAward,findings_count,Number of findings for the federal program (only available for audit years 2013 and beyond),"Data sources: SF-SAC 2013-2015: III/6/k; SF-SAC 2016-2018: III/1/c; SF-SAC 2019-2021: III/1/c; SF-SAC 2022: III/1/c Census mapping: CFDA INFO, FINDINGSCOUNT",IntegerField -FederalAward,questioned_costs,Dollar amount of questioned costs (Deprecated since 2002),"Census mapping: CFDA INFO, QCOSTS2",CharField Limit: 40 -FederalAward,dbkey,Audit Year and DBKEY (database key) combined make up the primary key.,"Census mapping: CFDA INFO, DBKEY",CharField Limit: 40 -FederalAward,audit_year,Audit Year and DBKEY (database key) combined make up the primary key.,"Census mapping: CFDA INFO, AUDITYEAR",CharField Limit: 40 -FederalAward,is_public,"True for public records, False for non-public records",,BooleanField -FederalAward,findings,findings,,ManyToManyField -CapText,general,,,ManyToManyField -CapText,id,ID,,BigAutoField -CapText,finding_ref_number,Audit Finding Reference Number,"Data sources: SF-SAC 2019-2021: IV/1; SF-SAC 2022: IV/1 Census mapping: CAPTEXT, FINDINGREFNUMS",CharField Limit: 100 -CapText,charts_tables,Indicates whether or not the text contained charts or tables that could not be entered due to formatting restrictions,"Census mapping: CAPTEXT, CHARTSTABLES",BooleanField Limit: 1 -CapText,sequence_number,Order that the CAP text was reported,"Census mapping: CAPTEXT, SEQ_NUMBER",IntegerField -CapText,text,Content of the Corrective Action Plan (CAP),"Data sources: SF-SAC 2019-2021: IV/2; SF-SAC 2022: IV/2 Census mapping: CAPTEXT, TEXT",TextField -CapText,dbkey,Audit Year and DBKEY (database key) combined make up the primary key.,"Census mapping: CAPTEXT, DBKEY",CharField Limit: 40 -CapText,audit_year,Audit Year and DBKEY (database key) combined make up the primary key.,"Census mapping: CAPTEXT, AUDITYEAR",CharField Limit: 40 -CapText,is_public,"True for public records, False for non-public records",,BooleanField -Note,general,,,ManyToManyField -Note,id,ID,,BigAutoField -Note,type_id,Note Type,"Census mapping: NOTES, TYPE_ID",CharField Limit: 1 -Note,fac_id,Internal Unique Identifier for the record,"Census mapping: NOTES, ID",IntegerField -Note,report_id,Internal Audit Report Id,"Census mapping: NOTES, REPORTID",IntegerField -Note,version,Internal Version,"Census mapping: NOTES, VERSION",IntegerField -Note,sequence_number,Order that the Note was reported,"Census mapping: NOTES, SEQ_NUMBER",IntegerField -Note,note_index,Display Index for the Note,"Census mapping: NOTES, NOTE_INDEX",IntegerField -Note,content,Content of the Note,"Data sources: SF-SAC 2019-2021: II/2; SF-SAC 2022: II/2 Census mapping: NOTES, CONTENT",TextField -Note,title,Note Title,"Data sources: SF-SAC 2019-2021: II/2; SF-SAC 2022: II/2 Census mapping: NOTES, TITLE",CharField Limit: 75 -Note,dbkey,Audit Year and DBKEY (database key) combined make up the primary key.,"Census mapping: NOTES, DBKEY",CharField Limit: 40 -Note,audit_year,Audit Year and DBKEY (database key) combined make up the primary key.,"Census mapping: NOTES, AUDITYEAR",CharField Limit: 40 -Note,is_public,"True for public records, False for non-public records",,BooleanField -Revision,general,,,ForeignKey -Revision,id,ID,,BigAutoField -Revision,findings,Indicates what items on the Findings page were edited during the revision,"Census mapping: REVISIONS, FINDINGS",CharField Limit: 110 -Revision,revision_id,Internal Unique Identifier for the record,"Census mapping: REVISIONS, ELECRPTREVISIONID",IntegerField -Revision,federal_awards,Indicates what items on the Federal Awards page were edited during the revision,"Census mapping: REVISIONS, FEDERALAWARDS",CharField Limit: 140 -Revision,general_info_explain,Explanation of what items on the General Info page were edited during the revision,"Census mapping: REVISIONS, GENINFO_EXPLAIN",TextField -Revision,federal_awards_explain,Explanation of what items on the Federal Awards page were edited during the revision,"Census mapping: REVISIONS, FEDERALAWARDS_EXPLAIN",TextField -Revision,notes_to_sefa_explain,Explanation of what items on the Notes to Schedule of Expenditures of Federal Awards (SEFA) page were edited during the revision,"Census mapping: REVISIONS, NOTESTOSEFA_EXPLAIN",TextField -Revision,audit_info_explain,Explanation of what items on the Audit Info page were edited during the revision,"Census mapping: REVISIONS, AUDITINFO_EXPLAIN",TextField -Revision,findings_explain,Explanation of what items on the Findings page were edited during the revision,"Census mapping: REVISIONS, FINDINGS_EXPLAIN",TextField -Revision,findings_text_explain,Explanation of what items on the Text of the Audit Findings page were edited during the revision,"Census mapping: REVISIONS, FINDINGSTEXT_EXPLAIN",TextField -Revision,cap_explain,Explanation of what items on the CAP Text page were edited during the revision,"Census mapping: REVISIONS, CAP_EXPLAIN",TextField -Revision,other_explain,Explanation of what other miscellaneous items were edited during the revision,"Census mapping: REVISIONS, OTHER_EXPLAIN",TextField -Revision,audit_info,Indicates what items on the Audit Info page were edited during the revision,"Census mapping: REVISIONS, AUDITINFO",CharField Limit: 200 -Revision,notes_to_sefa,Indicates what items on the Notes to Schedule of Expenditures of Federal Awards (SEFA) page were edited during the revision,"Census mapping: REVISIONS, NOTESTOSEFA",CharField Limit: 50 -Revision,findings_text,Indicates what items on the Text of the Audit Findings page were edited during the revision,"Census mapping: REVISIONS, FINDINGSTEXT",CharField Limit: 6 -Revision,cap,Indicates what items on the CAP Text page were edited during the revision,"Census mapping: REVISIONS, CAP",CharField Limit: 6 -Revision,other,Indicates what other miscellaneous items were edited during the revision,"Census mapping: REVISIONS, OTHER",CharField Limit: 65 -Revision,general_info,Indicates what items on the General Info page were edited during the revision,"Census mapping: REVISIONS, GENINFO",CharField Limit: 75 -Revision,audit_year,Audit Year and DBKEY (database key) combined make up the primary key.,"Census mapping: REVISIONS, AUDITYEAR",CharField Limit: 40 -Revision,dbkey,Audit Year and DBKEY (database key) combined make up the primary key.,"Census mapping: REVISIONS, DBKEY",CharField Limit: 40 -Revision,is_public,"True for public records, False for non-public records",,BooleanField -Passthrough,general,,,ManyToManyField -Passthrough,id,ID,,BigAutoField -Passthrough,passthrough_name,Name of Pass-through Entity,"Data sources: SF-SAC 2016-2018: II/1/l; SF-SAC 2019-2021: II/1/l; SF-SAC 2022: II/1/l Census mapping: PASSTHROUGH, PASSTHROUGHNAME",CharField Limit: 150 -Passthrough,passthrough_id,Identifying Number Assigned by the Pass-through Entity,"Data sources: SF-SAC 2016-2018: II/1/m; SF-SAC 2019-2021: II/1/m; SF-SAC 2022: II/1/m Census mapping: PASSTHROUGH, PASSTHROUGHID",CharField Limit: 70 -Passthrough,audit_id,FAC system generated sequence number used to link to Passthrough data between CFDA Info and Passthrough,"Census mapping: PASSTHROUGH, ELECAUDITSID",IntegerField -Passthrough,audit_year,Audit Year and DBKEY (database key) combined make up the primary key,"Census mapping: PASSTHROUGH, AUDITYEAR",CharField Limit: 40 -Passthrough,dbkey,Audit Year and DBKEY (database key) combined make up the primary key,"Census mapping: PASSTHROUGH, DBKEY",CharField Limit: 40 -Passthrough,is_public,"True for public records, False for non-public records",,BooleanField -General_secondary_auditors,id,ID,,BigAutoField -General_secondary_auditors,general,general,,ForeignKey -General_secondary_auditors,auditor,auditor,,ForeignKey -General_federal_awards,id,ID,,BigAutoField -General_federal_awards,general,general,,ForeignKey -General_federal_awards,federalaward,federalaward,,ForeignKey -General_findings,id,ID,,BigAutoField -General_findings,general,general,,ForeignKey -General_findings,finding,finding,,ForeignKey -General_findings_text,id,ID,,BigAutoField -General_findings_text,general,general,,ForeignKey -General_findings_text,findingtext,findingtext,,ForeignKey -General_cap_text,id,ID,,BigAutoField -General_cap_text,general,general,,ForeignKey -General_cap_text,captext,captext,,ForeignKey -General_notes,id,ID,,BigAutoField -General_notes,general,general,,ForeignKey -General_notes,note,note,,ForeignKey -General_passthrough,id,ID,,BigAutoField -General_passthrough,general,general,,ForeignKey -General_passthrough,passthrough,passthrough,,ForeignKey -General,id,ID,,BigAutoField -General,auditee,auditee,,ForeignKey -General,primary_auditor,primary auditor,,ForeignKey -General,revision,revision,,ForeignKey -General,pdf_urls,pdf urls,,ArrayField -General,cognizant_agency,Two digit Federal agency prefix of the cognizant agency,"Data sources: SF-SAC 1997-2000: I/9; SF-SAC 2001-2003: I/9 Census mapping: GENERAL, COGAGENCY",CharField Limit: 2 -General,oversight_agency,Two digit Federal agency prefix of the oversight agency,"Data sources: SF-SAC 1997-2000: I/9; SF-SAC 2001-2003: I/9 Census mapping: GENERAL, OVERSIGHTAGENCY",IntegerField -General,cognizant_agency_over,A value of 'C' means the entity was assigned a Cognizant agency (had over $50 million in total expenses). A value of 'O' means the entity was assigned a Oversight agency (had less than $50 million in total expenses),"Census mapping: GENERAL, COG_OVER",CharField Limit: 2 -General,auditee_date_signed,Date of Auditee signature,"Data sources: SF-SAC 1997-2000: I/6/g; SF-SAC 2001-2003: I/6/g; SF-SAC 2004-2007: I/6/g; SF-SAC 2008-2009: I/5/g; SF-SAC 2010-2012: I/5/g; SF-SAC 2013-2015: certifications; SF-SAC 2016-2018: certifications; SF-SAC 2019-2021: certifications; SF-SAC 2022: certifications Census mapping: GENERAL, AUDITEEDATESIGNED",DateField -General,cpa_date_signed,Date of CPA signature,"Data sources: SF-SAC 1997-2000: I/7/g; SF-SAC 2001-2003: I/7/g; SF-SAC 2004-2007: I/7/g; SF-SAC 2008-2009: I/6/g; SF-SAC 2010-2012: I/6/g; SF-SAC 2013-2015: certifications; SF-SAC 2016-2018: certifications; SF-SAC 2019-2021: certifications; SF-SAC 2022: certifications Census mapping: GENERAL, CPADATESIGNED",DateField -General,date_published,The date the audit information was made available on the dissemination site,"Census mapping: GENERAL, DATEFIREWALL",DateField -General,fac_accepted_date,The most recent date an audit report was submitted to the FAC that passed FAC screening and was accepted as a valid OMB Circular A-133 report submission.,"Census mapping: GENERAL, FACACCEPTEDDATE",DateField -General,form_date_received,The most Recent Date the Form SF-SAC was received by the FAC. This field was not populated before 2001.,"Census mapping: GENERAL, FORM DATE RECEIVED",DateField -General,initial_date_received,The first date an audit component or Form SF-SAC was received by the Federal audit Clearinghouse (FAC).,"Census mapping: GENERAL, INITIAL DATE RECEIVED",DateField -General,fy_end_date,Fiscal Year End Date,"Data sources: SF-SAC 1997-2000: Part I, Item 1; SF-SAC 2001-2003: Part I, Item 1; SF-SAC 2004-2007: Part I, Item 1; SF-SAC 2008-2009: Part I, Item 1; SF-SAC 2010-2012: Part I, Item 1; SF-SAC 2013-2015: Part I, Item 1; SF-SAC 2016-2018: Part I, Item 1; SF-SAC 2019-2021: I/1/b; SF-SAC 2022: I/1/b Census mapping: GENERAL, FYENDDATE",DateField -General,fy_start_date,Fiscal Year Start Date,"Data sources: SF-SAC 2019-2021: Part I, Item 1(a); SF-SAC 2022: Part I, Item 1(a) Census mapping: GENERAL, FYSTARTDATE",DateField -General,previous_completed_on,Date the Audit was Previously Posted to the Internet as Complete,"Census mapping: GENERAL, PREVIOUS_COMPLETED_ON",DateField -General,previous_date_published,previous date published,"Census mapping: GENERAL, PREVIOUSDATEFIREWALL",DateField -General,completed_date,Date the Audit was Posted to the Internet as Complete,"Census mapping: GENERAL, COMPLETED_ON",DateField -General,component_date_received,The most recent date an audit component was received by the FAC. This field was not populated before 2004. Receipt of Financial statements only are not processed until the rest of the audit or a Form SF-SAC is also received.,"Census mapping: GENERAL, COMPONENT DATE RECEIVED",DateField -General,audit_year,Audit Year and DBKEY (database key) combined make up the primary key.,"Census mapping: GENERAL, AUDITYEAR",CharField Limit: 40 -General,audit_type,Type of Audit,"Data sources: SF-SAC 1997-2000: I/2; SF-SAC 2001-2003: I/2; SF-SAC 2004-2007: I/2; SF-SAC 2008-2009: I/2; SF-SAC 2010-2012: I/2; SF-SAC 2013-2015: I/2; SF-SAC 2016-2018: I/2; SF-SAC 2019-2021: I/2; SF-SAC 2022: I/2 Census mapping: GENERAL, AUDITTYPE",CharField Limit: 40 -General,reportable_condition,Whether or not the audit disclosed a reportable condition on financial statements,"Data sources: SF-SAC 1997-2000: II/3; SF-SAC 2001-2003: II/3; SF-SAC 2004-2007: II/3; SF-SAC 2008-2009: II/3; SF-SAC 2010-2012: II/3; SF-SAC 2013-2015: II/3; SF-SAC 2016-2018: III/2/c; SF-SAC 2019-2021: III/2/c; SF-SAC 2022: III/2/c Census mapping: GENERAL, REPORTABLECONDITION",BooleanField -General,significant_deficiency,Whether or not the audit disclosed a significant deficiency on financial statements,"Data sources: SF-SAC 1997-2000: II/3; SF-SAC 2001-2003: II/3; SF-SAC 2004-2007: II/3; SF-SAC 2008-2009: II/3; SF-SAC 2010-2012: II/3; SF-SAC 2013-2015: II/3; SF-SAC 2016-2018: III/2/c; SF-SAC 2019-2021: III/2/c; SF-SAC 2022: III/2/c Census mapping: GENERAL, SIGNIFICANTDEFICIENCY",BooleanField -General,condition_or_deficiency_major_program,Whether or not the audit disclosed a reportable condition/significant deficiency for any major program in the Schedule of Findings and Questioned Costs,"Data sources: SF-SAC 2001-2003: III/5; SF-SAC 2004-2007: III/4; SF-SAC 2008-2009: III/4; SF-SAC 2010-2012: III/4 Census mapping: GENERAL, REPORTABLECONDITION_MP",BooleanField -General,current_or_former_findings,Indicate whether or not current year findings or prior year findings affecting direct funds were reported,"Data sources: SF-SAC 2001-2003: III/9; SF-SAC 2004-2007: III/8; SF-SAC 2008-2009: III/8; SF-SAC 2010-2012: III/8; SF-SAC 2013-2015: III/5; SF-SAC 2016-2018: III/3/d; SF-SAC 2019-2021: III/3/d; SF-SAC 2022: III/3/d Census mapping: GENERAL, CYFINDINGS",BooleanField -General,dollar_threshold,Dollar Threshold to distinguish between Type A and Type B programs.,"Data sources: SF-SAC 1997-2000: III/2; SF-SAC 2001-2003: III/3; SF-SAC 2004-2007: III/2; SF-SAC 2008-2009: III/2; SF-SAC 2010-2012: III/2; SF-SAC 2013-2015: III/2; SF-SAC 2016-2018: III/3/b; SF-SAC 2019-2021: III/3/b; SF-SAC 2022: III/3/b Census mapping: GENERAL, DOLLARTHRESHOLD",FloatField -General,dup_reports,Whether or not the financial statements include departments that have separate expenditures not included in this audit,"Data sources: SF-SAC 2001-2003: III/2; SF-SAC 2004-2007: III/1; SF-SAC 2008-2009: III/1; SF-SAC 2010-2012: III/1; SF-SAC 2013-2015: III/1; SF-SAC 2016-2018: III/3/a; SF-SAC 2019-2021: III/3/a; SF-SAC 2022: III/3/a Census mapping: GENERAL, DUP_REPORTS",BooleanField -General,entity_type,"Self reported type of entity (i.e., States, Local Governments, Indian Tribes, Institutions of Higher Education, NonProfit)","Census mapping: GENERAL, ENTITY_TYPE",CharField Limit: 50 -General,going_concern,Whether or not the audit contained a going concern paragraph on financial statements,"Data sources: SF-SAC 1997-2000: II/2; SF-SAC 2001-2003: II/2; SF-SAC 2004-2007: II/2; SF-SAC 2008-2009: II/2; SF-SAC 2010-2012: II/2; SF-SAC 2013-2015: II/2; SF-SAC 2016-2018: III/2/b; SF-SAC 2019-2021: III/2/b; SF-SAC 2022: III/2/b Census mapping: GENERAL, GOINGCONCERN",BooleanField -General,low_risk,Indicate whether or not the auditee qualified as a low-risk auditee,"Data sources: SF-SAC 1997-2000: III/3; SF-SAC 2001-2003: III/4; SF-SAC 2004-2007: III/3; SF-SAC 2008-2009: III/3; SF-SAC 2010-2012: III/3; SF-SAC 2013-2015: III/3; SF-SAC 2016-2018: III/3/c; SF-SAC 2019-2021: III/3/c; SF-SAC 2022: III/3/c Census mapping: GENERAL, LOWRISK",BooleanField -General,material_noncompliance,Whether or not the audit disclosed a material noncompliance on financial statements,"Data sources: SF-SAC 1997-2000: II/5; SF-SAC 2001-2003: II/5; SF-SAC 2004-2007: II/5; SF-SAC 2008-2009: II/5; SF-SAC 2010-2012: II/5; SF-SAC 2013-2015: II/5; SF-SAC 2016-2018: III/2/e; SF-SAC 2019-2021: III/2/e; SF-SAC 2022: III/2/e Census mapping: GENERAL, MATERIALNONCOMPLIANCE",BooleanField -General,material_weakness,Whether or not the audit disclosed any reportable condition/significant deficiency as a material weakness on financial statements,"Data sources: SF-SAC 1997-2000: II/4; SF-SAC 2001-2003: II/4; SF-SAC 2004-2007: II/4; SF-SAC 2008-2009: II/4; SF-SAC 2010-2012: II/4; SF-SAC 2013-2015: II/4; SF-SAC 2016-2018: III/2/d; SF-SAC 2019-2021: III/2/d; SF-SAC 2022: III/2/d Census mapping: GENERAL, MATERIALWEAKNESS",BooleanField -General,material_weakness_major_program,Indicate whether any reportable condition/significant deficiency was disclosed as a material weakness for a major program in the Schedule of Findings and Questioned Costs,"Data sources: SF-SAC 2001-2003: III/6; SF-SAC 2004-2007: III/5; SF-SAC 2008-2009: III/5; SF-SAC 2010-2012: III/5 Census mapping: GENERAL, MATERIALWEAKNESS_MP",BooleanField -General,number_months,Number of Months Covered by the 'Other' Audit Period,"Data sources: SF-SAC 1997-2000: I/3; SF-SAC 2001-2003: I/3; SF-SAC 2004-2007: I/3; SF-SAC 2008-2009: I/3; SF-SAC 2010-2012: I/3; SF-SAC 2013-2015: I/3; SF-SAC 2016-2018: I/3; SF-SAC 2019-2021: I/3; SF-SAC 2022: I/3 Census mapping: GENERAL, NUMBERMONTHS",IntegerField -General,period_covered,Audit Period Covered by Audit,"Data sources: SF-SAC 1997-2000: I/3; SF-SAC 2001-2003: I/3; SF-SAC 2004-2007: I/3; SF-SAC 2008-2009: I/3; SF-SAC 2010-2012: I/3; SF-SAC 2013-2015: I/3; SF-SAC 2016-2018: I/3; SF-SAC 2019-2021: I/3; SF-SAC 2022: I/3 Census mapping: GENERAL, PERIODCOVERED",CharField Limit: 40 -General,prior_year_schedule,Indicate whether or not the report includes a Summary Schedule of Prior Year Audit Findings,"Data sources: SF-SAC 2001-2003: III/8; SF-SAC 2004-2007: III/7; SF-SAC 2008-2009: III/7; SF-SAC 2010-2012: III/7; SF-SAC 2013-2015: III/4 Census mapping: GENERAL, PYSCHEDULE",BooleanField -General,questioned_costs,Indicate whether or not the audit disclosed any known questioned costs.,"Data sources: SF-SAC 2001-2003: III/7; SF-SAC 2004-2007: III/6; SF-SAC 2008-2009: III/6; SF-SAC 2010-2012: III/6 Census mapping: GENERAL, QCOSTS",BooleanField -General,report_required,Distribution to Federal Agency required?,"Data sources: SF-SAC 1997-2000: III/5; SF-SAC 2001-2003: III/9; SF-SAC 2004-2007: III/8 Census mapping: GENERAL, REPORTREQUIRED",BooleanField -General,special_framework,Special Purpose Framework that was used as the basis of accounting,"Data sources: SF-SAC 2016-2018: III/2/a/ii; SF-SAC 2019-2021: III/2/a/i; SF-SAC 2022: III/2/a/i Census mapping: GENERAL, SP_FRAMEWORK",CharField Limit: 40 -General,special_framework_required,Indicate whether or not the special purpose framework used as basis of accounting by state law or tribal law,"Data sources: SF-SAC 2016-2018: III/2/a/iii; SF-SAC 2019-2021: III/2/a/ii; SF-SAC 2022: III/2/a/ii Census mapping: GENERAL, SP_FRAMEWORK_REQUIRED",BooleanField -General,total_fed_expenditures,Total Federal Expenditures,"Data sources: SF-SAC 1997-2000: III/6/c- Total; SF-SAC 2001-2003: III/10/d -Total; SF-SAC 2004-2007: III/9/e -Total; SF-SAC 2008-2009: III/9/e -Total; SF-SAC 2010-2012: III/9/f -Total; SF-SAC 2013-2015: III/6/d -Total; SF-SAC 2016-2018: II/1/e- Total; SF-SAC 2019-2021: II/1/e - Total; SF-SAC 2022: II/1/e - Total Census mapping: GENERAL, TOTFEDEXPEND",BigIntegerField -General,type_of_entity,Contact FAC for information,"Census mapping: GENERAL, TYPEOFENTITY",CharField Limit: 40 -General,type_report_financial_statements,Type of Report Issued on the Financial Statements,"Data sources: SF-SAC 1997-2000: II/1; SF-SAC 2001-2003: II/1; SF-SAC 2004-2007: II/1; SF-SAC 2008-2009: II/1; SF-SAC 2010-2012: II/1; SF-SAC 2013-2015: II/1; SF-SAC 2016-2018: III/2/a/i; SF-SAC 2019-2021: III/2/a; SF-SAC 2022: III/2/a Census mapping: GENERAL, TYPEREPORT_FS",CharField Limit: 40 -General,type_report_major_program,Type of Report Issued on the Major Program Compliance,"Data sources: SF-SAC 1997-2000: III/1; SF-SAC 2001-2003: III/1 Census mapping: GENERAL, TYPEREPORT_MP",CharField Limit: 40 -General,type_report_special_purpose_framework,The auditor's opinion on the special purpose framework,"Data sources: SF-SAC 2016-2018: III/2/a/iv; SF-SAC 2019-2021: III/2/a/iii; SF-SAC 2022: III/2/a/iii Census mapping: GENERAL, TYPEREPORT_SP_FRAMEWORK",CharField Limit: 40 -General,dbkey,Audit Year and DBKEY (database key) combined make up the primary key. Only on records created by Census.,"Census mapping: GENERAL, DBKEY",CharField Limit: 40 -General,is_public,"True for public records, False for non-public records",,BooleanField -General,modified_date,modified date,,DateTimeField -General,create_date,create date,,DateTimeField -General,data_source,Origin of the upload,,CharField Limit: 25 -General,secondary_auditors,secondary auditors,,ManyToManyField -General,federal_awards,federal awards,,ManyToManyField -General,findings,findings,,ManyToManyField -General,findings_text,findings text,,ManyToManyField -General,cap_text,cap text,,ManyToManyField -General,notes,notes,,ManyToManyField -General,passthrough,passthrough,,ManyToManyField diff --git a/backend/data_distro/mappings/upload_dictonaries.py b/backend/data_distro/mappings/upload_dictonaries.py deleted file mode 100644 index afb9d5352..000000000 --- a/backend/data_distro/mappings/upload_dictonaries.py +++ /dev/null @@ -1,69 +0,0 @@ -# List of the tables to ingest -tables = [ - "gen", - "cfda", - "findings", - "findingstext_formatted", - "captext_formatted", - "notes", - "cpas", - "revisions", - "ueis", - "agency", - "passthrough", - "eins", - "duns", -] - -# The doc strings have the descriptive table names from the docs, this decodes to get the table file name -file_to_table_name_mapping = { - "GENERAL": "gen", - "CFDAINFO": "cfda", - "FINDINGS": "findings", - "FINDINGSTEXT": "findingstext_formatted", - "CAPTEXT": "captext_formatted", - "NOTES": "notes", - "MULTIPLECPASINFO": "cpas", - "REVISIONS": "revisions", - "UEIINFO": "ueis", - "AGENCIES": "agency", - "PASSTHROUGH": "passthrough", - "EININFO": "eins", - "DUNINFO": "duns", -} - -# Boolean fields -boolean_fields = [ - "arra", - "direct", - "loans", - "major_program", - "passthrough_award", - "research_and_development", - "material_weakness", - "modified_opinion", - "other_findings", - "other_non_compliance", - "questioned_cost", - "repeat_finding", - "significant_deficiency", - "condition_or_deficiency", - "condition_or_deficiency_major_program", - "current_or_former_findings", - "dup_reports", - "going_concern", - "low_risk", - "material_noncompliance", - "material_weakness", - "material_weakness_major_program", - "multiple_cpas", - "multiple_duns", - "multiple_eins", - "multiple_ueis", - "prior_year_schedule", - "questioned_costs", - "reportable_condition", - "report_required", - "special_framework_required", - "charts_tables", -] diff --git a/backend/data_distro/mappings/upload_mapping.py b/backend/data_distro/mappings/upload_mapping.py deleted file mode 100644 index 0ddf66adb..000000000 --- a/backend/data_distro/mappings/upload_mapping.py +++ /dev/null @@ -1,220 +0,0 @@ -""" -Mapping for upload. -Used by public_data_loader. -Update with create_upload_mapping management command. -""" - -upload_mapping = { - "gen": { - "AUDITEECERTIFYNAME": ["Auditee", "auditee_certify_name"], - "AUDITEECERTIFYTITLE": ["Auditee", "auditee_certify_title"], - "AUDITEECONTACT": ["Auditee", "auditee_contact"], - "AUDITEEEMAIL": ["Auditee", "auditee_email"], - "AUDITEEFAX": ["Auditee", "auditee_fax"], - "AUDITEENAME": ["Auditee", "auditee_name"], - "AUDITEENAMETITLE": ["Auditee", "auditee_name_title"], - "AUDITEEPHONE": ["Auditee", "auditee_phone"], - "AUDITEETITLE": ["Auditee", "auditee_title"], - "STREET1": ["Auditee", "auditee_street1"], - "STREET2": ["Auditee", "auditee_street2"], - "CITY": ["Auditee", "auditee_city"], - "STATE": ["Auditee", "auditee_state"], - "EIN": ["Auditee", "ein"], - "EINSUBCODE": ["Auditee", "ein_subcode"], - "ZIPCODE": ["Auditee", "auditee_zip_code"], - "CPACOUNTRY": ["Auditor", "cpa_country"], - "CPAPHONE": ["Auditor", "cpa_phone"], - "CPAFAX": ["Auditor", "cpa_fax"], - "CPASTATE": ["Auditor", "cpa_state"], - "CPACITY": ["Auditor", "cpa_city"], - "CPATITLE": ["Auditor", "cpa_title"], - "CPASTREET1": ["Auditor", "cpa_street1"], - "CPASTREET2": ["Auditor", "cpa_street2"], - "CPAZIPCODE": ["Auditor", "cpa_zip_code"], - "CPACONTACT": ["Auditor", "cpa_contact"], - "CPAEMAIL": ["Auditor", "cpa_email"], - "CPAFIRMNAME": ["Auditor", "cpa_firm_name"], - "CPAEIN": ["Auditor", "cpa_ein"], - # this needs to go 2 places will handle manually - # "DBKEY": ["Auditor", "dbkey"], - "SEQNUM": ["Auditor", "sequence_number"], - "CPAFOREIGN": ["Auditor", "cpa_foreign"], - "AUDITOR_EIN": ["FederalAward", "cpa_ein"], - "COGAGENCY": ["General", "cognizant_agency"], - "COG_OVER": ["General", "cognizant_agency_over"], - "AUDITEEDATESIGNED": ["General", "auditee_date_signed"], - "CPADATESIGNED": ["General", "cpa_date_signed"], - "AUDITTYPE": ["General", "audit_type"], - "AUDITYEAR": ["General", "audit_year"], - "COMPLETED_ON": ["General", "completed_date"], - "COMPONENT DATE RECEIVED": ["General", "component_date_received"], - "REPORTABLECONDITION": ["General", "reportable_condition"], - "SIGNIFICANTDEFICIENCY": ["General", "significant_deficiency"], - "REPORTABLECONDITION_MP": [ - "General", - "condition_or_deficiency_major_program", - ], - "CYFINDINGS": ["General", "current_or_former_findings"], - "DATEFIREWALL": ["General", "date_published"], - # this needs to go 2 places - "DBKEY": ["General", "dbkey"], - "DOLLARTHRESHOLD": ["General", "dollar_threshold"], - "DUP_REPORTS": ["General", "dup_reports"], - "ENTITY_TYPE": ["General", "entity_type"], - "FACACCEPTEDDATE": ["General", "fac_accepted_date"], - "FORM DATE RECEIVED": ["General", "form_date_received"], - "FYENDDATE": ["General", "fy_end_date"], - "FYSTARTDATE": ["General", "fy_start_date"], - "GOINGCONCERN": ["General", "going_concern"], - "INITIAL DATE RECEIVED": ["General", "initial_date_received"], - "LOWRISK": ["General", "low_risk"], - "MATERIALNONCOMPLIANCE": ["General", "material_noncompliance"], - "MATERIALWEAKNESS": ["General", "material_weakness"], - "MATERIALWEAKNESS_MP": ["General", "material_weakness_major_program"], - "NUMBERMONTHS": ["General", "number_months"], - "OVERSIGHTAGENCY": ["General", "oversight_agency"], - "PERIODCOVERED": ["General", "period_covered"], - "PREVIOUS_COMPLETED_ON": ["General", "previous_completed_on"], - "PREVIOUSDATEFIREWALL": ["General", "previous_date_published"], - "PYSCHEDULE": ["General", "prior_year_schedule"], - "QCOSTS": ["General", "questioned_costs"], - "REPORTREQUIRED": ["General", "report_required"], - "SP_FRAMEWORK": ["General", "special_framework"], - "SP_FRAMEWORK_REQUIRED": ["General", "special_framework_required"], - "TOTFEDEXPEND": ["General", "total_fed_expenditures"], - "TYPEOFENTITY": ["General", "type_of_entity"], - "TYPEREPORT_FS": ["General", "type_report_financial_statements"], - "TYPEREPORT_MP": ["General", "type_report_major_program"], - "TYPEREPORT_SP_FRAMEWORK": ["General", "type_report_special_purpose_framework"], - }, - "cfda": { - "RD": ["FederalAward", "research_and_development"], - "LOANS": ["FederalAward", "loans"], - "ARRA": ["FederalAward", "arra"], - "DIRECT": ["FederalAward", "direct"], - "PASSTHROUGHAWARD": ["FederalAward", "passthrough_award"], - "MAJORPROGRAM": ["FederalAward", "major_program"], - "FINDINGREFNUMS": ["FederalAward", "finding_ref_numbers"], - "AMOUNT": ["FederalAward", "amount"], - "PROGRAMTOTAL": ["FederalAward", "program_total"], - "CLUSTERTOTAL": ["FederalAward", "cluster_total"], - "PASSTHROUGHAMOUNT": ["FederalAward", "passthrough_amount"], - "LOANBALANCE": ["FederalAward", "loan_balance"], - "FEDERALPROGRAMNAME": ["FederalAward", "federal_program_name"], - "CFDAPROGRAMNAME": ["FederalAward", "agency_name"], - "AWARDIDENTIFICATION": ["FederalAward", "award_identification"], - "CFDA": ["FederalAward", "agency_cfda"], - "CLUSTERNAME": ["FederalAward", "cluster_name"], - "STATECLUSTERNAME": ["FederalAward", "state_cluster_name"], - "OTHERCLUSTERNAME": ["FederalAward", "other_cluster_name"], - "TYPEREQUIREMENT": ["FederalAward", "type_requirement"], - "TYPEREPORT_MP": ["FederalAward", "type_report_major_program"], - "FINDINGSCOUNT": ["FederalAward", "findings_count"], - "ELECAUDITSID": ["FederalAward", "audit_id"], - "DBKEY": ["FederalAward", "dbkey"], - "AUDITYEAR": ["FederalAward", "audit_year"], - "QCOSTS2": ["FederalAward", "questioned_costs"], - "FINDINGS": ["FederalAward", "findings_page"], - "EIN": ["FederalAward", "cpa_ein"], - }, - "findings": { - "MODIFIEDOPINION": ["Finding", "modified_opinion"], - "OTHERNONCOMPLIANCE": ["Finding", "other_non_compliance"], - "MATERIALWEAKNESS": ["Finding", "material_weakness"], - "SIGNIFICANTDEFICIENCY": ["Finding", "significant_deficiency"], - "OTHERFINDINGS": ["Finding", "other_findings"], - "QCOSTS": ["Finding", "questioned_costs"], - "REPEATFINDING": ["Finding", "repeat_finding"], - "FINDINGSREFNUMS": ["Finding", "finding_ref_number"], - "PRIORFINDINGREFNUMS": ["Finding", "prior_finding_ref_numbers"], - "TYPEREQUIREMENT": ["Finding", "type_requirement"], - "ELECAUDITSID": ["Finding", "audit_id"], - "ELECAUDITFINDINGSID": ["Finding", "audit_findings_id"], - "AUDITYEAR": ["Finding", "audit_year"], - "DBKEY": ["Finding", "dbkey"], - }, - "findingstext_formatted": { - "CHARTSTABLES": ["FindingText", "charts_tables"], - "FINDINGREFNUMS": ["FindingText", "finding_ref_number"], - "SEQ_NUMBER": ["FindingText", "sequence_number"], - "TEXT": ["FindingText", "text"], - "DBKEY": ["FindingText", "dbkey"], - "AUDITYEAR": ["FindingText", "audit_year"], - }, - "captext_formatted": { - "CHARTSTABLES": ["CapText", "charts_tables"], - "FINDINGREFNUMS": ["CapText", "finding_ref_number"], - "SEQ_NUMBER": ["CapText", "sequence_number"], - "TEXT": ["CapText", "text"], - "DBKEY": ["CapText", "dbkey"], - "AUDITYEAR": ["CapText", "audit_year"], - }, - "notes": { - "TYPE_ID": ["Note", "type_id"], - "ID": ["Note", "fac_id"], - "REPORTID": ["Note", "report_id"], - "VERSION": ["Note", "version"], - "SEQ_NUMBER": ["Note", "sequence_number"], - "NOTE_INDEX": ["Note", "note_index"], - "CONTENT": ["Note", "content"], - "TITLE": ["Note", "title"], - "DBKEY": ["Note", "dbkey"], - "AUDITYEAR": ["Note", "audit_year"], - }, - "cpas": { - "CPAPHONE": ["Auditor", "cpa_phone"], - "CPAFAX": ["Auditor", "cpa_fax"], - "CPASTATE": ["Auditor", "cpa_state"], - "CPACITY": ["Auditor", "cpa_city"], - "CPATITLE": ["Auditor", "cpa_title"], - "CPASTREET1": ["Auditor", "cpa_street1"], - "CPAZIPCODE": ["Auditor", "cpa_zip_code"], - "CPACONTACT": ["Auditor", "cpa_contact"], - "CPAEMAIL": ["Auditor", "cpa_email"], - "CPAFIRMNAME": ["Auditor", "cpa_firm_name"], - "CPAEIN": ["Auditor", "cpa_ein"], - "DBKEY": ["Auditor", "dbkey"], - "SEQNUM": ["Auditor", "seqnum"], - }, - "revisions": { - "FINDINGS": ["Revision", "findings"], - "ELECRPTREVISIONID": ["Revision", "revision_id"], - "FEDERALAWARDS": ["Revision", "federal_awards"], - "GENINFO_EXPLAIN": ["Revision", "general_info_explain"], - "FEDERALAWARDS_EXPLAIN": ["Revision", "federal_awards_explain"], - "NOTESTOSEFA_EXPLAIN": ["Revision", "notes_to_sefa_explain"], - "AUDITINFO_EXPLAIN": ["Revision", "audit_info_explain"], - "FINDINGS_EXPLAIN": ["Revision", "findings_explain"], - "FINDINGSTEXT_EXPLAIN": ["Revision", "findings_text_explain"], - "CAP_EXPLAIN": ["Revision", "cap_explain"], - "OTHER_EXPLAIN": ["Revision", "other_explain"], - "AUDITINFO": ["Revision", "audit_info"], - "NOTESTOSEFA": ["Revision", "notes_to_sefa"], - "FINDINGSTEXT": ["Revision", "findings_text"], - "CAP": ["Revision", "cap"], - "OTHER": ["Revision", "other"], - "GENINFO": ["Revision", "general_info"], - "AUDITYEAR": ["Revision", "audit_year"], - "DBKEY": ["Revision", "dbkey"], - }, - "ueis": {}, - # Not in mapping. We handle the agency table in it's own function - "agency": { - "AGENCYCFDA": ["Agency", "agency_cdfa"], - # "AGENCY": ["FederalAward", "agency_prior_findings_list"], - # EIN, DBKEY, and AUDITYEAT are used to make the relationship with awards data and are not uploaded - "EIN": ["FederalAward", "cpa_ein"], - "DBKEY": ["FederalAward", "dbkey"], - "AUDITYEAR": ["FederalAward", "audit_year"], - }, - "passthrough": { - "PASSTHROUGHNAME": ["Passthrough", "passthrough_name"], - "PASSTHROUGHID": ["Passthrough", "passthrough_id"], - "ELECAUDITSID": ["Passthrough", "audit_id"], - "AUDITYEAR": ["Passthrough", "audit_year"], - "DBKEY": ["Passthrough", "dbkey"], - }, - # Not in mapping. We handle EINS and DUNS in their own functions - "eins": {}, - "duns": {}, -} diff --git a/backend/data_distro/mappings/v1_crosswalk_for_docs.py b/backend/data_distro/mappings/v1_crosswalk_for_docs.py deleted file mode 100644 index 9b53737a7..000000000 --- a/backend/data_distro/mappings/v1_crosswalk_for_docs.py +++ /dev/null @@ -1,3321 +0,0 @@ -""" -This is for reference, I am not keeping it up to date, you can use or modify the create_create_upload_mapping command to get this kind of data. -""" - -# Data structure -sample_data_structure = { - "new_name": { - "models": ["Model1", "Model2"], - "original_name": "ORIGINALNAME", - "original_table_Model1": "TABLE", - "original_table_Model2": "TABLE", - "descriptions": ["description1", "description2"], - "description_Model1": "description1", - "description_Model2": "description2", - "forms": ["SAC 1997-200, line 32", "SF-SAC 2022, line 7"], - "forms_Modlel1": ["SAC 1997-200, line 32", "SF-SAC 2022, line 7"], - "forms_Modlel2": ["SAC 1997-200, line 32", "SF-SAC 2022, line 7"], - "all_years": False, - } -} - -# Data -doc_metadata = { - "agency_cfda": { - "models": ["Agencies"], - "original_name": "AGENCYCFDA", - "forms": [ - "SF-SAC 1997-2000: III/5", - "SF-SAC 2001-2003: III/9", - "SF-SAC 2004-2007: III/8", - "SF-SAC 2008-2009: III/8", - "SF-SAC 2010-2012: III/8", - "SF-SAC 2013-2015: III/5", - "SF-SAC 2016-2018: III/3/d", - "SF-SAC 2019-2021: III/3/d", - "SF-SAC 2022: III/3/d", - ], - "forms_Agencies": [ - "SF-SAC 1997-2000: III/5", - "SF-SAC 2001-2003: III/9", - "SF-SAC 2004-2007: III/8", - "SF-SAC 2008-2009: III/8", - "SF-SAC 2010-2012: III/8", - "SF-SAC 2013-2015: III/5", - "SF-SAC 2016-2018: III/3/d", - "SF-SAC 2019-2021: III/3/d", - "SF-SAC 2022: III/3/d", - ], - "descriptions": [ - "2-digit prefix of Federal Agency requiring copy of audit report" - ], - "description_Agencies": "2-digit prefix of Federal Agency requiring copy of audit report", - "original_table_Agencies": "AGENCIES", - "all_years": True, - }, - "audit_year": { - "models": [ - "Agencies", - "Captext", - "FederalAward", - "DunsInfo", - "EinInfo", - "Findings", - "Findingstext", - "General", - "MultipleCpasInfo", - "Notes", - "Passthrough", - "Revisions", - "UeiInfo", - ], - "original_name": "AUDITYEAR", - "forms": [], - "forms_Agencies": [], - "descriptions": [ - "Audit Year and DBKEY (database key) combined make up the primary key.", - "Audit Year and DBKEY (database key) combined make up the primary key.", - "Audit Year and DBKEY (database key) combined make up the primary key.", - "Audit Year and DBKEY (database key) combined make up the primary key.", - "Audit Year and DBKEY (database key) combined make up the primary key.", - "Audit Year and DBKEY (database key) combined make up the primary key.", - "Audit Year and DBKEY (database key) combined make up the primary key.", - "Audit Year and DBKEY (database key) combined make up the primary key.", - "Audit Year and DBKEY (database key) combined make up the primary key.", - "Audit Year and DBKEY (database key) combined make up the primary key.", - "Audit Year and DBKEY (database key) combined make up the primary key", - "Audit Year and DBKEY (database key) combined make up the primary key.", - "Audit Year and DBKEY (database key) combined make up the primary key.", - ], - "description_Agencies": "Audit Year and DBKEY (database key) combined make up the primary key.", - "original_table_Agencies": "AGENCIES", - "all_years": False, - "forms_Captext": [], - "description_Captext": "Audit Year and DBKEY (database key) combined make up the primary key.", - "original_table_Captext": "CAPTEXT", - "forms_FederalAward": [], - "description_FederalAward": "Audit Year and DBKEY (database key) combined make up the primary key.", - "original_table_FederalAward": "CFDA INFO", - "forms_DunsInfo": [], - "description_DunsInfo": "Audit Year and DBKEY (database key) combined make up the primary key.", - "original_table_DunsInfo": "DUN INFO", - "forms_EinInfo": [], - "description_EinInfo": "Audit Year and DBKEY (database key) combined make up the primary key.", - "original_table_EinInfo": "EIN INFO", - "forms_Findings": [], - "description_Findings": "Audit Year and DBKEY (database key) combined make up the primary key.", - "original_table_Findings": "FINDINGS", - "forms_Findingstext": [], - "description_Findingstext": "Audit Year and DBKEY (database key) combined make up the primary key.", - "original_table_Findingstext": "FINDINGSTEXT", - "forms_General": [], - "description_General": "Audit Year and DBKEY (database key) combined make up the primary key.", - "original_table_General": "GENERAL", - "forms_MultipleCpasInfo": [], - "description_MultipleCpasInfo": "Audit Year and DBKEY (database key) combined make up the primary key.", - "original_table_MultipleCpasInfo": "MULTIPLE CPAS INFO", - "forms_Notes": [], - "description_Notes": "Audit Year and DBKEY (database key) combined make up the primary key.", - "original_table_Notes": "NOTES", - "forms_Passthrough": [], - "description_Passthrough": "Audit Year and DBKEY (database key) combined make up the primary key", - "original_table_Passthrough": "PASSTHROUGH", - "forms_Revisions": [], - "description_Revisions": "Audit Year and DBKEY (database key) combined make up the primary key.", - "original_table_Revisions": "REVISIONS", - "forms_UeiInfo": [], - "description_UeiInfo": "Audit Year and DBKEY (database key) combined make up the primary key.", - "original_table_UeiInfo": "UEI INFO", - }, - "dbkey": { - "models": [ - "Agencies", - "Captext", - "FederalAward", - "DunsInfo", - "EinInfo", - "Findings", - "Findingstext", - "General", - "MultipleCpasInfo", - "Notes", - "Passthrough", - "Revisions", - "UeiInfo", - ], - "original_name": "DBKEY", - "forms": [], - "forms_Agencies": [], - "descriptions": [ - "Audit Year and DBKEY (database key) combined make up the primary key.", - "Audit Year and DBKEY (database key) combined make up the primary key.", - "Audit Year and DBKEY (database key) combined make up the primary key.", - "Audit Year and DBKEY (database key) combined make up the primary key.", - "Audit Year and DBKEY (database key) combined make up the primary key.", - "Audit Year and DBKEY (database key) combined make up the primary key.", - "Audit Year and DBKEY (database key) combined make up the primary key.", - "Audit Year and DBKEY (database key) combined make up the primary key.", - "Audit Year and DBKEY (database key) combined make up the primary key.", - "Audit Year and DBKEY (database key) combined make up the primary key.", - "Audit Year and DBKEY (database key) combined make up the primary key", - "Audit Year and DBKEY (database key) combined make up the primary key.", - "Audit Year and DBKEY (database key) combined make up the primary key.", - ], - "description_Agencies": "Audit Year and DBKEY (database key) combined make up the primary key.", - "original_table_Agencies": "AGENCIES", - "all_years": False, - "forms_Captext": [], - "description_Captext": "Audit Year and DBKEY (database key) combined make up the primary key.", - "original_table_Captext": "CAPTEXT", - "forms_FederalAward": [], - "description_FederalAward": "Audit Year and DBKEY (database key) combined make up the primary key.", - "original_table_FederalAward": "CFDA INFO", - "forms_DunsInfo": [], - "description_DunsInfo": "Audit Year and DBKEY (database key) combined make up the primary key.", - "original_table_DunsInfo": "DUN INFO", - "forms_EinInfo": [], - "description_EinInfo": "Audit Year and DBKEY (database key) combined make up the primary key.", - "original_table_EinInfo": "EIN INFO", - "forms_Findings": [], - "description_Findings": "Audit Year and DBKEY (database key) combined make up the primary key.", - "original_table_Findings": "FINDINGS", - "forms_Findingstext": [], - "description_Findingstext": "Audit Year and DBKEY (database key) combined make up the primary key.", - "original_table_Findingstext": "FINDINGSTEXT", - "forms_General": [], - "description_General": "Audit Year and DBKEY (database key) combined make up the primary key.", - "original_table_General": "GENERAL", - "forms_MultipleCpasInfo": [], - "description_MultipleCpasInfo": "Audit Year and DBKEY (database key) combined make up the primary key.", - "original_table_MultipleCpasInfo": "MULTIPLE CPAS INFO", - "forms_Notes": [], - "description_Notes": "Audit Year and DBKEY (database key) combined make up the primary key.", - "original_table_Notes": "NOTES", - "forms_Passthrough": [], - "description_Passthrough": "Audit Year and DBKEY (database key) combined make up the primary key", - "original_table_Passthrough": "PASSTHROUGH", - "forms_Revisions": [], - "description_Revisions": "Audit Year and DBKEY (database key) combined make up the primary key.", - "original_table_Revisions": "REVISIONS", - "forms_UeiInfo": [], - "description_UeiInfo": "Audit Year and DBKEY (database key) combined make up the primary key.", - "original_table_UeiInfo": "UEI INFO", - }, - "ein": { - "models": ["Agencies", "EinInfo", "General"], - "original_name": "EIN", - "forms": [ - "SF-SAC 1997-2000: I/5/a", - "SF-SAC 2001-2003: I/5/a", - "SF-SAC 2004-2007: I/5/a", - "SF-SAC 2008-2009: I/4/a", - "SF-SAC 2010-2012: I/4/a", - "SF-SAC 2013-2015: I/4/a", - "SF-SAC 2016-2018: I/4/a", - "SF-SAC 2019-2021: I/4/a", - "SF-SAC 2022: I/4/a", - "SF-SAC 2001-2003: I/5/c", - "SF-SAC 2004-2007: I/5/c", - "SF-SAC 2008-2009: I/4/c", - "SF-SAC 2010-2012: I/4/c", - "SF-SAC 2013-2015: I/4/c", - "SF-SAC 2016-2018: I/4/c", - "SF-SAC 2019-2021: I/4/c", - "SF-SAC 2022: I/4/c", - "SF-SAC 1997-2000: I/5/a", - "SF-SAC 2001-2003: I/5/a", - "SF-SAC 2004-2007: I/5/a", - "SF-SAC 2008-2009: I/4/a", - "SF-SAC 2010-2012: I/4/a", - "SF-SAC 2013-2015: I/4/a", - "SF-SAC 2016-2018: I/4/a", - "SF-SAC 2019-2021: I/4/a", - "SF-SAC 2022: I/4/a", - ], - "forms_Agencies": [ - "SF-SAC 1997-2000: I/5/a", - "SF-SAC 2001-2003: I/5/a", - "SF-SAC 2004-2007: I/5/a", - "SF-SAC 2008-2009: I/4/a", - "SF-SAC 2010-2012: I/4/a", - "SF-SAC 2013-2015: I/4/a", - "SF-SAC 2016-2018: I/4/a", - "SF-SAC 2019-2021: I/4/a", - "SF-SAC 2022: I/4/a", - ], - "descriptions": [ - "Employer Identification Number (EIN) of primary grantee", - "Multiple Employer Identification Numbers", - "Primary Employer Identification Number", - ], - "description_Agencies": "Employer Identification Number (EIN) of primary grantee", - "original_table_Agencies": "AGENCIES", - "all_years": True, - "forms_EinInfo": [ - "SF-SAC 2001-2003: I/5/c", - "SF-SAC 2004-2007: I/5/c", - "SF-SAC 2008-2009: I/4/c", - "SF-SAC 2010-2012: I/4/c", - "SF-SAC 2013-2015: I/4/c", - "SF-SAC 2016-2018: I/4/c", - "SF-SAC 2019-2021: I/4/c", - "SF-SAC 2022: I/4/c", - ], - "description_EinInfo": "Multiple Employer Identification Numbers", - "original_table_EinInfo": "EIN INFO", - "forms_General": [ - "SF-SAC 1997-2000: I/5/a", - "SF-SAC 2001-2003: I/5/a", - "SF-SAC 2004-2007: I/5/a", - "SF-SAC 2008-2009: I/4/a", - "SF-SAC 2010-2012: I/4/a", - "SF-SAC 2013-2015: I/4/a", - "SF-SAC 2016-2018: I/4/a", - "SF-SAC 2019-2021: I/4/a", - "SF-SAC 2022: I/4/a", - ], - "description_General": "Primary Employer Identification Number", - "original_table_General": "GENERAL", - }, - "charts_tables": { - "models": ["Captext", "Findingstext"], - "original_name": "CHARTSTABLES", - "forms": [], - "forms_Captext": [], - "descriptions": [ - "Indicates whether or not the text contained charts or tables that could not be entered due to formatting restrictions", - "Indicates whether or not the text contained charts or tables that could not be entered due to formatting restrictions", - ], - "description_Captext": "Indicates whether or not the text contained charts or tables that could not be entered due to formatting restrictions", - "original_table_Captext": "CAPTEXT", - "all_years": True, - "forms_Findingstext": [], - "description_Findingstext": "Indicates whether or not the text contained charts or tables that could not be entered due to formatting restrictions", - "original_table_Findingstext": "FINDINGSTEXT", - }, - "finding_ref_nums": { - "models": ["Captext", "FederalAward", "Findings", "Findingstext"], - "original_name": "FINDINGREFNUMS", - "forms": [ - "SF-SAC 2019-2021: IV/1", - "SF-SAC 2022: IV/1", - "SF-SAC 1997-2000: III/7/e", - "SF-SAC 2001-2003: III/11/b", - "SF-SAC 2004-2007: III/10/b", - "SF-SAC 2008-2009: III/10/b", - "SF-SAC 2010-2012: III/10/b", - "SF-SAC 2013-2015: III/7/d", - "SF-SAC 2016-2018: III/4/e", - "SF-SAC 2019-2021: III/4/e", - "SF-SAC 2022: III/4/e", - "SF-SAC 2013-2015: III/7/d", - "SF-SAC 2016-2018: III/4/e", - "SF-SAC 2019-2021: III/4/e", - "SF-SAC 2022: III/4/e", - "SF-SAC 2019-2021: III/5/a", - "SF-SAC 2022: III/5/a", - ], - "forms_Captext": ["SF-SAC 2019-2021: IV/1", "SF-SAC 2022: IV/1"], - "descriptions": [ - "Audit Finding Reference Number", - "Findings Reference Numbers", - "Findings Reference Numbers", - "Audit Finding Reference Number", - ], - "description_Captext": "Audit Finding Reference Number", - "original_table_Captext": "CAPTEXT", - "all_years": True, - "forms_FederalAward": [ - "SF-SAC 1997-2000: III/7/e", - "SF-SAC 2001-2003: III/11/b", - "SF-SAC 2004-2007: III/10/b", - "SF-SAC 2008-2009: III/10/b", - "SF-SAC 2010-2012: III/10/b", - "SF-SAC 2013-2015: III/7/d", - "SF-SAC 2016-2018: III/4/e", - "SF-SAC 2019-2021: III/4/e", - "SF-SAC 2022: III/4/e", - ], - "description_FederalAward": "Findings Reference Numbers", - "original_table_FederalAward": "CFDA INFO", - "forms_Findings": [ - "SF-SAC 2013-2015: III/7/d", - "SF-SAC 2016-2018: III/4/e", - "SF-SAC 2019-2021: III/4/e", - "SF-SAC 2022: III/4/e", - ], - "description_Findings": "Findings Reference Numbers", - "original_table_Findings": "FINDINGS", - "forms_Findingstext": ["SF-SAC 2019-2021: III/5/a", "SF-SAC 2022: III/5/a"], - "description_Findingstext": "Audit Finding Reference Number", - "original_table_Findingstext": "FINDINGSTEXT", - }, - "seq_number": { - "models": ["Captext", "Findingstext", "Notes"], - "original_name": "SEQ_NUMBER", - "forms": [], - "forms_Captext": [], - "descriptions": [ - "Order that the CAP text was reported", - "Order that the findings text was reported", - "Order that the Note was reported", - ], - "description_Captext": "Order that the CAP text was reported", - "original_table_Captext": "CAPTEXT", - "all_years": True, - "forms_Findingstext": [], - "description_Findingstext": "Order that the findings text was reported", - "original_table_Findingstext": "FINDINGSTEXT", - "forms_Notes": [], - "description_Notes": "Order that the Note was reported", - "original_table_Notes": "NOTES", - }, - "text": { - "models": ["Captext", "Findingstext"], - "original_name": "TEXT", - "forms": [ - "SF-SAC 2019-2021: IV/2", - "SF-SAC 2022: IV/2", - "SF-SAC 2019-2021: III/5/b", - "SF-SAC 2022: III/5/b", - ], - "forms_Captext": ["SF-SAC 2019-2021: IV/2", "SF-SAC 2022: IV/2"], - "descriptions": [ - "Content of the Corrective Action Plan (CAP)", - "Content of the finding text", - ], - "description_Captext": "Content of the Corrective Action Plan (CAP)", - "original_table_Captext": "CAPTEXT", - "all_years": True, - "forms_Findingstext": ["SF-SAC 2019-2021: III/5/b", "SF-SAC 2022: III/5/b"], - "description_Findingstext": "Content of the finding text", - "original_table_Findingstext": "FINDINGSTEXT", - }, - "amount": { - "models": ["FederalAward"], - "original_name": "AMOUNT", - "forms": [ - "SF-SAC 1997-2000: III/6/c", - "SF-SAC 2001-2003: III/10/d", - "SF-SAC 2004-2007: III/9/e", - "SF-SAC 2008-2009: III/9/e", - "SF-SAC 2010-2012: III/9/f", - "SF-SAC 2013-2015: III/6/d", - "SF-SAC 2016-2018: II/1/e", - "SF-SAC 2019-2021: II/1/e", - "SF-SAC 2022: II/1/e", - ], - "forms_FederalAward": [ - "SF-SAC 1997-2000: III/6/c", - "SF-SAC 2001-2003: III/10/d", - "SF-SAC 2004-2007: III/9/e", - "SF-SAC 2008-2009: III/9/e", - "SF-SAC 2010-2012: III/9/f", - "SF-SAC 2013-2015: III/6/d", - "SF-SAC 2016-2018: II/1/e", - "SF-SAC 2019-2021: II/1/e", - "SF-SAC 2022: II/1/e", - ], - "descriptions": ["Amount Expended for the Federal Program"], - "description_FederalAward": "Amount Expended for the Federal Program", - "original_table_FederalAward": "CFDA INFO", - "all_years": True, - }, - "arra": { - "models": ["FederalAward"], - "original_name": "ARRA", - "forms": ["SF-SAC 2010-2012: III/9/d", "SF-SAC 2013-2015: III/6/g"], - "forms_FederalAward": [ - "SF-SAC 2010-2012: III/9/d", - "SF-SAC 2013-2015: III/6/g", - ], - "descriptions": ["American Recovery and Reinvestment Act Funded Program"], - "description_FederalAward": "American Recovery and Reinvestment Act Funded Program", - "original_table_FederalAward": "CFDA INFO", - "all_years": True, - }, - "award_identification": { - "models": ["FederalAward"], - "original_name": "AWARDIDENTIFICATION", - "forms": [ - "SF-SAC 2016-2018: II/1/c", - "SF-SAC 2019-2021: II/1/c", - "SF-SAC 2022: II/1/c", - ], - "forms_FederalAward": [ - "SF-SAC 2016-2018: II/1/c", - "SF-SAC 2019-2021: II/1/c", - "SF-SAC 2022: II/1/c", - ], - "descriptions": [ - "Other data used to identify the award which is not a CFDA number (e.g., program year, contract number)" - ], - "description_FederalAward": "Other data used to identify the award which is not a CFDA number (e.g., program year, contract number)", - "original_table_FederalAward": "CFDA INFO", - "all_years": True, - }, - "cfda": { - "models": ["FederalAward"], - "original_name": "CFDA", - "forms": [ - "SF-SAC 1997-2000: III/6/a", - "SF-SAC 2001-2003: III/10/a", - "SF-SAC 2004-2007: III/9/a & III/9/b combined", - "SF-SAC 2008-2009: III/9/a & III/9/b combined", - "SF-SAC 2010-2012: III/9/a & III/9/b combined", - "SF-SAC 2013-2015: III/6/a & III/6/b combined", - "SF-SAC 2016-2018: II/1/a & II/1/b combined", - "SF-SAC 2019-2021: II/1/a & II/1/b combined", - "SF-SAC 2022: II/1/a & II/1/b combined", - ], - "forms_FederalAward": [ - "SF-SAC 1997-2000: III/6/a", - "SF-SAC 2001-2003: III/10/a", - "SF-SAC 2004-2007: III/9/a & III/9/b combined", - "SF-SAC 2008-2009: III/9/a & III/9/b combined", - "SF-SAC 2010-2012: III/9/a & III/9/b combined", - "SF-SAC 2013-2015: III/6/a & III/6/b combined", - "SF-SAC 2016-2018: II/1/a & II/1/b combined", - "SF-SAC 2019-2021: II/1/a & II/1/b combined", - "SF-SAC 2022: II/1/a & II/1/b combined", - ], - "descriptions": ["Federal Agency Prefix and Extension"], - "description_FederalAward": "Federal Agency Prefix and Extension", - "original_table_FederalAward": "CFDA INFO", - "all_years": True, - }, - "cfda_program_name": { - "models": ["FederalAward"], - "original_name": "CFDAPROGRAMNAME", - "forms": [], - "forms_FederalAward": [], - "descriptions": [ - "Name of Federal Program (auto-generated by FAC from the CFDA catalog)" - ], - "description_FederalAward": "Name of Federal Program (auto-generated by FAC from the CFDA catalog)", - "original_table_FederalAward": "CFDA INFO", - "all_years": True, - }, - "cluster_name": { - "models": ["FederalAward"], - "original_name": "CLUSTERNAME", - "forms": [ - "SF-SAC 2016-2018: II/1/f", - "SF-SAC 2019-2021: II/1/f", - "SF-SAC 2022: II/1/f", - ], - "forms_FederalAward": [ - "SF-SAC 2016-2018: II/1/f", - "SF-SAC 2019-2021: II/1/f", - "SF-SAC 2022: II/1/f", - ], - "descriptions": ["The name of the cluster"], - "description_FederalAward": "The name of the cluster", - "original_table_FederalAward": "CFDA INFO", - "all_years": True, - }, - "cluster_total": { - "models": ["FederalAward"], - "original_name": "CLUSTERTOTAL", - "forms": [ - "SF-SAC 2016-2018: II/1/h", - "SF-SAC 2019-2021: II/1/h", - "SF-SAC 2022: II/1/h", - ], - "forms_FederalAward": [ - "SF-SAC 2016-2018: II/1/h", - "SF-SAC 2019-2021: II/1/h", - "SF-SAC 2022: II/1/h", - ], - "descriptions": [ - "Total Federal awards expended for each individual Federal program is auto-generated by summing the amount expended for all line items with the same Cluster Name" - ], - "description_FederalAward": "Total Federal awards expended for each individual Federal program is auto-generated by summing the amount expended for all line items with the same Cluster Name", - "original_table_FederalAward": "CFDA INFO", - "all_years": True, - }, - "direct": { - "models": ["FederalAward"], - "original_name": "DIRECT", - "forms": [ - "SF-SAC 2001-2003: III/10/e", - "SF-SAC 2004-2007: III/9/f", - "SF-SAC 2008-2009: III/9/f", - "SF-SAC 2010-2012: III/9/g", - "SF-SAC 2013-2015: III/6/h", - "SF-SAC 2016-2018: II/1/k", - "SF-SAC 2019-2021: II/1/k", - "SF-SAC 2022: II/1/k", - ], - "forms_FederalAward": [ - "SF-SAC 2001-2003: III/10/e", - "SF-SAC 2004-2007: III/9/f", - "SF-SAC 2008-2009: III/9/f", - "SF-SAC 2010-2012: III/9/g", - "SF-SAC 2013-2015: III/6/h", - "SF-SAC 2016-2018: II/1/k", - "SF-SAC 2019-2021: II/1/k", - "SF-SAC 2022: II/1/k", - ], - "descriptions": [ - "Indicate whether or not the award was received directly from a Federal awarding agency" - ], - "description_FederalAward": "Indicate whether or not the award was received directly from a Federal awarding agency", - "original_table_FederalAward": "CFDA INFO", - "all_years": True, - }, - "elec_audits_id": { - "models": ["FederalAward", "Findings", "Passthrough"], - "original_name": "ELECAUDITSID", - "forms": [], - "forms_FederalAward": [], - "descriptions": [ - "FAC system generated sequence number used to link to Findings data between CFDA Info and Findings", - "FAC system generated sequence number used to link to Findings data between CFDA Info and Findings", - "FAC system generated sequence number used to link to Passthrough data between CFDA Info and Passthrough", - ], - "description_FederalAward": "FAC system generated sequence number used to link to Findings data between CFDA Info and Findings", - "original_table_FederalAward": "CFDA INFO", - "all_years": True, - "forms_Findings": [], - "description_Findings": "FAC system generated sequence number used to link to Findings data between CFDA Info and Findings", - "original_table_Findings": "FINDINGS", - "forms_Passthrough": [], - "description_Passthrough": "FAC system generated sequence number used to link to Passthrough data between CFDA Info and Passthrough", - "original_table_Passthrough": "PASSTHROUGH", - }, - "federal_program_name": { - "models": ["FederalAward"], - "original_name": "FEDERALPROGRAMNAME", - "forms": [ - "SF-SAC 1997-2000: III/6/b", - "SF-SAC 2001-2003: III/10/c", - "SF-SAC 2004-2007: III/9/d", - "SF-SAC 2008-2009: III/9/d", - "SF-SAC 2010-2012: III/9/e", - "SF-SAC 2013-2015: III/6/c", - "SF-SAC 2016-2018: II/1/d", - "SF-SAC 2019-2021: II/1/d", - "SF-SAC 2022: II/1/d", - ], - "forms_FederalAward": [ - "SF-SAC 1997-2000: III/6/b", - "SF-SAC 2001-2003: III/10/c", - "SF-SAC 2004-2007: III/9/d", - "SF-SAC 2008-2009: III/9/d", - "SF-SAC 2010-2012: III/9/e", - "SF-SAC 2013-2015: III/6/c", - "SF-SAC 2016-2018: II/1/d", - "SF-SAC 2019-2021: II/1/d", - "SF-SAC 2022: II/1/d", - ], - "descriptions": ["Name of Federal Program"], - "description_FederalAward": "Name of Federal Program", - "original_table_FederalAward": "CFDA INFO", - "all_years": True, - }, - "findings_count": { - "models": ["FederalAward"], - "original_name": "FINDINGSCOUNT", - "forms": [ - "SF-SAC 2013-2015: III/6/k", - "SF-SAC 2016-2018: III/1/c", - "SF-SAC 2019-2021: III/1/c", - "SF-SAC 2022: III/1/c", - ], - "forms_FederalAward": [ - "SF-SAC 2013-2015: III/6/k", - "SF-SAC 2016-2018: III/1/c", - "SF-SAC 2019-2021: III/1/c", - "SF-SAC 2022: III/1/c", - ], - "descriptions": [ - "Number of findings for the federal program (only available for audit years 2013 and beyond)" - ], - "description_FederalAward": "Number of findings for the federal program (only available for audit years 2013 and beyond)", - "original_table_FederalAward": "CFDA INFO", - "all_years": True, - }, - "loan_balance": { - "models": ["FederalAward"], - "original_name": "LOANBALANCE", - "forms": [ - "SF-SAC 2016-2018: II/1/j", - "SF-SAC 2019-2021: II/1/j", - "SF-SAC 2022: II/1/j", - ], - "forms_FederalAward": [ - "SF-SAC 2016-2018: II/1/j", - "SF-SAC 2019-2021: II/1/j", - "SF-SAC 2022: II/1/j", - ], - "descriptions": [ - "The loan or loan guarantee (loan) balance outstanding at the end of the audit period. A response of ‚ÄòN/A‚Äô is acceptable." - ], - "description_FederalAward": "The loan or loan guarantee (loan) balance outstanding at the end of the audit period. A response of ‚ÄòN/A‚Äô is acceptable.", - "original_table_FederalAward": "CFDA INFO", - "all_years": True, - }, - "loans": { - "models": ["FederalAward"], - "original_name": "LOANS", - "forms": [ - "SF-SAC 2013-2015: III/6/f", - "SF-SAC 2016-2018: II/1/i", - "SF-SAC 2019-2021: II/1/i", - "SF-SAC 2022: II/1/i", - ], - "forms_FederalAward": [ - "SF-SAC 2013-2015: III/6/f", - "SF-SAC 2016-2018: II/1/i", - "SF-SAC 2019-2021: II/1/i", - "SF-SAC 2022: II/1/i", - ], - "descriptions": [ - "Indicate whether or not the program is a Loan or Loan Guarantee (only available for audit years 2013 and beyond)" - ], - "description_FederalAward": "Indicate whether or not the program is a Loan or Loan Guarantee (only available for audit years 2013 and beyond)", - "original_table_FederalAward": "CFDA INFO", - "all_years": True, - }, - "major_program": { - "models": ["FederalAward"], - "original_name": "MAJORPROGRAM", - "forms": [ - "SF-SAC 1997-2000: III/7/a", - "SF-SAC 2001-2003: III/10/f", - "SF-SAC 2004-2007: III/9/g", - "SF-SAC 2008-2009: III/9/g", - "SF-SAC 2010-2012: III/9/h", - "SF-SAC 2013-2015: III/6/i", - "SF-SAC 2016-2018: III/1/a", - "SF-SAC 2019-2021: III/1/a", - "SF-SAC 2022: III/1/a", - ], - "forms_FederalAward": [ - "SF-SAC 1997-2000: III/7/a", - "SF-SAC 2001-2003: III/10/f", - "SF-SAC 2004-2007: III/9/g", - "SF-SAC 2008-2009: III/9/g", - "SF-SAC 2010-2012: III/9/h", - "SF-SAC 2013-2015: III/6/i", - "SF-SAC 2016-2018: III/1/a", - "SF-SAC 2019-2021: III/1/a", - "SF-SAC 2022: III/1/a", - ], - "descriptions": [ - "Indicate whether or not the Federal program is a major program" - ], - "description_FederalAward": "Indicate whether or not the Federal program is a major program", - "original_table_FederalAward": "CFDA INFO", - "all_years": True, - }, - "other_cluster_name": { - "models": ["FederalAward"], - "original_name": "OTHERCLUSTERNAME", - "forms": [], - "forms_FederalAward": [], - "descriptions": [ - "The name of the cluster (if not listed in the Compliance Supplement)" - ], - "description_FederalAward": "The name of the cluster (if not listed in the Compliance Supplement)", - "original_table_FederalAward": "CFDA INFO", - "all_years": True, - }, - "passthrough_amount": { - "models": ["FederalAward"], - "original_name": "PASSTHROUGHAMOUNT", - "forms": [ - "SF-SAC 2016-2018: II/1/o", - "SF-SAC 2019-2021: II/1/o", - "SF-SAC 2022: II/1/o", - ], - "forms_FederalAward": [ - "SF-SAC 2016-2018: II/1/o", - "SF-SAC 2019-2021: II/1/o", - "SF-SAC 2022: II/1/o", - ], - "descriptions": ["Amount passed through to subrecipients"], - "description_FederalAward": "Amount passed through to subrecipients", - "original_table_FederalAward": "CFDA INFO", - "all_years": True, - }, - "passthrough_award": { - "models": ["FederalAward"], - "original_name": "PASSTHROUGHAWARD", - "forms": [ - "SF-SAC 2016-2018: II/1/n", - "SF-SAC 2019-2021: II/1/n", - "SF-SAC 2022: II/1/n", - ], - "forms_FederalAward": [ - "SF-SAC 2016-2018: II/1/n", - "SF-SAC 2019-2021: II/1/n", - "SF-SAC 2022: II/1/n", - ], - "descriptions": [ - "Indicates whether or not funds were passed through to any subrecipients for the Federal program" - ], - "description_FederalAward": "Indicates whether or not funds were passed through to any subrecipients for the Federal program", - "original_table_FederalAward": "CFDA INFO", - "all_years": True, - }, - "program_total": { - "models": ["FederalAward"], - "original_name": "PROGRAMTOTAL", - "forms": [ - "SF-SAC 2016-2018: II/1/g", - "SF-SAC 2019-2021: II/1/g", - "SF-SAC 2022: II/1/g", - ], - "forms_FederalAward": [ - "SF-SAC 2016-2018: II/1/g", - "SF-SAC 2019-2021: II/1/g", - "SF-SAC 2022: II/1/g", - ], - "descriptions": [ - "Total Federal awards expended for each individual Federal program is auto-generated by summing the amount expended for all line items with the same CFDA Prefix and Extension" - ], - "description_FederalAward": "Total Federal awards expended for each individual Federal program is auto-generated by summing the amount expended for all line items with the same CFDA Prefix and Extension", - "original_table_FederalAward": "CFDA INFO", - "all_years": True, - }, - "research_and_development": { - "models": ["FederalAward"], - "original_name": "R&D", - "forms": [ - "SF-SAC 2001-2003: III/10/b", - "SF-SAC 2004-2007: III/9/c", - "SF-SAC 2008-2009: III/9/c", - "SF-SAC 2010-2012: III/9/c", - "SF-SAC 2013-2015: III/6/e", - ], - "forms_FederalAward": [ - "SF-SAC 2001-2003: III/10/b", - "SF-SAC 2004-2007: III/9/c", - "SF-SAC 2008-2009: III/9/c", - "SF-SAC 2010-2012: III/9/c", - "SF-SAC 2013-2015: III/6/e", - ], - "descriptions": [ - "Indicate whether or not the program is a Research and Development program" - ], - "description_FederalAward": "Indicate whether or not the program is a Research and Development program", - "original_table_FederalAward": "CFDA INFO", - "all_years": True, - }, - "state_cluster_name": { - "models": ["FederalAward"], - "original_name": "STATECLUSTERNAME", - "forms": [], - "forms_FederalAward": [], - "descriptions": ["The name of the state cluster"], - "description_FederalAward": "The name of the state cluster", - "original_table_FederalAward": "CFDA INFO", - "all_years": True, - }, - "type_report_major_program": { - "models": ["FederalAward", "General"], - "original_name": "TYPEREPORT_MP", - "forms": [ - "SF-SAC 2004-2007: III/9/h", - "SF-SAC 2008-2009: III/9/h", - "SF-SAC 2010-2012: III/9/i", - "SF-SAC 2013-2015: III/6/j", - "SF-SAC 2016-2018: III/1/b", - "SF-SAC 2019-2021: III/1/b", - "SF-SAC 2022: III/1/b", - "SF-SAC 1997-2000: III/1", - "SF-SAC 2001-2003: III/1", - ], - "forms_FederalAward": [ - "SF-SAC 2004-2007: III/9/h", - "SF-SAC 2008-2009: III/9/h", - "SF-SAC 2010-2012: III/9/i", - "SF-SAC 2013-2015: III/6/j", - "SF-SAC 2016-2018: III/1/b", - "SF-SAC 2019-2021: III/1/b", - "SF-SAC 2022: III/1/b", - ], - "descriptions": [ - "Type of Report Issued on the Major Program Compliance", - "Type of Report Issued on the Major Program Compliance", - ], - "description_FederalAward": "Type of Report Issued on the Major Program Compliance", - "original_table_FederalAward": "CFDA INFO", - "all_years": True, - "forms_General": ["SF-SAC 1997-2000: III/1", "SF-SAC 2001-2003: III/1"], - "description_General": "Type of Report Issued on the Major Program Compliance", - "original_table_General": "GENERAL", - }, - "type_requirement": { - "models": ["FederalAward", "Findings"], - "original_name": "TYPEREQUIREMENT", - "forms": [ - "SF-SAC 1997-2000: III/7/b", - "SF-SAC 2001-2003: III/11/a", - "SF-SAC 2004-2007: III/10/a", - "SF-SAC 2008-2009: III/10/a", - "SF-SAC 2010-2012: III/10/a", - "SF-SAC 2013-2015: III/7/e", - "SF-SAC 2016-2018: III/4/f", - "SF-SAC 2019-2021: III/4/f", - "SF-SAC 2022: III/4/f", - "SF-SAC 2013-2015: III/7/e", - "SF-SAC 2016-2018: III/4/f", - "SF-SAC 2019-2021: III/4/f", - "SF-SAC 2022: III/4/f", - ], - "forms_FederalAward": [ - "SF-SAC 1997-2000: III/7/b", - "SF-SAC 2001-2003: III/11/a", - "SF-SAC 2004-2007: III/10/a", - "SF-SAC 2008-2009: III/10/a", - "SF-SAC 2010-2012: III/10/a", - "SF-SAC 2013-2015: III/7/e", - "SF-SAC 2016-2018: III/4/f", - "SF-SAC 2019-2021: III/4/f", - "SF-SAC 2022: III/4/f", - ], - "descriptions": ["Type Requirement Failure", "Type Requirement Failure"], - "description_FederalAward": "Type Requirement Failure", - "original_table_FederalAward": "CFDA INFO", - "all_years": True, - "forms_Findings": [ - "SF-SAC 2013-2015: III/7/e", - "SF-SAC 2016-2018: III/4/f", - "SF-SAC 2019-2021: III/4/f", - "SF-SAC 2022: III/4/f", - ], - "description_Findings": "Type Requirement Failure", - "original_table_Findings": "FINDINGS", - }, - "duns": { - "models": ["DunsInfo", "General"], - "original_name": "DUNS", - "forms": [ - "SF-SAC 2004-2007: I/5/f", - "SF-SAC 2008-2009: I/4/f", - "SF-SAC 2010-2012: I/4/f", - "SF-SAC 2013-2015: I/4/f", - "SF-SAC 2016-2018: I/4/f", - "SF-SAC 2019-2021: I/4/f", - "SF-SAC 2022: I/4/f", - "SF-SAC 2004-2007: I/5/d", - "SF-SAC 2008-2009: I/4/d", - "SF-SAC 2010-2012: I/4/d", - "SF-SAC 2013-2015: I/4/d", - "SF-SAC 2016-2018: I/4/d", - "SF-SAC 2019-2021: I/4/d", - "SF-SAC 2022: I/4/d", - ], - "forms_DunsInfo": [ - "SF-SAC 2004-2007: I/5/f", - "SF-SAC 2008-2009: I/4/f", - "SF-SAC 2010-2012: I/4/f", - "SF-SAC 2013-2015: I/4/f", - "SF-SAC 2016-2018: I/4/f", - "SF-SAC 2019-2021: I/4/f", - "SF-SAC 2022: I/4/f", - ], - "descriptions": [ - "Multiple Data Universal Numbering System Numbers", - "Primary Data Universal Numbering System Number", - ], - "description_DunsInfo": "Multiple Data Universal Numbering System Numbers", - "original_table_DunsInfo": "DUN INFO", - "all_years": True, - "forms_General": [ - "SF-SAC 2004-2007: I/5/d", - "SF-SAC 2008-2009: I/4/d", - "SF-SAC 2010-2012: I/4/d", - "SF-SAC 2013-2015: I/4/d", - "SF-SAC 2016-2018: I/4/d", - "SF-SAC 2019-2021: I/4/d", - "SF-SAC 2022: I/4/d", - ], - "description_General": "Primary Data Universal Numbering System Number", - "original_table_General": "GENERAL", - }, - "duns_seq_num": { - "models": ["DunsInfo"], - "original_name": "DUNSEQNUM", - "forms": [], - "forms_DunsInfo": [], - "descriptions": ["Order that DUNS was reported on page 4 of SF-SAC"], - "description_DunsInfo": "Order that DUNS was reported on page 4 of SF-SAC", - "original_table_DunsInfo": "DUN INFO", - "all_years": True, - }, - "ein_seq_num": { - "models": ["EinInfo"], - "original_name": "EINSEQNUM", - "forms": [], - "forms_EinInfo": [], - "descriptions": ["Order that EINs were reported on page 4 of SF-SAC"], - "description_EinInfo": "Order that EINs were reported on page 4 of SF-SAC", - "original_table_EinInfo": "EIN INFO", - "all_years": True, - }, - "elec_audit_findings_id": { - "models": ["Findings"], - "original_name": "ELECAUDITFINDINGSID", - "forms": [], - "forms_Findings": [], - "descriptions": ["FAC system generated sequence number for finding"], - "description_Findings": "FAC system generated sequence number for finding", - "original_table_Findings": "FINDINGS", - "all_years": True, - }, - "material_weakness": { - "models": ["Findings", "General"], - "original_name": "MATERIALWEAKNESS", - "forms": [ - "SF-SAC 2013-2015: III/7/h", - "SF-SAC 2016-2018: III/4/i", - "SF-SAC 2019-2021: III/4/i", - "SF-SAC 2022: III/4/i", - "SF-SAC 1997-2000: II/4", - "SF-SAC 2001-2003: II/4", - "SF-SAC 2004-2007: II/4", - "SF-SAC 2008-2009: II/4", - "SF-SAC 2010-2012: II/4", - "SF-SAC 2013-2015: II/4", - "SF-SAC 2016-2018: III/2/d", - "SF-SAC 2019-2021: III/2/d", - "SF-SAC 2022: III/2/d", - ], - "forms_Findings": [ - "SF-SAC 2013-2015: III/7/h", - "SF-SAC 2016-2018: III/4/i", - "SF-SAC 2019-2021: III/4/i", - "SF-SAC 2022: III/4/i", - ], - "descriptions": [ - "Material Weakness finding", - "Whether or not the audit disclosed any reportable condition/significant deficiency as a material weakness on financial statements", - ], - "description_Findings": "Material Weakness finding", - "original_table_Findings": "FINDINGS", - "all_years": True, - "forms_General": [ - "SF-SAC 1997-2000: II/4", - "SF-SAC 2001-2003: II/4", - "SF-SAC 2004-2007: II/4", - "SF-SAC 2008-2009: II/4", - "SF-SAC 2010-2012: II/4", - "SF-SAC 2013-2015: II/4", - "SF-SAC 2016-2018: III/2/d", - "SF-SAC 2019-2021: III/2/d", - "SF-SAC 2022: III/2/d", - ], - "description_General": "Whether or not the audit disclosed any reportable condition/significant deficiency as a material weakness on financial statements", - "original_table_General": "GENERAL", - }, - "modified_opinion": { - "models": ["Findings"], - "original_name": "MODIFIEDOPINION", - "forms": [ - "SF-SAC 2013-2015: III/7/f", - "SF-SAC 2016-2018: III/4/g", - "SF-SAC 2019-2021: III/4/g", - "SF-SAC 2022: III/4/g", - ], - "forms_Findings": [ - "SF-SAC 2013-2015: III/7/f", - "SF-SAC 2016-2018: III/4/g", - "SF-SAC 2019-2021: III/4/g", - "SF-SAC 2022: III/4/g", - ], - "descriptions": ["Modified Opinion finding"], - "description_Findings": "Modified Opinion finding", - "original_table_Findings": "FINDINGS", - "all_years": True, - }, - "other_findings": { - "models": ["Findings"], - "original_name": "OTHERFINDINGS", - "forms": [ - "SF-SAC 2013-2015: III/7/j", - "SF-SAC 2016-2018: III/4/k", - "SF-SAC 2019-2021: III/4/k", - "SF-SAC 2022: III/4/k", - ], - "forms_Findings": [ - "SF-SAC 2013-2015: III/7/j", - "SF-SAC 2016-2018: III/4/k", - "SF-SAC 2019-2021: III/4/k", - "SF-SAC 2022: III/4/k", - ], - "descriptions": ["Other findings"], - "description_Findings": "Other findings", - "original_table_Findings": "FINDINGS", - "all_years": True, - }, - "other_non_compliance": { - "models": ["Findings"], - "original_name": "OTHERNONCOMPLIANCE", - "forms": [ - "SF-SAC 2013-2015: III/7/g", - "SF-SAC 2016-2018: III/4/h", - "SF-SAC 2019-2021: III/4/h", - "SF-SAC 2022: III/4/h", - ], - "forms_Findings": [ - "SF-SAC 2013-2015: III/7/g", - "SF-SAC 2016-2018: III/4/h", - "SF-SAC 2019-2021: III/4/h", - "SF-SAC 2022: III/4/h", - ], - "descriptions": ["Other Noncompliance finding"], - "description_Findings": "Other Noncompliance finding", - "original_table_Findings": "FINDINGS", - "all_years": True, - }, - "prior_finding_ref_nums": { - "models": ["Findings"], - "original_name": "PRIORFINDINGREFNUMS", - "forms": [ - "SF-SAC 2016-2018: III/4/n", - "SF-SAC 2019-2021: III/4/n", - "SF-SAC 2022: III/4/n", - ], - "forms_Findings": [ - "SF-SAC 2016-2018: III/4/n", - "SF-SAC 2019-2021: III/4/n", - "SF-SAC 2022: III/4/n", - ], - "descriptions": [ - "Audit finding reference numbers from the immediate prior audit" - ], - "description_Findings": "Audit finding reference numbers from the immediate prior audit", - "original_table_Findings": "FINDINGS", - "all_years": True, - }, - "questioned_costs": { - "models": ["Findings", "General"], - "original_name": "QCOSTS", - "forms": [ - "SF-SAC 2013-2015: III/7/k", - "SF-SAC 2016-2018: III/4/l", - "SF-SAC 2019-2021: III/4/l", - "SF-SAC 2022: III/4/l", - "SF-SAC 2001-2003: III/7", - "SF-SAC 2004-2007: III/6", - "SF-SAC 2008-2009: III/6", - "SF-SAC 2010-2012: III/6", - ], - "forms_Findings": [ - "SF-SAC 2013-2015: III/7/k", - "SF-SAC 2016-2018: III/4/l", - "SF-SAC 2019-2021: III/4/l", - "SF-SAC 2022: III/4/l", - ], - "descriptions": [ - "Questioned Costs", - "Indicate whether or not the audit disclosed any known questioned costs.", - ], - "description_Findings": "Questioned Costs", - "original_table_Findings": "FINDINGS", - "all_years": True, - "forms_General": [ - "SF-SAC 2001-2003: III/7", - "SF-SAC 2004-2007: III/6", - "SF-SAC 2008-2009: III/6", - "SF-SAC 2010-2012: III/6", - ], - "description_General": "Indicate whether or not the audit disclosed any known questioned costs.", - "original_table_General": "GENERAL", - }, - "repeat_finding": { - "models": ["Findings"], - "original_name": "REPEATFINDING", - "forms": [ - "SF-SAC 2016-2018: III/4/m", - "SF-SAC 2019-2021: III/4/m", - "SF-SAC 2022: III/4/m", - ], - "forms_Findings": [ - "SF-SAC 2016-2018: III/4/m", - "SF-SAC 2019-2021: III/4/m", - "SF-SAC 2022: III/4/m", - ], - "descriptions": [ - "Indicates whether or not the audit finding was a repeat of an audit finding in the immediate prior audit" - ], - "description_Findings": "Indicates whether or not the audit finding was a repeat of an audit finding in the immediate prior audit", - "original_table_Findings": "FINDINGS", - "all_years": True, - }, - "significant_deficiency": { - "models": ["Findings"], - "original_name": "SIGNIFICANTDEFICIENCY", - "forms": [ - "SF-SAC 2013-2015: III/7/i", - "SF-SAC 2016-2018: III/4/j", - "SF-SAC 2019-2021: III/4/j", - "SF-SAC 2022: III/4/j", - ], - "forms_Findings": [ - "SF-SAC 2013-2015: III/7/i", - "SF-SAC 2016-2018: III/4/j", - "SF-SAC 2019-2021: III/4/j", - "SF-SAC 2022: III/4/j", - ], - "descriptions": ["Significant Deficiency finding"], - "description_Findings": "Significant Deficiency finding", - "original_table_Findings": "FINDINGS", - "all_years": True, - }, - "auditee_certify_name": { - "models": ["General"], - "original_name": "AUDITEECERTIFYNAME", - "forms": [ - "SF-SAC 1997-2000: I/6/g", - "SF-SAC 2001-2003: I/6/g", - "SF-SAC 2004-2007: I/6/g", - "SF-SAC 2008-2009: I/5/g", - "SF-SAC 2010-2012: I/5/g", - "SF-SAC 2013-2015: certifications", - "SF-SAC 2016-2018: certifications", - "SF-SAC 2019-2021: certifications", - "SF-SAC 2022: certifications", - ], - "forms_General": [ - "SF-SAC 1997-2000: I/6/g", - "SF-SAC 2001-2003: I/6/g", - "SF-SAC 2004-2007: I/6/g", - "SF-SAC 2008-2009: I/5/g", - "SF-SAC 2010-2012: I/5/g", - "SF-SAC 2013-2015: certifications", - "SF-SAC 2016-2018: certifications", - "SF-SAC 2019-2021: certifications", - "SF-SAC 2022: certifications", - ], - "descriptions": ["Name of Auditee Certifying Official"], - "description_General": "Name of Auditee Certifying Official", - "original_table_General": "GENERAL", - "all_years": True, - }, - "auditee_certify_title": { - "models": ["General"], - "original_name": "AUDITEECERTIFYTITLE", - "forms": [ - "SF-SAC 1997-2000: I/6/g", - "SF-SAC 2001-2003: I/6/g", - "SF-SAC 2004-2007: I/6/g", - "SF-SAC 2008-2009: I/5/g", - "SF-SAC 2010-2012: I/5/g", - "SF-SAC 2013-2015: certifications", - "SF-SAC 2016-2018: certifications", - "SF-SAC 2019-2021: certifications", - "SF-SAC 2022: certifications", - ], - "forms_General": [ - "SF-SAC 1997-2000: I/6/g", - "SF-SAC 2001-2003: I/6/g", - "SF-SAC 2004-2007: I/6/g", - "SF-SAC 2008-2009: I/5/g", - "SF-SAC 2010-2012: I/5/g", - "SF-SAC 2013-2015: certifications", - "SF-SAC 2016-2018: certifications", - "SF-SAC 2019-2021: certifications", - "SF-SAC 2022: certifications", - ], - "descriptions": ["Title of Auditee Certifying Official"], - "description_General": "Title of Auditee Certifying Official", - "original_table_General": "GENERAL", - "all_years": True, - }, - "auditee_contact": { - "models": ["General"], - "original_name": "AUDITEECONTACT", - "forms": [ - "SF-SAC 1997-2000: I/6/c", - "SF-SAC 2001-2003: I/6/c", - "SF-SAC 2004-2007: I/6/c", - "SF-SAC 2008-2009: I/5/c", - "SF-SAC 2010-2012: I/5/c", - "SF-SAC 2013-2015: I/5/c", - "SF-SAC 2016-2018: I/5/c", - "SF-SAC 2019-2021: I/5/c", - "SF-SAC 2022: I/5/c", - ], - "forms_General": [ - "SF-SAC 1997-2000: I/6/c", - "SF-SAC 2001-2003: I/6/c", - "SF-SAC 2004-2007: I/6/c", - "SF-SAC 2008-2009: I/5/c", - "SF-SAC 2010-2012: I/5/c", - "SF-SAC 2013-2015: I/5/c", - "SF-SAC 2016-2018: I/5/c", - "SF-SAC 2019-2021: I/5/c", - "SF-SAC 2022: I/5/c", - ], - "descriptions": ["Name of Auditee Contact"], - "description_General": "Name of Auditee Contact", - "original_table_General": "GENERAL", - "all_years": True, - }, - "auditee_date_signed": { - "models": ["General"], - "original_name": "AUDITEEDATESIGNED", - "forms": [ - "SF-SAC 1997-2000: I/6/g", - "SF-SAC 2001-2003: I/6/g", - "SF-SAC 2004-2007: I/6/g", - "SF-SAC 2008-2009: I/5/g", - "SF-SAC 2010-2012: I/5/g", - "SF-SAC 2013-2015: certifications", - "SF-SAC 2016-2018: certifications", - "SF-SAC 2019-2021: certifications", - "SF-SAC 2022: certifications", - ], - "forms_General": [ - "SF-SAC 1997-2000: I/6/g", - "SF-SAC 2001-2003: I/6/g", - "SF-SAC 2004-2007: I/6/g", - "SF-SAC 2008-2009: I/5/g", - "SF-SAC 2010-2012: I/5/g", - "SF-SAC 2013-2015: certifications", - "SF-SAC 2016-2018: certifications", - "SF-SAC 2019-2021: certifications", - "SF-SAC 2022: certifications", - ], - "descriptions": ["Date of auditee signature"], - "description_General": "Date of auditee signature", - "original_table_General": "GENERAL", - "all_years": True, - }, - "auditee_email": { - "models": ["General"], - "original_name": "AUDITEEEMAIL", - "forms": [ - "SF-SAC 1997-2000: I/6/f", - "SF-SAC 2001-2003: I/6/f", - "SF-SAC 2004-2007: I/6/f", - "SF-SAC 2008-2009: I/5/f", - "SF-SAC 2010-2012: I/5/f", - "SF-SAC 2013-2015: I/5/f", - "SF-SAC 2016-2018: I/5/e", - "SF-SAC 2019-2021: I/5/e", - "SF-SAC 2022: I/5/e", - ], - "forms_General": [ - "SF-SAC 1997-2000: I/6/f", - "SF-SAC 2001-2003: I/6/f", - "SF-SAC 2004-2007: I/6/f", - "SF-SAC 2008-2009: I/5/f", - "SF-SAC 2010-2012: I/5/f", - "SF-SAC 2013-2015: I/5/f", - "SF-SAC 2016-2018: I/5/e", - "SF-SAC 2019-2021: I/5/e", - "SF-SAC 2022: I/5/e", - ], - "descriptions": ["Auditee Email address"], - "description_General": "Auditee Email address", - "original_table_General": "GENERAL", - "all_years": True, - }, - "auditee_fax": { - "models": ["General"], - "original_name": "AUDITEEFAX", - "forms": [ - "SF-SAC 1997-2000: I/6/e", - "SF-SAC 2001-2003: I/6/e", - "SF-SAC 2004-2007: I/6/e", - "SF-SAC 2008-2009: I/5/e", - "SF-SAC 2010-2012: I/5/e", - "SF-SAC 2013-2015: I/5/e", - ], - "forms_General": [ - "SF-SAC 1997-2000: I/6/e", - "SF-SAC 2001-2003: I/6/e", - "SF-SAC 2004-2007: I/6/e", - "SF-SAC 2008-2009: I/5/e", - "SF-SAC 2010-2012: I/5/e", - "SF-SAC 2013-2015: I/5/e", - ], - "descriptions": ["Auditee Fax Number (optional)"], - "description_General": "Auditee Fax Number (optional)", - "original_table_General": "GENERAL", - "all_years": True, - }, - "auditee_name": { - "models": ["General"], - "original_name": "AUDITEENAME", - "forms": [ - "SF-SAC 1997-2000: I/6/a", - "SF-SAC 2001-2003: I/6/a", - "SF-SAC 2004-2007: I/6/a", - "SF-SAC 2008-2009: I/5/a", - "SF-SAC 2010-2012: I/5/a", - "SF-SAC 2013-2015: I/5/a", - "SF-SAC 2016-2018: I/5/a", - "SF-SAC 2019-2021: I/5/a", - "SF-SAC 2022: I/5/a", - ], - "forms_General": [ - "SF-SAC 1997-2000: I/6/a", - "SF-SAC 2001-2003: I/6/a", - "SF-SAC 2004-2007: I/6/a", - "SF-SAC 2008-2009: I/5/a", - "SF-SAC 2010-2012: I/5/a", - "SF-SAC 2013-2015: I/5/a", - "SF-SAC 2016-2018: I/5/a", - "SF-SAC 2019-2021: I/5/a", - "SF-SAC 2022: I/5/a", - ], - "descriptions": ["Name of the Auditee"], - "description_General": "Name of the Auditee", - "original_table_General": "GENERAL", - "all_years": True, - }, - "auditee_name_title": { - "models": ["General"], - "original_name": "AUDITEENAMETITLE", - "forms": [ - "SF-SAC 1997-2000: I/6/g", - "SF-SAC 2001-2003: I/6/g", - "SF-SAC 2004-2007: I/6/g", - "SF-SAC 2008-2009: I/5/g", - "SF-SAC 2010-2012: I/5/g", - "SF-SAC 2013-2015: certifications", - "SF-SAC 2016-2018: certifications", - "SF-SAC 2019-2021: certifications", - "SF-SAC 2022: certifications", - ], - "forms_General": [ - "SF-SAC 1997-2000: I/6/g", - "SF-SAC 2001-2003: I/6/g", - "SF-SAC 2004-2007: I/6/g", - "SF-SAC 2008-2009: I/5/g", - "SF-SAC 2010-2012: I/5/g", - "SF-SAC 2013-2015: certifications", - "SF-SAC 2016-2018: certifications", - "SF-SAC 2019-2021: certifications", - "SF-SAC 2022: certifications", - ], - "descriptions": ["Title of Auditee Certifying Official"], - "description_General": "Title of Auditee Certifying Official", - "original_table_General": "GENERAL", - "all_years": True, - }, - "auditee_phone": { - "models": ["General"], - "original_name": "AUDITEEPHONE", - "forms": [ - "SF-SAC 1997-2000: I/6/d", - "SF-SAC 2001-2003: I/6/d", - "SF-SAC 2004-2007: I/6/d", - "SF-SAC 2008-2009: I/5/d", - "SF-SAC 2010-2012: I/5/d", - "SF-SAC 2013-2015: I/5/d", - "SF-SAC 2016-2018: I/5/d", - "SF-SAC 2019-2021: I/5/d", - "SF-SAC 2022: I/5/d", - ], - "forms_General": [ - "SF-SAC 1997-2000: I/6/d", - "SF-SAC 2001-2003: I/6/d", - "SF-SAC 2004-2007: I/6/d", - "SF-SAC 2008-2009: I/5/d", - "SF-SAC 2010-2012: I/5/d", - "SF-SAC 2013-2015: I/5/d", - "SF-SAC 2016-2018: I/5/d", - "SF-SAC 2019-2021: I/5/d", - "SF-SAC 2022: I/5/d", - ], - "descriptions": ["Auditee Phone Number"], - "description_General": "Auditee Phone Number", - "original_table_General": "GENERAL", - "all_years": True, - }, - "auditee_title": { - "models": ["General"], - "original_name": "AUDITEETITLE", - "forms": [ - "SF-SAC 1997-2000: I/6/c", - "SF-SAC 2001-2003: I/6/c", - "SF-SAC 2004-2007: I/6/c", - "SF-SAC 2008-2009: I/5/c", - "SF-SAC 2010-2012: I/5/c", - "SF-SAC 2013-2015: I/5/c", - "SF-SAC 2016-2018: I/5/c", - "SF-SAC 2019-2021: I/5/c", - "SF-SAC 2022: I/5/c", - ], - "forms_General": [ - "SF-SAC 1997-2000: I/6/c", - "SF-SAC 2001-2003: I/6/c", - "SF-SAC 2004-2007: I/6/c", - "SF-SAC 2008-2009: I/5/c", - "SF-SAC 2010-2012: I/5/c", - "SF-SAC 2013-2015: I/5/c", - "SF-SAC 2016-2018: I/5/c", - "SF-SAC 2019-2021: I/5/c", - "SF-SAC 2022: I/5/c", - ], - "descriptions": ["Title of Auditee Contact"], - "description_General": "Title of Auditee Contact", - "original_table_General": "GENERAL", - "all_years": True, - }, - "auditor_ein": { - "models": ["General"], - "original_name": "AUDITOR_EIN", - "forms": [ - "SF-SAC 2013-2015: I/6/b", - "SF-SAC 2016-2018: I/6/b", - "SF-SAC 2019-2021: I/6/b", - "SF-SAC 2022: I/6/b", - ], - "forms_General": [ - "SF-SAC 2013-2015: I/6/b", - "SF-SAC 2016-2018: I/6/b", - "SF-SAC 2019-2021: I/6/b", - "SF-SAC 2022: I/6/b", - ], - "descriptions": [ - "CPA Firm EIN (only available for audit years 2013 and beyond)" - ], - "description_General": "CPA Firm EIN (only available for audit years 2013 and beyond)", - "original_table_General": "GENERAL", - "all_years": True, - }, - "audit_type": { - "models": ["General"], - "original_name": "AUDITTYPE", - "forms": [ - "SF-SAC 1997-2000: I/2", - "SF-SAC 2001-2003: I/2", - "SF-SAC 2004-2007: I/2", - "SF-SAC 2008-2009: I/2", - "SF-SAC 2010-2012: I/2", - "SF-SAC 2013-2015: I/2", - "SF-SAC 2016-2018: I/2", - "SF-SAC 2019-2021: I/2", - "SF-SAC 2022: I/2", - ], - "forms_General": [ - "SF-SAC 1997-2000: I/2", - "SF-SAC 2001-2003: I/2", - "SF-SAC 2004-2007: I/2", - "SF-SAC 2008-2009: I/2", - "SF-SAC 2010-2012: I/2", - "SF-SAC 2013-2015: I/2", - "SF-SAC 2016-2018: I/2", - "SF-SAC 2019-2021: I/2", - "SF-SAC 2022: I/2", - ], - "descriptions": ["Type of Audit"], - "description_General": "Type of Audit", - "original_table_General": "GENERAL", - "all_years": True, - }, - "city": { - "models": ["General"], - "original_name": "CITY", - "forms": [ - "SF-SAC 1997-2000: I/6/b", - "SF-SAC 2001-2003: I/6/b", - "SF-SAC 2004-2007: I/6/b", - "SF-SAC 2008-2009: I/5/b", - "SF-SAC 2010-2012: I/5/b", - "SF-SAC 2013-2015: I/5/b", - "SF-SAC 2016-2018: I/5/b", - "SF-SAC 2019-2021: I/5/b", - "SF-SAC 2022: I/5/b", - ], - "forms_General": [ - "SF-SAC 1997-2000: I/6/b", - "SF-SAC 2001-2003: I/6/b", - "SF-SAC 2004-2007: I/6/b", - "SF-SAC 2008-2009: I/5/b", - "SF-SAC 2010-2012: I/5/b", - "SF-SAC 2013-2015: I/5/b", - "SF-SAC 2016-2018: I/5/b", - "SF-SAC 2019-2021: I/5/b", - "SF-SAC 2022: I/5/b", - ], - "descriptions": ["Auditee City"], - "description_General": "Auditee City", - "original_table_General": "GENERAL", - "all_years": True, - }, - "cognizant_agency": { - "models": ["General"], - "original_name": "COGAGENCY", - "forms": ["SF-SAC 1997-2000: I/9", "SF-SAC 2001-2003: I/9"], - "forms_General": ["SF-SAC 1997-2000: I/9", "SF-SAC 2001-2003: I/9"], - "descriptions": ["Two digit Federal agency prefix of the cognizant agency"], - "description_General": "Two digit Federal agency prefix of the cognizant agency", - "original_table_General": "GENERAL", - "all_years": True, - }, - "completed_on": { - "models": ["General"], - "original_name": "COMPLETED_ON", - "forms": [], - "forms_General": [], - "descriptions": ["Date the Audit was Posted to the Internet as Complete"], - "description_General": "Date the Audit was Posted to the Internet as Complete", - "original_table_General": "GENERAL", - "all_years": True, - }, - "component_date_received": { - "models": ["General"], - "original_name": "COMPONENT DATE RECEIVED", - "forms": [], - "forms_General": [], - "descriptions": [ - "The most recent date an audit component was received by the FAC. This field was not populated before 2004. Receipt of Financial statements only are not processed until the rest of the audit or a Form SF-SAC is also received." - ], - "description_General": "The most recent date an audit component was received by the FAC. This field was not populated before 2004. Receipt of Financial statements only are not processed until the rest of the audit or a Form SF-SAC is also received.", - "original_table_General": "GENERAL", - "all_years": True, - }, - "cpa_city": { - "models": ["General", "MultipleCpasInfo"], - "original_name": "CPACITY", - "forms": [ - "SF-SAC 1997-2000: I/7/b", - "SF-SAC 2001-2003: I/7/b", - "SF-SAC 2004-2007: I/7/b", - "SF-SAC 2008-2009: I/6/b", - "SF-SAC 2010-2012: I/6/b", - "SF-SAC 2013-2015: I/6/c", - "SF-SAC 2016-2018: I/6/c", - "SF-SAC 2019-2021: I/6/c", - "SF-SAC 2022: I/6/c", - "SF-SAC 2008-2009: I/8/b", - "SF-SAC 2010-2012: I/8/b", - "SF-SAC 2013-2015: I/8/d", - "SF-SAC 2016-2018: I/8/d", - "SF-SAC 2019-2021: I/6/h/iv", - "SF-SAC 2022: I/6/h/iv", - ], - "forms_General": [ - "SF-SAC 1997-2000: I/7/b", - "SF-SAC 2001-2003: I/7/b", - "SF-SAC 2004-2007: I/7/b", - "SF-SAC 2008-2009: I/6/b", - "SF-SAC 2010-2012: I/6/b", - "SF-SAC 2013-2015: I/6/c", - "SF-SAC 2016-2018: I/6/c", - "SF-SAC 2019-2021: I/6/c", - "SF-SAC 2022: I/6/c", - ], - "descriptions": ["CPA City", "CPA City"], - "description_General": "CPA City", - "original_table_General": "GENERAL", - "all_years": True, - "forms_MultipleCpasInfo": [ - "SF-SAC 2008-2009: I/8/b", - "SF-SAC 2010-2012: I/8/b", - "SF-SAC 2013-2015: I/8/d", - "SF-SAC 2016-2018: I/8/d", - "SF-SAC 2019-2021: I/6/h/iv", - "SF-SAC 2022: I/6/h/iv", - ], - "description_MultipleCpasInfo": "CPA City", - "original_table_MultipleCpasInfo": "MULTIPLE CPAS INFO", - }, - "cpa_contact": { - "models": ["General", "MultipleCpasInfo"], - "original_name": "CPACONTACT", - "forms": [ - "SF-SAC 1997-2000: I/7/c", - "SF-SAC 2001-2003: I/7/c", - "SF-SAC 2004-2007: I/7/c", - "SF-SAC 2008-2009: I/6/c", - "SF-SAC 2010-2012: I/6/c", - "SF-SAC 2013-2015: I/6/d", - "SF-SAC 2016-2018: I/6/d", - "SF-SAC 2019-2021: I/6/d", - "SF-SAC 2022: I/6/d", - "SF-SAC 2008-2009: I/8/c", - "SF-SAC 2010-2012: I/8/c", - "SF-SAC 2013-2015: I/8/g", - "SF-SAC 2016-2018: I/8/g", - "SF-SAC 2019-2021: I/6/h/vii", - "SF-SAC 2022: I/6/h/vii", - ], - "forms_General": [ - "SF-SAC 1997-2000: I/7/c", - "SF-SAC 2001-2003: I/7/c", - "SF-SAC 2004-2007: I/7/c", - "SF-SAC 2008-2009: I/6/c", - "SF-SAC 2010-2012: I/6/c", - "SF-SAC 2013-2015: I/6/d", - "SF-SAC 2016-2018: I/6/d", - "SF-SAC 2019-2021: I/6/d", - "SF-SAC 2022: I/6/d", - ], - "descriptions": ["Name of CPA Contact", "Name of CPA Contact"], - "description_General": "Name of CPA Contact", - "original_table_General": "GENERAL", - "all_years": True, - "forms_MultipleCpasInfo": [ - "SF-SAC 2008-2009: I/8/c", - "SF-SAC 2010-2012: I/8/c", - "SF-SAC 2013-2015: I/8/g", - "SF-SAC 2016-2018: I/8/g", - "SF-SAC 2019-2021: I/6/h/vii", - "SF-SAC 2022: I/6/h/vii", - ], - "description_MultipleCpasInfo": "Name of CPA Contact", - "original_table_MultipleCpasInfo": "MULTIPLE CPAS INFO", - }, - "cpa_country": { - "models": ["General"], - "original_name": "CPACOUNTRY", - "forms": ["SF-SAC 2019-2021: I/6/c", "SF-SAC 2022: I/6/c"], - "forms_General": ["SF-SAC 2019-2021: I/6/c", "SF-SAC 2022: I/6/c"], - "descriptions": ["CPA Country"], - "description_General": "CPA Country", - "original_table_General": "GENERAL", - "all_years": True, - }, - "cpa_date_signed": { - "models": ["General"], - "original_name": "CPADATESIGNED", - "forms": [ - "SF-SAC 1997-2000: I/7/g", - "SF-SAC 2001-2003: I/7/g", - "SF-SAC 2004-2007: I/7/g", - "SF-SAC 2008-2009: I/6/g", - "SF-SAC 2010-2012: I/6/g", - "SF-SAC 2013-2015: certifications", - "SF-SAC 2016-2018: certifications", - "SF-SAC 2019-2021: certifications", - "SF-SAC 2022: certifications", - ], - "forms_General": [ - "SF-SAC 1997-2000: I/7/g", - "SF-SAC 2001-2003: I/7/g", - "SF-SAC 2004-2007: I/7/g", - "SF-SAC 2008-2009: I/6/g", - "SF-SAC 2010-2012: I/6/g", - "SF-SAC 2013-2015: certifications", - "SF-SAC 2016-2018: certifications", - "SF-SAC 2019-2021: certifications", - "SF-SAC 2022: certifications", - ], - "descriptions": ["Date of CPA signature"], - "description_General": "Date of CPA signature", - "original_table_General": "GENERAL", - "all_years": True, - }, - "cpa_email": { - "models": ["General", "MultipleCpasInfo"], - "original_name": "CPAEMAIL", - "forms": [ - "SF-SAC 1997-2000: I/7/f", - "SF-SAC 2001-2003: I/7/f", - "SF-SAC 2004-2007: I/7/f", - "SF-SAC 2008-2009: I/6/f", - "SF-SAC 2010-2012: I/6/f", - "SF-SAC 2013-2015: I/6/g", - "SF-SAC 2016-2018: I/6/f", - "SF-SAC 2019-2021: I/6/f", - "SF-SAC 2022: I/6/f", - "SF-SAC 2008-2009: I/8/f", - "SF-SAC 2010-2012: I/8/f", - "SF-SAC 2013-2015: I/8/k", - "SF-SAC 2016-2018: I/8/k", - "SF-SAC 2019-2021: I/6/h/x", - "SF-SAC 2022: I/6/h/x", - ], - "forms_General": [ - "SF-SAC 1997-2000: I/7/f", - "SF-SAC 2001-2003: I/7/f", - "SF-SAC 2004-2007: I/7/f", - "SF-SAC 2008-2009: I/6/f", - "SF-SAC 2010-2012: I/6/f", - "SF-SAC 2013-2015: I/6/g", - "SF-SAC 2016-2018: I/6/f", - "SF-SAC 2019-2021: I/6/f", - "SF-SAC 2022: I/6/f", - ], - "descriptions": ["CPA email address", "CPA email address (optional)"], - "description_General": "CPA email address", - "original_table_General": "GENERAL", - "all_years": True, - "forms_MultipleCpasInfo": [ - "SF-SAC 2008-2009: I/8/f", - "SF-SAC 2010-2012: I/8/f", - "SF-SAC 2013-2015: I/8/k", - "SF-SAC 2016-2018: I/8/k", - "SF-SAC 2019-2021: I/6/h/x", - "SF-SAC 2022: I/6/h/x", - ], - "description_MultipleCpasInfo": "CPA email address (optional)", - "original_table_MultipleCpasInfo": "MULTIPLE CPAS INFO", - }, - "cpa_fax": { - "models": ["General", "MultipleCpasInfo"], - "original_name": "CPAFAX", - "forms": [ - "SF-SAC 1997-2000: I/7/e", - "SF-SAC 2001-2003: I/7/e", - "SF-SAC 2004-2007: I/7/e", - "SF-SAC 2008-2009: I/6/e", - "SF-SAC 2010-2012: I/6/e", - "SF-SAC 2013-2015: I/6/f", - "SF-SAC 2008-2009: I/8/e", - "SF-SAC 2010-2012: I/8/e", - "SF-SAC 2013-2015: I/8/j", - "SF-SAC 2016-2018: I/8/j", - ], - "forms_General": [ - "SF-SAC 1997-2000: I/7/e", - "SF-SAC 2001-2003: I/7/e", - "SF-SAC 2004-2007: I/7/e", - "SF-SAC 2008-2009: I/6/e", - "SF-SAC 2010-2012: I/6/e", - "SF-SAC 2013-2015: I/6/f", - ], - "descriptions": ["CPA fax number (optional)", "CPA fax number (optional)"], - "description_General": "CPA fax number (optional)", - "original_table_General": "GENERAL", - "all_years": True, - "forms_MultipleCpasInfo": [ - "SF-SAC 2008-2009: I/8/e", - "SF-SAC 2010-2012: I/8/e", - "SF-SAC 2013-2015: I/8/j", - "SF-SAC 2016-2018: I/8/j", - ], - "description_MultipleCpasInfo": "CPA fax number (optional)", - "original_table_MultipleCpasInfo": "MULTIPLE CPAS INFO", - }, - "cpa_firm_name": { - "models": ["General", "MultipleCpasInfo"], - "original_name": "CPAFIRMNAME", - "forms": [ - "SF-SAC 1997-2000: I/7/a", - "SF-SAC 2001-2003: I/7/a", - "SF-SAC 2004-2007: I/7/a", - "SF-SAC 2008-2009: I/6/a", - "SF-SAC 2010-2012: I/6/a", - "SF-SAC 2013-2015: I/6/a", - "SF-SAC 2016-2018: I/6/a", - "SF-SAC 2019-2021: I/6/a", - "SF-SAC 2022: I/6/a", - "SF-SAC 2008-2009: I/8/a", - "SF-SAC 2010-2012: I/8/a", - "SF-SAC 2013-2015: I/8/a", - "SF-SAC 2016-2018: I/8/a", - "SF-SAC 2019-2021: I/6/h/i", - "SF-SAC 2022: I/6/h/i", - ], - "forms_General": [ - "SF-SAC 1997-2000: I/7/a", - "SF-SAC 2001-2003: I/7/a", - "SF-SAC 2004-2007: I/7/a", - "SF-SAC 2008-2009: I/6/a", - "SF-SAC 2010-2012: I/6/a", - "SF-SAC 2013-2015: I/6/a", - "SF-SAC 2016-2018: I/6/a", - "SF-SAC 2019-2021: I/6/a", - "SF-SAC 2022: I/6/a", - ], - "descriptions": ["CPA Firm Name", "CPA Firm Name"], - "description_General": "CPA Firm Name", - "original_table_General": "GENERAL", - "all_years": True, - "forms_MultipleCpasInfo": [ - "SF-SAC 2008-2009: I/8/a", - "SF-SAC 2010-2012: I/8/a", - "SF-SAC 2013-2015: I/8/a", - "SF-SAC 2016-2018: I/8/a", - "SF-SAC 2019-2021: I/6/h/i", - "SF-SAC 2022: I/6/h/i", - ], - "description_MultipleCpasInfo": "CPA Firm Name", - "original_table_MultipleCpasInfo": "MULTIPLE CPAS INFO", - }, - "cpa_foreign": { - "models": ["General"], - "original_name": "CPAFOREIGN", - "forms": ["SF-SAC 2019-2021: I/6/c", "SF-SAC 2022: I/6/c"], - "forms_General": ["SF-SAC 2019-2021: I/6/c", "SF-SAC 2022: I/6/c"], - "descriptions": ["CPA Address (if international)"], - "description_General": "CPA Address (if international)", - "original_table_General": "GENERAL", - "all_years": True, - }, - "cpa_phone": { - "models": ["General", "MultipleCpasInfo"], - "original_name": "CPAPHONE", - "forms": [ - "SF-SAC 1997-2000: I/7/d", - "SF-SAC 2001-2003: I/7/d", - "SF-SAC 2004-2007: I/7/d", - "SF-SAC 2008-2009: I/6/d", - "SF-SAC 2010-2012: I/6/d", - "SF-SAC 2013-2015: I/6/e", - "SF-SAC 2016-2018: I/6/e", - "SF-SAC 2019-2021: I/6/e", - "SF-SAC 2022: I/6/e", - "SF-SAC 2008-2009: I/8/d", - "SF-SAC 2010-2012: I/8/d", - "SF-SAC 2013-2015: I/8/i", - "SF-SAC 2016-2018: I/8/i", - "SF-SAC 2019-2021: I/6/h/ix", - "SF-SAC 2022: I/6/h/ix", - ], - "forms_General": [ - "SF-SAC 1997-2000: I/7/d", - "SF-SAC 2001-2003: I/7/d", - "SF-SAC 2004-2007: I/7/d", - "SF-SAC 2008-2009: I/6/d", - "SF-SAC 2010-2012: I/6/d", - "SF-SAC 2013-2015: I/6/e", - "SF-SAC 2016-2018: I/6/e", - "SF-SAC 2019-2021: I/6/e", - "SF-SAC 2022: I/6/e", - ], - "descriptions": ["CPA phone number", "CPA phone number"], - "description_General": "CPA phone number", - "original_table_General": "GENERAL", - "all_years": True, - "forms_MultipleCpasInfo": [ - "SF-SAC 2008-2009: I/8/d", - "SF-SAC 2010-2012: I/8/d", - "SF-SAC 2013-2015: I/8/i", - "SF-SAC 2016-2018: I/8/i", - "SF-SAC 2019-2021: I/6/h/ix", - "SF-SAC 2022: I/6/h/ix", - ], - "description_MultipleCpasInfo": "CPA phone number", - "original_table_MultipleCpasInfo": "MULTIPLE CPAS INFO", - }, - "cpa_state": { - "models": ["General", "MultipleCpasInfo"], - "original_name": "CPASTATE", - "forms": [ - "SF-SAC 1997-2000: I/7/b", - "SF-SAC 2001-2003: I/7/b", - "SF-SAC 2004-2007: I/7/b", - "SF-SAC 2008-2009: I/6/b", - "SF-SAC 2010-2012: I/6/b", - "SF-SAC 2013-2015: I/6/c", - "SF-SAC 2016-2018: I/6/c", - "SF-SAC 2019-2021: I/6/c", - "SF-SAC 2022: I/6/c", - "SF-SAC 2008-2009: I/8/b", - "SF-SAC 2010-2012: I/8/b", - "SF-SAC 2013-2015: I/8/e", - "SF-SAC 2016-2018: I/8/e", - "SF-SAC 2019-2021: I/6/h/v", - "SF-SAC 2022: I/6/h/v", - ], - "forms_General": [ - "SF-SAC 1997-2000: I/7/b", - "SF-SAC 2001-2003: I/7/b", - "SF-SAC 2004-2007: I/7/b", - "SF-SAC 2008-2009: I/6/b", - "SF-SAC 2010-2012: I/6/b", - "SF-SAC 2013-2015: I/6/c", - "SF-SAC 2016-2018: I/6/c", - "SF-SAC 2019-2021: I/6/c", - "SF-SAC 2022: I/6/c", - ], - "descriptions": ["CPA State", "CPA State"], - "description_General": "CPA State", - "original_table_General": "GENERAL", - "all_years": True, - "forms_MultipleCpasInfo": [ - "SF-SAC 2008-2009: I/8/b", - "SF-SAC 2010-2012: I/8/b", - "SF-SAC 2013-2015: I/8/e", - "SF-SAC 2016-2018: I/8/e", - "SF-SAC 2019-2021: I/6/h/v", - "SF-SAC 2022: I/6/h/v", - ], - "description_MultipleCpasInfo": "CPA State", - "original_table_MultipleCpasInfo": "MULTIPLE CPAS INFO", - }, - "cpa_street1": { - "models": ["General", "MultipleCpasInfo"], - "original_name": "CPASTREET1", - "forms": [ - "SF-SAC 1997-2000: I/7/b", - "SF-SAC 2001-2003: I/7/b", - "SF-SAC 2004-2007: I/7/b", - "SF-SAC 2008-2009: I/6/b", - "SF-SAC 2010-2012: I/6/b", - "SF-SAC 2013-2015: I/6/c", - "SF-SAC 2016-2018: I/6/c", - "SF-SAC 2019-2021: I/6/c", - "SF-SAC 2022: I/6/c", - "SF-SAC 2008-2009: I/8/b", - "SF-SAC 2010-2012: I/8/b", - "SF-SAC 2013-2015: I/8/c", - "SF-SAC 2016-2018: I/8/c", - "SF-SAC 2019-2021: I/6/h/iii", - "SF-SAC 2022: I/6/h/iii", - ], - "forms_General": [ - "SF-SAC 1997-2000: I/7/b", - "SF-SAC 2001-2003: I/7/b", - "SF-SAC 2004-2007: I/7/b", - "SF-SAC 2008-2009: I/6/b", - "SF-SAC 2010-2012: I/6/b", - "SF-SAC 2013-2015: I/6/c", - "SF-SAC 2016-2018: I/6/c", - "SF-SAC 2019-2021: I/6/c", - "SF-SAC 2022: I/6/c", - ], - "descriptions": ["CPA Street Address", "CPA Street Address"], - "description_General": "CPA Street Address", - "original_table_General": "GENERAL", - "all_years": True, - "forms_MultipleCpasInfo": [ - "SF-SAC 2008-2009: I/8/b", - "SF-SAC 2010-2012: I/8/b", - "SF-SAC 2013-2015: I/8/c", - "SF-SAC 2016-2018: I/8/c", - "SF-SAC 2019-2021: I/6/h/iii", - "SF-SAC 2022: I/6/h/iii", - ], - "description_MultipleCpasInfo": "CPA Street Address", - "original_table_MultipleCpasInfo": "MULTIPLE CPAS INFO", - }, - "cpa_street2": { - "models": ["General"], - "original_name": "CPASTREET2", - "forms": [ - "SF-SAC 1997-2000: I/7/b", - "SF-SAC 2001-2003: I/7/b", - "SF-SAC 2004-2007: I/7/b", - "SF-SAC 2008-2009: I/6/b", - "SF-SAC 2010-2012: I/6/b", - "SF-SAC 2013-2015: I/6/c", - "SF-SAC 2016-2018: I/6/c", - "SF-SAC 2019-2021: I/6/c", - "SF-SAC 2022: I/6/c", - ], - "forms_General": [ - "SF-SAC 1997-2000: I/7/b", - "SF-SAC 2001-2003: I/7/b", - "SF-SAC 2004-2007: I/7/b", - "SF-SAC 2008-2009: I/6/b", - "SF-SAC 2010-2012: I/6/b", - "SF-SAC 2013-2015: I/6/c", - "SF-SAC 2016-2018: I/6/c", - "SF-SAC 2019-2021: I/6/c", - "SF-SAC 2022: I/6/c", - ], - "descriptions": ["CPA Street Address"], - "description_General": "CPA Street Address", - "original_table_General": "GENERAL", - "all_years": True, - }, - "cpa_title": { - "models": ["General", "MultipleCpasInfo"], - "original_name": "CPATITLE", - "forms": [ - "SF-SAC 1997-2000: I/7/c", - "SF-SAC 2001-2003: I/7/c", - "SF-SAC 2004-2007: I/7/c", - "SF-SAC 2008-2009: I/6/c", - "SF-SAC 2010-2012: I/6/c", - "SF-SAC 2013-2015: I/6/d", - "SF-SAC 2016-2018: I/6/d", - "SF-SAC 2019-2021: I/6/d", - "SF-SAC 2022: I/6/d", - "SF-SAC 2008-2009: I/8/c", - "SF-SAC 2010-2012: I/8/c", - "SF-SAC 2013-2015: I/8/h", - "SF-SAC 2016-2018: I/8/h", - "SF-SAC 2019-2021: I/6/h/viii", - "SF-SAC 2022: I/6/h/viii", - ], - "forms_General": [ - "SF-SAC 1997-2000: I/7/c", - "SF-SAC 2001-2003: I/7/c", - "SF-SAC 2004-2007: I/7/c", - "SF-SAC 2008-2009: I/6/c", - "SF-SAC 2010-2012: I/6/c", - "SF-SAC 2013-2015: I/6/d", - "SF-SAC 2016-2018: I/6/d", - "SF-SAC 2019-2021: I/6/d", - "SF-SAC 2022: I/6/d", - ], - "descriptions": ["Title of CPA Contact", "Title of CPA Contact"], - "description_General": "Title of CPA Contact", - "original_table_General": "GENERAL", - "all_years": True, - "forms_MultipleCpasInfo": [ - "SF-SAC 2008-2009: I/8/c", - "SF-SAC 2010-2012: I/8/c", - "SF-SAC 2013-2015: I/8/h", - "SF-SAC 2016-2018: I/8/h", - "SF-SAC 2019-2021: I/6/h/viii", - "SF-SAC 2022: I/6/h/viii", - ], - "description_MultipleCpasInfo": "Title of CPA Contact", - "original_table_MultipleCpasInfo": "MULTIPLE CPAS INFO", - }, - "cpa_zip_code": { - "models": ["General", "MultipleCpasInfo"], - "original_name": "CPAZIPCODE", - "forms": [ - "SF-SAC 1997-2000: I/7/b", - "SF-SAC 2001-2003: I/7/b", - "SF-SAC 2004-2007: I/7/b", - "SF-SAC 2008-2009: I/6/b", - "SF-SAC 2010-2012: I/6/b", - "SF-SAC 2013-2015: I/6/c", - "SF-SAC 2016-2018: I/6/c", - "SF-SAC 2019-2021: I/6/c", - "SF-SAC 2022: I/6/c", - "SF-SAC 2008-2009: I/8/b", - "SF-SAC 2010-2012: I/8/b", - "SF-SAC 2013-2015: I/8/f", - "SF-SAC 2016-2018: I/8/f", - "SF-SAC 2019-2021: I/6/h/vi", - "SF-SAC 2022: I/6/h/vi", - ], - "forms_General": [ - "SF-SAC 1997-2000: I/7/b", - "SF-SAC 2001-2003: I/7/b", - "SF-SAC 2004-2007: I/7/b", - "SF-SAC 2008-2009: I/6/b", - "SF-SAC 2010-2012: I/6/b", - "SF-SAC 2013-2015: I/6/c", - "SF-SAC 2016-2018: I/6/c", - "SF-SAC 2019-2021: I/6/c", - "SF-SAC 2022: I/6/c", - ], - "descriptions": ["CPA Zip Code", "CPA Zip Code"], - "description_General": "CPA Zip Code", - "original_table_General": "GENERAL", - "all_years": True, - "forms_MultipleCpasInfo": [ - "SF-SAC 2008-2009: I/8/b", - "SF-SAC 2010-2012: I/8/b", - "SF-SAC 2013-2015: I/8/f", - "SF-SAC 2016-2018: I/8/f", - "SF-SAC 2019-2021: I/6/h/vi", - "SF-SAC 2022: I/6/h/vi", - ], - "description_MultipleCpasInfo": "CPA Zip Code", - "original_table_MultipleCpasInfo": "MULTIPLE CPAS INFO", - }, - "current_or_former_findings": { - "models": ["General"], - "original_name": "CYFINDINGS", - "forms": [ - "SF-SAC 2001-2003: III/9", - "SF-SAC 2004-2007: III/8", - "SF-SAC 2008-2009: III/8", - "SF-SAC 2010-2012: III/8", - "SF-SAC 2013-2015: III/5", - "SF-SAC 2016-2018: III/3/d", - "SF-SAC 2019-2021: III/3/d", - "SF-SAC 2022: III/3/d", - ], - "forms_General": [ - "SF-SAC 2001-2003: III/9", - "SF-SAC 2004-2007: III/8", - "SF-SAC 2008-2009: III/8", - "SF-SAC 2010-2012: III/8", - "SF-SAC 2013-2015: III/5", - "SF-SAC 2016-2018: III/3/d", - "SF-SAC 2019-2021: III/3/d", - "SF-SAC 2022: III/3/d", - ], - "descriptions": [ - "Indicate whether or not current year findings or prior year findings affecting direct funds were reported" - ], - "description_General": "Indicate whether or not current year findings or prior year findings affecting direct funds were reported", - "original_table_General": "GENERAL", - "all_years": True, - }, - "dollar_threshold": { - "models": ["General"], - "original_name": "DOLLARTHRESHOLD", - "forms": [ - "SF-SAC 1997-2000: III/2", - "SF-SAC 2001-2003: III/3", - "SF-SAC 2004-2007: III/2", - "SF-SAC 2008-2009: III/2", - "SF-SAC 2010-2012: III/2", - "SF-SAC 2013-2015: III/2", - "SF-SAC 2016-2018: III/3/b", - "SF-SAC 2019-2021: III/3/b", - "SF-SAC 2022: III/3/b", - ], - "forms_General": [ - "SF-SAC 1997-2000: III/2", - "SF-SAC 2001-2003: III/3", - "SF-SAC 2004-2007: III/2", - "SF-SAC 2008-2009: III/2", - "SF-SAC 2010-2012: III/2", - "SF-SAC 2013-2015: III/2", - "SF-SAC 2016-2018: III/3/b", - "SF-SAC 2019-2021: III/3/b", - "SF-SAC 2022: III/3/b", - ], - "descriptions": [ - "Dollar Threshold to distinguish between Type A and Type B programs." - ], - "description_General": "Dollar Threshold to distinguish between Type A and Type B programs.", - "original_table_General": "GENERAL", - "all_years": True, - }, - "dup_reports": { - "models": ["General"], - "original_name": "DUP_REPORTS", - "forms": [ - "SF-SAC 2001-2003: III/2", - "SF-SAC 2004-2007: III/1", - "SF-SAC 2008-2009: III/1", - "SF-SAC 2010-2012: III/1", - "SF-SAC 2013-2015: III/1", - "SF-SAC 2016-2018: III/3/a", - "SF-SAC 2019-2021: III/3/a", - "SF-SAC 2022: III/3/a", - ], - "forms_General": [ - "SF-SAC 2001-2003: III/2", - "SF-SAC 2004-2007: III/1", - "SF-SAC 2008-2009: III/1", - "SF-SAC 2010-2012: III/1", - "SF-SAC 2013-2015: III/1", - "SF-SAC 2016-2018: III/3/a", - "SF-SAC 2019-2021: III/3/a", - "SF-SAC 2022: III/3/a", - ], - "descriptions": [ - "Whether or not the financial statements include departments that have separate expenditures not included in this audit" - ], - "description_General": "Whether or not the financial statements include departments that have separate expenditures not included in this audit", - "original_table_General": "GENERAL", - "all_years": True, - }, - "ein_subcode": { - "models": ["General"], - "original_name": "EINSUBCODE", - "forms": [], - "forms_General": [], - "descriptions": ["Subcode assigned to the EIN"], - "description_General": "Subcode assigned to the EIN", - "original_table_General": "GENERAL", - "all_years": True, - }, - "entity_type": { - "models": ["General"], - "original_name": "ENTITY_TYPE", - "forms": [], - "forms_General": [], - "descriptions": [ - "Self reported type of entity (i.e., States, Local Governments, Indian Tribes, Institutions of Higher Education, NonProfit)" - ], - "description_General": "Self reported type of entity (i.e., States, Local Governments, Indian Tribes, Institutions of Higher Education, NonProfit)", - "original_table_General": "GENERAL", - "all_years": True, - }, - "fac_accepted_date": { - "models": ["General"], - "original_name": "FAC ACCEPTED DATE", - "forms": [], - "forms_General": [], - "descriptions": [ - "The most recent date an audit report was submitted to the FAC that passed FAC screening and was accepted as a valid OMB Circular A-133 report submission." - ], - "description_General": "The most recent date an audit report was submitted to the FAC that passed FAC screening and was accepted as a valid OMB Circular A-133 report submission.", - "original_table_General": "GENERAL", - "all_years": True, - }, - "form_date_received": { - "models": ["General"], - "original_name": "FORM DATE RECEIVED", - "forms": [], - "forms_General": [], - "descriptions": [ - "The most Recent Date the Form SF-SAC was received by the FAC. This field was not populated before 2001." - ], - "description_General": "The most Recent Date the Form SF-SAC was received by the FAC. This field was not populated before 2001.", - "original_table_General": "GENERAL", - "all_years": True, - }, - "fy_end_date": { - "models": ["General"], - "original_name": "FYENDDATE", - "forms": [ - "SF-SAC 1997-2000: Part I, Item 1", - "SF-SAC 2001-2003: Part I, Item 1", - "SF-SAC 2004-2007: Part I, Item 1", - "SF-SAC 2008-2009: Part I, Item 1", - "SF-SAC 2010-2012: Part I, Item 1", - "SF-SAC 2013-2015: Part I, Item 1", - "SF-SAC 2016-2018: Part I, Item 1", - "SF-SAC 2019-2021: I/1/b", - "SF-SAC 2022: I/1/b", - ], - "forms_General": [ - "SF-SAC 1997-2000: Part I, Item 1", - "SF-SAC 2001-2003: Part I, Item 1", - "SF-SAC 2004-2007: Part I, Item 1", - "SF-SAC 2008-2009: Part I, Item 1", - "SF-SAC 2010-2012: Part I, Item 1", - "SF-SAC 2013-2015: Part I, Item 1", - "SF-SAC 2016-2018: Part I, Item 1", - "SF-SAC 2019-2021: I/1/b", - "SF-SAC 2022: I/1/b", - ], - "descriptions": ["Fiscal Year End Date"], - "description_General": "Fiscal Year End Date", - "original_table_General": "GENERAL", - "all_years": True, - }, - "fy_start_date": { - "models": ["General"], - "original_name": "FYSTARTDATE", - "forms": [ - "SF-SAC 2019-2021: Part I, Item 1(a)", - "SF-SAC 2022: Part I, Item 1(a)", - ], - "forms_General": [ - "SF-SAC 2019-2021: Part I, Item 1(a)", - "SF-SAC 2022: Part I, Item 1(a)", - ], - "descriptions": ["Fiscal Year Start Date"], - "description_General": "Fiscal Year Start Date", - "original_table_General": "GENERAL", - "all_years": True, - }, - "going_concern": { - "models": ["General"], - "original_name": "GOINGCONCERN", - "forms": [ - "SF-SAC 1997-2000: II/2", - "SF-SAC 2001-2003: II/2", - "SF-SAC 2004-2007: II/2", - "SF-SAC 2008-2009: II/2", - "SF-SAC 2010-2012: II/2", - "SF-SAC 2013-2015: II/2", - "SF-SAC 2016-2018: III/2/b", - "SF-SAC 2019-2021: III/2/b", - "SF-SAC 2022: III/2/b", - ], - "forms_General": [ - "SF-SAC 1997-2000: II/2", - "SF-SAC 2001-2003: II/2", - "SF-SAC 2004-2007: II/2", - "SF-SAC 2008-2009: II/2", - "SF-SAC 2010-2012: II/2", - "SF-SAC 2013-2015: II/2", - "SF-SAC 2016-2018: III/2/b", - "SF-SAC 2019-2021: III/2/b", - "SF-SAC 2022: III/2/b", - ], - "descriptions": [ - "Whether or not the audit contained a going concern paragraph on financial statements" - ], - "description_General": "Whether or not the audit contained a going concern paragraph on financial statements", - "original_table_General": "GENERAL", - "all_years": True, - }, - "initial_date_received": { - "models": ["General"], - "original_name": "INITIAL DATE RECEIVED", - "forms": [], - "forms_General": [], - "descriptions": [ - "The first date an audit component or Form SF-SAC was received by the Federal audit Clearinghouse (FAC)." - ], - "description_General": "The first date an audit component or Form SF-SAC was received by the Federal audit Clearinghouse (FAC).", - "original_table_General": "GENERAL", - "all_years": True, - }, - "low_risk": { - "models": ["General"], - "original_name": "LOWRISK", - "forms": [ - "SF-SAC 1997-2000: III/3", - "SF-SAC 2001-2003: III/4", - "SF-SAC 2004-2007: III/3", - "SF-SAC 2008-2009: III/3", - "SF-SAC 2010-2012: III/3", - "SF-SAC 2013-2015: III/3", - "SF-SAC 2016-2018: III/3/c", - "SF-SAC 2019-2021: III/3/c", - "SF-SAC 2022: III/3/c", - ], - "forms_General": [ - "SF-SAC 1997-2000: III/3", - "SF-SAC 2001-2003: III/4", - "SF-SAC 2004-2007: III/3", - "SF-SAC 2008-2009: III/3", - "SF-SAC 2010-2012: III/3", - "SF-SAC 2013-2015: III/3", - "SF-SAC 2016-2018: III/3/c", - "SF-SAC 2019-2021: III/3/c", - "SF-SAC 2022: III/3/c", - ], - "descriptions": [ - "Indicate whether or not the auditee qualified as a low-risk auditee" - ], - "description_General": "Indicate whether or not the auditee qualified as a low-risk auditee", - "original_table_General": "GENERAL", - "all_years": True, - }, - "material_noncompliance": { - "models": ["General"], - "original_name": "MATERIALNONCOMPLIANCE", - "forms": [ - "SF-SAC 1997-2000: II/5", - "SF-SAC 2001-2003: II/5", - "SF-SAC 2004-2007: II/5", - "SF-SAC 2008-2009: II/5", - "SF-SAC 2010-2012: II/5", - "SF-SAC 2013-2015: II/5", - "SF-SAC 2016-2018: III/2/e", - "SF-SAC 2019-2021: III/2/e", - "SF-SAC 2022: III/2/e", - ], - "forms_General": [ - "SF-SAC 1997-2000: II/5", - "SF-SAC 2001-2003: II/5", - "SF-SAC 2004-2007: II/5", - "SF-SAC 2008-2009: II/5", - "SF-SAC 2010-2012: II/5", - "SF-SAC 2013-2015: II/5", - "SF-SAC 2016-2018: III/2/e", - "SF-SAC 2019-2021: III/2/e", - "SF-SAC 2022: III/2/e", - ], - "descriptions": [ - "Whether or not the audit disclosed a material noncompliance on financial statements" - ], - "description_General": "Whether or not the audit disclosed a material noncompliance on financial statements", - "original_table_General": "GENERAL", - "all_years": True, - }, - "material_weakness_major_program": { - "models": ["General"], - "original_name": "MATERIALWEAKNESS_MP", - "forms": [ - "SF-SAC 2001-2003: III/6", - "SF-SAC 2004-2007: III/5", - "SF-SAC 2008-2009: III/5", - "SF-SAC 2010-2012: III/5", - ], - "forms_General": [ - "SF-SAC 2001-2003: III/6", - "SF-SAC 2004-2007: III/5", - "SF-SAC 2008-2009: III/5", - "SF-SAC 2010-2012: III/5", - ], - "descriptions": [ - "Indicate whether any reportable condition/signficant deficiency was disclosed as a material weakness for a major program in the Schedule of Findings and Questioned Costs" - ], - "description_General": "Indicate whether any reportable condition/signficant deficiency was disclosed as a material weakness for a major program in the Schedule of Findings and Questioned Costs", - "original_table_General": "GENERAL", - "all_years": True, - }, - "multiple_cpas": { - "models": ["General"], - "original_name": "MULTIPLE_CPAS", - "forms": [ - "SF-SAC 2008-2009: I/7/a", - "SF-SAC 2010-2012: I/7/a", - "SF-SAC 2013-2015: I/7", - "SF-SAC 2016-2018: I/7", - "SF-SAC 2019-2021: I/6/g", - "SF-SAC 2022: I/6/g", - ], - "forms_General": [ - "SF-SAC 2008-2009: I/7/a", - "SF-SAC 2010-2012: I/7/a", - "SF-SAC 2013-2015: I/7", - "SF-SAC 2016-2018: I/7", - "SF-SAC 2019-2021: I/6/g", - "SF-SAC 2022: I/6/g", - ], - "descriptions": ["Identifies if the Submission Contains Multiple CPAs"], - "description_General": "Identifies if the Submission Contains Multiple CPAs", - "original_table_General": "GENERAL", - "all_years": True, - }, - "multiple_duns": { - "models": ["General"], - "original_name": "MULTIPLEDUNS", - "forms": [ - "SF-SAC 2004-2007: I/5/e", - "SF-SAC 2008-2009: I/4/e", - "SF-SAC 2010-2012: I/4/e", - "SF-SAC 2013-2015: I/4/e", - "SF-SAC 2016-2018: I/4/e", - "SF-SAC 2019-2021: I/4/e", - "SF-SAC 2022: I/4/e", - ], - "forms_General": [ - "SF-SAC 2004-2007: I/5/e", - "SF-SAC 2008-2009: I/4/e", - "SF-SAC 2010-2012: I/4/e", - "SF-SAC 2013-2015: I/4/e", - "SF-SAC 2016-2018: I/4/e", - "SF-SAC 2019-2021: I/4/e", - "SF-SAC 2022: I/4/e", - ], - "descriptions": ["Identifies if the Submission Contains Multiple DUNS"], - "description_General": "Identifies if the Submission Contains Multiple DUNS", - "original_table_General": "GENERAL", - "all_years": True, - }, - "multiple_eins": { - "models": ["General"], - "original_name": "MULTIPLEEINS", - "forms": [ - "SF-SAC 1997-2000: I/5/b", - "SF-SAC 2001-2003: I/5/b", - "SF-SAC 2004-2007: I/5/b", - "SF-SAC 2008-2009: I/4/b", - "SF-SAC 2010-2012: I/4/b", - "SF-SAC 2013-2015: I/4/b", - "SF-SAC 2016-2018: I/4/b", - "SF-SAC 2019-2021: I/4/b", - "SF-SAC 2022: I/4/b", - ], - "forms_General": [ - "SF-SAC 1997-2000: I/5/b", - "SF-SAC 2001-2003: I/5/b", - "SF-SAC 2004-2007: I/5/b", - "SF-SAC 2008-2009: I/4/b", - "SF-SAC 2010-2012: I/4/b", - "SF-SAC 2013-2015: I/4/b", - "SF-SAC 2016-2018: I/4/b", - "SF-SAC 2019-2021: I/4/b", - "SF-SAC 2022: I/4/b", - ], - "descriptions": ["Identifies if the Submission Contains Multiple EINs"], - "description_General": "Identifies if the Submission Contains Multiple EINs", - "original_table_General": "GENERAL", - "all_years": True, - }, - "multiple_ueis": { - "models": ["General"], - "original_name": "MULTIPLEUEIS", - "forms": ["SF-SAC 2022: I/4/h"], - "forms_General": ["SF-SAC 2022: I/4/h"], - "descriptions": ["Identifies if the Submission Contains Multiple UEIs"], - "description_General": "Identifies if the Submission Contains Multiple UEIs", - "original_table_General": "GENERAL", - "all_years": True, - }, - "number_months": { - "models": ["General"], - "original_name": "NUMBERMONTHS", - "forms": [ - "SF-SAC 1997-2000: I/3", - "SF-SAC 2001-2003: I/3", - "SF-SAC 2004-2007: I/3", - "SF-SAC 2008-2009: I/3", - "SF-SAC 2010-2012: I/3", - "SF-SAC 2013-2015: I/3", - "SF-SAC 2016-2018: I/3", - "SF-SAC 2019-2021: I/3", - "SF-SAC 2022: I/3", - ], - "forms_General": [ - "SF-SAC 1997-2000: I/3", - "SF-SAC 2001-2003: I/3", - "SF-SAC 2004-2007: I/3", - "SF-SAC 2008-2009: I/3", - "SF-SAC 2010-2012: I/3", - "SF-SAC 2013-2015: I/3", - "SF-SAC 2016-2018: I/3", - "SF-SAC 2019-2021: I/3", - "SF-SAC 2022: I/3", - ], - "descriptions": ["Number of Months Covered by the 'Other' Audit Period"], - "description_General": "Number of Months Covered by the 'Other' Audit Period", - "original_table_General": "GENERAL", - "all_years": True, - }, - "oversight_agency": { - "models": ["General"], - "original_name": "OVERSIGHTAGENCY", - "forms": ["SF-SAC 1997-2000: I/9", "SF-SAC 2001-2003: I/9"], - "forms_General": ["SF-SAC 1997-2000: I/9", "SF-SAC 2001-2003: I/9"], - "descriptions": ["Two digit Federal agency prefix of the oversight agency"], - "description_General": "Two digit Federal agency prefix of the oversight agency", - "original_table_General": "GENERAL", - "all_years": True, - }, - "period_covered": { - "models": ["General"], - "original_name": "PERIODCOVERED", - "forms": [ - "SF-SAC 1997-2000: I/3", - "SF-SAC 2001-2003: I/3", - "SF-SAC 2004-2007: I/3", - "SF-SAC 2008-2009: I/3", - "SF-SAC 2010-2012: I/3", - "SF-SAC 2013-2015: I/3", - "SF-SAC 2016-2018: I/3", - "SF-SAC 2019-2021: I/3", - "SF-SAC 2022: I/3", - ], - "forms_General": [ - "SF-SAC 1997-2000: I/3", - "SF-SAC 2001-2003: I/3", - "SF-SAC 2004-2007: I/3", - "SF-SAC 2008-2009: I/3", - "SF-SAC 2010-2012: I/3", - "SF-SAC 2013-2015: I/3", - "SF-SAC 2016-2018: I/3", - "SF-SAC 2019-2021: I/3", - "SF-SAC 2022: I/3", - ], - "descriptions": ["Audit Period Covered by Audit"], - "description_General": "Audit Period Covered by Audit", - "original_table_General": "GENERAL", - "all_years": True, - }, - "previous_completed_on": { - "models": ["General"], - "original_name": "PREVIOUS_COMPLETED_ON", - "forms": [], - "forms_General": [], - "descriptions": [ - "Date the Audit was Previously Posted to the Internet as Complete" - ], - "description_General": "Date the Audit was Previously Posted to the Internet as Complete", - "original_table_General": "GENERAL", - "all_years": True, - }, - "prior_year_schedule": { - "models": ["General"], - "original_name": "PYSCHEDULE", - "forms": [ - "SF-SAC 2001-2003: III/8", - "SF-SAC 2004-2007: III/7", - "SF-SAC 2008-2009: III/7", - "SF-SAC 2010-2012: III/7", - "SF-SAC 2013-2015: III/4", - ], - "forms_General": [ - "SF-SAC 2001-2003: III/8", - "SF-SAC 2004-2007: III/7", - "SF-SAC 2008-2009: III/7", - "SF-SAC 2010-2012: III/7", - "SF-SAC 2013-2015: III/4", - ], - "descriptions": [ - "Indicate whether or not the report includes a Summary Schedule of Prior Year Audit Findings" - ], - "description_General": "Indicate whether or not the report includes a Summary Schedule of Prior Year Audit Findings", - "original_table_General": "GENERAL", - "all_years": True, - }, - "condition_or_deficiency": { - "models": ["General"], - "original_name": "REPORTABLECONDITION/SIGNIFICANTDEFICIENCY", - "forms": [ - "SF-SAC 1997-2000: II/3", - "SF-SAC 2001-2003: II/3", - "SF-SAC 2004-2007: II/3", - "SF-SAC 2008-2009: II/3", - "SF-SAC 2010-2012: II/3", - "SF-SAC 2013-2015: II/3", - "SF-SAC 2016-2018: III/2/c", - "SF-SAC 2019-2021: III/2/c", - "SF-SAC 2022: III/2/c", - ], - "forms_General": [ - "SF-SAC 1997-2000: II/3", - "SF-SAC 2001-2003: II/3", - "SF-SAC 2004-2007: II/3", - "SF-SAC 2008-2009: II/3", - "SF-SAC 2010-2012: II/3", - "SF-SAC 2013-2015: II/3", - "SF-SAC 2016-2018: III/2/c", - "SF-SAC 2019-2021: III/2/c", - "SF-SAC 2022: III/2/c", - ], - "descriptions": [ - "Whether or not the audit disclosed a reportable condition/significant deficiency on financial statements" - ], - "description_General": "Whether or not the audit disclosed a reportable condition/significant deficiency on financial statements", - "original_table_General": "GENERAL", - "all_years": True, - }, - "condition_or_deficiency_major_program": { - "models": ["General"], - "original_name": "REPORTABLECONDITION/SIGNIFICANTDEFICIENCY_MP", - "forms": [ - "SF-SAC 2001-2003: III/5", - "SF-SAC 2004-2007: III/4", - "SF-SAC 2008-2009: III/4", - "SF-SAC 2010-2012: III/4", - ], - "forms_General": [ - "SF-SAC 2001-2003: III/5", - "SF-SAC 2004-2007: III/4", - "SF-SAC 2008-2009: III/4", - "SF-SAC 2010-2012: III/4", - ], - "descriptions": [ - "Whether or not the audit disclosed a reportable condition/significant deficiency for any major program in the Schedule of Findings and Questioned Costs" - ], - "description_General": "Whether or not the audit disclosed a reportable condition/significant deficiency for any major program in the Schedule of Findings and Questioned Costs", - "original_table_General": "GENERAL", - "all_years": True, - }, - "report_required": { - "models": ["General"], - "original_name": "REPORTREQUIRED", - "forms": [ - "SF-SAC 1997-2000: III/5", - "SF-SAC 2001-2003: III/9", - "SF-SAC 2004-2007: III/8", - ], - "forms_General": [ - "SF-SAC 1997-2000: III/5", - "SF-SAC 2001-2003: III/9", - "SF-SAC 2004-2007: III/8", - ], - "descriptions": ["Distribution to Federal Agency required?"], - "description_General": "Distribution to Federal Agency required?", - "original_table_General": "GENERAL", - "all_years": True, - }, - "sp_framework": { - "models": ["General"], - "original_name": "SP_FRAMEWORK", - "forms": [ - "SF-SAC 2016-2018: III/2/a/ii", - "SF-SAC 2019-2021: III/2/a/i", - "SF-SAC 2022: III/2/a/i", - ], - "forms_General": [ - "SF-SAC 2016-2018: III/2/a/ii", - "SF-SAC 2019-2021: III/2/a/i", - "SF-SAC 2022: III/2/a/i", - ], - "descriptions": [ - "Special Purpose Framework that was used as the basis of accounting" - ], - "description_General": "Special Purpose Framework that was used as the basis of accounting", - "original_table_General": "GENERAL", - "all_years": True, - }, - "sp_framework_required": { - "models": ["General"], - "original_name": "SP_FRAMEWORK_REQUIRED", - "forms": [ - "SF-SAC 2016-2018: III/2/a/iii", - "SF-SAC 2019-2021: III/2/a/ii", - "SF-SAC 2022: III/2/a/ii", - ], - "forms_General": [ - "SF-SAC 2016-2018: III/2/a/iii", - "SF-SAC 2019-2021: III/2/a/ii", - "SF-SAC 2022: III/2/a/ii", - ], - "descriptions": [ - "Indicate whether or not the special purpose framework used as basis of accounting by state law or tribal law" - ], - "description_General": "Indicate whether or not the special purpose framework used as basis of accounting by state law or tribal law", - "original_table_General": "GENERAL", - "all_years": True, - }, - "state": { - "models": ["General"], - "original_name": "STATE", - "forms": [ - "SF-SAC 1997-2000: I/6/b", - "SF-SAC 2001-2003: I/6/b", - "SF-SAC 2004-2007: I/6/b", - "SF-SAC 2008-2009: I/5/b", - "SF-SAC 2010-2012: I/5/b", - "SF-SAC 2013-2015: I/5/b", - "SF-SAC 2016-2018: I/5/b", - "SF-SAC 2019-2021: I/5/b", - "SF-SAC 2022: I/5/b", - ], - "forms_General": [ - "SF-SAC 1997-2000: I/6/b", - "SF-SAC 2001-2003: I/6/b", - "SF-SAC 2004-2007: I/6/b", - "SF-SAC 2008-2009: I/5/b", - "SF-SAC 2010-2012: I/5/b", - "SF-SAC 2013-2015: I/5/b", - "SF-SAC 2016-2018: I/5/b", - "SF-SAC 2019-2021: I/5/b", - "SF-SAC 2022: I/5/b", - ], - "descriptions": ["Auditee State"], - "description_General": "Auditee State", - "original_table_General": "GENERAL", - "all_years": True, - }, - "street1": { - "models": ["General"], - "original_name": "STREET1", - "forms": [ - "SF-SAC 1997-2000: I/6/b", - "SF-SAC 2001-2003: I/6/b", - "SF-SAC 2004-2007: I/6/b", - "SF-SAC 2008-2009: I/5/b", - "SF-SAC 2010-2012: I/5/b", - "SF-SAC 2013-2015: I/5/b", - "SF-SAC 2016-2018: I/5/b", - "SF-SAC 2019-2021: I/5/b", - "SF-SAC 2022: I/5/b", - ], - "forms_General": [ - "SF-SAC 1997-2000: I/6/b", - "SF-SAC 2001-2003: I/6/b", - "SF-SAC 2004-2007: I/6/b", - "SF-SAC 2008-2009: I/5/b", - "SF-SAC 2010-2012: I/5/b", - "SF-SAC 2013-2015: I/5/b", - "SF-SAC 2016-2018: I/5/b", - "SF-SAC 2019-2021: I/5/b", - "SF-SAC 2022: I/5/b", - ], - "descriptions": ["Auditee Street Address"], - "description_General": "Auditee Street Address", - "original_table_General": "GENERAL", - "all_years": True, - }, - "street2": { - "models": ["General"], - "original_name": "STREET2", - "forms": [ - "SF-SAC 1997-2000: I/6/b", - "SF-SAC 2001-2003: I/6/b", - "SF-SAC 2004-2007: I/6/b", - "SF-SAC 2008-2009: I/5/b", - "SF-SAC 2010-2012: I/5/b", - "SF-SAC 2013-2015: I/5/b", - "SF-SAC 2016-2018: I/5/b", - "SF-SAC 2019-2021: I/5/b", - "SF-SAC 2022: I/5/b", - ], - "forms_General": [ - "SF-SAC 1997-2000: I/6/b", - "SF-SAC 2001-2003: I/6/b", - "SF-SAC 2004-2007: I/6/b", - "SF-SAC 2008-2009: I/5/b", - "SF-SAC 2010-2012: I/5/b", - "SF-SAC 2013-2015: I/5/b", - "SF-SAC 2016-2018: I/5/b", - "SF-SAC 2019-2021: I/5/b", - "SF-SAC 2022: I/5/b", - ], - "descriptions": ["Auditee Street Address"], - "description_General": "Auditee Street Address", - "original_table_General": "GENERAL", - "all_years": True, - }, - "total_fed_expenditures": { - "models": ["General"], - "original_name": "TOTFEDEXPEND", - "forms": [ - "SF-SAC 1997-2000: III/6/c- Total", - "SF-SAC 2001-2003: III/10/d -Total", - "SF-SAC 2004-2007: III/9/e -Total", - "SF-SAC 2008-2009: III/9/e -Total", - "SF-SAC 2010-2012: III/9/f -Total", - "SF-SAC 2013-2015: III/6/d -Total", - "SF-SAC 2016-2018: II/1/e- Total", - "SF-SAC 2019-2021: II/1/e - Total", - "SF-SAC 2022: II/1/e - Total", - ], - "forms_General": [ - "SF-SAC 1997-2000: III/6/c- Total", - "SF-SAC 2001-2003: III/10/d -Total", - "SF-SAC 2004-2007: III/9/e -Total", - "SF-SAC 2008-2009: III/9/e -Total", - "SF-SAC 2010-2012: III/9/f -Total", - "SF-SAC 2013-2015: III/6/d -Total", - "SF-SAC 2016-2018: II/1/e- Total", - "SF-SAC 2019-2021: II/1/e - Total", - "SF-SAC 2022: II/1/e - Total", - ], - "descriptions": ["Total Federal Expenditures"], - "description_General": "Total Federal Expenditures", - "original_table_General": "GENERAL", - "all_years": True, - }, - "type_of_entity": { - "models": ["General"], - "original_name": "TYPEOFENTITY", - "forms": [], - "forms_General": [], - "descriptions": ["Contact FAC for information"], - "description_General": "Contact FAC for information", - "original_table_General": "GENERAL", - "all_years": True, - }, - "type_report_financial_statements": { - "models": ["General"], - "original_name": "TYPEREPORT_FS", - "forms": [ - "SF-SAC 1997-2000: II/1", - "SF-SAC 2001-2003: II/1", - "SF-SAC 2004-2007: II/1", - "SF-SAC 2008-2009: II/1", - "SF-SAC 2010-2012: II/1", - "SF-SAC 2013-2015: II/1", - "SF-SAC 2016-2018: III/2/a/i", - "SF-SAC 2019-2021: III/2/a", - "SF-SAC 2022: III/2/a", - ], - "forms_General": [ - "SF-SAC 1997-2000: II/1", - "SF-SAC 2001-2003: II/1", - "SF-SAC 2004-2007: II/1", - "SF-SAC 2008-2009: II/1", - "SF-SAC 2010-2012: II/1", - "SF-SAC 2013-2015: II/1", - "SF-SAC 2016-2018: III/2/a/i", - "SF-SAC 2019-2021: III/2/a", - "SF-SAC 2022: III/2/a", - ], - "descriptions": ["Type of Report Issued on the Financial Statements"], - "description_General": "Type of Report Issued on the Financial Statements", - "original_table_General": "GENERAL", - "all_years": True, - }, - "type_report_special_purpose_framework": { - "models": ["General"], - "original_name": "TYPEREPORT_SP_FRAMEWORK", - "forms": [ - "SF-SAC 2016-2018: III/2/a/iv", - "SF-SAC 2019-2021: III/2/a/iii", - "SF-SAC 2022: III/2/a/iii", - ], - "forms_General": [ - "SF-SAC 2016-2018: III/2/a/iv", - "SF-SAC 2019-2021: III/2/a/iii", - "SF-SAC 2022: III/2/a/iii", - ], - "descriptions": ["The auditor's opinion on the special purpose framework "], - "description_General": "The auditor's opinion on the special purpose framework ", - "original_table_General": "GENERAL", - "all_years": True, - }, - "uei": { - "models": ["General", "UeiInfo"], - "original_name": "UEI", - "forms": [ - "SF-SAC 2022: I/4/g", - "SF-SAC 2004-2007: I/5/f", - "SF-SAC 2008-2009: I/4/f", - "SF-SAC 2010-2012: I/4/f", - "SF-SAC 2013-2015: I/4/f", - "SF-SAC 2016-2018: I/4/f", - "SF-SAC 2019-2021: I/4/f", - "SF-SAC 2022: I/4/i", - ], - "forms_General": ["SF-SAC 2022: I/4/g"], - "descriptions": [ - "Unique Entity ID", - "Multiple Unique Entity Identifier Numbers", - ], - "description_General": "Unique Entity ID", - "original_table_General": "GENERAL", - "all_years": True, - "forms_UeiInfo": [ - "SF-SAC 2004-2007: I/5/f", - "SF-SAC 2008-2009: I/4/f", - "SF-SAC 2010-2012: I/4/f", - "SF-SAC 2013-2015: I/4/f", - "SF-SAC 2016-2018: I/4/f", - "SF-SAC 2019-2021: I/4/f", - "SF-SAC 2022: I/4/i", - ], - "description_UeiInfo": "Multiple Unique Entity Identifier Numbers", - "original_table_UeiInfo": "UEI INFO", - }, - "zip_code": { - "models": ["General"], - "original_name": "ZIPCODE", - "forms": [ - "SF-SAC 1997-2000: I/6/b", - "SF-SAC 2001-2003: I/6/b", - "SF-SAC 2004-2007: I/6/b", - "SF-SAC 2008-2009: I/5/b", - "SF-SAC 2010-2012: I/5/b", - "SF-SAC 2013-2015: I/5/b", - "SF-SAC 2016-2018: I/5/b", - "SF-SAC 2019-2021: I/5/b", - "SF-SAC 2022: I/5/b", - ], - "forms_General": [ - "SF-SAC 1997-2000: I/6/b", - "SF-SAC 2001-2003: I/6/b", - "SF-SAC 2004-2007: I/6/b", - "SF-SAC 2008-2009: I/5/b", - "SF-SAC 2010-2012: I/5/b", - "SF-SAC 2013-2015: I/5/b", - "SF-SAC 2016-2018: I/5/b", - "SF-SAC 2019-2021: I/5/b", - "SF-SAC 2022: I/5/b", - ], - "descriptions": ["Auditee Zipcode"], - "description_General": "Auditee Zipcode", - "original_table_General": "GENERAL", - "all_years": True, - }, - "cpa_ein": { - "models": ["MultipleCpasInfo"], - "original_name": "CPAEIN", - "forms": [ - "SF-SAC 2013-2015: I/8/b", - "SF-SAC 2016-2018: I/8/b", - "SF-SAC 2019-2021: I/6/h/ii", - "SF-SAC 2022: I/6/h/ii", - ], - "forms_MultipleCpasInfo": [ - "SF-SAC 2013-2015: I/8/b", - "SF-SAC 2016-2018: I/8/b", - "SF-SAC 2019-2021: I/6/h/ii", - "SF-SAC 2022: I/6/h/ii", - ], - "descriptions": [ - "CPA Firm EIN (only available for audit years 2013 and beyond)" - ], - "description_MultipleCpasInfo": "CPA Firm EIN (only available for audit years 2013 and beyond)", - "original_table_MultipleCpasInfo": "MULTIPLE CPAS INFO", - "all_years": True, - }, - "seqnum": { - "models": ["MultipleCpasInfo"], - "original_name": "SEQNUM", - "forms": [], - "forms_MultipleCpasInfo": [], - "descriptions": ["Order that Auditors were reported on page 5 of SF-SAC"], - "description_MultipleCpasInfo": "Order that Auditors were reported on page 5 of SF-SAC", - "original_table_MultipleCpasInfo": "MULTIPLE CPAS INFO", - "all_years": True, - }, - "content": { - "models": ["Notes"], - "original_name": "CONTENT", - "forms": ["SF-SAC 2019-2021: II/2", "SF-SAC 2022: II/2"], - "forms_Notes": ["SF-SAC 2019-2021: II/2", "SF-SAC 2022: II/2"], - "descriptions": ["Content of the Note"], - "description_Notes": "Content of the Note", - "original_table_Notes": "NOTES", - "all_years": True, - }, - "fac_id": { - "models": ["Notes"], - "original_name": "ID", - "forms": [], - "forms_Notes": [], - "descriptions": ["Internal Unique Identifier for the record"], - "description_Notes": "Internal Unique Identifier for the record", - "original_table_Notes": "NOTES", - "all_years": True, - }, - "note_index": { - "models": ["Notes"], - "original_name": "NOTE_INDEX", - "forms": [], - "forms_Notes": [], - "descriptions": ["Display Index for the Note"], - "description_Notes": "Display Index for the Note", - "original_table_Notes": "NOTES", - "all_years": True, - }, - "report_id": { - "models": ["Notes"], - "original_name": "REPORTID", - "forms": [], - "forms_Notes": [], - "descriptions": ["Internal Audit Report Id "], - "description_Notes": "Internal Audit Report Id ", - "original_table_Notes": "NOTES", - "all_years": True, - }, - "title": { - "models": ["Notes"], - "original_name": "TITLE", - "forms": ["SF-SAC 2019-2021: II/2", "SF-SAC 2022: II/2"], - "forms_Notes": ["SF-SAC 2019-2021: II/2", "SF-SAC 2022: II/2"], - "descriptions": ["Note Title"], - "description_Notes": "Note Title", - "original_table_Notes": "NOTES", - "all_years": True, - }, - "type_id": { - "models": ["Notes"], - "original_name": "TYPE_ID", - "forms": [], - "forms_Notes": [], - "descriptions": ["Note Type"], - "description_Notes": "Note Type", - "original_table_Notes": "NOTES", - "all_years": True, - }, - "version": { - "models": ["Notes"], - "original_name": "VERSION", - "forms": [], - "forms_Notes": [], - "descriptions": ["Internal Version"], - "description_Notes": "Internal Version", - "original_table_Notes": "NOTES", - "all_years": True, - }, - "passthrough_id": { - "models": ["Passthrough"], - "original_name": "PASSTHROUGHID", - "forms": [ - "SF-SAC 2016-2018: II/1/m", - "SF-SAC 2019-2021: II/1/m", - "SF-SAC 2022: II/1/m", - ], - "forms_Passthrough": [ - "SF-SAC 2016-2018: II/1/m", - "SF-SAC 2019-2021: II/1/m", - "SF-SAC 2022: II/1/m", - ], - "descriptions": ["Identifying Number Assigned by the Pass-through Entity"], - "description_Passthrough": "Identifying Number Assigned by the Pass-through Entity", - "original_table_Passthrough": "PASSTHROUGH", - "all_years": True, - }, - "passthrough_name": { - "models": ["Passthrough"], - "original_name": "PASSTHROUGHNAME", - "forms": [ - "SF-SAC 2016-2018: II/1/l", - "SF-SAC 2019-2021: II/1/l", - "SF-SAC 2022: II/1/l", - ], - "forms_Passthrough": [ - "SF-SAC 2016-2018: II/1/l", - "SF-SAC 2019-2021: II/1/l", - "SF-SAC 2022: II/1/l", - ], - "descriptions": ["Name of Pass-through Entity"], - "description_Passthrough": "Name of Pass-through Entity", - "original_table_Passthrough": "PASSTHROUGH", - "all_years": True, - }, - "audit_info": { - "models": ["Revisions"], - "original_name": "AUDITINFO", - "forms": [], - "forms_Revisions": [], - "descriptions": [ - "Indicates what items on the Audit Info page were edited during the revision" - ], - "description_Revisions": "Indicates what items on the Audit Info page were edited during the revision", - "original_table_Revisions": "REVISIONS", - "all_years": True, - }, - "auditinfo_explain": { - "models": ["Revisions"], - "original_name": "AUDITINFO_EXPLAIN", - "forms": [], - "forms_Revisions": [], - "descriptions": [ - "Explanation of what items on the Audit Info page were edited during the revision" - ], - "description_Revisions": "Explanation of what items on the Audit Info page were edited during the revision", - "original_table_Revisions": "REVISIONS", - "all_years": True, - }, - "cap": { - "models": ["Revisions"], - "original_name": "CAP", - "forms": [], - "forms_Revisions": [], - "descriptions": [ - "Indicates what items on the CAP Text page were edited during the revision" - ], - "description_Revisions": "Indicates what items on the CAP Text page were edited during the revision", - "original_table_Revisions": "REVISIONS", - "all_years": True, - }, - "cap_explain": { - "models": ["Revisions"], - "original_name": "CAP_EXPLAIN", - "forms": [], - "forms_Revisions": [], - "descriptions": [ - "Explanation of what items on the CAP Text page were edited during the revision" - ], - "description_Revisions": "Explanation of what items on the CAP Text page were edited during the revision", - "original_table_Revisions": "REVISIONS", - "all_years": True, - }, - "elec_report_revision_id": { - "models": ["Revisions"], - "original_name": "ELECRPTREVISIONID", - "forms": [], - "forms_Revisions": [], - "descriptions": ["Internal Unique Identifier for the record"], - "description_Revisions": "Internal Unique Identifier for the record", - "original_table_Revisions": "REVISIONS", - "all_years": True, - }, - "federal_awards": { - "models": ["Revisions"], - "original_name": "FEDERALAWARDS", - "forms": [], - "forms_Revisions": [], - "descriptions": [ - "Indicates what items on the Federal Awards page were edited during the revision" - ], - "description_Revisions": "Indicates what items on the Federal Awards page were edited during the revision", - "original_table_Revisions": "REVISIONS", - "all_years": True, - }, - "federal_awards_explain": { - "models": ["Revisions"], - "original_name": "FEDERALAWARDS_EXPLAIN", - "forms": [], - "forms_Revisions": [], - "descriptions": [ - "Explanation of what items on the Federal Awards page were edited during the revision" - ], - "description_Revisions": "Explanation of what items on the Federal Awards page were edited during the revision", - "original_table_Revisions": "REVISIONS", - "all_years": True, - }, - "findings": { - "models": ["Revisions"], - "original_name": "FINDINGS", - "forms": [], - "forms_Revisions": [], - "descriptions": [ - "Indicates what items on the Findings page were edited during the revision" - ], - "description_Revisions": "Indicates what items on the Findings page were edited during the revision", - "original_table_Revisions": "REVISIONS", - "all_years": True, - }, - "findings_explain": { - "models": ["Revisions"], - "original_name": "FINDINGS_EXPLAIN", - "forms": [], - "forms_Revisions": [], - "descriptions": [ - "Explanation of what items on the Findings page were edited during the revision" - ], - "description_Revisions": "Explanation of what items on the Findings page were edited during the revision", - "original_table_Revisions": "REVISIONS", - "all_years": True, - }, - "findings_text": { - "models": ["Revisions"], - "original_name": "FINDINGSTEXT", - "forms": [], - "forms_Revisions": [], - "descriptions": [ - "Indicates what items on the Text of the Audit Findings page were edited during the revision" - ], - "description_Revisions": "Indicates what items on the Text of the Audit Findings page were edited during the revision", - "original_table_Revisions": "REVISIONS", - "all_years": True, - }, - "findings_text_explain": { - "models": ["Revisions"], - "original_name": "FINDINGSTEXT_EXPLAIN", - "forms": [], - "forms_Revisions": [], - "descriptions": [ - "Explanation of what items on the Text of the Audit Findings page were edited during the revision" - ], - "description_Revisions": "Explanation of what items on the Text of the Audit Findings page were edited during the revision", - "original_table_Revisions": "REVISIONS", - "all_years": True, - }, - "general_info": { - "models": ["Revisions"], - "original_name": "GENINFO", - "forms": [], - "forms_Revisions": [], - "descriptions": [ - "Indicates what items on the General Info page were edited during the revision" - ], - "description_Revisions": "Indicates what items on the General Info page were edited during the revision", - "original_table_Revisions": "REVISIONS", - "all_years": True, - }, - "general_info_explain": { - "models": ["Revisions"], - "original_name": "GENINFO_EXPLAIN", - "forms": [], - "forms_Revisions": [], - "descriptions": [ - "Explanation of what items on the General Info page were edited during the revision" - ], - "description_Revisions": "Explanation of what items on the General Info page were edited during the revision", - "original_table_Revisions": "REVISIONS", - "all_years": True, - }, - "notes_to_sefa": { - "models": ["Revisions"], - "original_name": "NOTESTOSEFA", - "forms": [], - "forms_Revisions": [], - "descriptions": [ - "Indicates what items on the Notes to SEFA page were edited during the revision" - ], - "description_Revisions": "Indicates what items on the Notes to SEFA page were edited during the revision", - "original_table_Revisions": "REVISIONS", - "all_years": True, - }, - "notes_to_sefa_explain": { - "models": ["Revisions"], - "original_name": "NOTESTOSEFA_EXPLAIN", - "forms": [], - "forms_Revisions": [], - "descriptions": [ - "Explanation of what items on the Notes to SEFA page were edited during the revision" - ], - "description_Revisions": "Explanation of what items on the Notes to SEFA page were edited during the revision", - "original_table_Revisions": "REVISIONS", - "all_years": True, - }, - "other": { - "models": ["Revisions"], - "original_name": "OTHER", - "forms": [], - "forms_Revisions": [], - "descriptions": [ - "Indicates what other miscellaneous items were edited during the revision" - ], - "description_Revisions": "Indicates what other miscellaneous items were edited during the revision", - "original_table_Revisions": "REVISIONS", - "all_years": True, - }, - "other_explain": { - "models": ["Revisions"], - "original_name": "OTHER_EXPLAIN", - "forms": [], - "forms_Revisions": [], - "descriptions": [ - "Explanation of what other miscellaneous items were edited during the revision" - ], - "description_Revisions": "Explanation of what other miscellaneous items were edited during the revision", - "original_table_Revisions": "REVISIONS", - "all_years": True, - }, - "uei_seq_num": { - "models": ["UeiInfo"], - "original_name": "UEISEQNUM", - "forms": [], - "forms_UeiInfo": [], - "descriptions": ["Order that UEI was reported on page 4 of SF-SAC"], - "description_UeiInfo": "Order that UEI was reported on page 4 of SF-SAC", - "original_table_UeiInfo": "UEI INFO", - "all_years": True, - }, -} diff --git a/backend/data_distro/migrations/0001_initial_schema_from_downloads.py b/backend/data_distro/migrations/0001_initial_schema_from_downloads.py deleted file mode 100644 index b427f5693..000000000 --- a/backend/data_distro/migrations/0001_initial_schema_from_downloads.py +++ /dev/null @@ -1,1707 +0,0 @@ -# Generated by Django 4.1.4 on 2023-01-24 20:58 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [] # type: ignore - - operations = [ - migrations.CreateModel( - name="Agencies", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "agency_cfda", - models.IntegerField( - help_text="Data sources: SF-SAC 1997-2000: III/5;SF-SAC 2001-2003: III/9;SF-SAC 2004-2007: III/8;SF-SAC 2008-2009: III/8;SF-SAC 2010-2012: III/8;SF-SAC 2013-2015: III/5;SF-SAC 2016-2018: III/3/d;SF-SAC 2019-2021: III/3/d;SF-SAC 2022: III/3/d Census mapping: AGENCIES, AGENCYCFDA", - verbose_name="2-digit prefix of Federal Agency requiring copy of audit report", - ), - ), - ( - "ein", - models.IntegerField( - help_text="Data sources: SF-SAC 1997-2000: I/5/a;SF-SAC 2001-2003: I/5/a;SF-SAC 2004-2007: I/5/a;SF-SAC 2008-2009: I/4/a;SF-SAC 2010-2012: I/4/a;SF-SAC 2013-2015: I/4/a;SF-SAC 2016-2018: I/4/a;SF-SAC 2019-2021: I/4/a;SF-SAC 2022: I/4/a Census mapping: AGENCIES, EIN", - null=True, - verbose_name="Employer Identification Number (EIN) of primary grantee", - ), - ), - ( - "dbkey", - models.CharField( - help_text="Census mapping: AGENCIES, DBKEY", - max_length=40, - verbose_name="Audit Year and DBKEY (database key) combined make up the primary key.", - ), - ), - ( - "audit_year", - models.CharField( - help_text="Census mapping: AGENCIES, AUDITYEAR", - max_length=40, - verbose_name="Audit Year and DBKEY (database key) combined make up the primary key.", - ), - ), - ], - ), - migrations.CreateModel( - name="Captext", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "charts_tables", - models.BooleanField( - help_text="Census mapping: CAPTEXT, CHARTSTABLES", - max_length=1, - null=True, - verbose_name="Indicates whether or not the text contained charts or tables that could not be entered due to formatting restrictions", - ), - ), - ( - "finding_ref_nums", - models.CharField( - help_text="Data sources: SF-SAC 2019-2021: IV/1;SF-SAC 2022: IV/1 Census mapping: CAPTEXT, FINDINGREFNUMS", - max_length=100, - verbose_name="Audit Finding Reference Number", - ), - ), - ( - "seq_number", - models.IntegerField( - help_text="Census mapping: CAPTEXT, SEQ_NUMBER", - verbose_name="Order that the CAP text was reported", - ), - ), - ( - "text", - models.TextField( - help_text="Data sources: SF-SAC 2019-2021: IV/2;SF-SAC 2022: IV/2 Census mapping: CAPTEXT, TEXT", - verbose_name="Content of the Corrective Action Plan (CAP)", - ), - ), - ( - "dbkey", - models.CharField( - help_text="Census mapping: CAPTEXT, DBKEY", - max_length=40, - verbose_name="Audit Year and DBKEY (database key) combined make up the primary key.", - ), - ), - ( - "audit_year", - models.CharField( - help_text="Census mapping: CAPTEXT, AUDITYEAR", - max_length=40, - verbose_name="Audit Year and DBKEY (database key) combined make up the primary key.", - ), - ), - ], - ), - migrations.CreateModel( - name="CfdaInfo", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "research_and_development", - models.BooleanField( - help_text="Data sources: SF-SAC 2001-2003: III/10/b;SF-SAC 2004-2007: III/9/c;SF-SAC 2008-2009: III/9/c;SF-SAC 2010-2012: III/9/c;SF-SAC 2013-2015: III/6/e Census mapping: CFDA INFO, R&D", - null=True, - verbose_name="Indicate whether or not the program is a Research and Development program", - ), - ), - ( - "loans", - models.BooleanField( - help_text="Data sources: SF-SAC 2013-2015: III/6/f;SF-SAC 2016-2018: II/1/i;SF-SAC 2019-2021: II/1/i;SF-SAC 2022: II/1/i Census mapping: CFDA INFO, LOANS", - null=True, - verbose_name="Indicate whether or not the program is a Loan or Loan Guarantee (only available for audit years 2013 and beyond)", - ), - ), - ( - "arra", - models.BooleanField( - help_text="Data sources: SF-SAC 2010-2012: III/9/d;SF-SAC 2013-2015: III/6/g Census mapping: CFDA INFO, ARRA", - null=True, - verbose_name="American Recovery and Reinvestment Act Funded Program", - ), - ), - ( - "direct", - models.BooleanField( - help_text="Data sources: SF-SAC 2001-2003: III/10/e;SF-SAC 2004-2007: III/9/f;SF-SAC 2008-2009: III/9/f;SF-SAC 2010-2012: III/9/g;SF-SAC 2013-2015: III/6/h;SF-SAC 2016-2018: II/1/k;SF-SAC 2019-2021: II/1/k;SF-SAC 2022: II/1/k Census mapping: CFDA INFO, DIRECT", - null=True, - verbose_name="Indicate whether or not the award was received directly from a Federal awarding agency", - ), - ), - ( - "passthrough_award", - models.BooleanField( - help_text="Data sources: SF-SAC 2016-2018: II/1/n;SF-SAC 2019-2021: II/1/n;SF-SAC 2022: II/1/n Census mapping: CFDA INFO, PASSTHROUGHAWARD", - null=True, - verbose_name="Indicates whether or not funds were passed through to any subrecipients for the Federal program", - ), - ), - ( - "major_program", - models.BooleanField( - help_text="Data sources: SF-SAC 1997-2000: III/7/a;SF-SAC 2001-2003: III/10/f;SF-SAC 2004-2007: III/9/g;SF-SAC 2008-2009: III/9/g;SF-SAC 2010-2012: III/9/h;SF-SAC 2013-2015: III/6/i;SF-SAC 2016-2018: III/1/a;SF-SAC 2019-2021: III/1/a;SF-SAC 2022: III/1/a Census mapping: CFDA INFO, MAJORPROGRAM", - null=True, - verbose_name="Indicate whether or not the Federal program is a major program", - ), - ), - ( - "finding_ref_nums", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: III/7/e;SF-SAC 2001-2003: III/11/b;SF-SAC 2004-2007: III/10/b;SF-SAC 2008-2009: III/10/b;SF-SAC 2010-2012: III/10/b;SF-SAC 2013-2015: III/7/d;SF-SAC 2016-2018: III/4/e;SF-SAC 2019-2021: III/4/e;SF-SAC 2022: III/4/e Census mapping: CFDA INFO, FINDINGREFNUMS", - max_length=100, - null=True, - verbose_name="Findings Reference Numbers", - ), - ), - ( - "amount", - models.BigIntegerField( - help_text="Data sources: SF-SAC 1997-2000: III/6/c;SF-SAC 2001-2003: III/10/d;SF-SAC 2004-2007: III/9/e;SF-SAC 2008-2009: III/9/e;SF-SAC 2010-2012: III/9/f;SF-SAC 2013-2015: III/6/d;SF-SAC 2016-2018: II/1/e;SF-SAC 2019-2021: II/1/e;SF-SAC 2022: II/1/e Census mapping: CFDA INFO, AMOUNT", - verbose_name="Amount Expended for the Federal Program", - ), - ), - ( - "program_total", - models.BigIntegerField( - help_text="Data sources: SF-SAC 2016-2018: II/1/g;SF-SAC 2019-2021: II/1/g;SF-SAC 2022: II/1/g Census mapping: CFDA INFO, PROGRAMTOTAL", - verbose_name="Total Federal awards expended for each individual Federal program is auto-generated by summing the amount expended for all line items with the same CFDA Prefix and Extension", - ), - ), - ( - "cluster_total", - models.BigIntegerField( - help_text="Data sources: SF-SAC 2016-2018: II/1/h;SF-SAC 2019-2021: II/1/h;SF-SAC 2022: II/1/h Census mapping: CFDA INFO, CLUSTERTOTAL", - verbose_name="Total Federal awards expended for each individual Federal program is auto-generated by summing the amount expended for all line items with the same Cluster Name", - ), - ), - ( - "passthrough_amount", - models.BigIntegerField( - help_text="Data sources: SF-SAC 2016-2018: II/1/o;SF-SAC 2019-2021: II/1/o;SF-SAC 2022: II/1/o Census mapping: CFDA INFO, PASSTHROUGHAMOUNT", - null=True, - verbose_name="Amount passed through to subrecipients", - ), - ), - ( - "loan_balance", - models.CharField( - help_text="Data sources: SF-SAC 2016-2018: II/1/j;SF-SAC 2019-2021: II/1/j;SF-SAC 2022: II/1/j Census mapping: CFDA INFO, LOANBALANCE", - max_length=40, - null=True, - verbose_name="The loan or loan guarantee (loan) balance outstanding at the end of the audit period. A response of ‘N/A’ is acceptable.", - ), - ), - ( - "federal_program_name", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: III/6/b;SF-SAC 2001-2003: III/10/c;SF-SAC 2004-2007: III/9/d;SF-SAC 2008-2009: III/9/d;SF-SAC 2010-2012: III/9/e;SF-SAC 2013-2015: III/6/c;SF-SAC 2016-2018: II/1/d;SF-SAC 2019-2021: II/1/d;SF-SAC 2022: II/1/d Census mapping: CFDA INFO, FEDERALPROGRAMNAME", - max_length=300, - verbose_name="Name of Federal Program", - ), - ), - ( - "cfda_program_name", - models.CharField( - help_text="Census mapping: CFDA INFO, CFDAPROGRAMNAME", - max_length=300, - verbose_name="Name of Federal Program (auto-generated by FAC from the CFDA catalog)", - ), - ), - ( - "award_identification", - models.CharField( - help_text="Data sources: SF-SAC 2016-2018: II/1/c;SF-SAC 2019-2021: II/1/c;SF-SAC 2022: II/1/c Census mapping: CFDA INFO, AWARDIDENTIFICATION", - max_length=50, - verbose_name="Other data used to identify the award which is not a CFDA number (e.g., program year, contract number)", - ), - ), - ( - "cfda", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: III/6/a;SF-SAC 2001-2003: III/10/a;SF-SAC 2004-2007: III/9/a & III/9/b combined;SF-SAC 2008-2009: III/9/a & III/9/b combined;SF-SAC 2010-2012: III/9/a & III/9/b combined;SF-SAC 2013-2015: III/6/a & III/6/b combined;SF-SAC 2016-2018: II/1/a & II/1/b combined;SF-SAC 2019-2021: II/1/a & II/1/b combined;SF-SAC 2022: II/1/a & II/1/b combined Census mapping: CFDA INFO, CFDA", - max_length=52, - verbose_name="Federal Agency Prefix and Extension", - ), - ), - ( - "cluster_name", - models.CharField( - help_text="Data sources: SF-SAC 2016-2018: II/1/f;SF-SAC 2019-2021: II/1/f;SF-SAC 2022: II/1/f Census mapping: CFDA INFO, CLUSTERNAME", - max_length=75, - null=True, - verbose_name="The name of the cluster", - ), - ), - ( - "state_cluster_name", - models.CharField( - help_text="Census mapping: CFDA INFO, STATECLUSTERNAME", - max_length=75, - null=True, - verbose_name="The name of the state cluster", - ), - ), - ( - "other_cluster_name", - models.CharField( - help_text="Census mapping: CFDA INFO, OTHERCLUSTERNAME", - max_length=75, - null=True, - verbose_name="The name of the cluster (if not listed in the Compliance Supplement)", - ), - ), - ( - "type_requirement", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: III/7/b;SF-SAC 2001-2003: III/11/a;SF-SAC 2004-2007: III/10/a;SF-SAC 2008-2009: III/10/a;SF-SAC 2010-2012: III/10/a;SF-SAC 2013-2015: III/7/e;SF-SAC 2016-2018: III/4/f;SF-SAC 2019-2021: III/4/f;SF-SAC 2022: III/4/f Census mapping: CFDA INFO, TYPEREQUIREMENT", - max_length=40, - null=True, - verbose_name="Type Requirement Failure", - ), - ), - ( - "type_report_major_program", - models.CharField( - help_text="Data sources: SF-SAC 2004-2007: III/9/h;SF-SAC 2008-2009: III/9/h;SF-SAC 2010-2012: III/9/i;SF-SAC 2013-2015: III/6/j;SF-SAC 2016-2018: III/1/b;SF-SAC 2019-2021: III/1/b;SF-SAC 2022: III/1/b Census mapping: CFDA INFO, TYPEREPORT_MP", - max_length=40, - verbose_name="Type of Report Issued on the Major Program Compliance", - ), - ), - ( - "findings_count", - models.IntegerField( - help_text="Data sources: SF-SAC 2013-2015: III/6/k;SF-SAC 2016-2018: III/1/c;SF-SAC 2019-2021: III/1/c;SF-SAC 2022: III/1/c Census mapping: CFDA INFO, FINDINGSCOUNT", - verbose_name="Number of findings for the federal program (only available for audit years 2013 and beyond)", - ), - ), - ( - "elec_audits_id", - models.IntegerField( - help_text="Census mapping: CFDA INFO, ELECAUDITSID", - verbose_name="FAC system generated sequence number used to link to Findings data between CFDA Info and Findings", - ), - ), - ( - "dbkey", - models.CharField( - help_text="Census mapping: CFDA INFO, DBKEY", - max_length=40, - verbose_name="Audit Year and DBKEY (database key) combined make up the primary key.", - ), - ), - ( - "audit_year", - models.CharField( - help_text="Census mapping: CFDA INFO, AUDITYEAR", - max_length=40, - verbose_name="Audit Year and DBKEY (database key) combined make up the primary key.", - ), - ), - ( - "ein", - models.IntegerField( - default=None, - verbose_name="Primary Employer Identification Number", - ), - ), - ( - "findings", - models.TextField( - help_text="Census mapping: REVISIONS, FINDINGS", - null=True, - verbose_name="Items on the Findings page", - ), - ), - ( - "questioned_costs", - models.CharField( - max_length=40, null=True, verbose_name="Questioned Costs" - ), - ), - ], - ), - migrations.CreateModel( - name="DunsInfo", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "duns", - models.IntegerField( - help_text="Data sources: SF-SAC 2004-2007: I/5/f;SF-SAC 2008-2009: I/4/f;SF-SAC 2010-2012: I/4/f;SF-SAC 2013-2015: I/4/f;SF-SAC 2016-2018: I/4/f;SF-SAC 2019-2021: I/4/f;SF-SAC 2022: I/4/f Census mapping: DUN INFO, DUNS", - verbose_name="Multiple Data Universal Numbering System Numbers", - ), - ), - ( - "duns_seq_num", - models.IntegerField( - help_text="Census mapping: DUN INFO, DUNSEQNUM", - verbose_name="Order that DUNS was reported on page 4 of SF-SAC", - ), - ), - ( - "dbkey", - models.CharField( - help_text="Census mapping: DUN INFO, DBKEY", - max_length=40, - verbose_name="Audit Year and DBKEY (database key) combined make up the primary key.", - ), - ), - ( - "audit_year", - models.CharField( - help_text="Census mapping: DUN INFO, AUDITYEAR", - max_length=40, - verbose_name="Audit Year and DBKEY (database key) combined make up the primary key.", - ), - ), - ], - ), - migrations.CreateModel( - name="EinInfo", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "ein", - models.IntegerField( - help_text="Data sources: SF-SAC 2001-2003: I/5/c;SF-SAC 2004-2007: I/5/c;SF-SAC 2008-2009: I/4/c;SF-SAC 2010-2012: I/4/c;SF-SAC 2013-2015: I/4/c;SF-SAC 2016-2018: I/4/c;SF-SAC 2019-2021: I/4/c;SF-SAC 2022: I/4/c Census mapping: EIN INFO, EIN", - verbose_name="Multiple Employer Identification Numbers", - ), - ), - ( - "ein_seq_num", - models.IntegerField( - help_text="Census mapping: EIN INFO, EINSEQNUM", - verbose_name="Order that EINs were reported on page 4 of SF-SAC", - ), - ), - ( - "dbkey", - models.CharField( - help_text="Census mapping: EIN INFO, DBKEY", - max_length=40, - verbose_name="Audit Year and DBKEY (database key) combined make up the primary key.", - ), - ), - ( - "audit_year", - models.CharField( - help_text="Census mapping: EIN INFO, AUDITYEAR", - max_length=40, - verbose_name="Audit Year and DBKEY (database key) combined make up the primary key.", - ), - ), - ], - ), - migrations.CreateModel( - name="Findings", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "modified_opinion", - models.BooleanField( - help_text="Data sources: SF-SAC 2013-2015: III/7/f;SF-SAC 2016-2018: III/4/g;SF-SAC 2019-2021: III/4/g;SF-SAC 2022: III/4/g Census mapping: FINDINGS, MODIFIEDOPINION", - null=True, - verbose_name="Modified Opinion finding", - ), - ), - ( - "other_non_compliance", - models.BooleanField( - help_text="Data sources: SF-SAC 2013-2015: III/7/g;SF-SAC 2016-2018: III/4/h;SF-SAC 2019-2021: III/4/h;SF-SAC 2022: III/4/h Census mapping: FINDINGS, OTHERNONCOMPLIANCE", - null=True, - verbose_name="Other Noncompliance finding", - ), - ), - ( - "material_weakness", - models.BooleanField( - help_text="Data sources: SF-SAC 2013-2015: III/7/h;SF-SAC 2016-2018: III/4/i;SF-SAC 2019-2021: III/4/i;SF-SAC 2022: III/4/i Census mapping: FINDINGS, MATERIALWEAKNESS", - null=True, - verbose_name="Material Weakness finding", - ), - ), - ( - "significant_deficiency", - models.BooleanField( - help_text="Data sources: SF-SAC 2013-2015: III/7/i;SF-SAC 2016-2018: III/4/j;SF-SAC 2019-2021: III/4/j;SF-SAC 2022: III/4/j Census mapping: FINDINGS, SIGNIFICANTDEFICIENCY", - null=True, - verbose_name="Significant Deficiency finding", - ), - ), - ( - "other_findings", - models.BooleanField( - help_text="Data sources: SF-SAC 2013-2015: III/7/j;SF-SAC 2016-2018: III/4/k;SF-SAC 2019-2021: III/4/k;SF-SAC 2022: III/4/k Census mapping: FINDINGS, OTHERFINDINGS", - null=True, - verbose_name="Other findings", - ), - ), - ( - "questioned_costs", - models.BooleanField( - help_text="Data sources: SF-SAC 2013-2015: III/7/k;SF-SAC 2016-2018: III/4/l;SF-SAC 2019-2021: III/4/l;SF-SAC 2022: III/4/l Census mapping: FINDINGS, QCOSTS", - null=True, - verbose_name="Questioned Costs", - ), - ), - ( - "repeat_finding", - models.BooleanField( - help_text="Data sources: SF-SAC 2016-2018: III/4/m;SF-SAC 2019-2021: III/4/m;SF-SAC 2022: III/4/m Census mapping: FINDINGS, REPEATFINDING", - null=True, - verbose_name="Indicates whether or not the audit finding was a repeat of an audit finding in the immediate prior audit", - ), - ), - ( - "finding_ref_nums", - models.CharField( - help_text="Data sources: SF-SAC 2013-2015: III/7/d;SF-SAC 2016-2018: III/4/e;SF-SAC 2019-2021: III/4/e;SF-SAC 2022: III/4/e Census mapping: FINDINGS, FINDINGREFNUMS", - max_length=100, - verbose_name="Findings Reference Numbers", - ), - ), - ( - "prior_finding_ref_nums", - models.CharField( - help_text="Data sources: SF-SAC 2016-2018: III/4/n;SF-SAC 2019-2021: III/4/n;SF-SAC 2022: III/4/n Census mapping: FINDINGS, PRIORFINDINGREFNUMS", - max_length=100, - verbose_name="Audit finding reference numbers from the immediate prior audit", - ), - ), - ( - "type_requirement", - models.CharField( - help_text="Data sources: SF-SAC 2013-2015: III/7/e;SF-SAC 2016-2018: III/4/f;SF-SAC 2019-2021: III/4/f;SF-SAC 2022: III/4/f Census mapping: FINDINGS, TYPEREQUIREMENT", - max_length=40, - verbose_name="Type Requirement Failure", - ), - ), - ( - "elec_audits_id", - models.IntegerField( - help_text="Census mapping: FINDINGS, ELECAUDITSID", - verbose_name="FAC system generated sequence number used to link to Findings data between CFDA Info and Findings", - ), - ), - ( - "elec_audit_findings_id", - models.IntegerField( - help_text="Census mapping: FINDINGS, ELECAUDITFINDINGSID", - verbose_name="FAC system generated sequence number for finding", - ), - ), - ( - "audit_year", - models.CharField( - help_text="Census mapping: FINDINGS, AUDITYEAR", - max_length=40, - verbose_name="Audit Year and DBKEY (database key) combined make up the primary key.", - ), - ), - ( - "dbkey", - models.CharField( - help_text="Census mapping: FINDINGS, DBKEY", - max_length=40, - verbose_name="Audit Year and DBKEY (database key) combined make up the primary key.", - ), - ), - ], - ), - migrations.CreateModel( - name="Findingstext", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "charts_tables", - models.BooleanField( - help_text="Census mapping: FINDINGSTEXT, CHARTSTABLES", - max_length=1, - null=True, - verbose_name="Indicates whether or not the text contained charts or tables that could not be entered due to formatting restrictions", - ), - ), - ( - "finding_ref_nums", - models.CharField( - help_text="Data sources: SF-SAC 2019-2021: III/5/a;SF-SAC 2022: III/5/a Census mapping: FINDINGSTEXT, FINDINGREFNUMS", - max_length=100, - verbose_name="Audit Finding Reference Number", - ), - ), - ( - "seq_number", - models.IntegerField( - help_text="Census mapping: FINDINGSTEXT, SEQ_NUMBER", - verbose_name="Order that the findings text was reported", - ), - ), - ( - "text", - models.TextField( - help_text="Data sources: SF-SAC 2019-2021: III/5/b;SF-SAC 2022: III/5/b Census mapping: FINDINGSTEXT, TEXT", - verbose_name="Content of the finding text", - ), - ), - ( - "dbkey", - models.CharField( - help_text="Census mapping: FINDINGSTEXT, DBKEY", - max_length=40, - verbose_name="Audit Year and DBKEY (database key) combined make up the primary key.", - ), - ), - ( - "audit_year", - models.CharField( - help_text="Census mapping: FINDINGSTEXT, AUDITYEAR", - max_length=40, - verbose_name="Audit Year and DBKEY (database key) combined make up the primary key.", - ), - ), - ], - ), - migrations.CreateModel( - name="General", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "dollar_threshold", - models.FloatField( - help_text="Data sources: SF-SAC 1997-2000: III/2;SF-SAC 2001-2003: III/3;SF-SAC 2004-2007: III/2;SF-SAC 2008-2009: III/2;SF-SAC 2010-2012: III/2;SF-SAC 2013-2015: III/2;SF-SAC 2016-2018: III/3/b;SF-SAC 2019-2021: III/3/b;SF-SAC 2022: III/3/b Census mapping: GENERAL, DOLLARTHRESHOLD", - null=True, - verbose_name="Dollar Threshold to distinguish between Type A and Type B programs.", - ), - ), - ( - "multiple_eins", - models.BooleanField( - help_text="Data sources: SF-SAC 1997-2000: I/5/b;SF-SAC 2001-2003: I/5/b;SF-SAC 2004-2007: I/5/b;SF-SAC 2008-2009: I/4/b;SF-SAC 2010-2012: I/4/b;SF-SAC 2013-2015: I/4/b;SF-SAC 2016-2018: I/4/b;SF-SAC 2019-2021: I/4/b;SF-SAC 2022: I/4/b Census mapping: GENERAL, MULTIPLEEINS", - null=True, - verbose_name="Identifies if the Submission Contains Multiple EINs", - ), - ), - ( - "multiple_duns", - models.BooleanField( - help_text="Data sources: SF-SAC 2004-2007: I/5/e;SF-SAC 2008-2009: I/4/e;SF-SAC 2010-2012: I/4/e;SF-SAC 2013-2015: I/4/e;SF-SAC 2016-2018: I/4/e;SF-SAC 2019-2021: I/4/e;SF-SAC 2022: I/4/e Census mapping: GENERAL, MULTIPLEDUNS", - null=True, - verbose_name="Identifies if the Submission Contains Multiple DUNS", - ), - ), - ( - "multiple_cpas", - models.BooleanField( - help_text="Data sources: SF-SAC 2008-2009: I/7/a;SF-SAC 2010-2012: I/7/a;SF-SAC 2013-2015: I/7;SF-SAC 2016-2018: I/7;SF-SAC 2019-2021: I/6/g;SF-SAC 2022: I/6/g Census mapping: GENERAL, MULTIPLE_CPAS", - null=True, - verbose_name="Identifies if the Submission Contains Multiple CPAs", - ), - ), - ( - "sp_framework_required", - models.BooleanField( - help_text="Data sources: SF-SAC 2016-2018: III/2/a/iii;SF-SAC 2019-2021: III/2/a/ii;SF-SAC 2022: III/2/a/ii Census mapping: GENERAL, SP_FRAMEWORK_REQUIRED", - null=True, - verbose_name="Indicate whether or not the special purpose framework used as basis of accounting by state law or tribal law", - ), - ), - ( - "going_concern", - models.BooleanField( - help_text="Data sources: SF-SAC 1997-2000: II/2;SF-SAC 2001-2003: II/2;SF-SAC 2004-2007: II/2;SF-SAC 2008-2009: II/2;SF-SAC 2010-2012: II/2;SF-SAC 2013-2015: II/2;SF-SAC 2016-2018: III/2/b;SF-SAC 2019-2021: III/2/b;SF-SAC 2022: III/2/b Census mapping: GENERAL, GOINGCONCERN", - null=True, - verbose_name="Whether or not the audit contained a going concern paragraph on financial statements", - ), - ), - ( - "condition_or_deficiency", - models.BooleanField( - help_text="Data sources: SF-SAC 1997-2000: II/3;SF-SAC 2001-2003: II/3;SF-SAC 2004-2007: II/3;SF-SAC 2008-2009: II/3;SF-SAC 2010-2012: II/3;SF-SAC 2013-2015: II/3;SF-SAC 2016-2018: III/2/c;SF-SAC 2019-2021: III/2/c;SF-SAC 2022: III/2/c Census mapping: GENERAL, REPORTABLECONDITION/SIGNIFICANTDEFICIENCY", - null=True, - verbose_name="Whether or not the audit disclosed a reportable condition/significant deficiency on financial statements", - ), - ), - ( - "material_weakness", - models.BooleanField( - help_text="Data sources: SF-SAC 1997-2000: II/4;SF-SAC 2001-2003: II/4;SF-SAC 2004-2007: II/4;SF-SAC 2008-2009: II/4;SF-SAC 2010-2012: II/4;SF-SAC 2013-2015: II/4;SF-SAC 2016-2018: III/2/d;SF-SAC 2019-2021: III/2/d;SF-SAC 2022: III/2/d Census mapping: GENERAL, MATERIALWEAKNESS", - null=True, - verbose_name="Whether or not the audit disclosed any reportable condition/significant deficiency as a material weakness on financial statements", - ), - ), - ( - "material_noncompliance", - models.BooleanField( - help_text="Data sources: SF-SAC 1997-2000: II/5;SF-SAC 2001-2003: II/5;SF-SAC 2004-2007: II/5;SF-SAC 2008-2009: II/5;SF-SAC 2010-2012: II/5;SF-SAC 2013-2015: II/5;SF-SAC 2016-2018: III/2/e;SF-SAC 2019-2021: III/2/e;SF-SAC 2022: III/2/e Census mapping: GENERAL, MATERIALNONCOMPLIANCE", - null=True, - verbose_name="Whether or not the audit disclosed a material noncompliance on financial statements", - ), - ), - ( - "dup_reports", - models.BooleanField( - help_text="Data sources: SF-SAC 2001-2003: III/2;SF-SAC 2004-2007: III/1;SF-SAC 2008-2009: III/1;SF-SAC 2010-2012: III/1;SF-SAC 2013-2015: III/1;SF-SAC 2016-2018: III/3/a;SF-SAC 2019-2021: III/3/a;SF-SAC 2022: III/3/a Census mapping: GENERAL, DUP_REPORTS", - null=True, - verbose_name="Whether or not the financial statements include departments that have separate expenditures not included in this audit", - ), - ), - ( - "low_risk", - models.BooleanField( - help_text="Data sources: SF-SAC 1997-2000: III/3;SF-SAC 2001-2003: III/4;SF-SAC 2004-2007: III/3;SF-SAC 2008-2009: III/3;SF-SAC 2010-2012: III/3;SF-SAC 2013-2015: III/3;SF-SAC 2016-2018: III/3/c;SF-SAC 2019-2021: III/3/c;SF-SAC 2022: III/3/c Census mapping: GENERAL, LOWRISK", - null=True, - verbose_name="Indicate whether or not the auditee qualified as a low-risk auditee", - ), - ), - ( - "condition_or_deficiency_major_program", - models.BooleanField( - help_text="Data sources: SF-SAC 2001-2003: III/5;SF-SAC 2004-2007: III/4;SF-SAC 2008-2009: III/4;SF-SAC 2010-2012: III/4 Census mapping: GENERAL, REPORTABLECONDITION/SIGNIFICANTDEFICIENCY_MP", - null=True, - verbose_name="Whether or not the audit disclosed a reportable condition/significant deficiency for any major program in the Schedule of Findings and Questioned Costs", - ), - ), - ( - "material_weakness_major_program", - models.BooleanField( - help_text="Data sources: SF-SAC 2001-2003: III/6;SF-SAC 2004-2007: III/5;SF-SAC 2008-2009: III/5;SF-SAC 2010-2012: III/5 Census mapping: GENERAL, MATERIALWEAKNESS_MP", - null=True, - verbose_name="Indicate whether any reportable condition/signficant deficiency was disclosed as a material weakness for a major program in the Schedule of Findings and Questioned Costs", - ), - ), - ( - "questioned_costs", - models.BooleanField( - help_text="Data sources: SF-SAC 2001-2003: III/7;SF-SAC 2004-2007: III/6;SF-SAC 2008-2009: III/6;SF-SAC 2010-2012: III/6 Census mapping: GENERAL, QCOSTS", - null=True, - verbose_name="Indicate whether or not the audit disclosed any known questioned costs.", - ), - ), - ( - "current_or_former_findings", - models.BooleanField( - help_text="Data sources: SF-SAC 2001-2003: III/9;SF-SAC 2004-2007: III/8;SF-SAC 2008-2009: III/8;SF-SAC 2010-2012: III/8;SF-SAC 2013-2015: III/5;SF-SAC 2016-2018: III/3/d;SF-SAC 2019-2021: III/3/d;SF-SAC 2022: III/3/d Census mapping: GENERAL, CYFINDINGS", - null=True, - verbose_name="Indicate whether or not current year findings or prior year findings affecting direct funds were reported", - ), - ), - ( - "prior_year_schedule", - models.BooleanField( - help_text="Data sources: SF-SAC 2001-2003: III/8;SF-SAC 2004-2007: III/7;SF-SAC 2008-2009: III/7;SF-SAC 2010-2012: III/7;SF-SAC 2013-2015: III/4 Census mapping: GENERAL, PYSCHEDULE", - null=True, - verbose_name="Indicate whether or not the report includes a Summary Schedule of Prior Year Audit Findings", - ), - ), - ( - "report_required", - models.BooleanField( - help_text="Data sources: SF-SAC 1997-2000: III/5;SF-SAC 2001-2003: III/9;SF-SAC 2004-2007: III/8 Census mapping: GENERAL, REPORTREQUIRED", - null=True, - verbose_name="Distribution to Federal Agency required?", - ), - ), - ( - "multiple_ueis", - models.BooleanField( - help_text="Data sources: SF-SAC 2022: I/4/h Census mapping: GENERAL, MULTIPLEUEIS", - null=True, - verbose_name="Identifies if the Submission Contains Multiple UEIs", - ), - ), - ( - "auditee_phone", - models.PositiveBigIntegerField( - help_text="Data sources: SF-SAC 1997-2000: I/6/d;SF-SAC 2001-2003: I/6/d;SF-SAC 2004-2007: I/6/d;SF-SAC 2008-2009: I/5/d;SF-SAC 2010-2012: I/5/d;SF-SAC 2013-2015: I/5/d;SF-SAC 2016-2018: I/5/d;SF-SAC 2019-2021: I/5/d;SF-SAC 2022: I/5/d Census mapping: GENERAL, AUDITEEPHONE", - verbose_name="Auditee Phone Number", - ), - ), - ( - "auditee_fax", - models.PositiveBigIntegerField( - help_text="Data sources: SF-SAC 1997-2000: I/6/e;SF-SAC 2001-2003: I/6/e;SF-SAC 2004-2007: I/6/e;SF-SAC 2008-2009: I/5/e;SF-SAC 2010-2012: I/5/e;SF-SAC 2013-2015: I/5/e Census mapping: GENERAL, AUDITEEFAX", - null=True, - verbose_name="Auditee Fax Number (optional)", - ), - ), - ( - "cpa_phone", - models.PositiveBigIntegerField( - help_text="Data sources: SF-SAC 1997-2000: I/7/d;SF-SAC 2001-2003: I/7/d;SF-SAC 2004-2007: I/7/d;SF-SAC 2008-2009: I/6/d;SF-SAC 2010-2012: I/6/d;SF-SAC 2013-2015: I/6/e;SF-SAC 2016-2018: I/6/e;SF-SAC 2019-2021: I/6/e;SF-SAC 2022: I/6/e Census mapping: GENERAL, CPAPHONE", - verbose_name="CPA phone number", - ), - ), - ( - "cpa_fax", - models.PositiveBigIntegerField( - help_text="Data sources: SF-SAC 1997-2000: I/7/e;SF-SAC 2001-2003: I/7/e;SF-SAC 2004-2007: I/7/e;SF-SAC 2008-2009: I/6/e;SF-SAC 2010-2012: I/6/e;SF-SAC 2013-2015: I/6/f Census mapping: GENERAL, CPAFAX", - null=True, - verbose_name="CPA fax number (optional) ", - ), - ), - ( - "uei", - models.CharField( - help_text="Data sources: SF-SAC 2022: I/4/g Census mapping: GENERAL, UEI", - max_length=12, - verbose_name="Unique Entity ID", - ), - ), - ( - "total_fed_expenditures", - models.BigIntegerField( - help_text="Data sources: SF-SAC 1997-2000: III/6/c- Total;SF-SAC 2001-2003: III/10/d -Total;SF-SAC 2004-2007: III/9/e -Total;SF-SAC 2008-2009: III/9/e -Total;SF-SAC 2010-2012: III/9/f -Total;SF-SAC 2013-2015: III/6/d -Total;SF-SAC 2016-2018: II/1/e- Total;SF-SAC 2019-2021: II/1/e - Total;SF-SAC 2022: II/1/e - Total Census mapping: GENERAL, TOTFEDEXPEND", - verbose_name="Total Federal Expenditures", - ), - ), - ( - "state", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/b;SF-SAC 2001-2003: I/6/b;SF-SAC 2004-2007: I/6/b;SF-SAC 2008-2009: I/5/b;SF-SAC 2010-2012: I/5/b;SF-SAC 2013-2015: I/5/b;SF-SAC 2016-2018: I/5/b;SF-SAC 2019-2021: I/5/b;SF-SAC 2022: I/5/b Census mapping: GENERAL, STATE", - max_length=2, - verbose_name="Auditee State", - ), - ), - ( - "cpa_state", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/7/b;SF-SAC 2001-2003: I/7/b;SF-SAC 2004-2007: I/7/b;SF-SAC 2008-2009: I/6/b;SF-SAC 2010-2012: I/6/b;SF-SAC 2013-2015: I/6/c;SF-SAC 2016-2018: I/6/c;SF-SAC 2019-2021: I/6/c;SF-SAC 2022: I/6/c Census mapping: GENERAL, CPASTATE", - max_length=2, - verbose_name="CPA State", - ), - ), - ( - "cognizant_agency", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/9;SF-SAC 2001-2003: I/9 Census mapping: GENERAL, COGAGENCY", - max_length=2, - null=True, - verbose_name="Two digit Federal agency prefix of the cognizant agency", - ), - ), - ( - "oversight_agency", - models.IntegerField( - help_text="Data sources: SF-SAC 1997-2000: I/9;SF-SAC 2001-2003: I/9 Census mapping: GENERAL, OVERSIGHTAGENCY", - null=True, - verbose_name="Two digit Federal agency prefix of the oversight agency", - ), - ), - ( - "cpa_foreign", - models.CharField( - help_text="Data sources: SF-SAC 2019-2021: I/6/c;SF-SAC 2022: I/6/c Census mapping: GENERAL, CPAFOREIGN", - max_length=200, - null=True, - verbose_name="CPA Address - if international", - ), - ), - ( - "ein_subcode", - models.IntegerField( - help_text="Census mapping: GENERAL, EINSUBCODE", - null=True, - verbose_name="Subcode assigned to the EIN", - ), - ), - ( - "city", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/b;SF-SAC 2001-2003: I/6/b;SF-SAC 2004-2007: I/6/b;SF-SAC 2008-2009: I/5/b;SF-SAC 2010-2012: I/5/b;SF-SAC 2013-2015: I/5/b;SF-SAC 2016-2018: I/5/b;SF-SAC 2019-2021: I/5/b;SF-SAC 2022: I/5/b Census mapping: GENERAL, CITY", - max_length=30, - verbose_name="Auditee City", - ), - ), - ( - "cpa_city", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/7/b;SF-SAC 2001-2003: I/7/b;SF-SAC 2004-2007: I/7/b;SF-SAC 2008-2009: I/6/b;SF-SAC 2010-2012: I/6/b;SF-SAC 2013-2015: I/6/c;SF-SAC 2016-2018: I/6/c;SF-SAC 2019-2021: I/6/c;SF-SAC 2022: I/6/c Census mapping: GENERAL, CPACITY", - max_length=30, - verbose_name="CPA City", - ), - ), - ( - "auditee_title", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/c;SF-SAC 2001-2003: I/6/c;SF-SAC 2004-2007: I/6/c;SF-SAC 2008-2009: I/5/c;SF-SAC 2010-2012: I/5/c;SF-SAC 2013-2015: I/5/c;SF-SAC 2016-2018: I/5/c;SF-SAC 2019-2021: I/5/c;SF-SAC 2022: I/5/c Census mapping: GENERAL, AUDITEETITLE", - max_length=40, - verbose_name="Title of Auditee Contact", - ), - ), - ( - "cpa_title", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/7/c;SF-SAC 2001-2003: I/7/c;SF-SAC 2004-2007: I/7/c;SF-SAC 2008-2009: I/6/c;SF-SAC 2010-2012: I/6/c;SF-SAC 2013-2015: I/6/d;SF-SAC 2016-2018: I/6/d;SF-SAC 2019-2021: I/6/d;SF-SAC 2022: I/6/d Census mapping: GENERAL, CPATITLE", - max_length=40, - verbose_name="Title of CPA Contact", - ), - ), - ( - "street1", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/b;SF-SAC 2001-2003: I/6/b;SF-SAC 2004-2007: I/6/b;SF-SAC 2008-2009: I/5/b;SF-SAC 2010-2012: I/5/b;SF-SAC 2013-2015: I/5/b;SF-SAC 2016-2018: I/5/b;SF-SAC 2019-2021: I/5/b;SF-SAC 2022: I/5/b Census mapping: GENERAL, STREET1", - max_length=45, - verbose_name="Auditee Street Address", - ), - ), - ( - "street2", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/b;SF-SAC 2001-2003: I/6/b;SF-SAC 2004-2007: I/6/b;SF-SAC 2008-2009: I/5/b;SF-SAC 2010-2012: I/5/b;SF-SAC 2013-2015: I/5/b;SF-SAC 2016-2018: I/5/b;SF-SAC 2019-2021: I/5/b;SF-SAC 2022: I/5/b Census mapping: GENERAL, STREET2", - max_length=45, - null=True, - verbose_name="Auditee Street Address", - ), - ), - ( - "cpa_street1", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/7/b;SF-SAC 2001-2003: I/7/b;SF-SAC 2004-2007: I/7/b;SF-SAC 2008-2009: I/6/b;SF-SAC 2010-2012: I/6/b;SF-SAC 2013-2015: I/6/c;SF-SAC 2016-2018: I/6/c;SF-SAC 2019-2021: I/6/c;SF-SAC 2022: I/6/c Census mapping: GENERAL, CPASTREET1", - max_length=45, - verbose_name="CPA Street Address", - ), - ), - ( - "cpa_street2", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/7/b;SF-SAC 2001-2003: I/7/b;SF-SAC 2004-2007: I/7/b;SF-SAC 2008-2009: I/6/b;SF-SAC 2010-2012: I/6/b;SF-SAC 2013-2015: I/6/c;SF-SAC 2016-2018: I/6/c;SF-SAC 2019-2021: I/6/c;SF-SAC 2022: I/6/c Census mapping: GENERAL, CPASTREET2", - max_length=45, - null=True, - verbose_name="CPA Street Address", - ), - ), - ( - "zip_code", - models.IntegerField( - help_text="Data sources: SF-SAC 1997-2000: I/6/b;SF-SAC 2001-2003: I/6/b;SF-SAC 2004-2007: I/6/b;SF-SAC 2008-2009: I/5/b;SF-SAC 2010-2012: I/5/b;SF-SAC 2013-2015: I/5/b;SF-SAC 2016-2018: I/5/b;SF-SAC 2019-2021: I/5/b;SF-SAC 2022: I/5/b Census mapping: GENERAL, ZIPCODE", - verbose_name="Auditee Zipcode", - ), - ), - ( - "cpa_zip_code", - models.IntegerField( - help_text="Data sources: SF-SAC 1997-2000: I/7/b;SF-SAC 2001-2003: I/7/b;SF-SAC 2004-2007: I/7/b;SF-SAC 2008-2009: I/6/b;SF-SAC 2010-2012: I/6/b;SF-SAC 2013-2015: I/6/c;SF-SAC 2016-2018: I/6/c;SF-SAC 2019-2021: I/6/c;SF-SAC 2022: I/6/c Census mapping: GENERAL, CPAZIPCODE", - verbose_name="CPA Zip Code", - ), - ), - ( - "auditee_contact", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/c;SF-SAC 2001-2003: I/6/c;SF-SAC 2004-2007: I/6/c;SF-SAC 2008-2009: I/5/c;SF-SAC 2010-2012: I/5/c;SF-SAC 2013-2015: I/5/c;SF-SAC 2016-2018: I/5/c;SF-SAC 2019-2021: I/5/c;SF-SAC 2022: I/5/c Census mapping: GENERAL, AUDITEECONTACT", - max_length=50, - verbose_name="Name of Auditee Contact", - ), - ), - ( - "auditee_certify_name", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/g;SF-SAC 2001-2003: I/6/g;SF-SAC 2004-2007: I/6/g;SF-SAC 2008-2009: I/5/g;SF-SAC 2010-2012: I/5/g;SF-SAC 2013-2015: certifications;SF-SAC 2016-2018: certifications;SF-SAC 2019-2021: certifications;SF-SAC 2022: certifications Census mapping: GENERAL, AUDITEECERTIFYNAME", - max_length=50, - null=True, - verbose_name="Name of Auditee Certifying Official", - ), - ), - ( - "auditee_certify_title", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/g;SF-SAC 2001-2003: I/6/g;SF-SAC 2004-2007: I/6/g;SF-SAC 2008-2009: I/5/g;SF-SAC 2010-2012: I/5/g;SF-SAC 2013-2015: certifications;SF-SAC 2016-2018: certifications;SF-SAC 2019-2021: certifications;SF-SAC 2022: certifications Census mapping: GENERAL, AUDITEECERTIFYTITLE", - max_length=50, - null=True, - verbose_name="Title of Auditee Certifying Official", - ), - ), - ( - "cpa_contact", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/7/c;SF-SAC 2001-2003: I/7/c;SF-SAC 2004-2007: I/7/c;SF-SAC 2008-2009: I/6/c;SF-SAC 2010-2012: I/6/c;SF-SAC 2013-2015: I/6/d;SF-SAC 2016-2018: I/6/d;SF-SAC 2019-2021: I/6/d;SF-SAC 2022: I/6/d Census mapping: GENERAL, CPACONTACT", - max_length=50, - verbose_name="Name of CPA Contact", - ), - ), - ( - "entity_type", - models.CharField( - help_text="Census mapping: GENERAL, ENTITY_TYPE", - max_length=50, - verbose_name="Self reported type of entity (i.e., States, Local Governments, Indian Tribes, Institutions of Higher Education, NonProfit)", - ), - ), - ( - "cpa_country", - models.CharField( - help_text="Data sources: SF-SAC 2019-2021: I/6/c;SF-SAC 2022: I/6/c Census mapping: GENERAL, CPACOUNTRY", - max_length=6, - null=True, - verbose_name="CPA Country", - ), - ), - ( - "auditee_email", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/f;SF-SAC 2001-2003: I/6/f;SF-SAC 2004-2007: I/6/f;SF-SAC 2008-2009: I/5/f;SF-SAC 2010-2012: I/5/f;SF-SAC 2013-2015: I/5/f;SF-SAC 2016-2018: I/5/e;SF-SAC 2019-2021: I/5/e;SF-SAC 2022: I/5/e Census mapping: GENERAL, AUDITEEEMAIL", - max_length=60, - null=True, - verbose_name="Auditee Email address", - ), - ), - ( - "cpa_email", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/7/f;SF-SAC 2001-2003: I/7/f;SF-SAC 2004-2007: I/7/f;SF-SAC 2008-2009: I/6/f;SF-SAC 2010-2012: I/6/f;SF-SAC 2013-2015: I/6/g;SF-SAC 2016-2018: I/6/f;SF-SAC 2019-2021: I/6/f;SF-SAC 2022: I/6/f Census mapping: GENERAL, CPAEMAIL", - max_length=60, - null=True, - verbose_name="CPA email address", - ), - ), - ( - "cpa_firm_name", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/7/a;SF-SAC 2001-2003: I/7/a;SF-SAC 2004-2007: I/7/a;SF-SAC 2008-2009: I/6/a;SF-SAC 2010-2012: I/6/a;SF-SAC 2013-2015: I/6/a;SF-SAC 2016-2018: I/6/a;SF-SAC 2019-2021: I/6/a;SF-SAC 2022: I/6/a Census mapping: GENERAL, CPAFIRMNAME", - max_length=64, - verbose_name="CPA Firm Name", - ), - ), - ( - "auditee_name", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/a;SF-SAC 2001-2003: I/6/a;SF-SAC 2004-2007: I/6/a;SF-SAC 2008-2009: I/5/a;SF-SAC 2010-2012: I/5/a;SF-SAC 2013-2015: I/5/a;SF-SAC 2016-2018: I/5/a;SF-SAC 2019-2021: I/5/a;SF-SAC 2022: I/5/a Census mapping: GENERAL, AUDITEENAME", - max_length=70, - verbose_name="Name of the Auditee", - ), - ), - ( - "auditee_name_title", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/g;SF-SAC 2001-2003: I/6/g;SF-SAC 2004-2007: I/6/g;SF-SAC 2008-2009: I/5/g;SF-SAC 2010-2012: I/5/g;SF-SAC 2013-2015: certifications;SF-SAC 2016-2018: certifications;SF-SAC 2019-2021: certifications;SF-SAC 2022: certifications Census mapping: GENERAL, AUDITEENAMETITLE", - max_length=70, - verbose_name="Title of Auditee Certifying Official", - ), - ), - ( - "ein", - models.IntegerField( - help_text="Data sources: SF-SAC 1997-2000: I/5/a;SF-SAC 2001-2003: I/5/a;SF-SAC 2004-2007: I/5/a;SF-SAC 2008-2009: I/4/a;SF-SAC 2010-2012: I/4/a;SF-SAC 2013-2015: I/4/a;SF-SAC 2016-2018: I/4/a;SF-SAC 2019-2021: I/4/a;SF-SAC 2022: I/4/a Census mapping: GENERAL, EIN", - verbose_name="Primary Employer Identification Number", - ), - ), - ( - "duns", - models.IntegerField( - help_text="Data sources: SF-SAC 2004-2007: I/5/d;SF-SAC 2008-2009: I/4/d;SF-SAC 2010-2012: I/4/d;SF-SAC 2013-2015: I/4/d;SF-SAC 2016-2018: I/4/d;SF-SAC 2019-2021: I/4/d;SF-SAC 2022: I/4/d Census mapping: GENERAL, DUNS", - null=True, - verbose_name="Primary Data Universal Numbering System Number", - ), - ), - ( - "auditor_ein", - models.IntegerField( - help_text="Data sources: SF-SAC 2013-2015: I/6/b;SF-SAC 2016-2018: I/6/b;SF-SAC 2019-2021: I/6/b;SF-SAC 2022: I/6/b Census mapping: GENERAL, AUDITOR_EIN", - verbose_name="CPA Firm EIN (only available for audit years 2013 and beyond)", - ), - ), - ( - "period_covered", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/3;SF-SAC 2001-2003: I/3;SF-SAC 2004-2007: I/3;SF-SAC 2008-2009: I/3;SF-SAC 2010-2012: I/3;SF-SAC 2013-2015: I/3;SF-SAC 2016-2018: I/3;SF-SAC 2019-2021: I/3;SF-SAC 2022: I/3 Census mapping: GENERAL, PERIODCOVERED", - max_length=40, - verbose_name="Audit Period Covered by Audit", - ), - ), - ( - "sp_framework", - models.CharField( - help_text="Data sources: SF-SAC 2016-2018: III/2/a/ii;SF-SAC 2019-2021: III/2/a/i;SF-SAC 2022: III/2/a/i Census mapping: GENERAL, SP_FRAMEWORK", - max_length=40, - null=True, - verbose_name="Special Purpose Framework that was used as the basis of accounting", - ), - ), - ( - "type_of_entity", - models.CharField( - help_text="Census mapping: GENERAL, TYPEOFENTITY", - max_length=40, - verbose_name="Contact FAC for information", - ), - ), - ( - "fy_start_date", - models.DateField( - help_text="Data sources: SF-SAC 2019-2021: Part I, Item 1(a);SF-SAC 2022: Part I, Item 1(a) Census mapping: GENERAL, FYSTARTDATE", - null=True, - verbose_name="Fiscal Year Start Date", - ), - ), - ( - "fy_end_date", - models.DateField( - help_text="Data sources: SF-SAC 1997-2000: Part I, Item 1;SF-SAC 2001-2003: Part I, Item 1;SF-SAC 2004-2007: Part I, Item 1;SF-SAC 2008-2009: Part I, Item 1;SF-SAC 2010-2012: Part I, Item 1;SF-SAC 2013-2015: Part I, Item 1;SF-SAC 2016-2018: Part I, Item 1;SF-SAC 2019-2021: I/1/b;SF-SAC 2022: I/1/b Census mapping: GENERAL, FYENDDATE", - verbose_name="Fiscal Year End Date", - ), - ), - ( - "auditee_date_signed", - models.DateField( - help_text="Data sources: SF-SAC 1997-2000: I/6/g;SF-SAC 2001-2003: I/6/g;SF-SAC 2004-2007: I/6/g;SF-SAC 2008-2009: I/5/g;SF-SAC 2010-2012: I/5/g;SF-SAC 2013-2015: certifications;SF-SAC 2016-2018: certifications;SF-SAC 2019-2021: certifications;SF-SAC 2022: certifications Census mapping: GENERAL, AUDITEEDATESIGNED", - verbose_name="Date of Auditee signature", - ), - ), - ( - "cpa_date_signed", - models.DateField( - help_text="Data sources: SF-SAC 1997-2000: I/7/g;SF-SAC 2001-2003: I/7/g;SF-SAC 2004-2007: I/7/g;SF-SAC 2008-2009: I/6/g;SF-SAC 2010-2012: I/6/g;SF-SAC 2013-2015: certifications;SF-SAC 2016-2018: certifications;SF-SAC 2019-2021: certifications;SF-SAC 2022: certifications Census mapping: GENERAL, CPADATESIGNED", - verbose_name="Date of CPA signature", - ), - ), - ( - "initial_date_received", - models.DateField( - help_text="Census mapping: GENERAL, INITIAL DATE RECEIVED", - null=True, - verbose_name="The first date an audit component or Form SF-SAC was received by the Federal audit Clearinghouse (FAC).", - ), - ), - ( - "form_date_received", - models.DateField( - help_text="Census mapping: GENERAL, FORM DATE RECEIVED", - null=True, - verbose_name="The most Recent Date the Form SF-SAC was received by the FAC. This field was not populated before 2001.", - ), - ), - ( - "component_date_received", - models.DateField( - help_text="Census mapping: GENERAL, COMPONENT DATE RECEIVED", - null=True, - verbose_name="The most recent date an audit component was received by the FAC. This field was not populated before 2004. Receipt of Financial statements only are not processed until the rest of the audit or a Form SF-SAC is also received.", - ), - ), - ( - "completed_on", - models.DateField( - help_text="Census mapping: GENERAL, COMPLETED_ON", - null=True, - verbose_name="Date the Audit was Posted to the Internet as Complete", - ), - ), - ( - "previous_completed_on", - models.DateField( - help_text="Census mapping: GENERAL, PREVIOUS_COMPLETED_ON", - null=True, - verbose_name="Date the Audit was Previously Posted to the Internet as Complete", - ), - ), - ( - "fac_accepted_date", - models.DateField( - help_text="Census mapping: GENERAL, FAC ACCEPTED DATE", - verbose_name="The most recent date an audit report was submitted to the FAC that passed FAC screening and was accepted as a valid OMB Circular A-133 report submission.", - ), - ), - ( - "number_months", - models.IntegerField( - help_text="Data sources: SF-SAC 1997-2000: I/3;SF-SAC 2001-2003: I/3;SF-SAC 2004-2007: I/3;SF-SAC 2008-2009: I/3;SF-SAC 2010-2012: I/3;SF-SAC 2013-2015: I/3;SF-SAC 2016-2018: I/3;SF-SAC 2019-2021: I/3;SF-SAC 2022: I/3 Census mapping: GENERAL, NUMBERMONTHS", - null=True, - verbose_name="Number of Months Covered by the 'Other' Audit Period", - ), - ), - ( - "audit_type", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/2;SF-SAC 2001-2003: I/2;SF-SAC 2004-2007: I/2;SF-SAC 2008-2009: I/2;SF-SAC 2010-2012: I/2;SF-SAC 2013-2015: I/2;SF-SAC 2016-2018: I/2;SF-SAC 2019-2021: I/2;SF-SAC 2022: I/2 Census mapping: GENERAL, AUDITTYPE", - max_length=40, - verbose_name="Type of Audit", - ), - ), - ( - "type_report_financial_statements", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: II/1;SF-SAC 2001-2003: II/1;SF-SAC 2004-2007: II/1;SF-SAC 2008-2009: II/1;SF-SAC 2010-2012: II/1;SF-SAC 2013-2015: II/1;SF-SAC 2016-2018: III/2/a/i;SF-SAC 2019-2021: III/2/a;SF-SAC 2022: III/2/a Census mapping: GENERAL, TYPEREPORT_FS", - max_length=40, - null=True, - verbose_name="Type of Report Issued on the Financial Statements", - ), - ), - ( - "type_report_special_purpose_framework", - models.CharField( - help_text="Data sources: SF-SAC 2016-2018: III/2/a/iv;SF-SAC 2019-2021: III/2/a/iii;SF-SAC 2022: III/2/a/iii Census mapping: GENERAL, TYPEREPORT_SP_FRAMEWORK", - max_length=40, - null=True, - verbose_name="The auditor's opinion on the special purpose framework", - ), - ), - ( - "type_report_major_program", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: III/1;SF-SAC 2001-2003: III/1 Census mapping: GENERAL, TYPEREPORT_MP", - max_length=40, - null=True, - verbose_name="Type of Report Issued on the Major Program Compliance", - ), - ), - ( - "dbkey", - models.CharField( - help_text="Census mapping: GENERAL, DBKEY", - max_length=40, - verbose_name="Audit Year and DBKEY (database key) combined make up the primary key.", - ), - ), - ( - "audit_year", - models.CharField( - help_text="Census mapping: GENERAL, AUDITYEAR", - max_length=40, - verbose_name="Audit Year and DBKEY (database key) combined make up the primary key.", - ), - ), - ("date_firewall", models.DateField(null=True)), - ("previous_date_firewall", models.DateField(null=True)), - ("cognizant_agency_over", models.CharField(max_length=2, null=True)), - ], - ), - migrations.CreateModel( - name="MultipleCpasInfo", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "cpa_phone", - models.PositiveBigIntegerField( - help_text="Data sources: SF-SAC 2008-2009: I/8/d;SF-SAC 2010-2012: I/8/d;SF-SAC 2013-2015: I/8/i;SF-SAC 2016-2018: I/8/i;SF-SAC 2019-2021: I/6/h/ix;SF-SAC 2022: I/6/h/ix Census mapping: MULTIPLE CPAS INFO, CPAPHONE", - null=True, - verbose_name="CPA phone number", - ), - ), - ( - "cpa_fax", - models.PositiveBigIntegerField( - help_text="Data sources: SF-SAC 2008-2009: I/8/e;SF-SAC 2010-2012: I/8/e;SF-SAC 2013-2015: I/8/j;SF-SAC 2016-2018: I/8/j Census mapping: MULTIPLE CPAS INFO, CPAFAX", - null=True, - verbose_name="CPA fax number (optional)", - ), - ), - ( - "cpa_state", - models.CharField( - help_text="Data sources: SF-SAC 2008-2009: I/8/b;SF-SAC 2010-2012: I/8/b;SF-SAC 2013-2015: I/8/e;SF-SAC 2016-2018: I/8/e;SF-SAC 2019-2021: I/6/h/v;SF-SAC 2022: I/6/h/v Census mapping: MULTIPLE CPAS INFO, CPASTATE", - max_length=2, - verbose_name="CPA State", - ), - ), - ( - "cpa_city", - models.CharField( - help_text="Data sources: SF-SAC 2008-2009: I/8/b;SF-SAC 2010-2012: I/8/b;SF-SAC 2013-2015: I/8/d;SF-SAC 2016-2018: I/8/d;SF-SAC 2019-2021: I/6/h/iv;SF-SAC 2022: I/6/h/iv Census mapping: MULTIPLE CPAS INFO, CPACITY", - max_length=30, - verbose_name="CPA City", - ), - ), - ( - "cpa_title", - models.CharField( - help_text="Data sources: SF-SAC 2008-2009: I/8/c;SF-SAC 2010-2012: I/8/c;SF-SAC 2013-2015: I/8/h;SF-SAC 2016-2018: I/8/h;SF-SAC 2019-2021: I/6/h/viii;SF-SAC 2022: I/6/h/viii Census mapping: MULTIPLE CPAS INFO, CPATITLE", - max_length=40, - verbose_name="Title of CPA Contact", - ), - ), - ( - "cpa_street1", - models.CharField( - help_text="Data sources: SF-SAC 2008-2009: I/8/b;SF-SAC 2010-2012: I/8/b;SF-SAC 2013-2015: I/8/c;SF-SAC 2016-2018: I/8/c;SF-SAC 2019-2021: I/6/h/iii;SF-SAC 2022: I/6/h/iii Census mapping: MULTIPLE CPAS INFO, CPASTREET1", - max_length=45, - verbose_name="CPA Street Address", - ), - ), - ( - "cpa_zip_code", - models.IntegerField( - help_text="Data sources: SF-SAC 2008-2009: I/8/b;SF-SAC 2010-2012: I/8/b;SF-SAC 2013-2015: I/8/f;SF-SAC 2016-2018: I/8/f;SF-SAC 2019-2021: I/6/h/vi;SF-SAC 2022: I/6/h/vi Census mapping: MULTIPLE CPAS INFO, CPAZIPCODE", - null=True, - verbose_name="CPA Zip Code", - ), - ), - ( - "cpa_contact", - models.CharField( - help_text="Data sources: SF-SAC 2008-2009: I/8/c;SF-SAC 2010-2012: I/8/c;SF-SAC 2013-2015: I/8/g;SF-SAC 2016-2018: I/8/g;SF-SAC 2019-2021: I/6/h/vii;SF-SAC 2022: I/6/h/vii Census mapping: MULTIPLE CPAS INFO, CPACONTACT", - max_length=50, - verbose_name="Name of CPA Contact", - ), - ), - ( - "cpa_firm_name", - models.CharField( - help_text="Data sources: SF-SAC 2008-2009: I/8/a;SF-SAC 2010-2012: I/8/a;SF-SAC 2013-2015: I/8/a;SF-SAC 2016-2018: I/8/a;SF-SAC 2019-2021: I/6/h/i;SF-SAC 2022: I/6/h/i Census mapping: MULTIPLE CPAS INFO, CPAFIRMNAME", - max_length=64, - verbose_name="CPA Firm Name", - ), - ), - ( - "cpa_ein", - models.IntegerField( - help_text="Data sources: SF-SAC 2013-2015: I/8/b;SF-SAC 2016-2018: I/8/b;SF-SAC 2019-2021: I/6/h/ii;SF-SAC 2022: I/6/h/ii Census mapping: MULTIPLE CPAS INFO, CPAEIN", - null=True, - verbose_name="CPA Firm EIN (only available for audit years 2013 and beyond)", - ), - ), - ( - "dbkey", - models.CharField( - help_text="Census mapping: MULTIPLE CPAS INFO, DBKEY", - max_length=40, - verbose_name="Audit Year and DBKEY (database key) combined make up the primary key.", - ), - ), - ( - "audit_year", - models.CharField( - help_text="Census mapping: MULTIPLE CPAS INFO, AUDITYEAR", - max_length=40, - verbose_name="Audit Year and DBKEY (database key) combined make up the primary key.", - ), - ), - ( - "seqnum", - models.IntegerField( - help_text="Census mapping: MULTIPLE CPAS INFO, SEQNUM", - null=True, - verbose_name="Order that Auditors were reported on page 5 of SF-SAC", - ), - ), - ( - "cpa_email", - models.CharField( - help_text="Data sources: SF-SAC 2008-2009: I/8/f;SF-SAC 2010-2012: I/8/f;SF-SAC 2013-2015: I/8/k;SF-SAC 2016-2018: I/8/k;SF-SAC 2019-2021: I/6/h/x;SF-SAC 2022: I/6/h/x Census mapping: MULTIPLE CPAS INFO, CPAEMAIL", - max_length=60, - null=True, - verbose_name="CPA mail address (optional)", - ), - ), - ], - ), - migrations.CreateModel( - name="Notes", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "type_id", - models.CharField( - help_text="Census mapping: NOTES, TYPE_ID", - max_length=1, - verbose_name="Note Type", - ), - ), - ( - "fac_id", - models.IntegerField( - help_text="Census mapping: NOTES, ID", - verbose_name="Internal Unique Identifier for the record", - ), - ), - ( - "report_id", - models.IntegerField( - help_text="Census mapping: NOTES, REPORTID", - verbose_name="Internal Audit Report Id", - ), - ), - ( - "version", - models.IntegerField( - help_text="Census mapping: NOTES, VERSION", - verbose_name="Internal Version", - ), - ), - ( - "seq_number", - models.IntegerField( - help_text="Census mapping: NOTES, SEQ_NUMBER", - verbose_name="Order that the Note was reported", - ), - ), - ( - "note_index", - models.IntegerField( - help_text="Census mapping: NOTES, NOTE_INDEX", - verbose_name="Display Index for the Note", - ), - ), - ( - "content", - models.TextField( - help_text="Data sources: SF-SAC 2019-2021: II/2;SF-SAC 2022: II/2 Census mapping: NOTES, CONTENT", - verbose_name="Content of the Note", - ), - ), - ( - "title", - models.CharField( - help_text="Data sources: SF-SAC 2019-2021: II/2;SF-SAC 2022: II/2 Census mapping: NOTES, TITLE", - max_length=75, - verbose_name="Note Title", - ), - ), - ( - "dbkey", - models.CharField( - help_text="Census mapping: NOTES, DBKEY", - max_length=40, - verbose_name="Audit Year and DBKEY (database key) combined make up the primary key.", - ), - ), - ( - "audit_year", - models.CharField( - help_text="Census mapping: NOTES, AUDITYEAR", - max_length=40, - verbose_name="Audit Year and DBKEY (database key) combined make up the primary key.", - ), - ), - ], - ), - migrations.CreateModel( - name="Passthrough", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "passthrough_name", - models.CharField( - help_text="Data sources: SF-SAC 2016-2018: II/1/l;SF-SAC 2019-2021: II/1/l;SF-SAC 2022: II/1/l Census mapping: PASSTHROUGH, PASSTHROUGHNAME", - max_length=70, - verbose_name="Name of Pass-through Entity", - ), - ), - ( - "passthrough_id", - models.CharField( - help_text="Data sources: SF-SAC 2016-2018: II/1/m;SF-SAC 2019-2021: II/1/m;SF-SAC 2022: II/1/m Census mapping: PASSTHROUGH, PASSTHROUGHID", - max_length=70, - verbose_name="Identifying Number Assigned by the Pass-through Entity", - ), - ), - ( - "elec_audits_id", - models.IntegerField( - help_text="Census mapping: PASSTHROUGH, ELECAUDITSID", - verbose_name="FAC system generated sequence number used to link to Passthrough data between CFDA Info and Passthrough", - ), - ), - ( - "audit_year", - models.CharField( - help_text="Census mapping: PASSTHROUGH, AUDITYEAR", - max_length=40, - verbose_name="Audit Year and DBKEY (database key) combined make up the primary key", - ), - ), - ( - "dbkey", - models.CharField( - help_text="Census mapping: PASSTHROUGH, DBKEY", - max_length=40, - verbose_name="Audit Year and DBKEY (database key) combined make up the primary key", - ), - ), - ], - ), - migrations.CreateModel( - name="Revisions", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "findings", - models.CharField( - help_text="Census mapping: REVISIONS, FINDINGS", - max_length=110, - verbose_name="Indicates what items on the Findings page were edited during the revision", - ), - ), - ( - "elec_report_revision_id", - models.IntegerField( - help_text="Census mapping: REVISIONS, ELECRPTREVISIONID", - verbose_name="Internal Unique Identifier for the record", - ), - ), - ( - "federal_awards", - models.CharField( - help_text="Census mapping: REVISIONS, FEDERALAWARDS", - max_length=140, - verbose_name="Indicates what items on the Federal Awards page were edited during the revision", - ), - ), - ( - "general_info_explain", - models.CharField( - help_text="Census mapping: REVISIONS, GENINFO_EXPLAIN", - max_length=150, - verbose_name="Explanation of what items on the General Info page were edited during the revision", - ), - ), - ( - "federal_awards_explain", - models.TextField( - help_text="Census mapping: REVISIONS, FEDERALAWARDS_EXPLAIN", - verbose_name="Explanation of what items on the Federal Awards page were edited during the revision", - ), - ), - ( - "notes_to_sefa_explain", - models.TextField( - help_text="Census mapping: REVISIONS, NOTESTOSEFA_EXPLAIN", - verbose_name="Explanation of what items on the Notes to SEFA page were edited during the revision", - ), - ), - ( - "auditinfo_explain", - models.TextField( - help_text="Census mapping: REVISIONS, AUDITINFO_EXPLAIN", - verbose_name="Explanation of what items on the Audit Info page were edited during the revision", - ), - ), - ( - "findings_explain", - models.TextField( - help_text="Census mapping: REVISIONS, FINDINGS_EXPLAIN", - verbose_name="Explanation of what items on the Findings page were edited during the revision", - ), - ), - ( - "findings_text_explain", - models.TextField( - help_text="Census mapping: REVISIONS, FINDINGSTEXT_EXPLAIN", - verbose_name="Explanation of what items on the Text of the Audit Findings page were edited during the revision", - ), - ), - ( - "cap_explain", - models.TextField( - help_text="Census mapping: REVISIONS, CAP_EXPLAIN", - verbose_name="Explanation of what items on the CAP Text page were edited during the revision", - ), - ), - ( - "other_explain", - models.TextField( - help_text="Census mapping: REVISIONS, OTHER_EXPLAIN", - verbose_name="Explanation of what other miscellaneous items were edited during the revision", - ), - ), - ( - "audit_info", - models.CharField( - help_text="Census mapping: REVISIONS, AUDITINFO", - max_length=200, - verbose_name="Indicates what items on the Audit Info page were edited during the revision", - ), - ), - ( - "notes_to_sefa", - models.CharField( - help_text="Census mapping: REVISIONS, NOTESTOSEFA", - max_length=50, - verbose_name="Indicates what items on the Notes to SEFA page were edited during the revision", - ), - ), - ( - "findings_text", - models.CharField( - help_text="Census mapping: REVISIONS, FINDINGSTEXT", - max_length=6, - verbose_name="Indicates what items on the Text of the Audit Findings page were edited during the revision", - ), - ), - ( - "cap", - models.CharField( - help_text="Census mapping: REVISIONS, CAP", - max_length=6, - verbose_name="Indicates what items on the CAP Text page were edited during the revision", - ), - ), - ( - "other", - models.CharField( - help_text="Census mapping: REVISIONS, OTHER", - max_length=65, - verbose_name="Indicates what other miscellaneous items were edited during the revision", - ), - ), - ( - "general_info", - models.CharField( - help_text="Census mapping: REVISIONS, GENINFO", - max_length=75, - verbose_name="Indicates what items on the General Info page were edited during the revision", - ), - ), - ( - "audit_year", - models.CharField( - help_text="Census mapping: REVISIONS, AUDITYEAR", - max_length=40, - verbose_name="Audit Year and DBKEY (database key) combined make up the primary key.", - ), - ), - ( - "dbkey", - models.CharField( - help_text="Census mapping: REVISIONS, DBKEY", - max_length=40, - verbose_name="Audit Year and DBKEY (database key) combined make up the primary key.", - ), - ), - ], - ), - migrations.CreateModel( - name="UeiInfo", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "uei", - models.CharField( - help_text="Data sources: SF-SAC 2004-2007: I/5/f;SF-SAC 2008-2009: I/4/f;SF-SAC 2010-2012: I/4/f;SF-SAC 2013-2015: I/4/f;SF-SAC 2016-2018: I/4/f;SF-SAC 2019-2021: I/4/f;SF-SAC 2022: I/4/i Census mapping: UEI INFO, UEI", - max_length=12, - verbose_name="Multiple Unique Entity Identifier Numbers", - ), - ), - ( - "uei_seq_num", - models.IntegerField( - help_text="Census mapping: UEI INFO, UEISEQNUM", - verbose_name="Order that UEI was reported on page 4 of SF-SAC", - ), - ), - ( - "dbkey", - models.CharField( - help_text="Census mapping: UEI INFO, DBKEY", - max_length=40, - verbose_name="Audit Year and DBKEY (database key) combined make up the primary key.", - ), - ), - ( - "audit_year", - models.CharField( - help_text="Census mapping: UEI INFO, AUDITYEAR", - max_length=40, - verbose_name="Audit Year and DBKEY (database key) combined make up the primary key.", - ), - ), - ], - ), - ] diff --git a/backend/data_distro/migrations/0002_alter_cfdainfo_ein.py b/backend/data_distro/migrations/0002_alter_cfdainfo_ein.py deleted file mode 100644 index fa4f1514e..000000000 --- a/backend/data_distro/migrations/0002_alter_cfdainfo_ein.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 4.1.4 on 2023-01-24 23:23 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("data_distro", "0001_initial_schema_from_downloads"), - ] - - operations = [ - migrations.AlterField( - model_name="cfdainfo", - name="ein", - field=models.IntegerField( - verbose_name="Primary Employer Identification Number" - ), - ), - ] diff --git a/backend/data_distro/migrations/0003_add_relationships_between_models.py b/backend/data_distro/migrations/0003_add_relationships_between_models.py deleted file mode 100644 index 2f43261ab..000000000 --- a/backend/data_distro/migrations/0003_add_relationships_between_models.py +++ /dev/null @@ -1,94 +0,0 @@ -# Generated by Django 4.1.4 on 2023-01-25 02:47 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - dependencies = [ - ("data_distro", "0002_alter_cfdainfo_ein"), - ] - - operations = [ - migrations.RenameModel( - old_name="Captext", - new_name="Capext", - ), - migrations.AddField( - model_name="findings", - name="findings_text", - field=models.ForeignKey( - null=True, - on_delete=django.db.models.deletion.CASCADE, - to="data_distro.findingstext", - ), - ), - migrations.AddField( - model_name="general", - name="agency", - field=models.ManyToManyField(null=True, to="data_distro.agencies"), - ), - migrations.AddField( - model_name="general", - name="cap_text", - field=models.ForeignKey( - null=True, - on_delete=django.db.models.deletion.CASCADE, - to="data_distro.capext", - ), - ), - migrations.AddField( - model_name="general", - name="cfda", - field=models.ForeignKey( - null=True, - on_delete=django.db.models.deletion.CASCADE, - to="data_distro.cfdainfo", - ), - ), - migrations.AddField( - model_name="general", - name="findings", - field=models.ForeignKey( - null=True, - on_delete=django.db.models.deletion.CASCADE, - to="data_distro.findings", - ), - ), - migrations.AddField( - model_name="general", - name="notes", - field=models.ForeignKey( - null=True, - on_delete=django.db.models.deletion.CASCADE, - to="data_distro.notes", - ), - ), - migrations.AddField( - model_name="general", - name="passthrough", - field=models.ForeignKey( - null=True, - on_delete=django.db.models.deletion.CASCADE, - to="data_distro.passthrough", - ), - ), - migrations.AddField( - model_name="general", - name="revisions", - field=models.ForeignKey( - null=True, - on_delete=django.db.models.deletion.CASCADE, - to="data_distro.revisions", - ), - ), - migrations.AlterField( - model_name="general", - name="dbkey", - field=models.CharField( - help_text="Census mapping: GENERAL, DBKEY", - max_length=40, - verbose_name="Audit Year and DBKEY (database key) combined make up the primary key. Only on records created by census.", - ), - ), - ] diff --git a/backend/data_distro/migrations/0004_add_new_models.py b/backend/data_distro/migrations/0004_add_new_models.py deleted file mode 100644 index 2d3111b74..000000000 --- a/backend/data_distro/migrations/0004_add_new_models.py +++ /dev/null @@ -1,1521 +0,0 @@ -""" -- Adding the new models before deleting the now, redundant fields -- CpaText is a rename from Cpaext -- Format help text to make it more readable -- Adding some metadata -""" - -# Generated by Django 4.1.4 on 2023-01-25 15:53 - - -import django.contrib.postgres.fields -from django.db import migrations, models -import django.db.models.deletion -import django.utils.timezone - - -class Migration(migrations.Migration): - dependencies = [ - ("data_distro", "0003_add_relationships_between_models"), - ] - - operations = [ - migrations.CreateModel( - name="Auditee", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "auditee_certify_name", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/g; SF-SAC 2001-2003: I/6/g; SF-SAC 2004-2007: I/6/g; SF-SAC 2008-2009: I/5/g; SF-SAC 2010-2012: I/5/g; SF-SAC 2013-2015: certifications; SF-SAC 2016-2018: certifications; SF-SAC 2019-2021: certifications; SF-SAC 2022: certifications Census mapping: GENERAL, AUDITEECERTIFYNAME", - max_length=50, - null=True, - verbose_name="Name of Auditee Certifying Official", - ), - ), - ( - "auditee_certify_title", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/g; SF-SAC 2001-2003: I/6/g; SF-SAC 2004-2007: I/6/g; SF-SAC 2008-2009: I/5/g; SF-SAC 2010-2012: I/5/g; SF-SAC 2013-2015: certifications; SF-SAC 2016-2018: certifications; SF-SAC 2019-2021: certifications; SF-SAC 2022: certifications Census mapping: GENERAL, AUDITEECERTIFYTITLE", - max_length=50, - null=True, - verbose_name="Title of Auditee Certifying Official", - ), - ), - ( - "auditee_contact", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/c; SF-SAC 2001-2003: I/6/c; SF-SAC 2004-2007: I/6/c; SF-SAC 2008-2009: I/5/c; SF-SAC 2010-2012: I/5/c; SF-SAC 2013-2015: I/5/c; SF-SAC 2016-2018: I/5/c; SF-SAC 2019-2021: I/5/c; SF-SAC 2022: I/5/c Census mapping: GENERAL, AUDITEECONTACT", - max_length=50, - verbose_name="Name of Auditee Contact", - ), - ), - ( - "auditee_email", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/f; SF-SAC 2001-2003: I/6/f; SF-SAC 2004-2007: I/6/f; SF-SAC 2008-2009: I/5/f; SF-SAC 2010-2012: I/5/f; SF-SAC 2013-2015: I/5/f; SF-SAC 2016-2018: I/5/e; SF-SAC 2019-2021: I/5/e; SF-SAC 2022: I/5/e Census mapping: GENERAL, AUDITEEEMAIL", - max_length=60, - null=True, - verbose_name="Auditee Email address", - ), - ), - ( - "auditee_fax", - models.PositiveBigIntegerField( - help_text="Data sources: SF-SAC 1997-2000: I/6/e; SF-SAC 2001-2003: I/6/e; SF-SAC 2004-2007: I/6/e; SF-SAC 2008-2009: I/5/e; SF-SAC 2010-2012: I/5/e; SF-SAC 2013-2015: I/5/e Census mapping: GENERAL, AUDITEEFAX", - null=True, - verbose_name="Auditee Fax Number (optional)", - ), - ), - ( - "auditee_name", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/a; SF-SAC 2001-2003: I/6/a; SF-SAC 2004-2007: I/6/a; SF-SAC 2008-2009: I/5/a; SF-SAC 2010-2012: I/5/a; SF-SAC 2013-2015: I/5/a; SF-SAC 2016-2018: I/5/a; SF-SAC 2019-2021: I/5/a; SF-SAC 2022: I/5/a Census mapping: GENERAL, AUDITEENAME", - max_length=70, - verbose_name="Name of the Auditee", - ), - ), - ( - "auditee_name_title", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/g; SF-SAC 2001-2003: I/6/g; SF-SAC 2004-2007: I/6/g; SF-SAC 2008-2009: I/5/g; SF-SAC 2010-2012: I/5/g; SF-SAC 2013-2015: certifications; SF-SAC 2016-2018: certifications; SF-SAC 2019-2021: certifications; SF-SAC 2022: certifications Census mapping: GENERAL, AUDITEENAMETITLE", - max_length=70, - verbose_name="Title of Auditee Certifying Official", - ), - ), - ( - "auditee_phone", - models.PositiveBigIntegerField( - help_text="Data sources: SF-SAC 1997-2000: I/6/d; SF-SAC 2001-2003: I/6/d; SF-SAC 2004-2007: I/6/d; SF-SAC 2008-2009: I/5/d; SF-SAC 2010-2012: I/5/d; SF-SAC 2013-2015: I/5/d; SF-SAC 2016-2018: I/5/d; SF-SAC 2019-2021: I/5/d; SF-SAC 2022: I/5/d Census mapping: GENERAL, AUDITEEPHONE", - verbose_name="Auditee Phone Number", - ), - ), - ( - "auditee_title", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/c; SF-SAC 2001-2003: I/6/c; SF-SAC 2004-2007: I/6/c; SF-SAC 2008-2009: I/5/c; SF-SAC 2010-2012: I/5/c; SF-SAC 2013-2015: I/5/c; SF-SAC 2016-2018: I/5/c; SF-SAC 2019-2021: I/5/c; SF-SAC 2022: I/5/c Census mapping: GENERAL, AUDITEETITLE", - max_length=40, - verbose_name="Title of Auditee Contact", - ), - ), - ( - "street1", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/b; SF-SAC 2001-2003: I/6/b; SF-SAC 2004-2007: I/6/b; SF-SAC 2008-2009: I/5/b; SF-SAC 2010-2012: I/5/b; SF-SAC 2013-2015: I/5/b; SF-SAC 2016-2018: I/5/b; SF-SAC 2019-2021: I/5/b; SF-SAC 2022: I/5/b Census mapping: GENERAL, STREET1", - max_length=45, - verbose_name="Auditee Street Address", - ), - ), - ( - "street2", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/b; SF-SAC 2001-2003: I/6/b; SF-SAC 2004-2007: I/6/b; SF-SAC 2008-2009: I/5/b; SF-SAC 2010-2012: I/5/b; SF-SAC 2013-2015: I/5/b; SF-SAC 2016-2018: I/5/b; SF-SAC 2019-2021: I/5/b; SF-SAC 2022: I/5/b Census mapping: GENERAL, STREET2", - max_length=45, - null=True, - verbose_name="Auditee Street Address", - ), - ), - ( - "city", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/b; SF-SAC 2001-2003: I/6/b; SF-SAC 2004-2007: I/6/b; SF-SAC 2008-2009: I/5/b; SF-SAC 2010-2012: I/5/b; SF-SAC 2013-2015: I/5/b; SF-SAC 2016-2018: I/5/b; SF-SAC 2019-2021: I/5/b; SF-SAC 2022: I/5/b Census mapping: GENERAL, CITY", - max_length=30, - verbose_name="Auditee City", - ), - ), - ( - "state", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/b; SF-SAC 2001-2003: I/6/b; SF-SAC 2004-2007: I/6/b; SF-SAC 2008-2009: I/5/b; SF-SAC 2010-2012: I/5/b; SF-SAC 2013-2015: I/5/b; SF-SAC 2016-2018: I/5/b; SF-SAC 2019-2021: I/5/b; SF-SAC 2022: I/5/b Census mapping: GENERAL, STATE", - max_length=2, - verbose_name="Auditee State", - ), - ), - ( - "zip_code", - models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/b; SF-SAC 2001-2003: I/6/b; SF-SAC 2004-2007: I/6/b; SF-SAC 2008-2009: I/5/b; SF-SAC 2010-2012: I/5/b; SF-SAC 2013-2015: I/5/b; SF-SAC 2016-2018: I/5/b; SF-SAC 2019-2021: I/5/b; SF-SAC 2022: I/5/b Census mapping: GENERAL, ZIPCODE", - max_length=12, - verbose_name="Auditee Zipcode", - ), - ), - ( - "duns_list", - django.contrib.postgres.fields.ArrayField( - base_field=models.IntegerField( - help_text="Data sources: SF-SAC 2004-2007: I/5/d; SF-SAC 2008-2009: I/4/d; SF-SAC 2010-2012: I/4/d; SF-SAC 2013-2015: I/4/d; SF-SAC 2016-2018: I/4/d; SF-SAC 2019-2021: I/4/d; SF-SAC 2022: I/4/d Census mapping: GENERAL, DUNS", - verbose_name="Multiple Data Universal Numbering System Numbers, an array of DUNS numbers of the Auditee.", - ), - size=None, - ), - ), - ( - "uei_list", - django.contrib.postgres.fields.ArrayField( - base_field=models.CharField( - help_text="Data sources: SF-SAC 2022: I/4/g Census mapping: GENERAL, UEI", - max_length=12, - verbose_name="Unique Entity ID", - ), - size=None, - ), - ), - ( - "is_public", - models.BooleanField( - verbose_name="True if appears in a public record" - ), - ), - ], - ), - migrations.CreateModel( - name="Auditor", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "cpa_phone", - models.PositiveBigIntegerField( - help_text="Data sources: SF-SAC 2008-2009: I/8/d; SF-SAC 2010-2012: I/8/d; SF-SAC 2013-2015: I/8/i; SF-SAC 2016-2018: I/8/i; SF-SAC 2019-2021: I/6/h/ix; SF-SAC 2022: I/6/h/ix Census mapping: MULTIPLE CPAS INFO, CPAPHONE", - null=True, - verbose_name="CPA phone number", - ), - ), - ( - "cpa_fax", - models.PositiveBigIntegerField( - help_text="Data sources: SF-SAC 2008-2009: I/8/e; SF-SAC 2010-2012: I/8/e; SF-SAC 2013-2015: I/8/j; SF-SAC 2016-2018: I/8/j Census mapping: MULTIPLE CPAS INFO, CPAFAX", - null=True, - verbose_name="CPA fax number (optional)", - ), - ), - ( - "cpa_state", - models.CharField( - help_text="Data sources: SF-SAC 2008-2009: I/8/b; SF-SAC 2010-2012: I/8/b; SF-SAC 2013-2015: I/8/e; SF-SAC 2016-2018: I/8/e; SF-SAC 2019-2021: I/6/h/v; SF-SAC 2022: I/6/h/v Census mapping: MULTIPLE CPAS INFO, CPASTATE", - max_length=2, - verbose_name="CPA State", - ), - ), - ( - "cpa_city", - models.CharField( - help_text="Data sources: SF-SAC 2008-2009: I/8/b; SF-SAC 2010-2012: I/8/b; SF-SAC 2013-2015: I/8/d; SF-SAC 2016-2018: I/8/d; SF-SAC 2019-2021: I/6/h/iv; SF-SAC 2022: I/6/h/iv Census mapping: MULTIPLE CPAS INFO, CPACITY", - max_length=30, - verbose_name="CPA City", - ), - ), - ( - "cpa_title", - models.CharField( - help_text="Data sources: SF-SAC 2008-2009: I/8/c; SF-SAC 2010-2012: I/8/c; SF-SAC 2013-2015: I/8/h; SF-SAC 2016-2018: I/8/h; SF-SAC 2019-2021: I/6/h/viii; SF-SAC 2022: I/6/h/viii Census mapping: MULTIPLE CPAS INFO, CPATITLE", - max_length=40, - verbose_name="Title of CPA Contact", - ), - ), - ( - "cpa_street1", - models.CharField( - help_text="Data sources: SF-SAC 2008-2009: I/8/b; SF-SAC 2010-2012: I/8/b; SF-SAC 2013-2015: I/8/c; SF-SAC 2016-2018: I/8/c; SF-SAC 2019-2021: I/6/h/iii; SF-SAC 2022: I/6/h/iii Census mapping: MULTIPLE CPAS INFO, CPASTREET1", - max_length=45, - verbose_name="CPA Street Address", - ), - ), - ( - "cpa_street2", - models.CharField( - help_text="Data sources: SF-SAC 2008-2009: I/8/b; SF-SAC 2010-2012: I/8/b; SF-SAC 2013-2015: I/8/c; SF-SAC 2016-2018: I/8/c; SF-SAC 2019-2021: I/6/h/iii; SF-SAC 2022: I/6/h/iii Census mapping: MULTIPLE CPAS INFO, CPASTREET1", - max_length=45, - null=True, - verbose_name="CPA Street Address", - ), - ), - ( - "cpa_zip_code", - models.IntegerField( - help_text="Data sources: SF-SAC 2008-2009: I/8/b; SF-SAC 2010-2012: I/8/b; SF-SAC 2013-2015: I/8/f; SF-SAC 2016-2018: I/8/f; SF-SAC 2019-2021: I/6/h/vi; SF-SAC 2022: I/6/h/vi Census mapping: MULTIPLE CPAS INFO, CPAZIPCODE", - null=True, - verbose_name="CPA Zip Code", - ), - ), - ( - "cpa_contact", - models.CharField( - help_text="Data sources: SF-SAC 2008-2009: I/8/c; SF-SAC 2010-2012: I/8/c; SF-SAC 2013-2015: I/8/g; SF-SAC 2016-2018: I/8/g; SF-SAC 2019-2021: I/6/h/vii; SF-SAC 2022: I/6/h/vii Census mapping: MULTIPLE CPAS INFO, CPACONTACT", - max_length=50, - verbose_name="Name of CPA Contact", - ), - ), - ( - "cpa_email", - models.CharField( - help_text="Data sources: SF-SAC 2008-2009: I/8/f; SF-SAC 2010-2012: I/8/f; SF-SAC 2013-2015: I/8/k; SF-SAC 2016-2018: I/8/k; SF-SAC 2019-2021: I/6/h/x; SF-SAC 2022: I/6/h/x Census mapping: MULTIPLE CPAS INFO, CPAEMAIL", - max_length=60, - null=True, - verbose_name="CPA mail address (optional)", - ), - ), - ( - "cpa_firm_name", - models.CharField( - help_text="Data sources: SF-SAC 2008-2009: I/8/a; SF-SAC 2010-2012: I/8/a; SF-SAC 2013-2015: I/8/a; SF-SAC 2016-2018: I/8/a; SF-SAC 2019-2021: I/6/h/i; SF-SAC 2022: I/6/h/i Census mapping: MULTIPLE CPAS INFO, CPAFIRMNAME", - max_length=64, - verbose_name="CPA Firm Name", - ), - ), - ( - "cpa_ein", - models.IntegerField( - help_text="Data sources: SF-SAC 2013-2015: I/8/b; SF-SAC 2016-2018: I/8/b; SF-SAC 2019-2021: I/6/h/ii; SF-SAC 2022: I/6/h/ii Census mapping: MULTIPLE CPAS INFO, CPAEIN", - null=True, - verbose_name="CPA Firm EIN (only available for audit years 2013 and beyond)", - ), - ), - ( - "dbkey", - models.CharField( - help_text="Census mapping: MULTIPLE CPAS INFO, DBKEY", - max_length=40, - verbose_name="Audit Year and DBKEY (database key) combined make up the primary key.", - ), - ), - ( - "audit_year", - models.CharField( - help_text="Census mapping: MULTIPLE CPAS INFO, AUDITYEAR", - max_length=40, - verbose_name="Audit Year and DBKEY (database key) combined make up the primary key.", - ), - ), - ( - "seqnum", - models.IntegerField( - help_text="Census mapping: MULTIPLE CPAS INFO, SEQNUM", - null=True, - verbose_name="Order that Auditors were reported on page 5 of SF-SAC", - ), - ), - ( - "is_public", - models.BooleanField( - verbose_name="True if appears in a public record" - ), - ), - ], - ), - migrations.CreateModel( - name="CapText", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "charts_tables", - models.BooleanField( - help_text="Census mapping: CAPTEXT, CHARTSTABLES", - max_length=1, - null=True, - verbose_name="Indicates whether or not the text contained charts or tables that could not be entered due to formatting restrictions", - ), - ), - ( - "finding_ref_nums", - models.CharField( - help_text="Data sources: SF-SAC 2019-2021: IV/1; SF-SAC 2022: IV/1 Census mapping: CAPTEXT, FINDINGREFNUMS", - max_length=100, - verbose_name="Audit Finding Reference Number", - ), - ), - ( - "seq_number", - models.IntegerField( - help_text="Census mapping: CAPTEXT, SEQ_NUMBER", - verbose_name="Order that the CAP text was reported", - ), - ), - ( - "text", - models.TextField( - help_text="Data sources: SF-SAC 2019-2021: IV/2; SF-SAC 2022: IV/2 Census mapping: CAPTEXT, TEXT", - verbose_name="Content of the Corrective Action Plan (CAP)", - ), - ), - ( - "dbkey", - models.CharField( - help_text="Census mapping: CAPTEXT, DBKEY", - max_length=40, - verbose_name="Audit Year and DBKEY (database key) combined make up the primary key.", - ), - ), - ( - "audit_year", - models.CharField( - help_text="Census mapping: CAPTEXT, AUDITYEAR", - max_length=40, - verbose_name="Audit Year and DBKEY (database key) combined make up the primary key.", - ), - ), - ( - "is_public", - models.BooleanField( - verbose_name="True for public records, False for non-public records" - ), - ), - ], - ), - migrations.AddField( - model_name="agencies", - name="is_public", - field=models.BooleanField( - default=True, - verbose_name="True for public records, False for non-public records", - ), - preserve_default=False, - ), - migrations.AddField( - model_name="cfdainfo", - name="is_public", - field=models.BooleanField( - default=True, - verbose_name="True for public records, False for non-public records", - ), - preserve_default=False, - ), - migrations.AddField( - model_name="findings", - name="is_public", - field=models.BooleanField( - default=True, - verbose_name="True for public records, False for non-public records", - ), - preserve_default=False, - ), - migrations.AddField( - model_name="findingstext", - name="is_public", - field=models.BooleanField( - default=True, - verbose_name="True for public records, False for non-public records", - ), - preserve_default=False, - ), - migrations.AddField( - model_name="general", - name="create_date", - field=models.DateTimeField( - auto_now_add=True, default=django.utils.timezone.now - ), - preserve_default=False, - ), - migrations.AddField( - model_name="general", - name="data_source", - field=models.CharField( - default="Public download", - max_length=25, - verbose_name="Origin of the upload", - ), - preserve_default=False, - ), - migrations.AddField( - model_name="general", - name="is_public", - field=models.BooleanField( - default=True, - verbose_name="True for public records, False for non-public records", - ), - preserve_default=False, - ), - migrations.AddField( - model_name="general", - name="modified_date", - field=models.DateTimeField(auto_now=True), - ), - migrations.AddField( - model_name="notes", - name="is_public", - field=models.BooleanField( - default=True, - verbose_name="True for public records, False for non-public records", - ), - preserve_default=False, - ), - migrations.AddField( - model_name="passthrough", - name="is_public", - field=models.BooleanField( - default=True, - verbose_name="True for public records, False for non-public records", - ), - preserve_default=False, - ), - migrations.AddField( - model_name="revisions", - name="is_public", - field=models.BooleanField( - default=True, - verbose_name="True for public records, False for non-public records", - ), - preserve_default=False, - ), - migrations.AlterField( - model_name="agencies", - name="agency_cfda", - field=models.IntegerField( - help_text="Data sources: SF-SAC 1997-2000: III/5; SF-SAC 2001-2003: III/9; SF-SAC 2004-2007: III/8; SF-SAC 2008-2009: III/8; SF-SAC 2010-2012: III/8; SF-SAC 2013-2015: III/5; SF-SAC 2016-2018: III/3/d; SF-SAC 2019-2021: III/3/d; SF-SAC 2022: III/3/d Census mapping: AGENCIES, AGENCYCFDA", - verbose_name="2-digit prefix of Federal Agency requiring copy of audit report", - ), - ), - migrations.AlterField( - model_name="agencies", - name="ein", - field=models.IntegerField( - help_text="Data sources: SF-SAC 1997-2000: I/5/a; SF-SAC 2001-2003: I/5/a; SF-SAC 2004-2007: I/5/a; SF-SAC 2008-2009: I/4/a; SF-SAC 2010-2012: I/4/a; SF-SAC 2013-2015: I/4/a; SF-SAC 2016-2018: I/4/a; SF-SAC 2019-2021: I/4/a; SF-SAC 2022: I/4/a Census mapping: AGENCIES, EIN", - null=True, - verbose_name="Employer Identification Number (EIN) of primary grantee", - ), - ), - migrations.AlterField( - model_name="cfdainfo", - name="amount", - field=models.BigIntegerField( - help_text="Data sources: SF-SAC 1997-2000: III/6/c; SF-SAC 2001-2003: III/10/d; SF-SAC 2004-2007: III/9/e; SF-SAC 2008-2009: III/9/e; SF-SAC 2010-2012: III/9/f; SF-SAC 2013-2015: III/6/d; SF-SAC 2016-2018: II/1/e; SF-SAC 2019-2021: II/1/e; SF-SAC 2022: II/1/e Census mapping: CFDA INFO, AMOUNT", - verbose_name="Amount Expended for the Federal Program", - ), - ), - migrations.AlterField( - model_name="cfdainfo", - name="arra", - field=models.BooleanField( - help_text="Data sources: SF-SAC 2010-2012: III/9/d; SF-SAC 2013-2015: III/6/g Census mapping: CFDA INFO, ARRA", - null=True, - verbose_name="American Recovery and Reinvestment Act Funded Program", - ), - ), - migrations.AlterField( - model_name="cfdainfo", - name="award_identification", - field=models.CharField( - help_text="Data sources: SF-SAC 2016-2018: II/1/c; SF-SAC 2019-2021: II/1/c; SF-SAC 2022: II/1/c Census mapping: CFDA INFO, AWARDIDENTIFICATION", - max_length=50, - verbose_name="Other data used to identify the award which is not a CFDA number (e.g., program year, contract number)", - ), - ), - migrations.AlterField( - model_name="cfdainfo", - name="cfda", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: III/6/a; SF-SAC 2001-2003: III/10/a; SF-SAC 2004-2007: III/9/a & III/9/b combined; SF-SAC 2008-2009: III/9/a & III/9/b combined; SF-SAC 2010-2012: III/9/a & III/9/b combined; SF-SAC 2013-2015: III/6/a & III/6/b combined; SF-SAC 2016-2018: II/1/a & II/1/b combined; SF-SAC 2019-2021: II/1/a & II/1/b combined; SF-SAC 2022: II/1/a & II/1/b combined Census mapping: CFDA INFO, CFDA", - max_length=52, - verbose_name="Federal Agency Prefix and Extension", - ), - ), - migrations.AlterField( - model_name="cfdainfo", - name="cluster_name", - field=models.CharField( - help_text="Data sources: SF-SAC 2016-2018: II/1/f; SF-SAC 2019-2021: II/1/f; SF-SAC 2022: II/1/f Census mapping: CFDA INFO, CLUSTERNAME", - max_length=75, - null=True, - verbose_name="The name of the cluster", - ), - ), - migrations.AlterField( - model_name="cfdainfo", - name="cluster_total", - field=models.BigIntegerField( - help_text="Data sources: SF-SAC 2016-2018: II/1/h; SF-SAC 2019-2021: II/1/h; SF-SAC 2022: II/1/h Census mapping: CFDA INFO, CLUSTERTOTAL", - verbose_name="Total Federal awards expended for each individual Federal program is auto-generated by summing the amount expended for all line items with the same Cluster Name", - ), - ), - migrations.AlterField( - model_name="cfdainfo", - name="direct", - field=models.BooleanField( - help_text="Data sources: SF-SAC 2001-2003: III/10/e; SF-SAC 2004-2007: III/9/f; SF-SAC 2008-2009: III/9/f; SF-SAC 2010-2012: III/9/g; SF-SAC 2013-2015: III/6/h; SF-SAC 2016-2018: II/1/k; SF-SAC 2019-2021: II/1/k; SF-SAC 2022: II/1/k Census mapping: CFDA INFO, DIRECT", - null=True, - verbose_name="Indicate whether or not the award was received directly from a Federal awarding agency", - ), - ), - migrations.AlterField( - model_name="cfdainfo", - name="federal_program_name", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: III/6/b; SF-SAC 2001-2003: III/10/c; SF-SAC 2004-2007: III/9/d; SF-SAC 2008-2009: III/9/d; SF-SAC 2010-2012: III/9/e; SF-SAC 2013-2015: III/6/c; SF-SAC 2016-2018: II/1/d; SF-SAC 2019-2021: II/1/d; SF-SAC 2022: II/1/d Census mapping: CFDA INFO, FEDERALPROGRAMNAME", - max_length=300, - verbose_name="Name of Federal Program", - ), - ), - migrations.AlterField( - model_name="cfdainfo", - name="finding_ref_nums", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: III/7/e; SF-SAC 2001-2003: III/11/b; SF-SAC 2004-2007: III/10/b; SF-SAC 2008-2009: III/10/b; SF-SAC 2010-2012: III/10/b; SF-SAC 2013-2015: III/7/d; SF-SAC 2016-2018: III/4/e; SF-SAC 2019-2021: III/4/e; SF-SAC 2022: III/4/e Census mapping: CFDA INFO, FINDINGREFNUMS", - max_length=100, - null=True, - verbose_name="Findings Reference Numbers", - ), - ), - migrations.AlterField( - model_name="cfdainfo", - name="findings_count", - field=models.IntegerField( - help_text="Data sources: SF-SAC 2013-2015: III/6/k; SF-SAC 2016-2018: III/1/c; SF-SAC 2019-2021: III/1/c; SF-SAC 2022: III/1/c Census mapping: CFDA INFO, FINDINGSCOUNT", - verbose_name="Number of findings for the federal program (only available for audit years 2013 and beyond)", - ), - ), - migrations.AlterField( - model_name="cfdainfo", - name="loan_balance", - field=models.CharField( - help_text="Data sources: SF-SAC 2016-2018: II/1/j; SF-SAC 2019-2021: II/1/j; SF-SAC 2022: II/1/j Census mapping: CFDA INFO, LOANBALANCE", - max_length=40, - null=True, - verbose_name="The loan or loan guarantee (loan) balance outstanding at the end of the audit period. A response of ‘N/A’ is acceptable.", - ), - ), - migrations.AlterField( - model_name="cfdainfo", - name="loans", - field=models.BooleanField( - help_text="Data sources: SF-SAC 2013-2015: III/6/f; SF-SAC 2016-2018: II/1/i; SF-SAC 2019-2021: II/1/i; SF-SAC 2022: II/1/i Census mapping: CFDA INFO, LOANS", - null=True, - verbose_name="Indicate whether or not the program is a Loan or Loan Guarantee (only available for audit years 2013 and beyond)", - ), - ), - migrations.AlterField( - model_name="cfdainfo", - name="major_program", - field=models.BooleanField( - help_text="Data sources: SF-SAC 1997-2000: III/7/a; SF-SAC 2001-2003: III/10/f; SF-SAC 2004-2007: III/9/g; SF-SAC 2008-2009: III/9/g; SF-SAC 2010-2012: III/9/h; SF-SAC 2013-2015: III/6/i; SF-SAC 2016-2018: III/1/a; SF-SAC 2019-2021: III/1/a; SF-SAC 2022: III/1/a Census mapping: CFDA INFO, MAJORPROGRAM", - null=True, - verbose_name="Indicate whether or not the Federal program is a major program", - ), - ), - migrations.AlterField( - model_name="cfdainfo", - name="passthrough_amount", - field=models.BigIntegerField( - help_text="Data sources: SF-SAC 2016-2018: II/1/o; SF-SAC 2019-2021: II/1/o; SF-SAC 2022: II/1/o Census mapping: CFDA INFO, PASSTHROUGHAMOUNT", - null=True, - verbose_name="Amount passed through to subrecipients", - ), - ), - migrations.AlterField( - model_name="cfdainfo", - name="passthrough_award", - field=models.BooleanField( - help_text="Data sources: SF-SAC 2016-2018: II/1/n; SF-SAC 2019-2021: II/1/n; SF-SAC 2022: II/1/n Census mapping: CFDA INFO, PASSTHROUGHAWARD", - null=True, - verbose_name="Indicates whether or not funds were passed through to any subrecipients for the Federal program", - ), - ), - migrations.AlterField( - model_name="cfdainfo", - name="program_total", - field=models.BigIntegerField( - help_text="Data sources: SF-SAC 2016-2018: II/1/g; SF-SAC 2019-2021: II/1/g; SF-SAC 2022: II/1/g Census mapping: CFDA INFO, PROGRAMTOTAL", - verbose_name="Total Federal awards expended for each individual Federal program is auto-generated by summing the amount expended for all line items with the same CFDA Prefix and Extension", - ), - ), - migrations.AlterField( - model_name="cfdainfo", - name="research_and_development", - field=models.BooleanField( - help_text="Data sources: SF-SAC 2001-2003: III/10/b; SF-SAC 2004-2007: III/9/c; SF-SAC 2008-2009: III/9/c; SF-SAC 2010-2012: III/9/c; SF-SAC 2013-2015: III/6/e Census mapping: CFDA INFO, R&D", - null=True, - verbose_name="Indicate whether or not the program is a Research and Development program", - ), - ), - migrations.AlterField( - model_name="cfdainfo", - name="type_report_major_program", - field=models.CharField( - help_text="Data sources: SF-SAC 2004-2007: III/9/h; SF-SAC 2008-2009: III/9/h; SF-SAC 2010-2012: III/9/i; SF-SAC 2013-2015: III/6/j; SF-SAC 2016-2018: III/1/b; SF-SAC 2019-2021: III/1/b; SF-SAC 2022: III/1/b Census mapping: CFDA INFO, TYPEREPORT_MP", - max_length=40, - verbose_name="Type of Report Issued on the Major Program Compliance", - ), - ), - migrations.AlterField( - model_name="cfdainfo", - name="type_requirement", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: III/7/b; SF-SAC 2001-2003: III/11/a; SF-SAC 2004-2007: III/10/a; SF-SAC 2008-2009: III/10/a; SF-SAC 2010-2012: III/10/a; SF-SAC 2013-2015: III/7/e; SF-SAC 2016-2018: III/4/f; SF-SAC 2019-2021: III/4/f; SF-SAC 2022: III/4/f Census mapping: CFDA INFO, TYPEREQUIREMENT", - max_length=40, - null=True, - verbose_name="Type Requirement Failure", - ), - ), - migrations.AlterField( - model_name="dunsinfo", - name="duns", - field=models.IntegerField( - help_text="Data sources: SF-SAC 2004-2007: I/5/f; SF-SAC 2008-2009: I/4/f; SF-SAC 2010-2012: I/4/f; SF-SAC 2013-2015: I/4/f; SF-SAC 2016-2018: I/4/f; SF-SAC 2019-2021: I/4/f; SF-SAC 2022: I/4/f Census mapping: DUN INFO, DUNS", - verbose_name="Multiple Data Universal Numbering System Numbers", - ), - ), - migrations.AlterField( - model_name="eininfo", - name="ein", - field=models.IntegerField( - help_text="Data sources: SF-SAC 2001-2003: I/5/c; SF-SAC 2004-2007: I/5/c; SF-SAC 2008-2009: I/4/c; SF-SAC 2010-2012: I/4/c; SF-SAC 2013-2015: I/4/c; SF-SAC 2016-2018: I/4/c; SF-SAC 2019-2021: I/4/c; SF-SAC 2022: I/4/c Census mapping: EIN INFO, EIN", - verbose_name="Multiple Employer Identification Numbers", - ), - ), - migrations.AlterField( - model_name="findings", - name="finding_ref_nums", - field=models.CharField( - help_text="Data sources: SF-SAC 2013-2015: III/7/d; SF-SAC 2016-2018: III/4/e; SF-SAC 2019-2021: III/4/e; SF-SAC 2022: III/4/e Census mapping: FINDINGS, FINDINGREFNUMS", - max_length=100, - verbose_name="Findings Reference Numbers", - ), - ), - migrations.AlterField( - model_name="findings", - name="material_weakness", - field=models.BooleanField( - help_text="Data sources: SF-SAC 2013-2015: III/7/h; SF-SAC 2016-2018: III/4/i; SF-SAC 2019-2021: III/4/i; SF-SAC 2022: III/4/i Census mapping: FINDINGS, MATERIALWEAKNESS", - null=True, - verbose_name="Material Weakness finding", - ), - ), - migrations.AlterField( - model_name="findings", - name="modified_opinion", - field=models.BooleanField( - help_text="Data sources: SF-SAC 2013-2015: III/7/f; SF-SAC 2016-2018: III/4/g; SF-SAC 2019-2021: III/4/g; SF-SAC 2022: III/4/g Census mapping: FINDINGS, MODIFIEDOPINION", - null=True, - verbose_name="Modified Opinion finding", - ), - ), - migrations.AlterField( - model_name="findings", - name="other_findings", - field=models.BooleanField( - help_text="Data sources: SF-SAC 2013-2015: III/7/j; SF-SAC 2016-2018: III/4/k; SF-SAC 2019-2021: III/4/k; SF-SAC 2022: III/4/k Census mapping: FINDINGS, OTHERFINDINGS", - null=True, - verbose_name="Other findings", - ), - ), - migrations.AlterField( - model_name="findings", - name="other_non_compliance", - field=models.BooleanField( - help_text="Data sources: SF-SAC 2013-2015: III/7/g; SF-SAC 2016-2018: III/4/h; SF-SAC 2019-2021: III/4/h; SF-SAC 2022: III/4/h Census mapping: FINDINGS, OTHERNONCOMPLIANCE", - null=True, - verbose_name="Other Noncompliance finding", - ), - ), - migrations.AlterField( - model_name="findings", - name="prior_finding_ref_nums", - field=models.CharField( - help_text="Data sources: SF-SAC 2016-2018: III/4/n; SF-SAC 2019-2021: III/4/n; SF-SAC 2022: III/4/n Census mapping: FINDINGS, PRIORFINDINGREFNUMS", - max_length=100, - verbose_name="Audit finding reference numbers from the immediate prior audit", - ), - ), - migrations.AlterField( - model_name="findings", - name="questioned_costs", - field=models.BooleanField( - help_text="Data sources: SF-SAC 2013-2015: III/7/k; SF-SAC 2016-2018: III/4/l; SF-SAC 2019-2021: III/4/l; SF-SAC 2022: III/4/l Census mapping: FINDINGS, QCOSTS", - null=True, - verbose_name="Questioned Costs", - ), - ), - migrations.AlterField( - model_name="findings", - name="repeat_finding", - field=models.BooleanField( - help_text="Data sources: SF-SAC 2016-2018: III/4/m; SF-SAC 2019-2021: III/4/m; SF-SAC 2022: III/4/m Census mapping: FINDINGS, REPEATFINDING", - null=True, - verbose_name="Indicates whether or not the audit finding was a repeat of an audit finding in the immediate prior audit", - ), - ), - migrations.AlterField( - model_name="findings", - name="significant_deficiency", - field=models.BooleanField( - help_text="Data sources: SF-SAC 2013-2015: III/7/i; SF-SAC 2016-2018: III/4/j; SF-SAC 2019-2021: III/4/j; SF-SAC 2022: III/4/j Census mapping: FINDINGS, SIGNIFICANTDEFICIENCY", - null=True, - verbose_name="Significant Deficiency finding", - ), - ), - migrations.AlterField( - model_name="findings", - name="type_requirement", - field=models.CharField( - help_text="Data sources: SF-SAC 2013-2015: III/7/e; SF-SAC 2016-2018: III/4/f; SF-SAC 2019-2021: III/4/f; SF-SAC 2022: III/4/f Census mapping: FINDINGS, TYPEREQUIREMENT", - max_length=40, - verbose_name="Type Requirement Failure", - ), - ), - migrations.AlterField( - model_name="findingstext", - name="finding_ref_nums", - field=models.CharField( - help_text="Data sources: SF-SAC 2019-2021: III/5/a; SF-SAC 2022: III/5/a Census mapping: FINDINGSTEXT, FINDINGREFNUMS", - max_length=100, - verbose_name="Audit Finding Reference Number", - ), - ), - migrations.AlterField( - model_name="findingstext", - name="text", - field=models.TextField( - help_text="Data sources: SF-SAC 2019-2021: III/5/b; SF-SAC 2022: III/5/b Census mapping: FINDINGSTEXT, TEXT", - verbose_name="Content of the finding text", - ), - ), - migrations.AlterField( - model_name="general", - name="agency", - field=models.ManyToManyField(to="data_distro.agencies"), - ), - migrations.AlterField( - model_name="general", - name="audit_type", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/2; SF-SAC 2001-2003: I/2; SF-SAC 2004-2007: I/2; SF-SAC 2008-2009: I/2; SF-SAC 2010-2012: I/2; SF-SAC 2013-2015: I/2; SF-SAC 2016-2018: I/2; SF-SAC 2019-2021: I/2; SF-SAC 2022: I/2 Census mapping: GENERAL, AUDITTYPE", - max_length=40, - verbose_name="Type of Audit", - ), - ), - migrations.AlterField( - model_name="general", - name="auditee_certify_name", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/g; SF-SAC 2001-2003: I/6/g; SF-SAC 2004-2007: I/6/g; SF-SAC 2008-2009: I/5/g; SF-SAC 2010-2012: I/5/g; SF-SAC 2013-2015: certifications; SF-SAC 2016-2018: certifications; SF-SAC 2019-2021: certifications; SF-SAC 2022: certifications Census mapping: GENERAL, AUDITEECERTIFYNAME", - max_length=50, - null=True, - verbose_name="Name of Auditee Certifying Official", - ), - ), - migrations.AlterField( - model_name="general", - name="auditee_certify_title", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/g; SF-SAC 2001-2003: I/6/g; SF-SAC 2004-2007: I/6/g; SF-SAC 2008-2009: I/5/g; SF-SAC 2010-2012: I/5/g; SF-SAC 2013-2015: certifications; SF-SAC 2016-2018: certifications; SF-SAC 2019-2021: certifications; SF-SAC 2022: certifications Census mapping: GENERAL, AUDITEECERTIFYTITLE", - max_length=50, - null=True, - verbose_name="Title of Auditee Certifying Official", - ), - ), - migrations.AlterField( - model_name="general", - name="auditee_contact", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/c; SF-SAC 2001-2003: I/6/c; SF-SAC 2004-2007: I/6/c; SF-SAC 2008-2009: I/5/c; SF-SAC 2010-2012: I/5/c; SF-SAC 2013-2015: I/5/c; SF-SAC 2016-2018: I/5/c; SF-SAC 2019-2021: I/5/c; SF-SAC 2022: I/5/c Census mapping: GENERAL, AUDITEECONTACT", - max_length=50, - verbose_name="Name of Auditee Contact", - ), - ), - migrations.AlterField( - model_name="general", - name="auditee_date_signed", - field=models.DateField( - help_text="Data sources: SF-SAC 1997-2000: I/6/g; SF-SAC 2001-2003: I/6/g; SF-SAC 2004-2007: I/6/g; SF-SAC 2008-2009: I/5/g; SF-SAC 2010-2012: I/5/g; SF-SAC 2013-2015: certifications; SF-SAC 2016-2018: certifications; SF-SAC 2019-2021: certifications; SF-SAC 2022: certifications Census mapping: GENERAL, AUDITEEDATESIGNED", - verbose_name="Date of Auditee signature", - ), - ), - migrations.AlterField( - model_name="general", - name="auditee_email", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/f; SF-SAC 2001-2003: I/6/f; SF-SAC 2004-2007: I/6/f; SF-SAC 2008-2009: I/5/f; SF-SAC 2010-2012: I/5/f; SF-SAC 2013-2015: I/5/f; SF-SAC 2016-2018: I/5/e; SF-SAC 2019-2021: I/5/e; SF-SAC 2022: I/5/e Census mapping: GENERAL, AUDITEEEMAIL", - max_length=60, - null=True, - verbose_name="Auditee Email address", - ), - ), - migrations.AlterField( - model_name="general", - name="auditee_fax", - field=models.PositiveBigIntegerField( - help_text="Data sources: SF-SAC 1997-2000: I/6/e; SF-SAC 2001-2003: I/6/e; SF-SAC 2004-2007: I/6/e; SF-SAC 2008-2009: I/5/e; SF-SAC 2010-2012: I/5/e; SF-SAC 2013-2015: I/5/e Census mapping: GENERAL, AUDITEEFAX", - null=True, - verbose_name="Auditee Fax Number (optional)", - ), - ), - migrations.AlterField( - model_name="general", - name="auditee_name", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/a; SF-SAC 2001-2003: I/6/a; SF-SAC 2004-2007: I/6/a; SF-SAC 2008-2009: I/5/a; SF-SAC 2010-2012: I/5/a; SF-SAC 2013-2015: I/5/a; SF-SAC 2016-2018: I/5/a; SF-SAC 2019-2021: I/5/a; SF-SAC 2022: I/5/a Census mapping: GENERAL, AUDITEENAME", - max_length=70, - verbose_name="Name of the Auditee", - ), - ), - migrations.AlterField( - model_name="general", - name="auditee_name_title", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/g; SF-SAC 2001-2003: I/6/g; SF-SAC 2004-2007: I/6/g; SF-SAC 2008-2009: I/5/g; SF-SAC 2010-2012: I/5/g; SF-SAC 2013-2015: certifications; SF-SAC 2016-2018: certifications; SF-SAC 2019-2021: certifications; SF-SAC 2022: certifications Census mapping: GENERAL, AUDITEENAMETITLE", - max_length=70, - verbose_name="Title of Auditee Certifying Official", - ), - ), - migrations.AlterField( - model_name="general", - name="auditee_phone", - field=models.PositiveBigIntegerField( - help_text="Data sources: SF-SAC 1997-2000: I/6/d; SF-SAC 2001-2003: I/6/d; SF-SAC 2004-2007: I/6/d; SF-SAC 2008-2009: I/5/d; SF-SAC 2010-2012: I/5/d; SF-SAC 2013-2015: I/5/d; SF-SAC 2016-2018: I/5/d; SF-SAC 2019-2021: I/5/d; SF-SAC 2022: I/5/d Census mapping: GENERAL, AUDITEEPHONE", - verbose_name="Auditee Phone Number", - ), - ), - migrations.AlterField( - model_name="general", - name="auditee_title", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/c; SF-SAC 2001-2003: I/6/c; SF-SAC 2004-2007: I/6/c; SF-SAC 2008-2009: I/5/c; SF-SAC 2010-2012: I/5/c; SF-SAC 2013-2015: I/5/c; SF-SAC 2016-2018: I/5/c; SF-SAC 2019-2021: I/5/c; SF-SAC 2022: I/5/c Census mapping: GENERAL, AUDITEETITLE", - max_length=40, - verbose_name="Title of Auditee Contact", - ), - ), - migrations.AlterField( - model_name="general", - name="auditor_ein", - field=models.IntegerField( - help_text="Data sources: SF-SAC 2013-2015: I/6/b; SF-SAC 2016-2018: I/6/b; SF-SAC 2019-2021: I/6/b; SF-SAC 2022: I/6/b Census mapping: GENERAL, AUDITOR_EIN", - verbose_name="CPA Firm EIN (only available for audit years 2013 and beyond)", - ), - ), - migrations.AlterField( - model_name="general", - name="city", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/b; SF-SAC 2001-2003: I/6/b; SF-SAC 2004-2007: I/6/b; SF-SAC 2008-2009: I/5/b; SF-SAC 2010-2012: I/5/b; SF-SAC 2013-2015: I/5/b; SF-SAC 2016-2018: I/5/b; SF-SAC 2019-2021: I/5/b; SF-SAC 2022: I/5/b Census mapping: GENERAL, CITY", - max_length=30, - verbose_name="Auditee City", - ), - ), - migrations.AlterField( - model_name="general", - name="cognizant_agency", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/9; SF-SAC 2001-2003: I/9 Census mapping: GENERAL, COGAGENCY", - max_length=2, - null=True, - verbose_name="Two digit Federal agency prefix of the cognizant agency", - ), - ), - migrations.AlterField( - model_name="general", - name="condition_or_deficiency", - field=models.BooleanField( - help_text="Data sources: SF-SAC 1997-2000: II/3; SF-SAC 2001-2003: II/3; SF-SAC 2004-2007: II/3; SF-SAC 2008-2009: II/3; SF-SAC 2010-2012: II/3; SF-SAC 2013-2015: II/3; SF-SAC 2016-2018: III/2/c; SF-SAC 2019-2021: III/2/c; SF-SAC 2022: III/2/c Census mapping: GENERAL, REPORTABLECONDITION/SIGNIFICANTDEFICIENCY", - null=True, - verbose_name="Whether or not the audit disclosed a reportable condition/significant deficiency on financial statements", - ), - ), - migrations.AlterField( - model_name="general", - name="condition_or_deficiency_major_program", - field=models.BooleanField( - help_text="Data sources: SF-SAC 2001-2003: III/5; SF-SAC 2004-2007: III/4; SF-SAC 2008-2009: III/4; SF-SAC 2010-2012: III/4 Census mapping: GENERAL, REPORTABLECONDITION/SIGNIFICANTDEFICIENCY_MP", - null=True, - verbose_name="Whether or not the audit disclosed a reportable condition/significant deficiency for any major program in the Schedule of Findings and Questioned Costs", - ), - ), - migrations.AlterField( - model_name="general", - name="cpa_city", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/7/b; SF-SAC 2001-2003: I/7/b; SF-SAC 2004-2007: I/7/b; SF-SAC 2008-2009: I/6/b; SF-SAC 2010-2012: I/6/b; SF-SAC 2013-2015: I/6/c; SF-SAC 2016-2018: I/6/c; SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPACITY", - max_length=30, - verbose_name="CPA City", - ), - ), - migrations.AlterField( - model_name="general", - name="cpa_contact", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/7/c; SF-SAC 2001-2003: I/7/c; SF-SAC 2004-2007: I/7/c; SF-SAC 2008-2009: I/6/c; SF-SAC 2010-2012: I/6/c; SF-SAC 2013-2015: I/6/d; SF-SAC 2016-2018: I/6/d; SF-SAC 2019-2021: I/6/d; SF-SAC 2022: I/6/d Census mapping: GENERAL, CPACONTACT", - max_length=50, - verbose_name="Name of CPA Contact", - ), - ), - migrations.AlterField( - model_name="general", - name="cpa_country", - field=models.CharField( - help_text="Data sources: SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPACOUNTRY", - max_length=6, - null=True, - verbose_name="CPA Country", - ), - ), - migrations.AlterField( - model_name="general", - name="cpa_date_signed", - field=models.DateField( - help_text="Data sources: SF-SAC 1997-2000: I/7/g; SF-SAC 2001-2003: I/7/g; SF-SAC 2004-2007: I/7/g; SF-SAC 2008-2009: I/6/g; SF-SAC 2010-2012: I/6/g; SF-SAC 2013-2015: certifications; SF-SAC 2016-2018: certifications; SF-SAC 2019-2021: certifications; SF-SAC 2022: certifications Census mapping: GENERAL, CPADATESIGNED", - verbose_name="Date of CPA signature", - ), - ), - migrations.AlterField( - model_name="general", - name="cpa_email", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/7/f; SF-SAC 2001-2003: I/7/f; SF-SAC 2004-2007: I/7/f; SF-SAC 2008-2009: I/6/f; SF-SAC 2010-2012: I/6/f; SF-SAC 2013-2015: I/6/g; SF-SAC 2016-2018: I/6/f; SF-SAC 2019-2021: I/6/f; SF-SAC 2022: I/6/f Census mapping: GENERAL, CPAEMAIL", - max_length=60, - null=True, - verbose_name="CPA email address", - ), - ), - migrations.AlterField( - model_name="general", - name="cpa_fax", - field=models.PositiveBigIntegerField( - help_text="Data sources: SF-SAC 1997-2000: I/7/e; SF-SAC 2001-2003: I/7/e; SF-SAC 2004-2007: I/7/e; SF-SAC 2008-2009: I/6/e; SF-SAC 2010-2012: I/6/e; SF-SAC 2013-2015: I/6/f Census mapping: GENERAL, CPAFAX", - null=True, - verbose_name="CPA fax number (optional) ", - ), - ), - migrations.AlterField( - model_name="general", - name="cpa_firm_name", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/7/a; SF-SAC 2001-2003: I/7/a; SF-SAC 2004-2007: I/7/a; SF-SAC 2008-2009: I/6/a; SF-SAC 2010-2012: I/6/a; SF-SAC 2013-2015: I/6/a; SF-SAC 2016-2018: I/6/a; SF-SAC 2019-2021: I/6/a; SF-SAC 2022: I/6/a Census mapping: GENERAL, CPAFIRMNAME", - max_length=64, - verbose_name="CPA Firm Name", - ), - ), - migrations.AlterField( - model_name="general", - name="cpa_foreign", - field=models.CharField( - help_text="Data sources: SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPAFOREIGN", - max_length=200, - null=True, - verbose_name="CPA Address - if international", - ), - ), - migrations.AlterField( - model_name="general", - name="cpa_phone", - field=models.PositiveBigIntegerField( - help_text="Data sources: SF-SAC 1997-2000: I/7/d; SF-SAC 2001-2003: I/7/d; SF-SAC 2004-2007: I/7/d; SF-SAC 2008-2009: I/6/d; SF-SAC 2010-2012: I/6/d; SF-SAC 2013-2015: I/6/e; SF-SAC 2016-2018: I/6/e; SF-SAC 2019-2021: I/6/e; SF-SAC 2022: I/6/e Census mapping: GENERAL, CPAPHONE", - verbose_name="CPA phone number", - ), - ), - migrations.AlterField( - model_name="general", - name="cpa_state", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/7/b; SF-SAC 2001-2003: I/7/b; SF-SAC 2004-2007: I/7/b; SF-SAC 2008-2009: I/6/b; SF-SAC 2010-2012: I/6/b; SF-SAC 2013-2015: I/6/c; SF-SAC 2016-2018: I/6/c; SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPASTATE", - max_length=2, - verbose_name="CPA State", - ), - ), - migrations.AlterField( - model_name="general", - name="cpa_street1", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/7/b; SF-SAC 2001-2003: I/7/b; SF-SAC 2004-2007: I/7/b; SF-SAC 2008-2009: I/6/b; SF-SAC 2010-2012: I/6/b; SF-SAC 2013-2015: I/6/c; SF-SAC 2016-2018: I/6/c; SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPASTREET1", - max_length=45, - verbose_name="CPA Street Address", - ), - ), - migrations.AlterField( - model_name="general", - name="cpa_street2", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/7/b; SF-SAC 2001-2003: I/7/b; SF-SAC 2004-2007: I/7/b; SF-SAC 2008-2009: I/6/b; SF-SAC 2010-2012: I/6/b; SF-SAC 2013-2015: I/6/c; SF-SAC 2016-2018: I/6/c; SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPASTREET2", - max_length=45, - null=True, - verbose_name="CPA Street Address", - ), - ), - migrations.AlterField( - model_name="general", - name="cpa_title", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/7/c; SF-SAC 2001-2003: I/7/c; SF-SAC 2004-2007: I/7/c; SF-SAC 2008-2009: I/6/c; SF-SAC 2010-2012: I/6/c; SF-SAC 2013-2015: I/6/d; SF-SAC 2016-2018: I/6/d; SF-SAC 2019-2021: I/6/d; SF-SAC 2022: I/6/d Census mapping: GENERAL, CPATITLE", - max_length=40, - verbose_name="Title of CPA Contact", - ), - ), - migrations.AlterField( - model_name="general", - name="cpa_zip_code", - field=models.IntegerField( - help_text="Data sources: SF-SAC 1997-2000: I/7/b; SF-SAC 2001-2003: I/7/b; SF-SAC 2004-2007: I/7/b; SF-SAC 2008-2009: I/6/b; SF-SAC 2010-2012: I/6/b; SF-SAC 2013-2015: I/6/c; SF-SAC 2016-2018: I/6/c; SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPAZIPCODE", - verbose_name="CPA Zip Code", - ), - ), - migrations.AlterField( - model_name="general", - name="current_or_former_findings", - field=models.BooleanField( - help_text="Data sources: SF-SAC 2001-2003: III/9; SF-SAC 2004-2007: III/8; SF-SAC 2008-2009: III/8; SF-SAC 2010-2012: III/8; SF-SAC 2013-2015: III/5; SF-SAC 2016-2018: III/3/d; SF-SAC 2019-2021: III/3/d; SF-SAC 2022: III/3/d Census mapping: GENERAL, CYFINDINGS", - null=True, - verbose_name="Indicate whether or not current year findings or prior year findings affecting direct funds were reported", - ), - ), - migrations.AlterField( - model_name="general", - name="dollar_threshold", - field=models.FloatField( - help_text="Data sources: SF-SAC 1997-2000: III/2; SF-SAC 2001-2003: III/3; SF-SAC 2004-2007: III/2; SF-SAC 2008-2009: III/2; SF-SAC 2010-2012: III/2; SF-SAC 2013-2015: III/2; SF-SAC 2016-2018: III/3/b; SF-SAC 2019-2021: III/3/b; SF-SAC 2022: III/3/b Census mapping: GENERAL, DOLLARTHRESHOLD", - null=True, - verbose_name="Dollar Threshold to distinguish between Type A and Type B programs.", - ), - ), - migrations.AlterField( - model_name="general", - name="duns", - field=models.IntegerField( - help_text="Data sources: SF-SAC 2004-2007: I/5/d; SF-SAC 2008-2009: I/4/d; SF-SAC 2010-2012: I/4/d; SF-SAC 2013-2015: I/4/d; SF-SAC 2016-2018: I/4/d; SF-SAC 2019-2021: I/4/d; SF-SAC 2022: I/4/d Census mapping: GENERAL, DUNS", - null=True, - verbose_name="Primary Data Universal Numbering System Number", - ), - ), - migrations.AlterField( - model_name="general", - name="dup_reports", - field=models.BooleanField( - help_text="Data sources: SF-SAC 2001-2003: III/2; SF-SAC 2004-2007: III/1; SF-SAC 2008-2009: III/1; SF-SAC 2010-2012: III/1; SF-SAC 2013-2015: III/1; SF-SAC 2016-2018: III/3/a; SF-SAC 2019-2021: III/3/a; SF-SAC 2022: III/3/a Census mapping: GENERAL, DUP_REPORTS", - null=True, - verbose_name="Whether or not the financial statements include departments that have separate expenditures not included in this audit", - ), - ), - migrations.AlterField( - model_name="general", - name="ein", - field=models.IntegerField( - help_text="Data sources: SF-SAC 1997-2000: I/5/a; SF-SAC 2001-2003: I/5/a; SF-SAC 2004-2007: I/5/a; SF-SAC 2008-2009: I/4/a; SF-SAC 2010-2012: I/4/a; SF-SAC 2013-2015: I/4/a; SF-SAC 2016-2018: I/4/a; SF-SAC 2019-2021: I/4/a; SF-SAC 2022: I/4/a Census mapping: GENERAL, EIN", - verbose_name="Primary Employer Identification Number", - ), - ), - migrations.AlterField( - model_name="general", - name="fy_end_date", - field=models.DateField( - help_text="Data sources: SF-SAC 1997-2000: Part I, Item 1; SF-SAC 2001-2003: Part I, Item 1; SF-SAC 2004-2007: Part I, Item 1; SF-SAC 2008-2009: Part I, Item 1; SF-SAC 2010-2012: Part I, Item 1; SF-SAC 2013-2015: Part I, Item 1; SF-SAC 2016-2018: Part I, Item 1; SF-SAC 2019-2021: I/1/b; SF-SAC 2022: I/1/b Census mapping: GENERAL, FYENDDATE", - verbose_name="Fiscal Year End Date", - ), - ), - migrations.AlterField( - model_name="general", - name="fy_start_date", - field=models.DateField( - help_text="Data sources: SF-SAC 2019-2021: Part I, Item 1(a); SF-SAC 2022: Part I, Item 1(a) Census mapping: GENERAL, FYSTARTDATE", - null=True, - verbose_name="Fiscal Year Start Date", - ), - ), - migrations.AlterField( - model_name="general", - name="going_concern", - field=models.BooleanField( - help_text="Data sources: SF-SAC 1997-2000: II/2; SF-SAC 2001-2003: II/2; SF-SAC 2004-2007: II/2; SF-SAC 2008-2009: II/2; SF-SAC 2010-2012: II/2; SF-SAC 2013-2015: II/2; SF-SAC 2016-2018: III/2/b; SF-SAC 2019-2021: III/2/b; SF-SAC 2022: III/2/b Census mapping: GENERAL, GOINGCONCERN", - null=True, - verbose_name="Whether or not the audit contained a going concern paragraph on financial statements", - ), - ), - migrations.AlterField( - model_name="general", - name="low_risk", - field=models.BooleanField( - help_text="Data sources: SF-SAC 1997-2000: III/3; SF-SAC 2001-2003: III/4; SF-SAC 2004-2007: III/3; SF-SAC 2008-2009: III/3; SF-SAC 2010-2012: III/3; SF-SAC 2013-2015: III/3; SF-SAC 2016-2018: III/3/c; SF-SAC 2019-2021: III/3/c; SF-SAC 2022: III/3/c Census mapping: GENERAL, LOWRISK", - null=True, - verbose_name="Indicate whether or not the auditee qualified as a low-risk auditee", - ), - ), - migrations.AlterField( - model_name="general", - name="material_noncompliance", - field=models.BooleanField( - help_text="Data sources: SF-SAC 1997-2000: II/5; SF-SAC 2001-2003: II/5; SF-SAC 2004-2007: II/5; SF-SAC 2008-2009: II/5; SF-SAC 2010-2012: II/5; SF-SAC 2013-2015: II/5; SF-SAC 2016-2018: III/2/e; SF-SAC 2019-2021: III/2/e; SF-SAC 2022: III/2/e Census mapping: GENERAL, MATERIALNONCOMPLIANCE", - null=True, - verbose_name="Whether or not the audit disclosed a material noncompliance on financial statements", - ), - ), - migrations.AlterField( - model_name="general", - name="material_weakness", - field=models.BooleanField( - help_text="Data sources: SF-SAC 1997-2000: II/4; SF-SAC 2001-2003: II/4; SF-SAC 2004-2007: II/4; SF-SAC 2008-2009: II/4; SF-SAC 2010-2012: II/4; SF-SAC 2013-2015: II/4; SF-SAC 2016-2018: III/2/d; SF-SAC 2019-2021: III/2/d; SF-SAC 2022: III/2/d Census mapping: GENERAL, MATERIALWEAKNESS", - null=True, - verbose_name="Whether or not the audit disclosed any reportable condition/significant deficiency as a material weakness on financial statements", - ), - ), - migrations.AlterField( - model_name="general", - name="material_weakness_major_program", - field=models.BooleanField( - help_text="Data sources: SF-SAC 2001-2003: III/6; SF-SAC 2004-2007: III/5; SF-SAC 2008-2009: III/5; SF-SAC 2010-2012: III/5 Census mapping: GENERAL, MATERIALWEAKNESS_MP", - null=True, - verbose_name="Indicate whether any reportable condition/signficant deficiency was disclosed as a material weakness for a major program in the Schedule of Findings and Questioned Costs", - ), - ), - migrations.AlterField( - model_name="general", - name="multiple_cpas", - field=models.BooleanField( - help_text="Data sources: SF-SAC 2008-2009: I/7/a; SF-SAC 2010-2012: I/7/a; SF-SAC 2013-2015: I/7; SF-SAC 2016-2018: I/7; SF-SAC 2019-2021: I/6/g; SF-SAC 2022: I/6/g Census mapping: GENERAL, MULTIPLE_CPAS", - null=True, - verbose_name="Identifies if the Submission Contains Multiple CPAs", - ), - ), - migrations.AlterField( - model_name="general", - name="multiple_duns", - field=models.BooleanField( - help_text="Data sources: SF-SAC 2004-2007: I/5/e; SF-SAC 2008-2009: I/4/e; SF-SAC 2010-2012: I/4/e; SF-SAC 2013-2015: I/4/e; SF-SAC 2016-2018: I/4/e; SF-SAC 2019-2021: I/4/e; SF-SAC 2022: I/4/e Census mapping: GENERAL, MULTIPLEDUNS", - null=True, - verbose_name="Identifies if the Submission Contains Multiple DUNS", - ), - ), - migrations.AlterField( - model_name="general", - name="multiple_eins", - field=models.BooleanField( - help_text="Data sources: SF-SAC 1997-2000: I/5/b; SF-SAC 2001-2003: I/5/b; SF-SAC 2004-2007: I/5/b; SF-SAC 2008-2009: I/4/b; SF-SAC 2010-2012: I/4/b; SF-SAC 2013-2015: I/4/b; SF-SAC 2016-2018: I/4/b; SF-SAC 2019-2021: I/4/b; SF-SAC 2022: I/4/b Census mapping: GENERAL, MULTIPLEEINS", - null=True, - verbose_name="Identifies if the Submission Contains Multiple EINs", - ), - ), - migrations.AlterField( - model_name="general", - name="number_months", - field=models.IntegerField( - help_text="Data sources: SF-SAC 1997-2000: I/3; SF-SAC 2001-2003: I/3; SF-SAC 2004-2007: I/3; SF-SAC 2008-2009: I/3; SF-SAC 2010-2012: I/3; SF-SAC 2013-2015: I/3; SF-SAC 2016-2018: I/3; SF-SAC 2019-2021: I/3; SF-SAC 2022: I/3 Census mapping: GENERAL, NUMBERMONTHS", - null=True, - verbose_name="Number of Months Covered by the 'Other' Audit Period", - ), - ), - migrations.AlterField( - model_name="general", - name="oversight_agency", - field=models.IntegerField( - help_text="Data sources: SF-SAC 1997-2000: I/9; SF-SAC 2001-2003: I/9 Census mapping: GENERAL, OVERSIGHTAGENCY", - null=True, - verbose_name="Two digit Federal agency prefix of the oversight agency", - ), - ), - migrations.AlterField( - model_name="general", - name="period_covered", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/3; SF-SAC 2001-2003: I/3; SF-SAC 2004-2007: I/3; SF-SAC 2008-2009: I/3; SF-SAC 2010-2012: I/3; SF-SAC 2013-2015: I/3; SF-SAC 2016-2018: I/3; SF-SAC 2019-2021: I/3; SF-SAC 2022: I/3 Census mapping: GENERAL, PERIODCOVERED", - max_length=40, - verbose_name="Audit Period Covered by Audit", - ), - ), - migrations.AlterField( - model_name="general", - name="prior_year_schedule", - field=models.BooleanField( - help_text="Data sources: SF-SAC 2001-2003: III/8; SF-SAC 2004-2007: III/7; SF-SAC 2008-2009: III/7; SF-SAC 2010-2012: III/7; SF-SAC 2013-2015: III/4 Census mapping: GENERAL, PYSCHEDULE", - null=True, - verbose_name="Indicate whether or not the report includes a Summary Schedule of Prior Year Audit Findings", - ), - ), - migrations.AlterField( - model_name="general", - name="questioned_costs", - field=models.BooleanField( - help_text="Data sources: SF-SAC 2001-2003: III/7; SF-SAC 2004-2007: III/6; SF-SAC 2008-2009: III/6; SF-SAC 2010-2012: III/6 Census mapping: GENERAL, QCOSTS", - null=True, - verbose_name="Indicate whether or not the audit disclosed any known questioned costs.", - ), - ), - migrations.AlterField( - model_name="general", - name="report_required", - field=models.BooleanField( - help_text="Data sources: SF-SAC 1997-2000: III/5; SF-SAC 2001-2003: III/9; SF-SAC 2004-2007: III/8 Census mapping: GENERAL, REPORTREQUIRED", - null=True, - verbose_name="Distribution to Federal Agency required?", - ), - ), - migrations.AlterField( - model_name="general", - name="sp_framework", - field=models.CharField( - help_text="Data sources: SF-SAC 2016-2018: III/2/a/ii; SF-SAC 2019-2021: III/2/a/i; SF-SAC 2022: III/2/a/i Census mapping: GENERAL, SP_FRAMEWORK", - max_length=40, - null=True, - verbose_name="Special Purpose Framework that was used as the basis of accounting", - ), - ), - migrations.AlterField( - model_name="general", - name="sp_framework_required", - field=models.BooleanField( - help_text="Data sources: SF-SAC 2016-2018: III/2/a/iii; SF-SAC 2019-2021: III/2/a/ii; SF-SAC 2022: III/2/a/ii Census mapping: GENERAL, SP_FRAMEWORK_REQUIRED", - null=True, - verbose_name="Indicate whether or not the special purpose framework used as basis of accounting by state law or tribal law", - ), - ), - migrations.AlterField( - model_name="general", - name="state", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/b; SF-SAC 2001-2003: I/6/b; SF-SAC 2004-2007: I/6/b; SF-SAC 2008-2009: I/5/b; SF-SAC 2010-2012: I/5/b; SF-SAC 2013-2015: I/5/b; SF-SAC 2016-2018: I/5/b; SF-SAC 2019-2021: I/5/b; SF-SAC 2022: I/5/b Census mapping: GENERAL, STATE", - max_length=2, - verbose_name="Auditee State", - ), - ), - migrations.AlterField( - model_name="general", - name="street1", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/b; SF-SAC 2001-2003: I/6/b; SF-SAC 2004-2007: I/6/b; SF-SAC 2008-2009: I/5/b; SF-SAC 2010-2012: I/5/b; SF-SAC 2013-2015: I/5/b; SF-SAC 2016-2018: I/5/b; SF-SAC 2019-2021: I/5/b; SF-SAC 2022: I/5/b Census mapping: GENERAL, STREET1", - max_length=45, - verbose_name="Auditee Street Address", - ), - ), - migrations.AlterField( - model_name="general", - name="street2", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/b; SF-SAC 2001-2003: I/6/b; SF-SAC 2004-2007: I/6/b; SF-SAC 2008-2009: I/5/b; SF-SAC 2010-2012: I/5/b; SF-SAC 2013-2015: I/5/b; SF-SAC 2016-2018: I/5/b; SF-SAC 2019-2021: I/5/b; SF-SAC 2022: I/5/b Census mapping: GENERAL, STREET2", - max_length=45, - null=True, - verbose_name="Auditee Street Address", - ), - ), - migrations.AlterField( - model_name="general", - name="total_fed_expenditures", - field=models.BigIntegerField( - help_text="Data sources: SF-SAC 1997-2000: III/6/c- Total; SF-SAC 2001-2003: III/10/d -Total; SF-SAC 2004-2007: III/9/e -Total; SF-SAC 2008-2009: III/9/e -Total; SF-SAC 2010-2012: III/9/f -Total; SF-SAC 2013-2015: III/6/d -Total; SF-SAC 2016-2018: II/1/e- Total; SF-SAC 2019-2021: II/1/e - Total; SF-SAC 2022: II/1/e - Total Census mapping: GENERAL, TOTFEDEXPEND", - verbose_name="Total Federal Expenditures", - ), - ), - migrations.AlterField( - model_name="general", - name="type_report_financial_statements", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: II/1; SF-SAC 2001-2003: II/1; SF-SAC 2004-2007: II/1; SF-SAC 2008-2009: II/1; SF-SAC 2010-2012: II/1; SF-SAC 2013-2015: II/1; SF-SAC 2016-2018: III/2/a/i; SF-SAC 2019-2021: III/2/a; SF-SAC 2022: III/2/a Census mapping: GENERAL, TYPEREPORT_FS", - max_length=40, - null=True, - verbose_name="Type of Report Issued on the Financial Statements", - ), - ), - migrations.AlterField( - model_name="general", - name="type_report_major_program", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: III/1; SF-SAC 2001-2003: III/1 Census mapping: GENERAL, TYPEREPORT_MP", - max_length=40, - null=True, - verbose_name="Type of Report Issued on the Major Program Compliance", - ), - ), - migrations.AlterField( - model_name="general", - name="type_report_special_purpose_framework", - field=models.CharField( - help_text="Data sources: SF-SAC 2016-2018: III/2/a/iv; SF-SAC 2019-2021: III/2/a/iii; SF-SAC 2022: III/2/a/iii Census mapping: GENERAL, TYPEREPORT_SP_FRAMEWORK", - max_length=40, - null=True, - verbose_name="The auditor's opinion on the special purpose framework", - ), - ), - migrations.AlterField( - model_name="general", - name="zip_code", - field=models.IntegerField( - help_text="Data sources: SF-SAC 1997-2000: I/6/b; SF-SAC 2001-2003: I/6/b; SF-SAC 2004-2007: I/6/b; SF-SAC 2008-2009: I/5/b; SF-SAC 2010-2012: I/5/b; SF-SAC 2013-2015: I/5/b; SF-SAC 2016-2018: I/5/b; SF-SAC 2019-2021: I/5/b; SF-SAC 2022: I/5/b Census mapping: GENERAL, ZIPCODE", - verbose_name="Auditee Zipcode", - ), - ), - migrations.AlterField( - model_name="multiplecpasinfo", - name="cpa_city", - field=models.CharField( - help_text="Data sources: SF-SAC 2008-2009: I/8/b; SF-SAC 2010-2012: I/8/b; SF-SAC 2013-2015: I/8/d; SF-SAC 2016-2018: I/8/d; SF-SAC 2019-2021: I/6/h/iv; SF-SAC 2022: I/6/h/iv Census mapping: MULTIPLE CPAS INFO, CPACITY", - max_length=30, - verbose_name="CPA City", - ), - ), - migrations.AlterField( - model_name="multiplecpasinfo", - name="cpa_contact", - field=models.CharField( - help_text="Data sources: SF-SAC 2008-2009: I/8/c; SF-SAC 2010-2012: I/8/c; SF-SAC 2013-2015: I/8/g; SF-SAC 2016-2018: I/8/g; SF-SAC 2019-2021: I/6/h/vii; SF-SAC 2022: I/6/h/vii Census mapping: MULTIPLE CPAS INFO, CPACONTACT", - max_length=50, - verbose_name="Name of CPA Contact", - ), - ), - migrations.AlterField( - model_name="multiplecpasinfo", - name="cpa_ein", - field=models.IntegerField( - help_text="Data sources: SF-SAC 2013-2015: I/8/b; SF-SAC 2016-2018: I/8/b; SF-SAC 2019-2021: I/6/h/ii; SF-SAC 2022: I/6/h/ii Census mapping: MULTIPLE CPAS INFO, CPAEIN", - null=True, - verbose_name="CPA Firm EIN (only available for audit years 2013 and beyond)", - ), - ), - migrations.AlterField( - model_name="multiplecpasinfo", - name="cpa_email", - field=models.CharField( - help_text="Data sources: SF-SAC 2008-2009: I/8/f; SF-SAC 2010-2012: I/8/f; SF-SAC 2013-2015: I/8/k; SF-SAC 2016-2018: I/8/k; SF-SAC 2019-2021: I/6/h/x; SF-SAC 2022: I/6/h/x Census mapping: MULTIPLE CPAS INFO, CPAEMAIL", - max_length=60, - null=True, - verbose_name="CPA mail address (optional)", - ), - ), - migrations.AlterField( - model_name="multiplecpasinfo", - name="cpa_fax", - field=models.PositiveBigIntegerField( - help_text="Data sources: SF-SAC 2008-2009: I/8/e; SF-SAC 2010-2012: I/8/e; SF-SAC 2013-2015: I/8/j; SF-SAC 2016-2018: I/8/j Census mapping: MULTIPLE CPAS INFO, CPAFAX", - null=True, - verbose_name="CPA fax number (optional)", - ), - ), - migrations.AlterField( - model_name="multiplecpasinfo", - name="cpa_firm_name", - field=models.CharField( - help_text="Data sources: SF-SAC 2008-2009: I/8/a; SF-SAC 2010-2012: I/8/a; SF-SAC 2013-2015: I/8/a; SF-SAC 2016-2018: I/8/a; SF-SAC 2019-2021: I/6/h/i; SF-SAC 2022: I/6/h/i Census mapping: MULTIPLE CPAS INFO, CPAFIRMNAME", - max_length=64, - verbose_name="CPA Firm Name", - ), - ), - migrations.AlterField( - model_name="multiplecpasinfo", - name="cpa_phone", - field=models.PositiveBigIntegerField( - help_text="Data sources: SF-SAC 2008-2009: I/8/d; SF-SAC 2010-2012: I/8/d; SF-SAC 2013-2015: I/8/i; SF-SAC 2016-2018: I/8/i; SF-SAC 2019-2021: I/6/h/ix; SF-SAC 2022: I/6/h/ix Census mapping: MULTIPLE CPAS INFO, CPAPHONE", - null=True, - verbose_name="CPA phone number", - ), - ), - migrations.AlterField( - model_name="multiplecpasinfo", - name="cpa_state", - field=models.CharField( - help_text="Data sources: SF-SAC 2008-2009: I/8/b; SF-SAC 2010-2012: I/8/b; SF-SAC 2013-2015: I/8/e; SF-SAC 2016-2018: I/8/e; SF-SAC 2019-2021: I/6/h/v; SF-SAC 2022: I/6/h/v Census mapping: MULTIPLE CPAS INFO, CPASTATE", - max_length=2, - verbose_name="CPA State", - ), - ), - migrations.AlterField( - model_name="multiplecpasinfo", - name="cpa_street1", - field=models.CharField( - help_text="Data sources: SF-SAC 2008-2009: I/8/b; SF-SAC 2010-2012: I/8/b; SF-SAC 2013-2015: I/8/c; SF-SAC 2016-2018: I/8/c; SF-SAC 2019-2021: I/6/h/iii; SF-SAC 2022: I/6/h/iii Census mapping: MULTIPLE CPAS INFO, CPASTREET1", - max_length=45, - verbose_name="CPA Street Address", - ), - ), - migrations.AlterField( - model_name="multiplecpasinfo", - name="cpa_title", - field=models.CharField( - help_text="Data sources: SF-SAC 2008-2009: I/8/c; SF-SAC 2010-2012: I/8/c; SF-SAC 2013-2015: I/8/h; SF-SAC 2016-2018: I/8/h; SF-SAC 2019-2021: I/6/h/viii; SF-SAC 2022: I/6/h/viii Census mapping: MULTIPLE CPAS INFO, CPATITLE", - max_length=40, - verbose_name="Title of CPA Contact", - ), - ), - migrations.AlterField( - model_name="multiplecpasinfo", - name="cpa_zip_code", - field=models.IntegerField( - help_text="Data sources: SF-SAC 2008-2009: I/8/b; SF-SAC 2010-2012: I/8/b; SF-SAC 2013-2015: I/8/f; SF-SAC 2016-2018: I/8/f; SF-SAC 2019-2021: I/6/h/vi; SF-SAC 2022: I/6/h/vi Census mapping: MULTIPLE CPAS INFO, CPAZIPCODE", - null=True, - verbose_name="CPA Zip Code", - ), - ), - migrations.AlterField( - model_name="notes", - name="content", - field=models.TextField( - help_text="Data sources: SF-SAC 2019-2021: II/2; SF-SAC 2022: II/2 Census mapping: NOTES, CONTENT", - verbose_name="Content of the Note", - ), - ), - migrations.AlterField( - model_name="notes", - name="title", - field=models.CharField( - help_text="Data sources: SF-SAC 2019-2021: II/2; SF-SAC 2022: II/2 Census mapping: NOTES, TITLE", - max_length=75, - verbose_name="Note Title", - ), - ), - migrations.AlterField( - model_name="passthrough", - name="passthrough_id", - field=models.CharField( - help_text="Data sources: SF-SAC 2016-2018: II/1/m; SF-SAC 2019-2021: II/1/m; SF-SAC 2022: II/1/m Census mapping: PASSTHROUGH, PASSTHROUGHID", - max_length=70, - verbose_name="Identifying Number Assigned by the Pass-through Entity", - ), - ), - migrations.AlterField( - model_name="passthrough", - name="passthrough_name", - field=models.CharField( - help_text="Data sources: SF-SAC 2016-2018: II/1/l; SF-SAC 2019-2021: II/1/l; SF-SAC 2022: II/1/l Census mapping: PASSTHROUGH, PASSTHROUGHNAME", - max_length=70, - verbose_name="Name of Pass-through Entity", - ), - ), - migrations.AlterField( - model_name="ueiinfo", - name="uei", - field=models.CharField( - help_text="Data sources: SF-SAC 2004-2007: I/5/f; SF-SAC 2008-2009: I/4/f; SF-SAC 2010-2012: I/4/f; SF-SAC 2013-2015: I/4/f; SF-SAC 2016-2018: I/4/f; SF-SAC 2019-2021: I/4/f; SF-SAC 2022: I/4/i Census mapping: UEI INFO, UEI", - max_length=12, - verbose_name="Multiple Unique Entity Identifier Numbers", - ), - ), - migrations.AddField( - model_name="general", - name="auditee", - field=models.ForeignKey( - null=True, - on_delete=django.db.models.deletion.CASCADE, - to="data_distro.auditee", - ), - ), - migrations.AddField( - model_name="general", - name="auditor", - field=models.ManyToManyField(to="data_distro.auditor"), - ), - migrations.AlterField( - model_name="general", - name="cap_text", - field=models.ForeignKey( - null=True, - on_delete=django.db.models.deletion.CASCADE, - to="data_distro.captext", - ), - ), - migrations.DeleteModel( - name="Capext", - ), - ] diff --git a/backend/data_distro/migrations/0005_delete_duplicate_fields.py b/backend/data_distro/migrations/0005_delete_duplicate_fields.py deleted file mode 100644 index 9a89a9cae..000000000 --- a/backend/data_distro/migrations/0005_delete_duplicate_fields.py +++ /dev/null @@ -1,244 +0,0 @@ -""" -In the last migration we added the fields we were moving to their new classes. This deletes the old fields that are no longer needed. -""" - -# Generated by Django 4.1.4 on 2023-01-26 11:32 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("data_distro", "0004_add_new_models"), - ] - - operations = [ - migrations.DeleteModel( - name="DunsInfo", - ), - migrations.DeleteModel( - name="EinInfo", - ), - migrations.DeleteModel( - name="MultipleCpasInfo", - ), - migrations.DeleteModel( - name="UeiInfo", - ), - migrations.RemoveField( - model_name="auditor", - name="audit_year", - ), - migrations.RemoveField( - model_name="general", - name="auditee_certify_name", - ), - migrations.RemoveField( - model_name="general", - name="auditee_certify_title", - ), - migrations.RemoveField( - model_name="general", - name="auditee_contact", - ), - migrations.RemoveField( - model_name="general", - name="auditee_email", - ), - migrations.RemoveField( - model_name="general", - name="auditee_fax", - ), - migrations.RemoveField( - model_name="general", - name="auditee_name", - ), - migrations.RemoveField( - model_name="general", - name="auditee_name_title", - ), - migrations.RemoveField( - model_name="general", - name="auditee_phone", - ), - migrations.RemoveField( - model_name="general", - name="auditee_title", - ), - migrations.RemoveField( - model_name="general", - name="auditor_ein", - ), - migrations.RemoveField( - model_name="general", - name="city", - ), - migrations.RemoveField( - model_name="general", - name="cpa_city", - ), - migrations.RemoveField( - model_name="general", - name="cpa_contact", - ), - migrations.RemoveField( - model_name="general", - name="cpa_country", - ), - migrations.RemoveField( - model_name="general", - name="cpa_email", - ), - migrations.RemoveField( - model_name="general", - name="cpa_fax", - ), - migrations.RemoveField( - model_name="general", - name="cpa_firm_name", - ), - migrations.RemoveField( - model_name="general", - name="cpa_foreign", - ), - migrations.RemoveField( - model_name="general", - name="cpa_phone", - ), - migrations.RemoveField( - model_name="general", - name="cpa_state", - ), - migrations.RemoveField( - model_name="general", - name="cpa_street1", - ), - migrations.RemoveField( - model_name="general", - name="cpa_street2", - ), - migrations.RemoveField( - model_name="general", - name="cpa_title", - ), - migrations.RemoveField( - model_name="general", - name="cpa_zip_code", - ), - migrations.RemoveField( - model_name="general", - name="duns", - ), - migrations.RemoveField( - model_name="general", - name="ein", - ), - migrations.RemoveField( - model_name="general", - name="ein_subcode", - ), - migrations.RemoveField( - model_name="general", - name="multiple_cpas", - ), - migrations.RemoveField( - model_name="general", - name="multiple_duns", - ), - migrations.RemoveField( - model_name="general", - name="multiple_eins", - ), - migrations.RemoveField( - model_name="general", - name="multiple_ueis", - ), - migrations.RemoveField( - model_name="general", - name="state", - ), - migrations.RemoveField( - model_name="general", - name="street1", - ), - migrations.RemoveField( - model_name="general", - name="street2", - ), - migrations.RemoveField( - model_name="general", - name="uei", - ), - migrations.RemoveField( - model_name="general", - name="zip_code", - ), - migrations.AddField( - model_name="auditee", - name="ein", - field=models.IntegerField( - default=0, - help_text="Data sources: SF-SAC 1997-2000: I/5/a; SF-SAC 2001-2003: I/5/a; SF-SAC 2004-2007: I/5/a; SF-SAC 2008-2009: I/4/a; SF-SAC 2010-2012: I/4/a; SF-SAC 2013-2015: I/4/a; SF-SAC 2016-2018: I/4/a; SF-SAC 2019-2021: I/4/a; SF-SAC 2022: I/4/a Census mapping: GENERAL, EIN", - verbose_name="Primary Employer Identification Number", - ), - preserve_default=False, - ), - migrations.AddField( - model_name="auditee", - name="ein_subcode", - field=models.IntegerField( - help_text="Census mapping: GENERAL, EINSUBCODE", - null=True, - verbose_name="Subcode assigned to the EIN", - ), - ), - migrations.AddField( - model_name="auditor", - name="auditor_ein", - field=models.IntegerField( - default=0, - help_text="Data sources: SF-SAC 2013-2015: I/6/b; SF-SAC 2016-2018: I/6/b; SF-SAC 2019-2021: I/6/b; SF-SAC 2022: I/6/b Census mapping: GENERAL, AUDITOR_EIN", - verbose_name="CPA Firm EIN (only available for audit years 2013 and beyond)", - ), - preserve_default=False, - ), - migrations.AddField( - model_name="auditor", - name="cpa_country", - field=models.CharField( - help_text="Data sources: SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPACOUNTRY", - max_length=6, - null=True, - verbose_name="CPA Country", - ), - ), - migrations.AddField( - model_name="auditor", - name="cpa_foreign", - field=models.CharField( - help_text="Data sources: SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPAFOREIGN", - max_length=200, - null=True, - verbose_name="CPA Address - if international", - ), - ), - migrations.AlterField( - model_name="auditee", - name="zip_code", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/b; SF-SAC 2001-2003: I/6/b; SF-SAC 2004-2007: I/6/b; SF-SAC 2008-2009: I/5/b; SF-SAC 2010-2012: I/5/b; SF-SAC 2013-2015: I/5/b; SF-SAC 2016-2018: I/5/b; SF-SAC 2019-2021: I/5/b; SF-SAC 2022: I/5/b Census mapping: GENERAL, ZIPCODE", - max_length=12, - verbose_name="Auditee Zip Code", - ), - ), - migrations.AlterField( - model_name="auditor", - name="cpa_zip_code", - field=models.CharField( - help_text="Data sources: SF-SAC 2008-2009: I/8/b; SF-SAC 2010-2012: I/8/b; SF-SAC 2013-2015: I/8/f; SF-SAC 2016-2018: I/8/f; SF-SAC 2019-2021: I/6/h/vi; SF-SAC 2022: I/6/h/vi Census mapping: MULTIPLE CPAS INFO, CPAZIPCODE", - max_length=12, - null=True, - verbose_name="CPA Zip Code", - ), - ), - ] diff --git a/backend/data_distro/migrations/0006_modify_models_to_work_with_2022_data.py b/backend/data_distro/migrations/0006_modify_models_to_work_with_2022_data.py deleted file mode 100644 index e707ec19d..000000000 --- a/backend/data_distro/migrations/0006_modify_models_to_work_with_2022_data.py +++ /dev/null @@ -1,571 +0,0 @@ -# Generated by Django 4.1.4 on 2023-02-01 16:19 - -import django.contrib.postgres.fields -from django.db import migrations, models - - -class Migration(migrations.Migration): - replaces = [ - ("data_distro", "0006_modify_models_to_work_with_data"), - ( - "data_distro", - "0007_remove_auditee_dbkey_list_remove_auditor_dbkey_list_and_more", - ), - ("data_distro", "0008_alter_auditee_auditee_name_title_and_more"), - ] - - dependencies = [ - ("data_distro", "0005_delete_duplicate_fields"), - ] - - operations = [ - migrations.RemoveField( - model_name="cfdainfo", - name="ein", - ), - migrations.AlterField( - model_name="cfdainfo", - name="questioned_costs", - field=models.CharField( - help_text="Census mapping: CFDA INFO, QCOSTS2", - max_length=40, - null=True, - verbose_name="Questioned Costs", - ), - ), - migrations.AlterField( - model_name="general", - name="date_firewall", - field=models.DateField( - help_text="Census mapping: GENERAL, DATEFIREWALL", null=True - ), - ), - migrations.AlterField( - model_name="general", - name="previous_date_firewall", - field=models.DateField( - help_text="Census mapping: GENERAL, PREVIOUSDATEFIREWALL", null=True - ), - ), - migrations.RemoveField( - model_name="general", - name="condition_or_deficiency", - ), - migrations.AddField( - model_name="general", - name="reportable_condition", - field=models.BooleanField( - help_text="Data sources: SF-SAC 1997-2000: II/3; SF-SAC 2001-2003: II/3; SF-SAC 2004-2007: II/3; SF-SAC 2008-2009: II/3; SF-SAC 2010-2012: II/3; SF-SAC 2013-2015: II/3; SF-SAC 2016-2018: III/2/c; SF-SAC 2019-2021: III/2/c; SF-SAC 2022: III/2/c Census mapping: GENERAL, REPORTABLECONDITION", - null=True, - verbose_name="Whether or not the audit disclosed a reportable condition on financial statements", - ), - ), - migrations.AddField( - model_name="general", - name="significant_deficiency", - field=models.BooleanField( - help_text="Data sources: SF-SAC 1997-2000: II/3; SF-SAC 2001-2003: II/3; SF-SAC 2004-2007: II/3; SF-SAC 2008-2009: II/3; SF-SAC 2010-2012: II/3; SF-SAC 2013-2015: II/3; SF-SAC 2016-2018: III/2/c; SF-SAC 2019-2021: III/2/c; SF-SAC 2022: III/2/c Census mapping: GENERAL, SIGNIFICANTDEFICIENCY", - null=True, - verbose_name="Whether or not the audit disclosed a significant deficiency on financial statements", - ), - ), - migrations.AlterField( - model_name="findings", - name="significant_deficiency", - field=models.BooleanField( - help_text="Data sources: SF-SAC 1997-2000: II/3; SF-SAC 2001-2003: II/3; SF-SAC 2004-2007: II/3; SF-SAC 2008-2009: II/3; SF-SAC 2010-2012: II/3; SF-SAC 2013-2015: II/3; SF-SAC 2016-2018: III/2/c; SF-SAC 2019-2021: III/2/c; SF-SAC 2022: III/2/c Census mapping: FINDINGS, SIGNIFICANTDEFICIENCY", - null=True, - verbose_name="Significant Deficiency finding", - ), - ), - migrations.AlterField( - model_name="general", - name="cognizant_agency_over", - field=models.CharField( - help_text="Census mapping: GENERAL, COG_OVER", max_length=2, null=True - ), - ), - migrations.RemoveField( - model_name="auditor", - name="dbkey", - ), - migrations.AlterField( - model_name="findings", - name="finding_ref_nums", - field=models.CharField( - help_text="Data sources: SF-SAC 2013-2015: III/7/d; SF-SAC 2016-2018: III/4/e; SF-SAC 2019-2021: III/4/e; SF-SAC 2022: III/4/e Census mapping: FINDINGS, FINDINGSREFNUMS", - max_length=100, - verbose_name="Findings Reference Numbers", - ), - ), - migrations.AlterField( - model_name="findings", - name="prior_finding_ref_nums", - field=models.CharField( - help_text="Data sources: SF-SAC 2016-2018: III/4/n; SF-SAC 2019-2021: III/4/n; SF-SAC 2022: III/4/n Census mapping: FINDINGS, PRIORFINDINGREFNUMS", - max_length=100, - null=True, - verbose_name="Audit finding reference numbers from the immediate prior audit", - ), - ), - migrations.AlterField( - model_name="findings", - name="type_requirement", - field=models.CharField( - help_text="Data sources: SF-SAC 2013-2015: III/7/e; SF-SAC 2016-2018: III/4/f; SF-SAC 2019-2021: III/4/f; SF-SAC 2022: III/4/f Census mapping: FINDINGS, TYPEREQUIREMENT", - max_length=40, - null=True, - verbose_name="Type Requirement Failure", - ), - ), - migrations.AlterField( - model_name="cfdainfo", - name="award_identification", - field=models.CharField( - help_text="Data sources: SF-SAC 2016-2018: II/1/c; SF-SAC 2019-2021: II/1/c; SF-SAC 2022: II/1/c Census mapping: CFDA INFO, AWARDIDENTIFICATION", - max_length=50, - null=True, - verbose_name="Other data used to identify the award which is not a CFDA number (e.g., program year, contract number)", - ), - ), - migrations.AlterField( - model_name="cfdainfo", - name="findings", - field=models.TextField( - help_text="Census mapping: CFDA INFO, FINDINGS", - null=True, - verbose_name="Items on the Findings page", - ), - ), - migrations.AlterField( - model_name="cfdainfo", - name="research_and_development", - field=models.BooleanField( - help_text="Data sources: SF-SAC 2001-2003: III/10/b; SF-SAC 2004-2007: III/9/c; SF-SAC 2008-2009: III/9/c; SF-SAC 2010-2012: III/9/c; SF-SAC 2013-2015: III/6/e Census mapping: CFDA INFO, RD", - null=True, - verbose_name="Indicate whether or not the program is a Research and Development program", - ), - ), - migrations.AddField( - model_name="cfdainfo", - name="auditor_ein", - field=models.IntegerField( - help_text="Census mapping: GENERAL, AUDITOR_EIN", - null=True, - verbose_name="Primary Employer Identification Number", - ), - ), - migrations.AlterField( - model_name="cfdainfo", - name="type_report_major_program", - field=models.CharField( - help_text="Data sources: SF-SAC 2004-2007: III/9/h; SF-SAC 2008-2009: III/9/h; SF-SAC 2010-2012: III/9/i; SF-SAC 2013-2015: III/6/j; SF-SAC 2016-2018: III/1/b; SF-SAC 2019-2021: III/1/b; SF-SAC 2022: III/1/b Census mapping: CFDA INFO, TYPEREPORT_MP", - max_length=40, - null=True, - verbose_name="Type of Report Issued on the Major Program Compliance", - ), - ), - migrations.AlterField( - model_name="cfdainfo", - name="cfda_program_name", - field=models.CharField( - help_text="Census mapping: CFDA INFO, CFDAPROGRAMNAME", - max_length=300, - null=True, - verbose_name="Name of Federal Program (auto-generated by FAC from the CFDA catalog)", - ), - ), - migrations.AlterField( - model_name="notes", - name="note_index", - field=models.IntegerField( - help_text="Census mapping: NOTES, NOTE_INDEX", - null=True, - verbose_name="Display Index for the Note", - ), - ), - migrations.AlterField( - model_name="general", - name="agency", - field=models.ManyToManyField(null=True, to="data_distro.agencies"), - ), - migrations.AlterField( - model_name="general", - name="auditor", - field=models.ManyToManyField(null=True, to="data_distro.auditor"), - ), - migrations.AlterField( - model_name="revisions", - name="cap", - field=models.CharField( - help_text="Census mapping: REVISIONS, CAP", - max_length=6, - null=True, - verbose_name="Indicates what items on the CAP Text page were edited during the revision", - ), - ), - migrations.AlterField( - model_name="revisions", - name="cap_explain", - field=models.TextField( - help_text="Census mapping: REVISIONS, CAP_EXPLAIN", - null=True, - verbose_name="Explanation of what items on the CAP Text page were edited during the revision", - ), - ), - migrations.AlterField( - model_name="revisions", - name="federal_awards_explain", - field=models.TextField( - help_text="Census mapping: REVISIONS, FEDERALAWARDS_EXPLAIN", - null=True, - verbose_name="Explanation of what items on the Federal Awards page were edited during the revision", - ), - ), - migrations.AlterField( - model_name="revisions", - name="findings", - field=models.CharField( - help_text="Census mapping: REVISIONS, FINDINGS", - max_length=110, - null=True, - verbose_name="Indicates what items on the Findings page were edited during the revision", - ), - ), - migrations.AlterField( - model_name="revisions", - name="findings_explain", - field=models.TextField( - help_text="Census mapping: REVISIONS, FINDINGS_EXPLAIN", - null=True, - verbose_name="Explanation of what items on the Findings page were edited during the revision", - ), - ), - migrations.AlterField( - model_name="revisions", - name="findings_text", - field=models.CharField( - help_text="Census mapping: REVISIONS, FINDINGSTEXT", - max_length=6, - null=True, - verbose_name="Indicates what items on the Text of the Audit Findings page were edited during the revision", - ), - ), - migrations.AlterField( - model_name="revisions", - name="findings_text_explain", - field=models.TextField( - help_text="Census mapping: REVISIONS, FINDINGSTEXT_EXPLAIN", - null=True, - verbose_name="Explanation of what items on the Text of the Audit Findings page were edited during the revision", - ), - ), - migrations.AlterField( - model_name="revisions", - name="general_info", - field=models.CharField( - help_text="Census mapping: REVISIONS, GENINFO", - max_length=75, - null=True, - verbose_name="Indicates what items on the General Info page were edited during the revision", - ), - ), - migrations.AlterField( - model_name="revisions", - name="notes_to_sefa", - field=models.CharField( - help_text="Census mapping: REVISIONS, NOTESTOSEFA", - max_length=50, - null=True, - verbose_name="Indicates what items on the Notes to SEFA page were edited during the revision", - ), - ), - migrations.AlterField( - model_name="revisions", - name="notes_to_sefa_explain", - field=models.TextField( - help_text="Census mapping: REVISIONS, NOTESTOSEFA_EXPLAIN", - null=True, - verbose_name="Explanation of what items on the Notes to SEFA page were edited during the revision", - ), - ), - migrations.AlterField( - model_name="revisions", - name="other", - field=models.CharField( - help_text="Census mapping: REVISIONS, OTHER", - max_length=65, - null=True, - verbose_name="Indicates what other miscellaneous items were edited during the revision", - ), - ), - migrations.AlterField( - model_name="revisions", - name="other_explain", - field=models.TextField( - help_text="Census mapping: REVISIONS, OTHER_EXPLAIN", - null=True, - verbose_name="Explanation of what other miscellaneous items were edited during the revision", - ), - ), - migrations.AlterField( - model_name="general", - name="agency", - field=models.ManyToManyField(to="data_distro.agencies"), - ), - migrations.AlterField( - model_name="general", - name="auditor", - field=models.ManyToManyField(to="data_distro.auditor"), - ), - migrations.AlterField( - model_name="revisions", - name="general_info_explain", - field=models.CharField( - help_text="Census mapping: REVISIONS, GENINFO_EXPLAIN", - max_length=150, - null=True, - verbose_name="Explanation of what items on the General Info page were edited during the revision", - ), - ), - migrations.AlterField( - model_name="revisions", - name="auditinfo_explain", - field=models.TextField( - help_text="Census mapping: REVISIONS, AUDITINFO_EXPLAIN", - null=True, - verbose_name="Explanation of what items on the Audit Info page were edited during the revision", - ), - ), - migrations.AlterField( - model_name="revisions", - name="audit_info", - field=models.CharField( - help_text="Census mapping: REVISIONS, AUDITINFO", - max_length=200, - null=True, - verbose_name="Indicates what items on the Audit Info page were edited during the revision", - ), - ), - migrations.AlterField( - model_name="revisions", - name="federal_awards", - field=models.CharField( - help_text="Census mapping: REVISIONS, FEDERALAWARDS", - max_length=140, - null=True, - verbose_name="Indicates what items on the Federal Awards page were edited during the revision", - ), - ), - migrations.AlterField( - model_name="revisions", - name="elec_report_revision_id", - field=models.IntegerField( - help_text="Census mapping: REVISIONS, ELECRPTREVISIONID", - null=True, - verbose_name="Internal Unique Identifier for the record", - ), - ), - migrations.AlterField( - model_name="agencies", - name="agency_cfda", - field=models.IntegerField( - help_text="Data sources: SF-SAC 1997-2000: III/5; SF-SAC 2001-2003: III/9; SF-SAC 2004-2007: III/8; SF-SAC 2008-2009: III/8; SF-SAC 2010-2012: III/8; SF-SAC 2013-2015: III/5; SF-SAC 2016-2018: III/3/d; SF-SAC 2019-2021: III/3/d; SF-SAC 2022: III/3/d Census mapping: AGENCIES, AGENCY", - verbose_name="2-digit prefix of Federal Agency requiring copy of audit report", - ), - ), - migrations.AlterField( - model_name="passthrough", - name="passthrough_id", - field=models.CharField( - help_text="Data sources: SF-SAC 2016-2018: II/1/m; SF-SAC 2019-2021: II/1/m; SF-SAC 2022: II/1/m Census mapping: PASSTHROUGH, PASSTHROUGHID", - max_length=70, - null=True, - verbose_name="Identifying Number Assigned by the Pass-through Entity", - ), - ), - migrations.AlterField( - model_name="passthrough", - name="passthrough_name", - field=models.CharField( - help_text="Data sources: SF-SAC 2016-2018: II/1/l; SF-SAC 2019-2021: II/1/l; SF-SAC 2022: II/1/l Census mapping: PASSTHROUGH, PASSTHROUGHNAME", - max_length=70, - null=True, - verbose_name="Name of Pass-through Entity", - ), - ), - migrations.AlterField( - model_name="general", - name="total_fed_expenditures", - field=models.BigIntegerField( - help_text="Data sources: SF-SAC 1997-2000: III/6/c- Total; SF-SAC 2001-2003: III/10/d -Total; SF-SAC 2004-2007: III/9/e -Total; SF-SAC 2008-2009: III/9/e -Total; SF-SAC 2010-2012: III/9/f -Total; SF-SAC 2013-2015: III/6/d -Total; SF-SAC 2016-2018: II/1/e- Total; SF-SAC 2019-2021: II/1/e - Total; SF-SAC 2022: II/1/e - Total Census mapping: GENERAL, TOTFEDEXPEND", - null=True, - verbose_name="Total Federal Expenditures", - ), - ), - migrations.AlterField( - model_name="general", - name="fy_end_date", - field=models.DateField( - help_text="Data sources: SF-SAC 1997-2000: Part I, Item 1; SF-SAC 2001-2003: Part I, Item 1; SF-SAC 2004-2007: Part I, Item 1; SF-SAC 2008-2009: Part I, Item 1; SF-SAC 2010-2012: Part I, Item 1; SF-SAC 2013-2015: Part I, Item 1; SF-SAC 2016-2018: Part I, Item 1; SF-SAC 2019-2021: I/1/b; SF-SAC 2022: I/1/b Census mapping: GENERAL, FYENDDATE", - null=True, - verbose_name="Fiscal Year End Date", - ), - ), - migrations.AlterField( - model_name="general", - name="auditee_date_signed", - field=models.DateField( - help_text="Data sources: SF-SAC 1997-2000: I/6/g; SF-SAC 2001-2003: I/6/g; SF-SAC 2004-2007: I/6/g; SF-SAC 2008-2009: I/5/g; SF-SAC 2010-2012: I/5/g; SF-SAC 2013-2015: certifications; SF-SAC 2016-2018: certifications; SF-SAC 2019-2021: certifications; SF-SAC 2022: certifications Census mapping: GENERAL, AUDITEEDATESIGNED", - null=True, - verbose_name="Date of Auditee signature", - ), - ), - migrations.AlterField( - model_name="auditor", - name="auditor_ein", - field=models.IntegerField( - help_text="Data sources: SF-SAC 2013-2015: I/6/b; SF-SAC 2016-2018: I/6/b; SF-SAC 2019-2021: I/6/b; SF-SAC 2022: I/6/b Census mapping: GENERAL, AUDITOR_EIN", - null=True, - verbose_name="CPA Firm EIN (only available for audit years 2013 and beyond)", - ), - ), - migrations.AlterField( - model_name="general", - name="cpa_date_signed", - field=models.DateField( - help_text="Data sources: SF-SAC 1997-2000: I/7/g; SF-SAC 2001-2003: I/7/g; SF-SAC 2004-2007: I/7/g; SF-SAC 2008-2009: I/6/g; SF-SAC 2010-2012: I/6/g; SF-SAC 2013-2015: certifications; SF-SAC 2016-2018: certifications; SF-SAC 2019-2021: certifications; SF-SAC 2022: certifications Census mapping: GENERAL, CPADATESIGNED", - null=True, - verbose_name="Date of CPA signature", - ), - ), - migrations.AlterField( - model_name="general", - name="fac_accepted_date", - field=models.DateField( - help_text="Census mapping: GENERAL, FACACCEPTEDDATE", - verbose_name="The most recent date an audit report was submitted to the FAC that passed FAC screening and was accepted as a valid OMB Circular A-133 report submission.", - ), - ), - migrations.AlterField( - model_name="cfdainfo", - name="program_total", - field=models.BigIntegerField( - help_text="Data sources: SF-SAC 2016-2018: II/1/g; SF-SAC 2019-2021: II/1/g; SF-SAC 2022: II/1/g Census mapping: CFDA INFO, PROGRAMTOTAL", - null=True, - verbose_name="Total Federal awards expended for each individual Federal program is auto-generated by summing the amount expended for all line items with the same CFDA Prefix and Extension", - ), - ), - migrations.AlterField( - model_name="cfdainfo", - name="questioned_costs", - field=models.CharField( - help_text="Census mapping: CFDA INFO, QCOSTS2", - max_length=40, - null=True, - verbose_name="Dollar amount of questioned costs (Depricated since 2002)", - ), - ), - migrations.AlterField( - model_name="general", - name="cognizant_agency_over", - field=models.CharField( - help_text="Census mapping: GENERAL, COG_OVER", - max_length=2, - null=True, - verbose_name="A value of 'C' means the entity was assigned a Cognizant agency (had over $50 million in total expenses). A value of 'O' means the entity was assigned a Oversight agency (had less tham=n $50 million in total expenses)", - ), - ), - migrations.AlterField( - model_name="general", - name="date_firewall", - field=models.DateField( - help_text="Census mapping: GENERAL, DATEFIREWALL", - null=True, - verbose_name="The date the audit information was made available on the dissemination site", - ), - ), - migrations.AlterField( - model_name="auditee", - name="auditee_name_title", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/g; SF-SAC 2001-2003: I/6/g; SF-SAC 2004-2007: I/6/g; SF-SAC 2008-2009: I/5/g; SF-SAC 2010-2012: I/5/g; SF-SAC 2013-2015: certifications; SF-SAC 2016-2018: certifications; SF-SAC 2019-2021: certifications; SF-SAC 2022: certifications Census mapping: GENERAL, AUDITEENAMETITLE", - max_length=70, - null=True, - verbose_name="Title of Auditee Certifying Official", - ), - ), - migrations.AlterField( - model_name="auditee", - name="auditee_title", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/c; SF-SAC 2001-2003: I/6/c; SF-SAC 2004-2007: I/6/c; SF-SAC 2008-2009: I/5/c; SF-SAC 2010-2012: I/5/c; SF-SAC 2013-2015: I/5/c; SF-SAC 2016-2018: I/5/c; SF-SAC 2019-2021: I/5/c; SF-SAC 2022: I/5/c Census mapping: GENERAL, AUDITEETITLE", - max_length=40, - null=True, - verbose_name="Title of Auditee Contact", - ), - ), - migrations.AlterField( - model_name="auditee", - name="duns_list", - field=django.contrib.postgres.fields.ArrayField( - base_field=models.IntegerField( - help_text="Data sources: SF-SAC 2004-2007: I/5/d; SF-SAC 2008-2009: I/4/d; SF-SAC 2010-2012: I/4/d; SF-SAC 2013-2015: I/4/d; SF-SAC 2016-2018: I/4/d; SF-SAC 2019-2021: I/4/d; SF-SAC 2022: I/4/d Census mapping: GENERAL, DUNS", - null=True, - verbose_name="Multiple Data Universal Numbering System Numbers, an array of DUNS numbers of the Auditee.", - ), - size=None, - ), - ), - migrations.AlterField( - model_name="auditee", - name="ein", - field=models.IntegerField( - help_text="Data sources: SF-SAC 1997-2000: I/5/a; SF-SAC 2001-2003: I/5/a; SF-SAC 2004-2007: I/5/a; SF-SAC 2008-2009: I/4/a; SF-SAC 2010-2012: I/4/a; SF-SAC 2013-2015: I/4/a; SF-SAC 2016-2018: I/4/a; SF-SAC 2019-2021: I/4/a; SF-SAC 2022: I/4/a Census mapping: GENERAL, EIN", - null=True, - verbose_name="Primary Employer Identification Number", - ), - ), - migrations.AlterField( - model_name="auditee", - name="uei_list", - field=django.contrib.postgres.fields.ArrayField( - base_field=models.CharField( - help_text="Data sources: SF-SAC 2022: I/4/g Census mapping: GENERAL, UEI", - max_length=12, - null=True, - verbose_name="Unique Entity ID", - ), - size=None, - ), - ), - migrations.AlterField( - model_name="auditee", - name="zip_code", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/b; SF-SAC 2001-2003: I/6/b; SF-SAC 2004-2007: I/6/b; SF-SAC 2008-2009: I/5/b; SF-SAC 2010-2012: I/5/b; SF-SAC 2013-2015: I/5/b; SF-SAC 2016-2018: I/5/b; SF-SAC 2019-2021: I/5/b; SF-SAC 2022: I/5/b Census mapping: GENERAL, ZIPCODE", - max_length=12, - null=True, - verbose_name="Auditee Zip Code", - ), - ), - migrations.AlterField( - model_name="auditor", - name="cpa_title", - field=models.CharField( - help_text="Data sources: SF-SAC 2008-2009: I/8/c; SF-SAC 2010-2012: I/8/c; SF-SAC 2013-2015: I/8/h; SF-SAC 2016-2018: I/8/h; SF-SAC 2019-2021: I/6/h/viii; SF-SAC 2022: I/6/h/viii Census mapping: MULTIPLE CPAS INFO, CPATITLE", - max_length=40, - null=True, - verbose_name="Title of CPA Contact", - ), - ), - migrations.AlterField( - model_name="cfdainfo", - name="cluster_total", - field=models.BigIntegerField( - help_text="Data sources: SF-SAC 2016-2018: II/1/h; SF-SAC 2019-2021: II/1/h; SF-SAC 2022: II/1/h Census mapping: CFDA INFO, CLUSTERTOTAL", - null=True, - verbose_name="Total Federal awards expended for each individual Federal program is auto-generated by summing the amount expended for all line items with the same Cluster Name", - ), - ), - ] diff --git a/backend/data_distro/migrations/0007_agencies_agency_name_alter_general_entity_type.py b/backend/data_distro/migrations/0007_agencies_agency_name_alter_general_entity_type.py deleted file mode 100644 index 1d70b8130..000000000 --- a/backend/data_distro/migrations/0007_agencies_agency_name_alter_general_entity_type.py +++ /dev/null @@ -1,31 +0,0 @@ -# Generated by Django 4.1.4 on 2023-02-08 00:00 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("data_distro", "0006_modify_models_to_work_with_2022_data"), - ] - - operations = [ - migrations.AddField( - model_name="agencies", - name="agency_name", - field=models.CharField( - max_length=125, - null=True, - verbose_name="Name of the Federal Agency requiring copy of audit report", - ), - ), - migrations.AlterField( - model_name="general", - name="entity_type", - field=models.CharField( - help_text="Census mapping: GENERAL, ENTITY_TYPE", - max_length=50, - null=True, - verbose_name="Self reported type of entity (i.e., States, Local Governments, Indian Tribes, Institutions of Higher Education, NonProfit)", - ), - ), - ] diff --git a/backend/data_distro/migrations/0008_alter_general_type_of_entity.py b/backend/data_distro/migrations/0008_alter_general_type_of_entity.py deleted file mode 100644 index 414f17988..000000000 --- a/backend/data_distro/migrations/0008_alter_general_type_of_entity.py +++ /dev/null @@ -1,22 +0,0 @@ -# Generated by Django 4.1.4 on 2023-02-08 00:57 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("data_distro", "0007_agencies_agency_name_alter_general_entity_type"), - ] - - operations = [ - migrations.AlterField( - model_name="general", - name="type_of_entity", - field=models.CharField( - help_text="Census mapping: GENERAL, TYPEOFENTITY", - max_length=40, - null=True, - verbose_name="Contact FAC for information", - ), - ), - ] diff --git a/backend/data_distro/migrations/0009_refactor_Agency.py b/backend/data_distro/migrations/0009_refactor_Agency.py deleted file mode 100644 index 406fae7d7..000000000 --- a/backend/data_distro/migrations/0009_refactor_Agency.py +++ /dev/null @@ -1,67 +0,0 @@ -# Generated by Django 4.1.4 2023-02-08 21:25 - -import django.contrib.postgres.fields -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("data_distro", "0008_alter_general_type_of_entity"), - ] - - operations = [ - migrations.RemoveField( - model_name="agencies", - name="audit_year", - ), - migrations.RemoveField( - model_name="agencies", - name="dbkey", - ), - migrations.RemoveField( - model_name="agencies", - name="ein", - ), - migrations.RemoveField( - model_name="auditee", - name="ein", - ), - migrations.AddField( - model_name="auditee", - name="agency", - field=models.ManyToManyField(to="data_distro.agencies"), - ), - migrations.AddField( - model_name="auditee", - name="ein_list", - field=django.contrib.postgres.fields.ArrayField( - base_field=models.IntegerField( - help_text="Data sources: SF-SAC 1997-2000: I/5/a; SF-SAC 2001-2003: I/5/a; SF-SAC 2004-2007: I/5/a; SF-SAC 2008-2009: I/4/a; SF-SAC 2010-2012: I/4/a; SF-SAC 2013-2015: I/4/a; SF-SAC 2016-2018: I/4/a; SF-SAC 2019-2021: I/4/a; SF-SAC 2022: I/4/a Census mapping: GENERAL, EIN", - null=True, - verbose_name="Primary Employer Identification Number", - ), - default=[], - size=None, - ), - preserve_default=False, - ), - migrations.AlterField( - model_name="notes", - name="content", - field=models.TextField( - help_text="Data sources: SF-SAC 2019-2021: II/2; SF-SAC 2022: II/2 Census mapping: NOTES, CONTENT", - null=True, - verbose_name="Content of the Note", - ), - ), - migrations.AlterField( - model_name="notes", - name="title", - field=models.CharField( - help_text="Data sources: SF-SAC 2019-2021: II/2; SF-SAC 2022: II/2 Census mapping: NOTES, TITLE", - max_length=75, - null=True, - verbose_name="Note Title", - ), - ), - ] diff --git a/backend/data_distro/migrations/0010_add_Agencies.py b/backend/data_distro/migrations/0010_add_Agencies.py deleted file mode 100644 index 098b806ac..000000000 --- a/backend/data_distro/migrations/0010_add_Agencies.py +++ /dev/null @@ -1,93 +0,0 @@ -# Generated by Lindsay 4.1.4 2023-02-08 21:25 - -from django.db import migrations - - -agency_name_dict = { - "01": "AFRICAN DEVELOPMENT FOUNDATION", - "04": "INTER-AMERICAN FOUNDATION", - "07": "OFFICE OF NATIONAL DRUG CONTROL POLICY", - "08": "PEACE CORPS", - "09": "LEGAL SERVICES CORPORATION", - "10": "DEPARTMENT OF AGRICULTURE", - "11": "DEPARTMENT OF COMMERCE", - "12": "DEPARTMENT OF DEFENSE", - "13": "CENTRAL INTELLIGENCE AGENCY", - "14": "DEPARTMENT OF HOUSING AND URBAN DEVELOPMENT", - "15": "DEPARTMENT OF THE INTERIOR", - "16": "DEPARTMENT OF JUSTICE", - "17": "DEPARTMENT OF LABOR", - "18": "FEDERAL RESERVE SYSTEM", - "19": "DEPARTMENT OF STATE", - "20": "DEPARTMENT OF TRANSPORTATION", - "21": "DEPARTMENT OF TREASURY", - "22": "POSTAL SERVICE", - "23": "APPALACHIAN REGIONAL COMMISSION", - "27": "OFFICE OF PERSONNEL MANAGEMENT", - "29": "COMMISSION ON CIVIL RIGHTS", - "30": "EQUAL EMPLOYMENT OPPORTUNITY COMMISSION", - "32": "FEDERAL COMMUNICATIONS COMMISSION", - "33": "FEDERAL MARITIME COMMISSION", - "34": "FEDERAL MEDIATION AND CONCILIATION SERVICE", - "36": "FEDERAL TRADE COMMISSION", - "39": "GENERAL SERVICES ADMINISTRATION", - "40": "GOVERNMENT PRINTING OFFICE", - "42": "LIBRARY OF CONGRESS", - "43": "NATIONAL AERONAUTICS & SPACE ADMINISTRATION", - "44": "NATIONAL CREDIT UNION ADMINISTRATION", - "45": "INSTITUTE OF MUSEUM AND LIBRARY SERVICES OR NATIONAL ENDOWMENT FOR THE ARTS OR NATIONAL ENDOWMENT FOR THE HUMANITIES", - "46": "NATIONAL LABOR RELATIONS BOARD", - "47": "NATIONAL SCIENCE FOUNDATION", - "53": "PRESIDENT'S COMMITTEE ON EMPLOYMENT OF PEOPLE WITH DISABILITIES", - "57": "RAILROAD RETIREMENT BOARD", - "58": "SECURITIES AND EXCHANGE COMMISSION", - "59": "SMALL BUSINESS ADMINISTRATION", - "60": "SMITHSONIAN INSTITUTION", - "61": "INTERNATIONAL TRADE COMMISSION", - "62": "TENNESSEE VALLEY AUTHORITY", - "64": "DEPARTMENT OF VETERANS AFFAIRS", - "66": "ENVIRONMENTAL PROTECTION AGENCY", - "68": "NATIONAL GALLERY OF ART", - "70": "OVERSEAS PRIVATE INVESTMENT CORPORATION", - "77": "NUCLEAR REGULATORY COMMISSION", - "78": "COMMODITY FUTURES TRADING COMMISSION", - "81": "DEPARTMENT OF ENERGY", - "82": "UNITED STATES INFORMATION AGENCY", - "83": "FEDERAL EMERGENCY MANAGEMENT AGENCY", - "84": "DEPARTMENT OF EDUCATION", - "85": "SCHOLARSHIP FOUNDATIONS", - "86": "PENSION BENEFIT GUARANTY CORPORATION", - "87": "CONSUMER PRODUCT SAFETY COMMISSION", - "88": "ARCHITECTURAL & TRANSPORATION BARRIERS COMPLIANCE BOARD", - "89": "NATIONAL ARCHIVES & RECORDS ADMINISTRATION", - "90": "DELTA REGIONAL AUTHORITY/ DENALI COMMISSION/ ELECTION ASSISTANCE COMMISSION/ JAPAN U.S. FRIENDSHIP COMMISSION", - "91": "UNITED STATES INSTITUTE OF PEACE", - "92": "NATIONAL COUNCIL ON DISABILITY", - "93": "DEPARTMENT OF HEALTH AND HUMAN SERVICES", - "94": "CORPORATION FOR NATIONAL AND COMMUNITY SERVICE", - "95": "EXECUTIVE OFFICE OF THE PRESIDENT", - "96": "SOCIAL SECURITY ADMINISTRATION", - "97": "DEPARTMENT OF HOMELAND SECURITY", - "98": "U.S. AGENCY FOR INTERNATIONAL DEVELOPMENT", - "99": "MISCELLANEOUS", -} - - -def add_agency_names(apps, schema_editor): - for code in agency_name_dict: - # This is more resilient to later database changes - agency_model = apps.get_model("data_distro", "Agencies") - agency = agency_model.objects.get_or_create( - agency_cfda=int(code), is_public=True - )[0] - agency.agency_name = agency_name_dict[code] - - -class Migration(migrations.Migration): - dependencies = [ - ("data_distro", "0009_refactor_Agency"), - ] - - operations = [ - migrations.RunPython(add_agency_names), - ] diff --git a/backend/data_distro/migrations/0011_alter_passthrough_passthrough_name.py b/backend/data_distro/migrations/0011_alter_passthrough_passthrough_name.py deleted file mode 100644 index 1210db7de..000000000 --- a/backend/data_distro/migrations/0011_alter_passthrough_passthrough_name.py +++ /dev/null @@ -1,22 +0,0 @@ -# Generated by Django 4.1.4 on 2023-02-09 20:10 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("data_distro", "0010_add_Agencies"), - ] - - operations = [ - migrations.AlterField( - model_name="passthrough", - name="passthrough_name", - field=models.CharField( - help_text="Data sources: SF-SAC 2016-2018: II/1/l; SF-SAC 2019-2021: II/1/l; SF-SAC 2022: II/1/l Census mapping: PASSTHROUGH, PASSTHROUGHNAME", - max_length=150, - null=True, - verbose_name="Name of Pass-through Entity", - ), - ), - ] diff --git a/backend/data_distro/migrations/0012_update_docs_with_multiple_sources.py b/backend/data_distro/migrations/0012_update_docs_with_multiple_sources.py deleted file mode 100644 index 54c044361..000000000 --- a/backend/data_distro/migrations/0012_update_docs_with_multiple_sources.py +++ /dev/null @@ -1,149 +0,0 @@ -# Generated by Django 4.1.4 on 2023-02-10 18:07 - -import django.contrib.postgres.fields -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("data_distro", "0011_alter_passthrough_passthrough_name"), - ] - - operations = [ - migrations.AlterField( - model_name="auditee", - name="duns_list", - field=django.contrib.postgres.fields.ArrayField( - base_field=models.IntegerField( - help_text="Data sources: SF-SAC 2004-2007: I/5/d; SF-SAC 2008-2009: I/4/d; SF-SAC 2010-2012: I/4/d; SF-SAC 2013-2015: I/4/d; SF-SAC 2016-2018: I/4/d; SF-SAC 2019-2021: I/4/d; SF-SAC 2022: I/4/d Census mapping: GENERAL, DUNS (AND) Data sources: SF-SAC 2004-2007: I/5/f; SF-SAC 2008-2009: I/4/f; SF-SAC 2010-2012: I/4/f; SF-SAC 2013-2015: I/4/f; SF-SAC 2016-2018: I/4/f; SF-SAC 2019-2021: I/4/f; SF-SAC 2022: I/4/f Census mapping: DUN INFO, DUNS", - null=True, - verbose_name="Multiple Data Universal Numbering System Numbers (DUNS) of the Auditee, in the order they were listed.", - ), - size=None, - ), - ), - migrations.AlterField( - model_name="auditee", - name="ein_list", - field=django.contrib.postgres.fields.ArrayField( - base_field=models.IntegerField( - help_text="Data sources: SF-SAC 1997-2000: I/5/a; SF-SAC 2001-2003: I/5/a; SF-SAC 2004-2007: I/5/a; SF-SAC 2008-2009: I/4/a; SF-SAC 2010-2012: I/4/a; SF-SAC 2013-2015: I/4/a; SF-SAC 2016-2018: I/4/a; SF-SAC 2019-2021: I/4/a; SF-SAC 2022: I/4/a Census mapping: GENERAL, EIN (AND) Data sources: SF-SAC 2001-2003: I/5/c; SF-SAC 2004-2007: I/5/c; SF-SAC 2008-2009: I/4/c; SF-SAC 2010-2012: I/4/c; SF-SAC 2013-2015: I/4/c; SF-SAC 2016-2018: I/4/c; SF-SAC 2019-2021: I/4/c; SF-SAC 2022: I/4/c Census mapping: EIN INFO, EIN", - null=True, - verbose_name="Primary Employer Identification Number, in the order that they were listed.", - ), - size=None, - ), - ), - migrations.AlterField( - model_name="auditee", - name="ein_subcode", - field=models.IntegerField( - help_text="Census mapping: GENERAL, EINSUBCODE", - null=True, - verbose_name="Subcode assigned to the EIN.", - ), - ), - migrations.AlterField( - model_name="auditor", - name="cpa_city", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/7/b; SF-SAC 2001-2003: I/7/b; SF-SAC 2004-2007: I/7/b; SF-SAC 2008-2009: I/6/b; SF-SAC 2010-2012: I/6/b; SF-SAC 2013-2015: I/6/c; SF-SAC 2016-2018: I/6/c; SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPACITY (AND) Data sources: SF-SAC 2008-2009: I/8/b; SF-SAC 2010-2012: I/8/b; SF-SAC 2013-2015: I/8/d; SF-SAC 2016-2018: I/8/d; SF-SAC 2019-2021: I/6/h/iv; SF-SAC 2022: I/6/h/iv Census mapping: MULTIPLE CPAS INFO, CPACITY", - max_length=30, - verbose_name="CPA City", - ), - ), - migrations.AlterField( - model_name="auditor", - name="cpa_contact", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/7/c; SF-SAC 2001-2003: I/7/c; SF-SAC 2004-2007: I/7/c; SF-SAC 2008-2009: I/6/c; SF-SAC 2010-2012: I/6/c; SF-SAC 2013-2015: I/6/d; SF-SAC 2016-2018: I/6/d; SF-SAC 2019-2021: I/6/d; SF-SAC 2022: I/6/d Census mapping: GENERAL, CPACONTACT (AND) Data sources: SF-SAC 2008-2009: I/8/c; SF-SAC 2010-2012: I/8/c; SF-SAC 2013-2015: I/8/g; SF-SAC 2016-2018: I/8/g; SF-SAC 2019-2021: I/6/h/vii; SF-SAC 2022: I/6/h/vii Census mapping: MULTIPLE CPAS INFO, CPACONTACT", - max_length=50, - verbose_name="Name of CPA Contact", - ), - ), - migrations.AlterField( - model_name="auditor", - name="cpa_email", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/7/f; SF-SAC 2001-2003: I/7/f; SF-SAC 2004-2007: I/7/f; SF-SAC 2008-2009: I/6/f; SF-SAC 2010-2012: I/6/f; SF-SAC 2013-2015: I/6/g; SF-SAC 2016-2018: I/6/f; SF-SAC 2019-2021: I/6/f; SF-SAC 2022: I/6/f Census mapping: GENERAL, CPAEMAIL (AND) Data sources: SF-SAC 2008-2009: I/8/f; SF-SAC 2010-2012: I/8/f; SF-SAC 2013-2015: I/8/k; SF-SAC 2016-2018: I/8/k; SF-SAC 2019-2021: I/6/h/x; SF-SAC 2022: I/6/h/x Census mapping: MULTIPLE CPAS INFO, CPAEMAIL", - max_length=60, - null=True, - verbose_name="CPA mail address (optional)", - ), - ), - migrations.AlterField( - model_name="auditor", - name="cpa_fax", - field=models.PositiveBigIntegerField( - help_text="Data sources: SF-SAC 1997-2000: I/7/e; SF-SAC 2001-2003: I/7/e; SF-SAC 2004-2007: I/7/e; SF-SAC 2008-2009: I/6/e; SF-SAC 2010-2012: I/6/e; SF-SAC 2013-2015: I/6/f Census mapping: GENERAL, CPAFAX (AND) Data sources: SF-SAC 2008-2009: I/8/e; SF-SAC 2010-2012: I/8/e; SF-SAC 2013-2015: I/8/j; SF-SAC 2016-2018: I/8/j Census mapping: MULTIPLE CPAS INFO, CPAFAX", - null=True, - verbose_name="CPA fax number (optional)", - ), - ), - migrations.AlterField( - model_name="auditor", - name="cpa_firm_name", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/7/a; SF-SAC 2001-2003: I/7/a; SF-SAC 2004-2007: I/7/a; SF-SAC 2008-2009: I/6/a; SF-SAC 2010-2012: I/6/a; SF-SAC 2013-2015: I/6/a; SF-SAC 2016-2018: I/6/a; SF-SAC 2019-2021: I/6/a; SF-SAC 2022: I/6/a Census mapping: GENERAL, CPAFIRMNAME (AND) Data sources: SF-SAC 2008-2009: I/8/a; SF-SAC 2010-2012: I/8/a; SF-SAC 2013-2015: I/8/a; SF-SAC 2016-2018: I/8/a; SF-SAC 2019-2021: I/6/h/i; SF-SAC 2022: I/6/h/i Census mapping: MULTIPLE CPAS INFO, CPAFIRMNAME", - max_length=64, - verbose_name="CPA Firm Name", - ), - ), - migrations.AlterField( - model_name="auditor", - name="cpa_phone", - field=models.PositiveBigIntegerField( - help_text="Data sources: SF-SAC 1997-2000: I/7/d; SF-SAC 2001-2003: I/7/d; SF-SAC 2004-2007: I/7/d; SF-SAC 2008-2009: I/6/d; SF-SAC 2010-2012: I/6/d; SF-SAC 2013-2015: I/6/e; SF-SAC 2016-2018: I/6/e; SF-SAC 2019-2021: I/6/e; SF-SAC 2022: I/6/e Census mapping: GENERAL, CPAPHONE (AND) Data sources: SF-SAC 2008-2009: I/8/d; SF-SAC 2010-2012: I/8/d; SF-SAC 2013-2015: I/8/i; SF-SAC 2016-2018: I/8/i; SF-SAC 2019-2021: I/6/h/ix; SF-SAC 2022: I/6/h/ix Census mapping: MULTIPLE CPAS INFO, CPAPHONE", - null=True, - verbose_name="CPA phone number", - ), - ), - migrations.AlterField( - model_name="auditor", - name="cpa_state", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/7/b; SF-SAC 2001-2003: I/7/b; SF-SAC 2004-2007: I/7/b; SF-SAC 2008-2009: I/6/b; SF-SAC 2010-2012: I/6/b; SF-SAC 2013-2015: I/6/c; SF-SAC 2016-2018: I/6/c; SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPASTATE (AND) Data sources: SF-SAC 2008-2009: I/8/b; SF-SAC 2010-2012: I/8/b; SF-SAC 2013-2015: I/8/e; SF-SAC 2016-2018: I/8/e; SF-SAC 2019-2021: I/6/h/v; SF-SAC 2022: I/6/h/v Census mapping: MULTIPLE CPAS INFO, CPASTATE", - max_length=2, - verbose_name="CPA State", - ), - ), - migrations.AlterField( - model_name="auditor", - name="cpa_street1", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/7/b; SF-SAC 2001-2003: I/7/b; SF-SAC 2004-2007: I/7/b; SF-SAC 2008-2009: I/6/b; SF-SAC 2010-2012: I/6/b; SF-SAC 2013-2015: I/6/c; SF-SAC 2016-2018: I/6/c; SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPASTREET1 (AND) Data sources: SF-SAC 2008-2009: I/8/b; SF-SAC 2010-2012: I/8/b; SF-SAC 2013-2015: I/8/c; SF-SAC 2016-2018: I/8/c; SF-SAC 2019-2021: I/6/h/iii; SF-SAC 2022: I/6/h/iii Census mapping: MULTIPLE CPAS INFO, CPASTREET1", - max_length=45, - verbose_name="CPA Street Address", - ), - ), - migrations.AlterField( - model_name="auditor", - name="cpa_street2", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/7/b; SF-SAC 2001-2003: I/7/b; SF-SAC 2004-2007: I/7/b; SF-SAC 2008-2009: I/6/b; SF-SAC 2010-2012: I/6/b; SF-SAC 2013-2015: I/6/c; SF-SAC 2016-2018: I/6/c; SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPASTREET2", - max_length=45, - null=True, - verbose_name="CPA Street Address, line 2", - ), - ), - migrations.AlterField( - model_name="auditor", - name="cpa_title", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/7/c; SF-SAC 2001-2003: I/7/c; SF-SAC 2004-2007: I/7/c; SF-SAC 2008-2009: I/6/c; SF-SAC 2010-2012: I/6/c; SF-SAC 2013-2015: I/6/d; SF-SAC 2016-2018: I/6/d; SF-SAC 2019-2021: I/6/d; SF-SAC 2022: I/6/d Census mapping: GENERAL, CPATITLE (AND) Data sources: SF-SAC 2008-2009: I/8/c; SF-SAC 2010-2012: I/8/c; SF-SAC 2013-2015: I/8/h; SF-SAC 2016-2018: I/8/h; SF-SAC 2019-2021: I/6/h/viii; SF-SAC 2022: I/6/h/viii Census mapping: MULTIPLE CPAS INFO, CPATITLE", - max_length=40, - null=True, - verbose_name="Title of CPA Contact", - ), - ), - migrations.AlterField( - model_name="auditor", - name="cpa_zip_code", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/7/b; SF-SAC 2001-2003: I/7/b; SF-SAC 2004-2007: I/7/b; SF-SAC 2008-2009: I/6/b; SF-SAC 2010-2012: I/6/b; SF-SAC 2013-2015: I/6/c; SF-SAC 2016-2018: I/6/c; SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPAZIPCODE (AND) Data sources: SF-SAC 2008-2009: I/8/b; SF-SAC 2010-2012: I/8/b; SF-SAC 2013-2015: I/8/f; SF-SAC 2016-2018: I/8/f; SF-SAC 2019-2021: I/6/h/vi; SF-SAC 2022: I/6/h/vi Census mapping: MULTIPLE CPAS INFO, CPAZIPCODE", - max_length=12, - null=True, - verbose_name="CPA Zip Code", - ), - ), - ] diff --git a/backend/data_distro/migrations/0013_alter_auditee_duns_list.py b/backend/data_distro/migrations/0013_alter_auditee_duns_list.py deleted file mode 100644 index 05a1c98a4..000000000 --- a/backend/data_distro/migrations/0013_alter_auditee_duns_list.py +++ /dev/null @@ -1,25 +0,0 @@ -# Generated by Django 4.1.4 on 2023-02-10 18:24 - -import django.contrib.postgres.fields -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("data_distro", "0012_update_docs_with_multiple_sources"), - ] - - operations = [ - migrations.AlterField( - model_name="auditee", - name="duns_list", - field=django.contrib.postgres.fields.ArrayField( - base_field=models.IntegerField( - help_text="Data sources: SF-SAC 2004-2007: I/5/git ad; SF-SAC 2008-2009: I/4/d; SF-SAC 2010-2012: I/4/d; SF-SAC 2013-2015: I/4/d; SF-SAC 2016-2018: I/4/d; SF-SAC 2019-2021: I/4/d; SF-SAC 2022: I/4/d Census mapping: GENERAL, DUNS (AND) Data sources: SF-SAC 2004-2007: I/5/f; SF-SAC 2008-2009: I/4/f; SF-SAC 2010-2012: I/4/f; SF-SAC 2013-2015: I/4/f; SF-SAC 2016-2018: I/4/f; SF-SAC 2019-2021: I/4/f; SF-SAC 2022: I/4/f Census mapping: DUN INFO, DUNS", - null=True, - verbose_name="Multiple Data Universal Numbering System Numbers (DUNS) of the Auditee, in the order they were listed.", - ), - size=None, - ), - ), - ] diff --git a/backend/data_distro/migrations/0014_alter_auditor_auditor_ein_alter_auditor_seqnum_and_more.py b/backend/data_distro/migrations/0014_alter_auditor_auditor_ein_alter_auditor_seqnum_and_more.py deleted file mode 100644 index 94313f94c..000000000 --- a/backend/data_distro/migrations/0014_alter_auditor_auditor_ein_alter_auditor_seqnum_and_more.py +++ /dev/null @@ -1,39 +0,0 @@ -# Generated by Django 4.1.4 on 2023-02-10 20:43 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("data_distro", "0013_alter_auditee_duns_list"), - ] - - operations = [ - migrations.AlterField( - model_name="auditor", - name="auditor_ein", - field=models.IntegerField( - help_text="Data sources: SF-SAC 2013-2015: I/6/b; SF-SAC 2016-2018: I/6/b; SF-SAC 2019-2021: I/6/b; SF-SAC 2022: I/6/b Census mapping: GENERAL, AUDITOR_EIN (AND) Data sources: SF-SAC 2013-2015: I/8/b; SF-SAC 2016-2018: I/8/b; SF-SAC 2019-2021: I/6/h/ii; SF-SAC 2022: I/6/h/ii Census mapping: MULTIPLE CPAS INFO, CPAEIN", - null=True, - verbose_name="CPA Firm EIN (only available for audit years 2013 and beyond)", - ), - ), - migrations.AlterField( - model_name="auditor", - name="seqnum", - field=models.IntegerField( - help_text="Census mapping: GENERAL, SEQNUM (AND) Census mapping: MULTIPLE CPAS INFO, SEQNUM", - null=True, - verbose_name="Order that Auditors were reported on page 5 of SF-SAC", - ), - ), - migrations.AlterField( - model_name="general", - name="condition_or_deficiency_major_program", - field=models.BooleanField( - help_text="Data sources: SF-SAC 2001-2003: III/5; SF-SAC 2004-2007: III/4; SF-SAC 2008-2009: III/4; SF-SAC 2010-2012: III/4 Census mapping: GENERAL, REPORTABLECONDITION_MP", - null=True, - verbose_name="Whether or not the audit disclosed a reportable condition/significant deficiency for any major program in the Schedule of Findings and Questioned Costs", - ), - ), - ] diff --git a/backend/data_distro/migrations/0015_rename_city_auditee_auditee_city_and_more.py b/backend/data_distro/migrations/0015_rename_city_auditee_auditee_city_and_more.py deleted file mode 100644 index 5e1aed969..000000000 --- a/backend/data_distro/migrations/0015_rename_city_auditee_auditee_city_and_more.py +++ /dev/null @@ -1,50 +0,0 @@ -# Generated by Django 4.1.4 on 2023-02-13 15:39 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("data_distro", "0014_alter_auditor_auditor_ein_alter_auditor_seqnum_and_more"), - ] - - operations = [ - migrations.RenameField( - model_name="auditee", - old_name="city", - new_name="auditee_city", - ), - migrations.RenameField( - model_name="auditee", - old_name="state", - new_name="auditee_state", - ), - migrations.RenameField( - model_name="auditee", - old_name="street1", - new_name="auditee_street1", - ), - migrations.RenameField( - model_name="auditee", - old_name="street2", - new_name="auditee_street2", - ), - migrations.AlterField( - model_name="auditor", - name="cpa_ein", - field=models.IntegerField( - help_text="Data sources: SF-SAC 2013-2015: I/6/b; SF-SAC 2016-2018: I/6/b; SF-SAC 2019-2021: I/6/b; SF-SAC 2022: I/6/b Census mapping: GENERAL, AUDITOR_EIN (AND) Data sources: SF-SAC 2013-2015: I/8/b; SF-SAC 2016-2018: I/8/b; SF-SAC 2019-2021: I/6/h/ii; SF-SAC 2022: I/6/h/ii Census mapping: MULTIPLE CPAS INFO, CPAEIN", - null=True, - verbose_name="CPA Firm EIN (only available for audit years 2013 and beyond)", - ), - ), - migrations.AlterField( - model_name="cfdainfo", - name="auditor_ein", - field=models.IntegerField( - help_text="Data sources: SF-SAC 2013-2015: I/6/b; SF-SAC 2016-2018: I/6/b; SF-SAC 2019-2021: I/6/b; SF-SAC 2022: I/6/b Census mapping: GENERAL, AUDITOR_EIN (AND) Data sources: SF-SAC 2013-2015: I/8/b; SF-SAC 2016-2018: I/8/b; SF-SAC 2019-2021: I/6/h/ii; SF-SAC 2022: I/6/h/ii Census mapping: MULTIPLE CPAS INFO, CPAEIN", - null=True, - verbose_name="Primary Employer Identification Number", - ), - ), - ] diff --git a/backend/data_distro/migrations/0016_rename_zip_code_auditee_auditee_zip_code.py b/backend/data_distro/migrations/0016_rename_zip_code_auditee_auditee_zip_code.py deleted file mode 100644 index f6519b42e..000000000 --- a/backend/data_distro/migrations/0016_rename_zip_code_auditee_auditee_zip_code.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 4.1.4 on 2023-02-13 16:26 - -from django.db import migrations - - -class Migration(migrations.Migration): - dependencies = [ - ("data_distro", "0015_rename_city_auditee_auditee_city_and_more"), - ] - - operations = [ - migrations.RenameField( - model_name="auditee", - old_name="zip_code", - new_name="auditee_zip_code", - ), - ] diff --git a/backend/data_distro/migrations/0017_cfdainfo_nulls_for_old_data.py b/backend/data_distro/migrations/0017_cfdainfo_nulls_for_old_data.py deleted file mode 100644 index e759f8e8a..000000000 --- a/backend/data_distro/migrations/0017_cfdainfo_nulls_for_old_data.py +++ /dev/null @@ -1,31 +0,0 @@ -# Generated by Django 4.1.4 on 2023-02-22 16:27 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("data_distro", "0016_rename_zip_code_auditee_auditee_zip_code"), - ] - - operations = [ - migrations.AlterField( - model_name="cfdainfo", - name="federal_program_name", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: III/6/b; SF-SAC 2001-2003: III/10/c; SF-SAC 2004-2007: III/9/d; SF-SAC 2008-2009: III/9/d; SF-SAC 2010-2012: III/9/e; SF-SAC 2013-2015: III/6/c; SF-SAC 2016-2018: II/1/d; SF-SAC 2019-2021: II/1/d; SF-SAC 2022: II/1/d Census mapping: CFDA INFO, FEDERALPROGRAMNAME", - max_length=300, - null=True, - verbose_name="Name of Federal Program", - ), - ), - migrations.AlterField( - model_name="cfdainfo", - name="findings_count", - field=models.IntegerField( - help_text="Data sources: SF-SAC 2013-2015: III/6/k; SF-SAC 2016-2018: III/1/c; SF-SAC 2019-2021: III/1/c; SF-SAC 2022: III/1/c Census mapping: CFDA INFO, FINDINGSCOUNT", - null=True, - verbose_name="Number of findings for the federal program (only available for audit years 2013 and beyond)", - ), - ), - ] diff --git a/backend/data_distro/migrations/0018_remove_auditor_auditor_ein_remove_general_agency_and_more.py b/backend/data_distro/migrations/0018_remove_auditor_auditor_ein_remove_general_agency_and_more.py deleted file mode 100644 index 6e81fc0d8..000000000 --- a/backend/data_distro/migrations/0018_remove_auditor_auditor_ein_remove_general_agency_and_more.py +++ /dev/null @@ -1,151 +0,0 @@ -# Generated by Django 4.1.4 on 2023-02-23 21:36 - -import django.contrib.postgres.fields -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - dependencies = [ - ("data_distro", "0017_cfdainfo_nulls_for_old_data"), - ] - - operations = [ - # This was a duplicate - migrations.RemoveField( - model_name="auditor", - name="auditor_ein", - ), - # This is now handled with prior_agency_findings - migrations.RemoveField( - model_name="general", - name="agency", - ), - # This is now split up into primary and secondary auditors - migrations.RemoveField( - model_name="general", - name="auditor", - ), - # Link findings to the award info - migrations.AddField( - model_name="cfdainfo", - name="Findings", - field=models.ManyToManyField(to="data_distro.findings"), - ), - migrations.AddField( - model_name="cfdainfo", - name="agency_prior_findings", - field=django.contrib.postgres.fields.ArrayField( - base_field=models.IntegerField( - help_text="Data sources: SF-SAC 1997-2000: III/5; SF-SAC 2001-2003: III/9; SF-SAC 2004-2007: III/8; SF-SAC 2008-2009: III/8; SF-SAC 2010-2012: III/8; SF-SAC 2013-2015: III/5; SF-SAC 2016-2018: III/3/d; SF-SAC 2019-2021: III/3/d; SF-SAC 2022: III/3/d Census mapping: AGENCIES, AGENCY", - null=True, - verbose_name="Federal Agencies with Current or Prior Year Audit Findings on Direct Awards. An empty list means None.", - ), - null=True, - size=None, - ), - ), - # Making sure everything links to general for easy data pulling - migrations.AddField( - model_name="general", - name="findings_text", - field=models.ManyToManyField(to="data_distro.findingstext"), - ), - migrations.AddField( - model_name="general", - name="primary_auditor", - field=models.ForeignKey( - null=True, - on_delete=django.db.models.deletion.CASCADE, - related_name="primary_auditor", - to="data_distro.auditor", - ), - ), - migrations.AddField( - model_name="general", - name="secondary_auditors", - field=models.ManyToManyField( - related_name="secondary_auditor", to="data_distro.auditor" - ), - ), - # This isn't being used at the moment, but would like to add it back in a new iteration - migrations.AlterField( - model_name="agencies", - name="agency_cfda", - field=models.IntegerField( - help_text="Data sources: SF-SAC 1997-2000: III/5; SF-SAC 2001-2003: III/9; SF-SAC 2004-2007: III/8; SF-SAC 2008-2009: III/8; SF-SAC 2010-2012: III/8; SF-SAC 2013-2015: III/5; SF-SAC 2016-2018: III/3/d; SF-SAC 2019-2021: III/3/d; SF-SAC 2022: III/3/d Census mapping: AGENCIES, AGENCYCFDA", - verbose_name="2-digit prefix of Federal Agency requiring copy of audit report", - ), - ), - # spelling fix - migrations.AlterField( - model_name="cfdainfo", - name="questioned_costs", - field=models.CharField( - help_text="Census mapping: CFDA INFO, QCOSTS2", - max_length=40, - null=True, - verbose_name="Dollar amount of questioned costs (Deprecated since 2002)", - ), - ), - migrations.AlterField( - model_name="findingstext", - name="finding_ref_nums", - field=models.CharField( - help_text="Data sources: SF-SAC 2019-2021: III/5/a; SF-SAC 2022: III/5/a Census mapping: FINDINGSTEXT, FINDINGREFNUMS", - max_length=100, - null=True, - verbose_name="Audit Finding Reference Number", - ), - ), - # adding null - migrations.AlterField( - model_name="findingstext", - name="seq_number", - field=models.IntegerField( - help_text="Census mapping: FINDINGSTEXT, SEQ_NUMBER", - null=True, - verbose_name="Order that the findings text was reported", - ), - ), - # adding null - migrations.AlterField( - model_name="findingstext", - name="text", - field=models.TextField( - help_text="Data sources: SF-SAC 2019-2021: III/5/b; SF-SAC 2022: III/5/b Census mapping: FINDINGSTEXT, TEXT", - null=True, - verbose_name="Content of the finding text", - ), - ), - migrations.AlterField( - model_name="general", - name="cognizant_agency_over", - field=models.CharField( - help_text="Census mapping: GENERAL, COG_OVER", - max_length=2, - null=True, - verbose_name="A value of 'C' means the entity was assigned a Cognizant agency (had over $50 million in total expenses). A value of 'O' means the entity was assigned a Oversight agency (had less than $50 million in total expenses)", - ), - ), - migrations.AlterField( - model_name="general", - name="dbkey", - field=models.CharField( - help_text="Census mapping: GENERAL, DBKEY", - max_length=40, - verbose_name="Audit Year and DBKEY (database key) combined make up the primary key. Only on records created by Census.", - ), - ), - # not one-to-one-relationship - migrations.RemoveField( - model_name="general", - name="findings", - ), - # making it many-to-many - migrations.AddField( - model_name="general", - name="findings", - field=models.ManyToManyField(to="data_distro.findings"), - ), - ] diff --git a/backend/data_distro/migrations/0019_differentiate_findings_fields.py b/backend/data_distro/migrations/0019_differentiate_findings_fields.py deleted file mode 100644 index da8afd6c5..000000000 --- a/backend/data_distro/migrations/0019_differentiate_findings_fields.py +++ /dev/null @@ -1,32 +0,0 @@ -# Generated by Django 4.1.4 on 2023-02-23 22:14 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ( - "data_distro", - "0018_remove_auditor_auditor_ein_remove_general_agency_and_more", - ), - ] - - operations = [ - # rename current findings to findings_page - migrations.RenameField( - model_name="cfdainfo", - old_name="findings", - new_name="findings_page", - ), - # this needed to be many to many - migrations.RemoveField( - model_name="cfdainfo", - name="Findings", - ), - # add many to many - migrations.AddField( - model_name="cfdainfo", - name="findings", - field=models.ManyToManyField(to="data_distro.findings"), - ), - ] diff --git a/backend/data_distro/migrations/0020_renames_and_Findings_links.py b/backend/data_distro/migrations/0020_renames_and_Findings_links.py deleted file mode 100644 index a991616bf..000000000 --- a/backend/data_distro/migrations/0020_renames_and_Findings_links.py +++ /dev/null @@ -1,203 +0,0 @@ -# Generated by Django 4.1.4 on 2023-02-24 18:41 -# naming standardization, removing unnecessary abbreviations, simplifying id names, -# many to many for Findings text - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("data_distro", "0019_differentiate_findings_fields"), - ] - - operations = [ - migrations.RenameField( - model_name="captext", - old_name="finding_ref_nums", - new_name="finding_ref_number", - ), - migrations.RenameField( - model_name="captext", - old_name="seq_number", - new_name="sequence_number", - ), - migrations.RenameField( - model_name="cfdainfo", - old_name="cfda", - new_name="agency_cfda", - ), - migrations.RenameField( - model_name="cfdainfo", - old_name="cfda_program_name", - new_name="agency_name", - ), - migrations.RenameField( - model_name="cfdainfo", - old_name="agency_prior_findings", - new_name="agency_prior_findings_list", - ), - migrations.RenameField( - model_name="cfdainfo", - old_name="elec_audits_id", - new_name="audit_id", - ), - migrations.RenameField( - model_name="cfdainfo", - old_name="auditor_ein", - new_name="cpa_ein", - ), - migrations.RenameField( - model_name="cfdainfo", - old_name="finding_ref_nums", - new_name="finding_ref_numbers", - ), - migrations.RenameField( - model_name="findings", - old_name="elec_audit_findings_id", - new_name="audit_findings_id", - ), - migrations.RenameField( - model_name="findings", - old_name="elec_audits_id", - new_name="audit_id", - ), - migrations.RenameField( - model_name="findings", - old_name="finding_ref_nums", - new_name="finding_ref_number", - ), - migrations.RenameField( - model_name="findings", - old_name="prior_finding_ref_nums", - new_name="prior_finding_ref_numbers", - ), - migrations.RenameField( - model_name="findingstext", - old_name="finding_ref_nums", - new_name="finding_ref_number", - ), - migrations.RenameField( - model_name="findingstext", - old_name="seq_number", - new_name="seqence_number", - ), - migrations.RenameField( - model_name="general", - old_name="completed_on", - new_name="completed_date", - ), - migrations.RenameField( - model_name="general", - old_name="date_firewall", - new_name="date_published", - ), - migrations.RenameField( - model_name="general", - old_name="previous_date_firewall", - new_name="previous_date_published", - ), - migrations.RenameField( - model_name="general", - old_name="sp_framework", - new_name="special_framework", - ), - migrations.RenameField( - model_name="general", - old_name="sp_framework_required", - new_name="special_framework_required", - ), - migrations.RenameField( - model_name="notes", - old_name="seq_number", - new_name="sequence_number", - ), - migrations.RenameField( - model_name="passthrough", - old_name="elec_audits_id", - new_name="audit_id", - ), - migrations.RenameField( - model_name="revisions", - old_name="auditinfo_explain", - new_name="audit_info_explain", - ), - migrations.RenameField( - model_name="revisions", - old_name="elec_report_revision_id", - new_name="revision_id", - ), - migrations.RenameField( - model_name="auditor", - old_name="seqnum", - new_name="seqence_number", - ), - migrations.AddField( - model_name="agencies", - name="agency_aln", - field=models.CharField( - max_length=40, - null=True, - verbose_name="Assistance Listing Number (ALN), a 2-digit prefix of Federal Agency", - ), - ), - migrations.AddField( - model_name="agencies", - name="federal_program_name", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: III/6/b; SF-SAC 2001-2003: III/10/c; SF-SAC 2004-2007: III/9/d; SF-SAC 2008-2009: III/9/d; SF-SAC 2010-2012: III/9/e; SF-SAC 2013-2015: III/6/c; SF-SAC 2016-2018: II/1/d; SF-SAC 2019-2021: II/1/d; SF-SAC 2022: II/1/d Census mapping: CFDA INFO, FEDERALPROGRAMNAME", - max_length=300, - null=True, - verbose_name="Name of Federal Program", - ), - ), - migrations.AlterField( - model_name="agencies", - name="agency_cfda", - field=models.IntegerField( - help_text="Data sources: SF-SAC 1997-2000: III/5; SF-SAC 2001-2003: III/9; SF-SAC 2004-2007: III/8; SF-SAC 2008-2009: III/8; SF-SAC 2010-2012: III/8; SF-SAC 2013-2015: III/5; SF-SAC 2016-2018: III/3/d; SF-SAC 2019-2021: III/3/d; SF-SAC 2022: III/3/d Census mapping: AGENCIES, AGENCYCFDA", - null=True, - verbose_name="Catalog of Federal Domestic Assistance (CFDA) code, a 2-digit prefix of Federal Agency requiring copy of audit.", - ), - ), - # This is becoming many to many - migrations.RemoveField( - model_name="findings", - name="findings_text", - ), - # verbose_name update - migrations.AlterField( - model_name="general", - name="material_weakness_major_program", - field=models.BooleanField( - help_text="Data sources: SF-SAC 2001-2003: III/6; SF-SAC 2004-2007: III/5; SF-SAC 2008-2009: III/5; SF-SAC 2010-2012: III/5 Census mapping: GENERAL, MATERIALWEAKNESS_MP", - null=True, - verbose_name="Indicate whether any reportable condition/significant deficiency was disclosed as a material weakness for a major program in the Schedule of Findings and Questioned Costs", - ), - ), - # verbose_name update - migrations.AlterField( - model_name="revisions", - name="notes_to_sefa", - field=models.CharField( - help_text="Census mapping: REVISIONS, NOTESTOSEFA", - max_length=50, - null=True, - verbose_name="Indicates what items on the Notes to Schedule of Expenditures of Federal Awards (SEFA) page were edited during the revision", - ), - ), - # verbose_name update - migrations.AlterField( - model_name="revisions", - name="notes_to_sefa_explain", - field=models.TextField( - help_text="Census mapping: REVISIONS, NOTESTOSEFA_EXPLAIN", - null=True, - verbose_name="Explanation of what items on the Notes to Schedule of Expenditures of Federal Awards (SEFA) page were edited during the revision", - ), - ), - migrations.AddField( - model_name="findings", - name="findings_text", - field=models.ManyToManyField(to="data_distro.findingstext"), - ), - ] diff --git a/backend/data_distro/migrations/0021_alter_auditor_seqence_number.py b/backend/data_distro/migrations/0021_alter_auditor_seqence_number.py deleted file mode 100644 index 670065426..000000000 --- a/backend/data_distro/migrations/0021_alter_auditor_seqence_number.py +++ /dev/null @@ -1,21 +0,0 @@ -# Generated by Django 4.1.4 on 2023-02-24 19:10 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("data_distro", "0020_renames_and_Findings_links"), - ] - - operations = [ - migrations.AlterField( - model_name="auditor", - name="seqence_number", - field=models.IntegerField( - help_text="Census mapping: GENERAL, SEQNUM (AND) Census mapping: MULTIPLE CPAS INFO, SEQNUM", - null=True, - verbose_name="Order that Auditors were reported on page 5 of SF-SAC (only for secondary_auditors)", - ), - ), - ] diff --git a/backend/data_distro/migrations/0022_rename_models.py b/backend/data_distro/migrations/0022_rename_models.py deleted file mode 100644 index d7662284f..000000000 --- a/backend/data_distro/migrations/0022_rename_models.py +++ /dev/null @@ -1,51 +0,0 @@ -# Generated by Django 4.1.4 on 2023-02-24 21:20 - -from django.db import migrations - - -class Migration(migrations.Migration): - dependencies = [ - ("data_distro", "0021_alter_auditor_seqence_number"), - ] - - operations = [ - migrations.RenameModel( - old_name="Agencies", - new_name="Agency", - ), - migrations.RenameModel( - old_name="CfdaInfo", - new_name="FederalAward", - ), - migrations.RenameModel( - old_name="Findings", - new_name="Finding", - ), - migrations.RenameModel( - old_name="Findingstext", - new_name="FindingText", - ), - migrations.RenameModel( - old_name="Notes", - new_name="Note", - ), - migrations.RenameModel( - old_name="Revisions", - new_name="Revision", - ), - migrations.RenameField( - model_name="general", - old_name="cfda", - new_name="federal_awards", - ), - migrations.RenameField( - model_name="general", - old_name="notes", - new_name="note", - ), - migrations.RenameField( - model_name="general", - old_name="revisions", - new_name="revision", - ), - ] diff --git a/backend/data_distro/migrations/0023_make_linkages_many_to_many.py b/backend/data_distro/migrations/0023_make_linkages_many_to_many.py deleted file mode 100644 index ad77650bb..000000000 --- a/backend/data_distro/migrations/0023_make_linkages_many_to_many.py +++ /dev/null @@ -1,56 +0,0 @@ -# Generated by Django 4.1.4 on 2023-02-26 18:47 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("data_distro", "0022_rename_models"), - ] - - operations = [ - # EINs were not pointing to audiotapes, they were pointing to cpa_ein in federal awards - migrations.RemoveField( - model_name="auditee", - name="agency", - ), - # needs to accommodate many notes - migrations.RemoveField( - model_name="general", - name="note", - ), - migrations.AddField( - model_name="general", - name="notes", - field=models.ManyToManyField(to="data_distro.note"), - ), - # needs many to many - migrations.RemoveField( - model_name="general", - name="cap_text", - ), - # many to many because there are more lines in the cfda table than the gen table - migrations.RemoveField( - model_name="general", - name="federal_awards", - ), - migrations.RemoveField( - model_name="general", - name="passthrough", - ), - migrations.AddField( - model_name="general", - name="cap_text", - field=models.ManyToManyField(to="data_distro.captext"), - ), - migrations.AddField( - model_name="general", - name="federal_awards", - field=models.ManyToManyField(to="data_distro.federalaward"), - ), - migrations.AddField( - model_name="general", - name="passthrough", - field=models.ManyToManyField(to="data_distro.passthrough"), - ), - ] diff --git a/backend/data_distro/migrations/0024_add_sql_docs.py b/backend/data_distro/migrations/0024_add_sql_docs.py deleted file mode 100644 index febe4768d..000000000 --- a/backend/data_distro/migrations/0024_add_sql_docs.py +++ /dev/null @@ -1,15 +0,0 @@ -# Generated by Lindsay 2023-02-27 - -from django.db import migrations - -from data_distro.management.commands.create_docs import Command - - -class Migration(migrations.Migration): - dependencies = [ - ("data_distro", "0023_make_linkages_many_to_many"), - ] - - operations = [ - migrations.RunPython(Command), - ] diff --git a/backend/data_distro/migrations/0025_alter_revision_general_info_explain.py b/backend/data_distro/migrations/0025_alter_revision_general_info_explain.py deleted file mode 100644 index f7189bbbb..000000000 --- a/backend/data_distro/migrations/0025_alter_revision_general_info_explain.py +++ /dev/null @@ -1,21 +0,0 @@ -# Generated by Django 4.1.4 on 2023-02-28 19:28 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("data_distro", "0024_add_sql_docs"), - ] - - operations = [ - migrations.AlterField( - model_name="revision", - name="general_info_explain", - field=models.TextField( - help_text="Census mapping: REVISIONS, GENINFO_EXPLAIN", - null=True, - verbose_name="Explanation of what items on the General Info page were edited during the revision", - ), - ), - ] diff --git a/backend/data_distro/migrations/0026_nulls_for_cpa_fields.py b/backend/data_distro/migrations/0026_nulls_for_cpa_fields.py deleted file mode 100644 index 7e53cf3d5..000000000 --- a/backend/data_distro/migrations/0026_nulls_for_cpa_fields.py +++ /dev/null @@ -1,52 +0,0 @@ -# Generated by Django 4.1.4 on 2023-03-06 18:30 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("data_distro", "0025_alter_revision_general_info_explain"), - ] - - operations = [ - migrations.AlterField( - model_name="auditor", - name="cpa_city", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/7/b; SF-SAC 2001-2003: I/7/b; SF-SAC 2004-2007: I/7/b; SF-SAC 2008-2009: I/6/b; SF-SAC 2010-2012: I/6/b; SF-SAC 2013-2015: I/6/c; SF-SAC 2016-2018: I/6/c; SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPACITY (AND) Data sources: SF-SAC 2008-2009: I/8/b; SF-SAC 2010-2012: I/8/b; SF-SAC 2013-2015: I/8/d; SF-SAC 2016-2018: I/8/d; SF-SAC 2019-2021: I/6/h/iv; SF-SAC 2022: I/6/h/iv Census mapping: MULTIPLE CPAS INFO, CPACITY", - max_length=30, - null=True, - verbose_name="CPA City", - ), - ), - migrations.AlterField( - model_name="auditor", - name="cpa_contact", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/7/c; SF-SAC 2001-2003: I/7/c; SF-SAC 2004-2007: I/7/c; SF-SAC 2008-2009: I/6/c; SF-SAC 2010-2012: I/6/c; SF-SAC 2013-2015: I/6/d; SF-SAC 2016-2018: I/6/d; SF-SAC 2019-2021: I/6/d; SF-SAC 2022: I/6/d Census mapping: GENERAL, CPACONTACT (AND) Data sources: SF-SAC 2008-2009: I/8/c; SF-SAC 2010-2012: I/8/c; SF-SAC 2013-2015: I/8/g; SF-SAC 2016-2018: I/8/g; SF-SAC 2019-2021: I/6/h/vii; SF-SAC 2022: I/6/h/vii Census mapping: MULTIPLE CPAS INFO, CPACONTACT", - max_length=50, - null=True, - verbose_name="Name of CPA Contact", - ), - ), - migrations.AlterField( - model_name="auditor", - name="cpa_state", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/7/b; SF-SAC 2001-2003: I/7/b; SF-SAC 2004-2007: I/7/b; SF-SAC 2008-2009: I/6/b; SF-SAC 2010-2012: I/6/b; SF-SAC 2013-2015: I/6/c; SF-SAC 2016-2018: I/6/c; SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPASTATE (AND) Data sources: SF-SAC 2008-2009: I/8/b; SF-SAC 2010-2012: I/8/b; SF-SAC 2013-2015: I/8/e; SF-SAC 2016-2018: I/8/e; SF-SAC 2019-2021: I/6/h/v; SF-SAC 2022: I/6/h/v Census mapping: MULTIPLE CPAS INFO, CPASTATE", - max_length=2, - null=True, - verbose_name="CPA State", - ), - ), - migrations.AlterField( - model_name="auditor", - name="cpa_street1", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/7/b; SF-SAC 2001-2003: I/7/b; SF-SAC 2004-2007: I/7/b; SF-SAC 2008-2009: I/6/b; SF-SAC 2010-2012: I/6/b; SF-SAC 2013-2015: I/6/c; SF-SAC 2016-2018: I/6/c; SF-SAC 2019-2021: I/6/c; SF-SAC 2022: I/6/c Census mapping: GENERAL, CPASTREET1 (AND) Data sources: SF-SAC 2008-2009: I/8/b; SF-SAC 2010-2012: I/8/b; SF-SAC 2013-2015: I/8/c; SF-SAC 2016-2018: I/8/c; SF-SAC 2019-2021: I/6/h/iii; SF-SAC 2022: I/6/h/iii Census mapping: MULTIPLE CPAS INFO, CPASTREET1", - max_length=45, - null=True, - verbose_name="CPA Street Address", - ), - ), - ] diff --git a/backend/data_distro/migrations/0027_null_for_auditee_auditee_contact.py b/backend/data_distro/migrations/0027_null_for_auditee_auditee_contact.py deleted file mode 100644 index 08fff4a99..000000000 --- a/backend/data_distro/migrations/0027_null_for_auditee_auditee_contact.py +++ /dev/null @@ -1,22 +0,0 @@ -# Generated by Django 4.1.4 on 2023-03-08 18:53 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("data_distro", "0026_nulls_for_cpa_fields"), - ] - - operations = [ - migrations.AlterField( - model_name="auditee", - name="auditee_contact", - field=models.CharField( - help_text="Data sources: SF-SAC 1997-2000: I/6/c; SF-SAC 2001-2003: I/6/c; SF-SAC 2004-2007: I/6/c; SF-SAC 2008-2009: I/5/c; SF-SAC 2010-2012: I/5/c; SF-SAC 2013-2015: I/5/c; SF-SAC 2016-2018: I/5/c; SF-SAC 2019-2021: I/5/c; SF-SAC 2022: I/5/c Census mapping: GENERAL, AUDITEECONTACT", - max_length=50, - null=True, - verbose_name="Name of Auditee Contact", - ), - ), - ] diff --git a/backend/data_distro/migrations/0028_general_pdf_urls.py b/backend/data_distro/migrations/0028_general_pdf_urls.py deleted file mode 100644 index c25946ac9..000000000 --- a/backend/data_distro/migrations/0028_general_pdf_urls.py +++ /dev/null @@ -1,26 +0,0 @@ -# Generated by Django 4.1.7 on 2023-03-10 21:47 - -import django.contrib.postgres.fields -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("data_distro", "0027_null_for_auditee_auditee_contact"), - ] - - operations = [ - migrations.AddField( - model_name="general", - name="pdf_urls", - field=django.contrib.postgres.fields.ArrayField( - base_field=models.CharField( - max_length=400, - null=True, - verbose_name="PDFs associated with the report", - ), - null=True, - size=None, - ), - ), - ] diff --git a/backend/data_distro/migrations/0030_add_api_views.py b/backend/data_distro/migrations/0030_add_api_views.py deleted file mode 100644 index 7a0974e0e..000000000 --- a/backend/data_distro/migrations/0030_add_api_views.py +++ /dev/null @@ -1,73 +0,0 @@ -# Generated by Lindsay 2023-03-21 -# creates custom views for the API -from io import StringIO - -from psycopg2 import sql -from psycopg2._psycopg import connection - -from django.db import migrations -from django.core.management import call_command -from django.conf import settings - - -def create_views(apps, schema_editor): - call_command( - "create_distro_api", - stdout="", - stderr=StringIO(), - **{"file": "sql_migrations/001_initial_migration.sql"}, - ) - call_command( - "create_distro_api", - stdout="", - stderr=StringIO(), - **{"file": "sql_migrations/002_basic_views.sql"}, - ) - call_command( - "create_distro_api", - stdout="", - stderr=StringIO(), - **{"file": "sql_migrations/003_findings.sql"}, - ) - call_command( - "create_distro_api", - stdout="", - stderr=StringIO(), - **{"file": "sql_migrations/004_general.sql"}, - ) - - -def delete_views(apps, schema_editor): - command = """ - drop view api.vw_auditee; - drop view api.vw_auditor; - drop view api.vw_cap_text; - drop view api.vw_federal_award; - drop view api.vw_findings; - drop view api.vw_findings_text; - drop view api.vw_general; - drop view api.vw_note; - drop view api.vw_passthrough; - drop view api.vw_revision; - drop role anon; - drop schema api; - """ - - if settings.ENVIRONMENT not in ["DEVELOPMENT", "PREVIEW", "STAGING", "PRODUCTION"]: - conn_string = "dbname='postgres' user='postgres' port='5432' host='db'" - else: - conn_string = settings.CONNECTION_STRING - - conn = connection(conn_string) - conn.autocommit = True - - with conn.cursor() as curs: - curs.execute(sql.SQL(command)) - - -class Migration(migrations.Migration): - dependencies = [ - ("data_distro", "0028_general_pdf_urls"), - ] - - operations = [migrations.RunPython(create_views, delete_views)] diff --git a/backend/data_distro/migrations/0031_rename_seqence_number_to_sequence_number.py b/backend/data_distro/migrations/0031_rename_seqence_number_to_sequence_number.py deleted file mode 100644 index 49dcf8b67..000000000 --- a/backend/data_distro/migrations/0031_rename_seqence_number_to_sequence_number.py +++ /dev/null @@ -1,22 +0,0 @@ -# Generated by Django 4.1.7 on 2023-03-22 16:38 - -from django.db import migrations - - -class Migration(migrations.Migration): - dependencies = [ - ("data_distro", "0030_add_api_views"), - ] - - operations = [ - migrations.RenameField( - model_name="auditor", - old_name="seqence_number", - new_name="sequence_number", - ), - migrations.RenameField( - model_name="findingtext", - old_name="seqence_number", - new_name="sequence_number", - ), - ] diff --git a/backend/data_distro/migrations/0032_update_API.py b/backend/data_distro/migrations/0032_update_API.py deleted file mode 100644 index 43befec1f..000000000 --- a/backend/data_distro/migrations/0032_update_API.py +++ /dev/null @@ -1,50 +0,0 @@ -""" -This step needs to be run after a migration so that there are not concurrent locks on a table. - - -""" - -from io import StringIO - -from django.db import migrations -from django.core.management import call_command - - -def update_docs_and_views(apps, schema_editor): - # Recreating the API views where the names were updated - call_command( - "create_distro_api", - stdout="", - stderr=StringIO(), - **{"file": "sql_migrations/002_basic_views.sql"}, - ) - - call_command( - "create_distro_api", - stdout="", - stderr=StringIO(), - **{"file": "sql_migrations/003_findings.sql"}, - ) - - """Runs our management command to add documentation to sql""" - call_command( - "create_docs", - stdout="", - stderr=StringIO(), - ) - - # Adding high-level docs for the views - call_command( - "create_distro_api", - stdout="", - stderr=StringIO(), - **{"file": "sql_migrations/005_docs_for_views.sql"}, - ) - - -class Migration(migrations.Migration): - dependencies = [ - ("data_distro", "0031_rename_seqence_number_to_sequence_number"), - ] - - operations = [migrations.RunPython(update_docs_and_views)] diff --git a/backend/data_distro/migrations/0033_dbkey_to_auditee_API.py b/backend/data_distro/migrations/0033_dbkey_to_auditee_API.py deleted file mode 100644 index 561c763eb..000000000 --- a/backend/data_distro/migrations/0033_dbkey_to_auditee_API.py +++ /dev/null @@ -1,30 +0,0 @@ -""" -This step needs to be run after a migration so that there are not concurrent locks on a table. - - -""" - -from io import StringIO - -from django.db import migrations -from django.core.management import call_command - - -def update_view(apps, schema_editor): - """Runs our management command to add documentation to sql""" - - # Adding DBKEY to auditee view - call_command( - "create_distro_api", - stdout="", - stderr=StringIO(), - **{"file": "sql_migrations/006_dbkey_for_auditee.sql"}, - ) - - -class Migration(migrations.Migration): - dependencies = [ - ("data_distro", "0032_update_API"), - ] - - operations = [migrations.RunPython(update_view)] diff --git a/backend/data_distro/migrations/0034_API_improvements.py b/backend/data_distro/migrations/0034_API_improvements.py deleted file mode 100644 index 96c4ba7c0..000000000 --- a/backend/data_distro/migrations/0034_API_improvements.py +++ /dev/null @@ -1,31 +0,0 @@ -from io import StringIO - -from django.db import migrations -from django.core.management import call_command - - -def update_view(apps, schema_editor): - """Runs our management command to add documentation to sql""" - - # Making views available to Postgrest API - call_command( - "create_distro_api", - stdout="", - stderr=StringIO(), - **{"file": "sql_migrations/007_add_postgrest_notify.sql"}, - ) - - # Adding column docs for the views - call_command( - "create_docs", - stdout="", - stderr=StringIO(), - ) - - -class Migration(migrations.Migration): - dependencies = [ - ("data_distro", "0033_dbkey_to_auditee_API"), - ] - - operations = [migrations.RunPython(update_view)] diff --git a/backend/data_distro/migrations/0035_update_docs.py b/backend/data_distro/migrations/0035_update_docs.py deleted file mode 100644 index 0db10f40a..000000000 --- a/backend/data_distro/migrations/0035_update_docs.py +++ /dev/null @@ -1,15 +0,0 @@ -# Generated by Lindsay 2023-04-07 - -from django.db import migrations - -from data_distro.management.commands.create_docs import Command - - -class Migration(migrations.Migration): - dependencies = [ - ("data_distro", "0034_API_improvements"), - ] - - operations = [ - migrations.RunPython(Command), - ] diff --git a/backend/data_distro/migrations/__init__.py b/backend/data_distro/migrations/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/backend/data_distro/models.py b/backend/data_distro/models.py deleted file mode 100644 index a06b10066..000000000 --- a/backend/data_distro/models.py +++ /dev/null @@ -1,956 +0,0 @@ -from django.db import models -from django.contrib.postgres.fields import ArrayField - -from data_distro import docs - - -# Will refactor, not currently in use -class Agency(models.Model): - """Information about the Agency requiring a copy of the audit""" - - # can we separate extensions? - agency_aln = models.CharField( - "Assistance Listing Number (ALN), a 2-digit prefix of Federal Agency", - null=True, - max_length=40, - ) - agency_cfda = models.IntegerField( - "Catalog of Federal Domestic Assistance (CFDA) code, a 2-digit prefix of Federal Agency requiring copy of audit.", - null=True, - # need to update docs - help_text=docs.agency_cfda, - ) - agency_name = models.CharField( - "Name of the Federal Agency requiring copy of audit report", - null=True, - max_length=125, - ) - federal_program_name = models.CharField( - "Name of Federal Program", - max_length=300, - null=True, - help_text=docs.federal_program_name, - ) - is_public = models.BooleanField( - "True for public records, False for non-public records" - ) - - -class Auditee(models.Model): - """Information about the entity undergoing the audit""" - - auditee_certify_name = models.CharField( - "Name of Auditee Certifying Official", - max_length=50, - null=True, - help_text=docs.auditee_certify_name, - ) - auditee_certify_title = models.CharField( - "Title of Auditee Certifying Official", - max_length=50, - null=True, - help_text=docs.auditee_certify_title, - ) - auditee_contact = models.CharField( - "Name of Auditee Contact", - max_length=50, - null=True, - help_text=docs.auditee_contact, - ) - auditee_email = models.CharField( - "Auditee Email address", - max_length=60, - null=True, - help_text=docs.auditee_email, - ) - auditee_fax = models.PositiveBigIntegerField( - "Auditee Fax Number (optional)", null=True, help_text=docs.auditee_fax - ) - auditee_name = models.CharField( - "Name of the Auditee", max_length=70, help_text=docs.auditee_name - ) - auditee_name_title = models.CharField( - "Title of Auditee Certifying Official", - max_length=70, - null=True, - help_text=docs.auditee_name_title, - ) - auditee_phone = models.PositiveBigIntegerField( - "Auditee Phone Number", help_text=docs.auditee_phone - ) - auditee_title = models.CharField( - "Title of Auditee Contact", - max_length=40, - null=True, - help_text=docs.auditee_title, - ) - auditee_street1 = models.CharField( - "Auditee Street Address", max_length=45, help_text=docs.street1 - ) - auditee_street2 = models.CharField( - "Auditee Street Address", max_length=45, null=True, help_text=docs.street2 - ) - auditee_city = models.CharField("Auditee City", max_length=30, help_text=docs.city) - auditee_state = models.CharField( - "Auditee State", max_length=2, help_text=docs.state - ) - ein_list = ArrayField( - models.IntegerField( - "Primary Employer Identification Number, in the order that they were listed.", - null=True, - help_text=docs.ein_list, - ) - ) - ein_subcode = models.IntegerField( - "Subcode assigned to the EIN.", null=True, help_text=docs.ein_subcode - ) - auditee_zip_code = models.CharField( - "Auditee Zip Code", - max_length=12, - null=True, - help_text=docs.zip_code, - ) - duns_list = ArrayField( - models.IntegerField( - "Multiple Data Universal Numbering System Numbers (DUNS) of the Auditee, in the order they were listed.", - null=True, - help_text=docs.duns_list, - ), - ) - uei_list = ArrayField( - models.CharField( - "Unique Entity ID", max_length=12, null=True, help_text=docs.uei_general - ), - ) - is_public = models.BooleanField("True if appears in a public record") - - -class Auditor(models.Model): - """Information about the Auditing CPA firm conducting the audit""" - - cpa_phone = models.PositiveBigIntegerField( - "CPA phone number", null=True, help_text=docs.cpa_phone - ) - cpa_fax = models.PositiveBigIntegerField( - "CPA fax number (optional)", - null=True, - help_text=docs.cpa_fax, - ) - cpa_state = models.CharField( - "CPA State", max_length=2, null=True, help_text=docs.cpa_state - ) - cpa_city = models.CharField( - "CPA City", max_length=30, null=True, help_text=docs.cpa_city - ) - cpa_title = models.CharField( - "Title of CPA Contact", - max_length=40, - null=True, - help_text=docs.cpa_title, - ) - cpa_street1 = models.CharField( - "CPA Street Address", - max_length=45, - null=True, - help_text=docs.cpa_street1, - ) - cpa_street2 = models.CharField( - "CPA Street Address, line 2", - max_length=45, - null=True, - help_text=docs.cpa_street2, - ) - cpa_zip_code = models.CharField( - "CPA Zip Code", - null=True, - max_length=12, - help_text=docs.cpa_zip_code, - ) - cpa_country = models.CharField( - "CPA Country", max_length=6, null=True, help_text=docs.cpa_country - ) - cpa_contact = models.CharField( - "Name of CPA Contact", - max_length=50, - null=True, - help_text=docs.cpa_contact, - ) - cpa_email = models.CharField( - "CPA mail address (optional)", - max_length=60, - null=True, - help_text=docs.cpa_email, - ) - cpa_firm_name = models.CharField( - "CPA Firm Name", max_length=64, help_text=docs.cpa_firm_name - ) - # Once loaded, would like to add these as regular addresses and just change this to a country field - cpa_foreign = models.CharField( - "CPA Address - if international", - max_length=200, - null=True, - help_text=docs.cpa_foreign, - ) - cpa_ein = models.IntegerField( - "CPA Firm EIN (only available for audit years 2013 and beyond)", - null=True, - help_text=docs.auditor_ein, - ) - sequence_number = models.IntegerField( - "Order that Auditors were reported on page 5 of SF-SAC (only for secondary_auditors)", - null=True, - help_text=docs.seqnum, - ) - is_public = models.BooleanField("True if appears in a public record") - - -class FindingText(models.Model): - """Specific findings details""" - - charts_tables = models.BooleanField( - "Indicates whether or not the text contained charts or tables that could not be entered due to formatting restrictions", - max_length=1, - null=True, - help_text=docs.charts_tables_findingstext, - ) - finding_ref_number = models.CharField( - "Audit Finding Reference Number", - max_length=100, - null=True, - help_text=docs.finding_ref_nums_findingstext, - ) - sequence_number = models.IntegerField( - "Order that the findings text was reported", - null=True, - help_text=docs.seq_number_findingstext, - ) - text = models.TextField( - "Content of the finding text", - null=True, - help_text=docs.text_findingstext, - ) - dbkey = models.CharField( - "Audit Year and DBKEY (database key) combined make up the primary key.", - max_length=40, - help_text=docs.dbkey_findingstext, - ) - audit_year = models.CharField( - "Audit Year and DBKEY (database key) combined make up the primary key.", - max_length=40, - help_text=docs.audit_year_findingstext, - ) - is_public = models.BooleanField( - "True for public records, False for non-public records" - ) - - -class Finding(models.Model): - """A finding from the audit""" - - findings_text = models.ManyToManyField(FindingText) - finding_ref_number = models.CharField( - "Findings Reference Numbers", - max_length=100, - help_text=docs.finding_ref_nums_findings, - ) - audit_id = models.IntegerField( - "FAC system generated sequence number used to link to Findings data between CFDA Info and Findings", - help_text=docs.elec_audits_id_findings, - ) - audit_findings_id = models.IntegerField( - "FAC system generated sequence number for finding", - help_text=docs.elec_audit_findings_id, - ) - prior_finding_ref_numbers = models.CharField( - "Audit finding reference numbers from the immediate prior audit", - max_length=100, - help_text=docs.prior_finding_ref_nums, - null=True, - ) - modified_opinion = models.BooleanField( - "Modified Opinion finding", null=True, help_text=docs.modified_opinion - ) - other_non_compliance = models.BooleanField( - "Other Noncompliance finding", null=True, help_text=docs.other_non_compliance - ) - material_weakness = models.BooleanField( - "Material Weakness finding", - null=True, - help_text=docs.material_weakness_findings, - ) - significant_deficiency = models.BooleanField( - "Significant Deficiency finding", - null=True, - help_text=docs.significant_deficiency_findings, - ) - other_findings = models.BooleanField( - "Other findings", null=True, help_text=docs.other_findings - ) - questioned_costs = models.BooleanField( - "Questioned Costs", null=True, help_text=docs.questioned_costs_findings - ) - repeat_finding = models.BooleanField( - "Indicates whether or not the audit finding was a repeat of an audit finding in the immediate prior audit", - null=True, - help_text=docs.repeat_finding, - ) - type_requirement = models.CharField( - "Type Requirement Failure", - max_length=40, - null=True, - help_text=docs.type_requirement_findings, - ) - audit_year = models.CharField( - "Audit Year and DBKEY (database key) combined make up the primary key.", - max_length=40, - help_text=docs.audit_year_findings, - ) - dbkey = models.CharField( - "Audit Year and DBKEY (database key) combined make up the primary key.", - max_length=40, - help_text=docs.dbkey_findings, - ) - is_public = models.BooleanField( - "True for public records, False for non-public records" - ) - - -class FederalAward(models.Model): - """Information about the federal award section of the form""" - - findings = models.ManyToManyField(Finding) - audit_id = models.IntegerField( - "FAC system generated sequence number used to link to Findings data between CFDA Info and Findings", - help_text=docs.elec_audits_id_cfdainfo, - ) - # this would be better as a list - finding_ref_numbers = models.CharField( - "Findings Reference Numbers", - max_length=100, - null=True, - help_text=docs.finding_ref_nums_cfdainfo, - ) - agency_prior_findings_list = ArrayField( - models.IntegerField( - "Federal Agencies with Current or Prior Year Audit Findings on Direct Awards. An empty list means None.", - null=True, - help_text=docs.agency_prior_findings, - ), - null=True, - ) - # Agency - federal_program_name = models.CharField( - "Name of Federal Program", - max_length=300, - null=True, - help_text=docs.federal_program_name, - ) - agency_name = models.CharField( - "Name of Federal Program (auto-generated by FAC from the CFDA catalog)", - max_length=300, - null=True, - help_text=docs.cfda_program_name, - ) - # can have letters - agency_cfda = models.CharField( - "Federal Agency Prefix and Extension", max_length=52, help_text=docs.cfda - ) - award_identification = models.CharField( - "Other data used to identify the award which is not a CFDA number (e.g., program year, contract number)", - max_length=50, - null=True, - help_text=docs.award_identification, - ) - # this is redundant, we could remove in the future, keeping for now so relationships can be verified - cpa_ein = models.IntegerField( - "Primary Employer Identification Number", - null=True, - help_text=docs.auditor_ein, - ) - research_and_development = models.BooleanField( - "Indicate whether or not the program is a Research and Development program", - null=True, - help_text=docs.research_and_development, - ) - loans = models.BooleanField( - "Indicate whether or not the program is a Loan or Loan Guarantee (only available for audit years 2013 and beyond)", - null=True, - help_text=docs.loans, - ) - arra = models.BooleanField( - "American Recovery and Reinvestment Act Funded Program", - null=True, - help_text=docs.arra, - ) - direct = models.BooleanField( - "Indicate whether or not the award was received directly from a Federal awarding agency", - null=True, - help_text=docs.direct, - ) - passthrough_award = models.BooleanField( - "Indicates whether or not funds were passed through to any subrecipients for the Federal program", - null=True, - help_text=docs.passthrough_award, - ) - major_program = models.BooleanField( - "Indicate whether or not the Federal program is a major program", - null=True, - help_text=docs.major_program, - ) - amount = models.BigIntegerField( - "Amount Expended for the Federal Program", help_text=docs.amount - ) - program_total = models.BigIntegerField( - "Total Federal awards expended for each individual Federal program is auto-generated by summing the amount expended for all line items with the same CFDA Prefix and Extension", - null=True, - help_text=docs.program_total, - ) - cluster_total = models.BigIntegerField( - "Total Federal awards expended for each individual Federal program is auto-generated by summing the amount expended for all line items with the same Cluster Name", - null=True, - help_text=docs.cluster_total, - ) - passthrough_amount = models.BigIntegerField( - "Amount passed through to subrecipients", - null=True, - help_text=docs.passthrough_amount, - ) - loan_balance = models.CharField( - "The loan or loan guarantee (loan) balance outstanding at the end of the audit period. A response of ‘N/A’ is acceptable.", - max_length=40, - null=True, - help_text=docs.loan_balance, - ) - cluster_name = models.CharField( - "The name of the cluster", - max_length=75, - null=True, - help_text=docs.cluster_name, - ) - state_cluster_name = models.CharField( - "The name of the state cluster", - max_length=75, - null=True, - help_text=docs.state_cluster_name, - ) - other_cluster_name = models.CharField( - "The name of the cluster (if not listed in the Compliance Supplement)", - max_length=75, - null=True, - help_text=docs.other_cluster_name, - ) - type_requirement = models.CharField( - "Type Requirement Failure", - max_length=40, - null=True, - help_text=docs.type_requirement_cfdainfo, - ) - type_report_major_program = models.CharField( - "Type of Report Issued on the Major Program Compliance", - max_length=40, - null=True, - help_text=docs.type_report_major_program_cfdainfo, - ) - findings_page = models.TextField( - "Items on the Findings page", null=True, help_text=docs.findings - ) - findings_count = models.IntegerField( - "Number of findings for the federal program (only available for audit years 2013 and beyond)", - null=True, - help_text=docs.findings_count, - ) - questioned_costs = models.CharField( - "Dollar amount of questioned costs (Deprecated since 2002)", - null=True, - max_length=40, - help_text=docs.questioned_costs_FederalAward, - ) - - # metadata - dbkey = models.CharField( - "Audit Year and DBKEY (database key) combined make up the primary key.", - max_length=40, - help_text=docs.dbkey_cfdainfo, - ) - audit_year = models.CharField( - "Audit Year and DBKEY (database key) combined make up the primary key.", - max_length=40, - help_text=docs.audit_year_cfdainfo, - ) - is_public = models.BooleanField( - "True for public records, False for non-public records" - ) - - -class CapText(models.Model): - """Corrective action plan text""" - - finding_ref_number = models.CharField( - "Audit Finding Reference Number", - max_length=100, - help_text=docs.finding_ref_nums_captext, - ) - charts_tables = models.BooleanField( - "Indicates whether or not the text contained charts or tables that could not be entered due to formatting restrictions", - max_length=1, - null=True, - help_text=docs.charts_tables_captext, - ) - sequence_number = models.IntegerField( - "Order that the CAP text was reported", help_text=docs.seq_number_captext - ) - text = models.TextField( - "Content of the Corrective Action Plan (CAP)", help_text=docs.text_captext - ) - dbkey = models.CharField( - "Audit Year and DBKEY (database key) combined make up the primary key.", - max_length=40, - help_text=docs.dbkey_captext, - ) - audit_year = models.CharField( - "Audit Year and DBKEY (database key) combined make up the primary key.", - max_length=40, - help_text=docs.audit_year_captext, - ) - is_public = models.BooleanField( - "True for public records, False for non-public records" - ) - - -class Note(models.Model): - """Note to Schedule of Expenditures of Federal Awards (SEFA)""" - - type_id = models.CharField("Note Type", max_length=1, help_text=docs.type_id) - fac_id = models.IntegerField( - "Internal Unique Identifier for the record", help_text=docs.fac_id - ) - report_id = models.IntegerField( - "Internal Audit Report Id", help_text=docs.report_id - ) - version = models.IntegerField("Internal Version", help_text=docs.version) - sequence_number = models.IntegerField( - "Order that the Note was reported", help_text=docs.seq_number_notes - ) - note_index = models.IntegerField( - "Display Index for the Note", - null=True, - help_text=docs.note_index, - ) - content = models.TextField("Content of the Note", null=True, help_text=docs.content) - title = models.CharField( - "Note Title", max_length=75, null=True, help_text=docs.title - ) - dbkey = models.CharField( - "Audit Year and DBKEY (database key) combined make up the primary key.", - max_length=40, - help_text=docs.dbkey_notes, - ) - # consider changing these to numeric - audit_year = models.CharField( - "Audit Year and DBKEY (database key) combined make up the primary key.", - max_length=40, - help_text=docs.audit_year_notes, - ) - is_public = models.BooleanField( - "True for public records, False for non-public records" - ) - - -class Revision(models.Model): - """Documents what was revised on the associated form from the previous version""" - - findings = models.CharField( - "Indicates what items on the Findings page were edited during the revision", - max_length=110, - null=True, - help_text=docs.findings_revisions, - ) - revision_id = models.IntegerField( - "Internal Unique Identifier for the record", - null=True, - help_text=docs.elec_report_revision_id, - ) - federal_awards = models.CharField( - "Indicates what items on the Federal Awards page were edited during the revision", - max_length=140, - null=True, - help_text=docs.federal_awards, - ) - general_info_explain = models.TextField( - "Explanation of what items on the General Info page were edited during the revision", - null=True, - help_text=docs.general_info_explain, - ) - federal_awards_explain = models.TextField( - "Explanation of what items on the Federal Awards page were edited during the revision", - null=True, - help_text=docs.federal_awards_explain, - ) - notes_to_sefa_explain = models.TextField( - "Explanation of what items on the Notes to Schedule of Expenditures of Federal Awards (SEFA) page were edited during the revision", - null=True, - help_text=docs.notes_to_sefa_explain, - ) - audit_info_explain = models.TextField( - "Explanation of what items on the Audit Info page were edited during the revision", - null=True, - help_text=docs.auditinfo_explain, - ) - findings_explain = models.TextField( - "Explanation of what items on the Findings page were edited during the revision", - null=True, - help_text=docs.findings_explain, - ) - findings_text_explain = models.TextField( - "Explanation of what items on the Text of the Audit Findings page were edited during the revision", - null=True, - help_text=docs.findings_text_explain, - ) - cap_explain = models.TextField( - "Explanation of what items on the CAP Text page were edited during the revision", - null=True, - help_text=docs.cap_explain, - ) - other_explain = models.TextField( - "Explanation of what other miscellaneous items were edited during the revision", - null=True, - help_text=docs.other_explain, - ) - audit_info = models.CharField( - "Indicates what items on the Audit Info page were edited during the revision", - max_length=200, - null=True, - help_text=docs.audit_info, - ) - notes_to_sefa = models.CharField( - "Indicates what items on the Notes to Schedule of Expenditures of Federal Awards (SEFA) page were edited during the revision", - max_length=50, - null=True, - help_text=docs.notes_to_sefa, - ) - findings_text = models.CharField( - "Indicates what items on the Text of the Audit Findings page were edited during the revision", - max_length=6, - null=True, - help_text=docs.findings_text, - ) - cap = models.CharField( - "Indicates what items on the CAP Text page were edited during the revision", - max_length=6, - null=True, - help_text=docs.cap, - ) - other = models.CharField( - "Indicates what other miscellaneous items were edited during the revision", - max_length=65, - null=True, - help_text=docs.other, - ) - general_info = models.CharField( - "Indicates what items on the General Info page were edited during the revision", - max_length=75, - null=True, - help_text=docs.general_info, - ) - audit_year = models.CharField( - "Audit Year and DBKEY (database key) combined make up the primary key.", - max_length=40, - help_text=docs.audit_year_revisions, - ) - dbkey = models.CharField( - "Audit Year and DBKEY (database key) combined make up the primary key.", - max_length=40, - help_text=docs.dbkey_revisions, - ) - is_public = models.BooleanField( - "True for public records, False for non-public records" - ) - - -class Passthrough(models.Model): - """The pass-through entity information, when it is not a direct federal award""" - - passthrough_name = models.CharField( - "Name of Pass-through Entity", - max_length=150, - null=True, - help_text=docs.passthrough_name, - ) - # This doesn't seem like it should be null but it is sometimes - passthrough_id = models.CharField( - "Identifying Number Assigned by the Pass-through Entity", - max_length=70, - null=True, - help_text=docs.passthrough_id, - ) - audit_id = models.IntegerField( - "FAC system generated sequence number used to link to Passthrough data between CFDA Info and Passthrough", - help_text=docs.elec_audits_id_passthrough, - ) - audit_year = models.CharField( - "Audit Year and DBKEY (database key) combined make up the primary key", - max_length=40, - help_text=docs.audit_year_passthrough, - ) - dbkey = models.CharField( - "Audit Year and DBKEY (database key) combined make up the primary key", - max_length=40, - help_text=docs.dbkey_passthrough, - ) - is_public = models.BooleanField( - "True for public records, False for non-public records" - ) - - -class General(models.Model): - """Data from the General Info and Audit Info forms with links to other parts of the form""" - - # Relational fields - # null = True for these so we can load in phases, may want to tighten validation later - auditee = models.ForeignKey(Auditee, on_delete=models.CASCADE, null=True) - primary_auditor = models.ForeignKey( - Auditor, - related_name="primary_auditor", - on_delete=models.CASCADE, - null=True, - ) - secondary_auditors = models.ManyToManyField( - Auditor, - related_name="secondary_auditor", - ) - federal_awards = models.ManyToManyField(FederalAward) - findings = models.ManyToManyField(Finding) - findings_text = models.ManyToManyField(FindingText) - cap_text = models.ManyToManyField(CapText) - notes = models.ManyToManyField(Note) - passthrough = models.ManyToManyField(Passthrough) - # We only have the most recent, so we only have one revision - revision = models.ForeignKey(Revision, on_delete=models.CASCADE, null=True) - pdf_urls = ArrayField( - models.CharField("PDFs associated with the report", max_length=400, null=True), - null=True, - ) - - # Agency - cognizant_agency = models.CharField( - "Two digit Federal agency prefix of the cognizant agency", - max_length=2, - null=True, - help_text=docs.cognizant_agency, - ) - oversight_agency = models.IntegerField( - "Two digit Federal agency prefix of the oversight agency", - null=True, - help_text=docs.oversight_agency, - ) - cognizant_agency_over = models.CharField( - "A value of 'C' means the entity was assigned a Cognizant agency (had over $50 million in total expenses). A value of 'O' means the entity was assigned a Oversight agency (had less than $50 million in total expenses)", - max_length=2, - null=True, - help_text=docs.cognizant_agency_over, - ) - - # Dates - auditee_date_signed = models.DateField( - "Date of Auditee signature", null=True, help_text=docs.auditee_date_signed - ) - cpa_date_signed = models.DateField( - "Date of CPA signature", null=True, help_text=docs.cpa_date_signed - ) - date_published = models.DateField( - "The date the audit information was made available on the dissemination site", - null=True, - help_text=docs.date_firewall, - ) - fac_accepted_date = models.DateField( - "The most recent date an audit report was submitted to the FAC that passed FAC screening and was accepted as a valid OMB Circular A-133 report submission.", - help_text=docs.fac_accepted_date, - ) - form_date_received = models.DateField( - "The most Recent Date the Form SF-SAC was received by the FAC. This field was not populated before 2001.", - null=True, - help_text=docs.form_date_received, - ) - initial_date_received = models.DateField( - "The first date an audit component or Form SF-SAC was received by the Federal audit Clearinghouse (FAC).", - null=True, - help_text=docs.initial_date_received, - ) - fy_end_date = models.DateField( - "Fiscal Year End Date", null=True, help_text=docs.fy_end_date - ) - fy_start_date = models.DateField( - "Fiscal Year Start Date", null=True, help_text=docs.fy_start_date - ) - previous_completed_on = models.DateField( - "Date the Audit was Previously Posted to the Internet as Complete", - null=True, - help_text=docs.previous_completed_on, - ) - # This may all be nulls and we can get rid of it - previous_date_published = models.DateField( - null=True, - help_text=docs.previous_date_firewall, - ) - completed_date = models.DateField( - "Date the Audit was Posted to the Internet as Complete", - null=True, - help_text=docs.completed_on, - ) - component_date_received = models.DateField( - "The most recent date an audit component was received by the FAC. This field was not populated before 2004. Receipt of Financial statements only are not processed until the rest of the audit or a Form SF-SAC is also received.", - null=True, - help_text=docs.component_date_received, - ) - audit_year = models.CharField( - "Audit Year and DBKEY (database key) combined make up the primary key.", - max_length=40, - help_text=docs.audit_year_general, - ) - - # Audit characteristics - audit_type = models.CharField( - "Type of Audit", - max_length=40, - help_text=docs.audit_type, - ) - reportable_condition = models.BooleanField( - "Whether or not the audit disclosed a reportable condition on financial statements", - null=True, - help_text=docs.reportable_condition, - ) - significant_deficiency = models.BooleanField( - "Whether or not the audit disclosed a significant deficiency on financial statements", - null=True, - help_text=docs.significant_deficiency_general, - ) - condition_or_deficiency_major_program = models.BooleanField( - "Whether or not the audit disclosed a reportable condition/significant deficiency for any major program in the Schedule of Findings and Questioned Costs", - null=True, - help_text=docs.reportable_condition_major_program, - ) - current_or_former_findings = models.BooleanField( - "Indicate whether or not current year findings or prior year findings affecting direct funds were reported", - null=True, - help_text=docs.current_or_former_findings, - ) - dollar_threshold = models.FloatField( - "Dollar Threshold to distinguish between Type A and Type B programs.", - null=True, - help_text=docs.dollar_threshold, - ) - dup_reports = models.BooleanField( - "Whether or not the financial statements include departments that have separate expenditures not included in this audit", - null=True, - help_text=docs.dup_reports, - ) - entity_type = models.CharField( - "Self reported type of entity (i.e., States, Local Governments, Indian Tribes, Institutions of Higher Education, NonProfit)", - max_length=50, - null=True, - help_text=docs.entity_type, - ) - going_concern = models.BooleanField( - "Whether or not the audit contained a going concern paragraph on financial statements", - null=True, - help_text=docs.going_concern, - ) - - low_risk = models.BooleanField( - "Indicate whether or not the auditee qualified as a low-risk auditee", - null=True, - help_text=docs.low_risk, - ) - material_noncompliance = models.BooleanField( - "Whether or not the audit disclosed a material noncompliance on financial statements", - null=True, - help_text=docs.material_noncompliance, - ) - material_weakness = models.BooleanField( - "Whether or not the audit disclosed any reportable condition/significant deficiency as a material weakness on financial statements", - null=True, - help_text=docs.material_weakness_general, - ) - material_weakness_major_program = models.BooleanField( - "Indicate whether any reportable condition/significant deficiency was disclosed as a material weakness for a major program in the Schedule of Findings and Questioned Costs", - null=True, - help_text=docs.material_weakness_major_program, - ) - number_months = models.IntegerField( - "Number of Months Covered by the 'Other' Audit Period", - null=True, - help_text=docs.number_months, - ) - period_covered = models.CharField( - "Audit Period Covered by Audit", max_length=40, help_text=docs.period_covered - ) - prior_year_schedule = models.BooleanField( - "Indicate whether or not the report includes a Summary Schedule of Prior Year Audit Findings", - null=True, - help_text=docs.prior_year_schedule, - ) - - questioned_costs = models.BooleanField( - "Indicate whether or not the audit disclosed any known questioned costs.", - null=True, - help_text=docs.questioned_costs_general, - ) - report_required = models.BooleanField( - "Distribution to Federal Agency required?", - null=True, - help_text=docs.report_required, - ) - special_framework = models.CharField( - "Special Purpose Framework that was used as the basis of accounting", - max_length=40, - null=True, - help_text=docs.sp_framework, - ) - special_framework_required = models.BooleanField( - "Indicate whether or not the special purpose framework used as basis of accounting by state law or tribal law", - null=True, - help_text=docs.sp_framework_required, - ) - total_fed_expenditures = models.BigIntegerField( - "Total Federal Expenditures", - null=True, - help_text=docs.total_fed_expenditures, - ) - type_of_entity = models.CharField( - "Contact FAC for information", - max_length=40, - null=True, - help_text=docs.type_of_entity, - ) - type_report_financial_statements = models.CharField( - "Type of Report Issued on the Financial Statements", - max_length=40, - null=True, - help_text=docs.type_report_financial_statements, - ) - type_report_major_program = models.CharField( - "Type of Report Issued on the Major Program Compliance", - max_length=40, - null=True, - help_text=docs.type_report_major_program_general, - ) - type_report_special_purpose_framework = models.CharField( - "The auditor's opinion on the special purpose framework", - max_length=40, - null=True, - help_text=docs.type_report_special_purpose_framework, - ) - - # Metadata - dbkey = models.CharField( - "Audit Year and DBKEY (database key) combined make up the primary key. Only on records created by Census.", - max_length=40, - help_text=docs.dbkey_general, - ) - is_public = models.BooleanField( - "True for public records, False for non-public records" - ) - # Might want to add meta data to other models too, but everything eventually links back here, so this is good enough for now - modified_date = models.DateTimeField(auto_now=True) - create_date = models.DateTimeField(auto_now_add=True) - data_source = models.CharField("Origin of the upload", max_length=25) diff --git a/backend/data_distro/views.py b/backend/data_distro/views.py deleted file mode 100644 index fd0e04495..000000000 --- a/backend/data_distro/views.py +++ /dev/null @@ -1,3 +0,0 @@ -# from django.shortcuts import render - -# Create your views here. diff --git a/docs/README.md b/docs/README.md index 84048b837..881f17b2a 100644 --- a/docs/README.md +++ b/docs/README.md @@ -6,7 +6,6 @@ System-wide How-tos: * [Agile Process](./agile-process.md) * [Architectural Decision Records](./architecture/decisions) * [Branching](./branching.md) -* [Data Loading](./data_loading.md) * [Diagrams](./architecture/diagrams/) * [Development](./development.md) * [Dependency Management](./dependency-management.md) diff --git a/docs/data_loading.md b/docs/data_loading.md deleted file mode 100644 index f201bec0e..000000000 --- a/docs/data_loading.md +++ /dev/null @@ -1,57 +0,0 @@ -# Data loading - -We have a script to load the public data. - -Download data from https://facdissem.census.gov/PublicDataDownloads.aspx -Then unzip the files and place the them in data_distro/data_to_load/ - -Load them locally with: `manage.py public_data_loader` - -It's a lot of data, so you might just want to run it against one of the cloud.gov instances. You can do that with task here is [an example](https://github.com/GSA-TTS/FAC/blob/main/backend/manifests/task-manifest-staging.yaml) - -We are doing an initial data load in February 2022. There will be another round of data upload when we get the private data from Census and a mapping to the PDF files of reports. We will need to update data before launch to grab any records that have been added since the initial download work. - -The upload script should be flexible enough to handle changes in the models that may happen between data loads. - -#### Basic data loading flow diagram -```mermaid -flowchart LR -A[public_data_loader.py] --> B(load_files.py) -B -->|EIN, DUNS, Agency| C(link_data.py) -B -->|Most tables| D(process_data.py) -C --> E(handle_errors.py) -D --> C -``` -Caveats: -* Errors from loading and linking will call functions handle_errors.py -* This depends on an up to date upload_mapping.py -* load_files depends on parse_config.py - -### To refresh the data loading script - -1) Look at the `make_table_structure` command. Make sure things like new_fields are up to date. -2) Rerun the `make_table_structure` management command to produce `new_upload_mapping.json`. -3) Check the outputs to make sure that things make sense. You will need to do a manual check on the upload mapping, If a data column needs to go to more than one model, that needs to be addressed in the upload script. For example, AUDITOR_EIN has the same info reported on two of the upload tables, so you only need to upload it once. Then, replace `data_distro/mappings/upload_mappings.json` with the new mapping. -4) Check the `public_data_loader` script. Renaming should mostly be handled by `upload_mapping` but changing relationships need to be accounted for in the script. Make sure the relationships that are in the `add_relational` output of `make_table_structure` are added in the script. -5) Run the `manage.py test_pandas` command to see if there are errors in the file that you need to manually fix. -6) Run the `manage.py public_data_loader` script. Each phase should tell you the number of expected objects from the table. For tables like general that should be 1:1 relationship for auditors, auditees and things that can be consolidated because of foreign to and many to many relationships, there will be fewer objects. - -### To run the data loading script - -I have been running the data loaders as tasks in cloud.gov. Loading from the all years download doesn't seem effectual. On some tables, Pandas gets parsing errors after running for a few hours. Instead, I have been running the downloads a few years at a time. - -Check the `data_distro/data_to_load/run_logs` folder for error logs. This should tell you how many objects are expected and any errors in parsing or loading the data. - - -# Updating models for data_distro - -If you update the name of a name or model in data_distro, you need to reflect that change over to the `mappings/upload_mappings.json` file. If you change model relationships, that will need to be reflected in the upload code, probably changing `link_data.py` and potentially `public_data_loader.py`. If you don't do these steps the data_distro tests should fail. Keeping mappings up to date should make it easier on ourselves later when we need to load more data. - -Example commits where we updated names for [fields](https://github.com/GSA-TTS/FAC/pull/811/commits/a51391c58baf08109fd78f73cef0b76e279ddb9a) and [models](https://github.com/GSA-TTS/FAC/pull/811/commits/88bc46532cab9cc7281e60dff719ee81ccce95bb). - -## Update docs - -Create an updated csv data dictionary and add comments to the fields in postgres. Do that by running `manage.py create_docs`. - -# Upload PDFs -Once we confirm we have all the PDFs and have data to link PDFs to their record, we can load PDFs to their respective public and private buckets. I created a management command that does the loading. You will need to update the logic to query for the id of the general record and the name of the PDF file. \ No newline at end of file diff --git a/docs/development.md b/docs/development.md index 02fe59b05..1e88c81c7 100644 --- a/docs/development.md +++ b/docs/development.md @@ -276,18 +276,6 @@ It is possible, after many starts and stops, to end up filling your docker volum If you want to move past the test data, it is possible to download previous years' data and load it locally. This is important for dissemination API development and dissemination API testing. -### Loading previous years - -The documentation on [data loading](data_loading.md) has much more detail. In short, you need to download all the data from a given year from Census (say, 2020), and then run - - -```shell -docker compose run web python manage.py public_data_loader -y 20 -``` - -which will load the data from 2020 into your database. This is slow. Grab a cup of coffee, sit back, and watch the blinkenlights. - -See full documentation for loading data and keeping script up to date in [data_loading.md](https://github.com/GSA-TTS/FAC/blob/main/docs/data_loading.md). ### Adding users Let's use this workflow to create a `superuser` in our development environment so we can access the Admin interface! However, you will need to first log in to the local environment using your sandbox login.gov account; if the user does not exist in the system, it cannot be promoted to a superuser or staff user. From 6d7aa5dc1dba88daef7e628a14598d4b9fde8db4 Mon Sep 17 00:00:00 2001 From: Alex Steel <130377221+asteel-gsa@users.noreply.github.com> Date: Thu, 11 Jul 2024 10:09:50 -0400 Subject: [PATCH 2/3] Dependency Updates (Dependabot) (#4069) * Bump Trivy to v0.24.0 * Bump Cypress to v13.13.0 * Bump glob to v10.4.3 * Bump esbuild to v0.23.0 * Bump glob to v11.0.0 --- .github/workflows/trivy.yml | 4 +- backend/package-lock.json | 318 +++++++++++++++++++----------------- backend/package.json | 6 +- 3 files changed, 172 insertions(+), 156 deletions(-) diff --git a/.github/workflows/trivy.yml b/.github/workflows/trivy.yml index dd6726624..6dab49fec 100644 --- a/.github/workflows/trivy.yml +++ b/.github/workflows/trivy.yml @@ -39,7 +39,7 @@ jobs: run: docker build -t ${{ env.DOCKER_NAME }}:${{ steps.date.outputs.date }} . - name: Run Trivy vulnerability scanner - uses: aquasecurity/trivy-action@0.23.0 + uses: aquasecurity/trivy-action@0.24.0 with: image-ref: '${{ env.DOCKER_NAME }}:${{ steps.date.outputs.date }}' scan-type: 'image' @@ -74,7 +74,7 @@ jobs: run: docker pull ${{ matrix.image.name }} - name: Run Trivy vulnerability scanner on Third Party Images - uses: aquasecurity/trivy-action@0.23.0 + uses: aquasecurity/trivy-action@0.24.0 with: image-ref: '${{ matrix.image.name }}' scan-type: 'image' diff --git a/backend/package-lock.json b/backend/package-lock.json index 4ab6d2ddc..afca5deef 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -11,9 +11,9 @@ "dependencies": { "@uswds/uswds": "3.8.1", "autoprefixer": "^10.4.19", - "esbuild": "^0.21.5", + "esbuild": "^0.23.0", "esbuild-sass-plugin": "3.3.1", - "glob": "10.4.2", + "glob": "11.0.0", "npm-run-all": "^4.1.5", "postcss": "^8.4.39", "postcss-cli": "^11.0.0" @@ -22,7 +22,7 @@ "@4tw/cypress-drag-drop": "^2.2.5", "@babel/eslint-parser": "^7.24.7", "@eslint/js": "^9.6.0", - "cypress": "^13.12.0", + "cypress": "^13.13.0", "cypress-axe": "^1.5.0", "cypress-downloadfile": "^1.2.4", "cypress-file-upload": "^5.0.8", @@ -545,9 +545,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.0.tgz", + "integrity": "sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==", "cpu": [ "ppc64" ], @@ -556,13 +556,13 @@ "aix" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.0.tgz", + "integrity": "sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==", "cpu": [ "arm" ], @@ -571,13 +571,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.0.tgz", + "integrity": "sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==", "cpu": [ "arm64" ], @@ -586,13 +586,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.0.tgz", + "integrity": "sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==", "cpu": [ "x64" ], @@ -601,13 +601,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.0.tgz", + "integrity": "sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==", "cpu": [ "arm64" ], @@ -616,13 +616,13 @@ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.0.tgz", + "integrity": "sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==", "cpu": [ "x64" ], @@ -631,13 +631,13 @@ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.0.tgz", + "integrity": "sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==", "cpu": [ "arm64" ], @@ -646,13 +646,13 @@ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.0.tgz", + "integrity": "sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==", "cpu": [ "x64" ], @@ -661,13 +661,13 @@ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.0.tgz", + "integrity": "sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==", "cpu": [ "arm" ], @@ -676,13 +676,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.0.tgz", + "integrity": "sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==", "cpu": [ "arm64" ], @@ -691,13 +691,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.0.tgz", + "integrity": "sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==", "cpu": [ "ia32" ], @@ -706,13 +706,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.0.tgz", + "integrity": "sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==", "cpu": [ "loong64" ], @@ -721,13 +721,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.0.tgz", + "integrity": "sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==", "cpu": [ "mips64el" ], @@ -736,13 +736,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.0.tgz", + "integrity": "sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==", "cpu": [ "ppc64" ], @@ -751,13 +751,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.0.tgz", + "integrity": "sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==", "cpu": [ "riscv64" ], @@ -766,13 +766,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.0.tgz", + "integrity": "sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==", "cpu": [ "s390x" ], @@ -781,13 +781,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.0.tgz", + "integrity": "sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==", "cpu": [ "x64" ], @@ -796,13 +796,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.0.tgz", + "integrity": "sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==", "cpu": [ "x64" ], @@ -811,13 +811,28 @@ "netbsd" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.0.tgz", + "integrity": "sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.0.tgz", + "integrity": "sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==", "cpu": [ "x64" ], @@ -826,13 +841,13 @@ "openbsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.0.tgz", + "integrity": "sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==", "cpu": [ "x64" ], @@ -841,13 +856,13 @@ "sunos" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.0.tgz", + "integrity": "sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==", "cpu": [ "arm64" ], @@ -856,13 +871,13 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.0.tgz", + "integrity": "sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==", "cpu": [ "ia32" ], @@ -871,13 +886,13 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.0.tgz", + "integrity": "sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==", "cpu": [ "x64" ], @@ -886,7 +901,7 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@eslint-community/eslint-utils": { @@ -2239,9 +2254,9 @@ } }, "node_modules/cypress": { - "version": "13.12.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.12.0.tgz", - "integrity": "sha512-udzS2JilmI9ApO/UuqurEwOvThclin5ntz7K0BtnHBs+tg2Bl9QShLISXpSEMDv/u8b6mqdoAdyKeZiSqKWL8g==", + "version": "13.13.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.13.0.tgz", + "integrity": "sha512-ou/MQUDq4tcDJI2FsPaod2FZpex4kpIK43JJlcBgWrX8WX7R/05ZxGTuxedOuZBfxjZxja+fbijZGyxiLP6CFA==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -2284,7 +2299,7 @@ "request-progress": "^3.0.0", "semver": "^7.5.3", "supports-color": "^8.1.1", - "tmp": "~0.2.1", + "tmp": "~0.2.3", "untildify": "^4.0.0", "yauzl": "^2.10.0" }, @@ -2837,40 +2852,41 @@ } }, "node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.0.tgz", + "integrity": "sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==", "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12" + "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" + "@esbuild/aix-ppc64": "0.23.0", + "@esbuild/android-arm": "0.23.0", + "@esbuild/android-arm64": "0.23.0", + "@esbuild/android-x64": "0.23.0", + "@esbuild/darwin-arm64": "0.23.0", + "@esbuild/darwin-x64": "0.23.0", + "@esbuild/freebsd-arm64": "0.23.0", + "@esbuild/freebsd-x64": "0.23.0", + "@esbuild/linux-arm": "0.23.0", + "@esbuild/linux-arm64": "0.23.0", + "@esbuild/linux-ia32": "0.23.0", + "@esbuild/linux-loong64": "0.23.0", + "@esbuild/linux-mips64el": "0.23.0", + "@esbuild/linux-ppc64": "0.23.0", + "@esbuild/linux-riscv64": "0.23.0", + "@esbuild/linux-s390x": "0.23.0", + "@esbuild/linux-x64": "0.23.0", + "@esbuild/netbsd-x64": "0.23.0", + "@esbuild/openbsd-arm64": "0.23.0", + "@esbuild/openbsd-x64": "0.23.0", + "@esbuild/sunos-x64": "0.23.0", + "@esbuild/win32-arm64": "0.23.0", + "@esbuild/win32-ia32": "0.23.0", + "@esbuild/win32-x64": "0.23.0" } }, "node_modules/esbuild-sass-plugin": { @@ -3723,22 +3739,22 @@ } }, "node_modules/glob": { - "version": "10.4.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz", - "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz", + "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", + "jackspeak": "^4.0.1", + "minimatch": "^10.0.0", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" + "path-scurry": "^2.0.0" }, "bin": { "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">=16 || 14 >=14.18" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -3765,14 +3781,14 @@ } }, "node_modules/glob/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -4492,14 +4508,14 @@ "dev": true }, "node_modules/jackspeak": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", - "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.1.tgz", + "integrity": "sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog==", "dependencies": { "@isaacs/cliui": "^8.0.2" }, "engines": { - "node": ">=14" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -5648,26 +5664,26 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" }, "engines": { - "node": ">=16 || 14 >=14.18" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", - "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.0.tgz", + "integrity": "sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==", "engines": { - "node": "14 || >=16.14" + "node": "20 || >=22" } }, "node_modules/path-type": { diff --git a/backend/package.json b/backend/package.json index ad671e016..9253f5d83 100644 --- a/backend/package.json +++ b/backend/package.json @@ -26,7 +26,7 @@ "@4tw/cypress-drag-drop": "^2.2.5", "@babel/eslint-parser": "^7.24.7", "@eslint/js": "^9.6.0", - "cypress": "^13.12.0", + "cypress": "^13.13.0", "cypress-axe": "^1.5.0", "cypress-downloadfile": "^1.2.4", "cypress-file-upload": "^5.0.8", @@ -44,9 +44,9 @@ "dependencies": { "@uswds/uswds": "3.8.1", "autoprefixer": "^10.4.19", - "esbuild": "^0.21.5", + "esbuild": "^0.23.0", "esbuild-sass-plugin": "3.3.1", - "glob": "10.4.2", + "glob": "11.0.0", "npm-run-all": "^4.1.5", "postcss": "^8.4.39", "postcss-cli": "^11.0.0" From d7690343c4c4f2995f85a28b14da7cf25a0ba937 Mon Sep 17 00:00:00 2001 From: Alex Steel <130377221+asteel-gsa@users.noreply.github.com> Date: Thu, 11 Jul 2024 21:00:05 -0400 Subject: [PATCH 3/3] Create FAC Log Review Dashboard (#4028) * First draft of Log Review Dashboard * Change Dashboard Name * fix module name * Adjust columns for widgets * Fix widgets * add login/logout requests * Update column width for requests * Color the bar graphs * Fix slash at the end * Add infected File Count & admin panel login * Extend Graphs * Fix missing quote * Make a dynamic admin uri * Add outbound connections to review dashboard * Attempt to fix dashboard layout --- .../modules/newrelic/.terraform.lock.hcl | 1 + .../shared/modules/newrelic/logreview.tf | 226 ++++++++++++++++++ 2 files changed, 227 insertions(+) create mode 100644 terraform/shared/modules/newrelic/logreview.tf diff --git a/terraform/shared/modules/newrelic/.terraform.lock.hcl b/terraform/shared/modules/newrelic/.terraform.lock.hcl index cfc9fa0fc..e995ae48d 100644 --- a/terraform/shared/modules/newrelic/.terraform.lock.hcl +++ b/terraform/shared/modules/newrelic/.terraform.lock.hcl @@ -5,6 +5,7 @@ provider "registry.terraform.io/newrelic/newrelic" { version = "3.38.0" hashes = [ "h1:+mJSDuRi8R1Plvgkr6LtfFwKSCP98pazqNt3Of2thZE=", + "h1:s00BVW0COl7DpyyJxoxc4jZIikiMcqFK6kzw/tLY7CA=", "zh:00ddd23b71aea83012a85819c2c41cc7ea9b13be1396f19c00392fe49d5ca965", "zh:074c2d073e6079587439f6eb27e01c160dd190993599f648950c1a521ea3fa20", "zh:16f8e6a90add8d794e72c63d9e3c149d6fa2ddef1cb3b151cf154da3a125028b", diff --git a/terraform/shared/modules/newrelic/logreview.tf b/terraform/shared/modules/newrelic/logreview.tf new file mode 100644 index 000000000..475705c0d --- /dev/null +++ b/terraform/shared/modules/newrelic/logreview.tf @@ -0,0 +1,226 @@ +locals { + dev = var.cf_space_name == "dev" ? "fac-dev.app.cloud.gov" : "" + preview = var.cf_space_name == "preview" ? "fac-preview.app.cloud.gov" : "" + staging = var.cf_space_name == "staging" ? "fac-staging.app.cloud.gov" : "" + prod = var.cf_space_name == "production" ? "app.fac.gov" : "" + admin_uri = coalesce(local.dev, local.preview, local.staging, local.prod) +} + +resource "newrelic_one_dashboard" "log_review_dashboard" { + name = "FAC Log Review (${var.cf_space_name})" + permissions = "public_read_only" + + page { + name = "FAC Log Review" + + widget_billboard { + title = "Submission Count" + + row = 1 + column = 1 + width = 3 + height = 3 + + nrql_query { + query = "From Transaction SELECT count(*) as 'Submissions' WHERE appName = 'gsa-fac-${var.cf_space_name}' and request.method = 'POST' and request.uri like '/audit/submission/%' since 1 week ago" + } + } + + widget_billboard { + title = "Excel Uploads" + + + row = 1 + column = 4 + width = 3 + height = 3 + + nrql_query { + query = "FROM Metric SELECT count(*) AS 'Total uploads', average(apm.service.transaction.duration) AS 'Average time (s)' WHERE appName = 'gsa-fac-${var.cf_space_name}' AND path LIKE 'audit.views.views:ExcelFileHandlerView.post'" + } + + legend_enabled = true + + } + + widget_billboard { + title = "Single Audit Report Uploads" + + row = 1 + column = 7 + width = 3 + height = 3 + + nrql_query { + query = "FROM Metric SELECT count(*) AS 'Total uploads', average(apm.service.transaction.duration) AS 'Average time (s)' WHERE appName = 'gsa-fac-${var.cf_space_name}' AND path LIKE 'audit.views.upload_report_view:UploadReportView.post'" + } + + legend_enabled = true + } + + widget_billboard { + title = "Global Requests (Non-Upload)" + + row = 1 + column = 10 + width = 3 + height = 3 + + nrql_query { + query = "FROM Metric SELECT count(*) AS 'Total requests', average(apm.service.transaction.duration) * 1000 AS 'Average time (ms)' WHERE appName = 'gsa-fac-${var.cf_space_name}' AND path NOT LIKE '%ExcelFileHandlerView.post' AND path NOT LIKE '%UploadReportView.post'" + } + + legend_enabled = true + } + + widget_stacked_bar { + title = "500 Error Code" + + row = 3 + column = 1 + width = 12 + height = 4 + + nrql_query { + query = "SELECT count(*) FROM Transaction FACET `request.uri` WHERE response.status = '500' and appName = 'gsa-fac-${var.cf_space_name}' SINCE 1 week AGO TIMESERIES" + } + + legend_enabled = true + } + + widget_stacked_bar { + title = "Login Requests" + + row = 4 + column = 1 + width = 8 + height = 3 + + nrql_query { + query = "SELECT count(*) FROM Transaction FACET `request.uri` WHERE request.uri = '/openid/login/' and appName = 'gsa-fac-${var.cf_space_name}' SINCE 1 week AGO TIMESERIES" + } + + colors { + color = "#00ff04" + series_overrides { + color = "#00ff04" + series_name = "/openid/login/" + } + } + + legend_enabled = true + } + + widget_stacked_bar { + title = "Logout Requests" + + row = 5 + column = 1 + width = 8 + height = 3 + + nrql_query { + query = "SELECT count(*) FROM Transaction FACET `request.uri` WHERE request.uri = '/openid/logout/' and appName = 'gsa-fac-${var.cf_space_name}' SINCE 1 week AGO TIMESERIES" + } + colors { + color = "#ff0000" + series_overrides { + color = "#ff0000" + series_name = "/openid/logout/" + } + } + + legend_enabled = true + } + + widget_billboard { + title = "Infected Files Detected" + + row = 4 + column = 9 + width = 3 + height = 3 + + nrql_query { + query = "SELECT count(*) AS 'Infected Files' FROM Log WHERE tags.space_name = '${var.cf_space_name}' and message LIKE '%ScanResult.INFECTED%'" + } + + legend_enabled = true + } + + widget_billboard { + title = "Django /admin/login/ Count" + + row = 5 + column = 9 + width = 3 + height = 3 + + nrql_query { + query = "SELECT count(`message` as `/admin/login/ hits`) FROM Log WHERE `message` LIKE '${local.admin_uri}%/admin/login%' SINCE 7 days ago" + } + + legend_enabled = true + } + + widget_log_table { + title = "${var.cf_space_name} api.sam.gov Connections" + + row = 6 + column = 1 + width = 8 + height = 3 + + nrql_query { + query = "SELECT `message` FROM Log WHERE `entity.name` = 'gsa-fac-${var.cf_space_name}' AND allColumnSearch('api.sam.gov', insensitive: true) SINCE 7 DAYS AGO" + } + + legend_enabled = true + } + + widget_billboard { + title = "${var.cf_space_name} api.sam.gov Connection Count" + + row = 6 + column = 9 + width = 3 + height = 3 + + nrql_query { + query = "SELECT count(*) AS 'api.sam.gov connections' FROM Log WHERE `entity.name` = 'gsa-fac-${var.cf_space_name}' AND allColumnSearch('api.sam.gov', insensitive: true) SINCE 7 DAYS AGO" + } + + legend_enabled = true + } + + widget_log_table { + title = "${var.cf_space_name} login.gov Connections" + + row = 7 + column = 1 + width = 8 + height = 3 + + nrql_query { + query = "SELECT `message` FROM Log WHERE `entity.name` = 'gsa-fac-${var.cf_space_name}' AND allColumnSearch('/api/openid_connect/userinfo', insensitive: true) SINCE 7 DAYS AGO" + } + + legend_enabled = true + } + + widget_billboard { + title = "${var.cf_space_name} login.gov Connection Count" + + row = 7 + column = 9 + width = 3 + height = 3 + + nrql_query { + query = "SELECT count(*) AS 'login.gov connections' FROM Log WHERE `entity.name` = 'gsa-fac-${var.cf_space_name}' AND allColumnSearch('/api/openid_connect/userinfo', insensitive: true) SINCE 7 DAYS AGO" + } + + legend_enabled = true + } + } +}