ethyca-fides 2.71.1b1__py2.py3-none-any.whl → 2.74.0rc1__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of ethyca-fides might be problematic. Click here for more details.
- {ethyca_fides-2.71.1b1.dist-info → ethyca_fides-2.74.0rc1.dist-info}/METADATA +3 -2
- {ethyca_fides-2.71.1b1.dist-info → ethyca_fides-2.74.0rc1.dist-info}/RECORD +377 -327
- fides/_version.py +3 -3
- fides/api/alembic/alembic.ini +5 -1
- fides/api/alembic/migrations/env.py +7 -1
- fides/api/alembic/migrations/versions/4bfbeff34611_add_polling_status.py +68 -0
- fides/api/alembic/migrations/versions/65a1bc82ae09_adds_experience_config_for_delete_.py +53 -0
- fides/api/alembic/migrations/versions/7db29f9cd77b_create_new_sub_request_table.py +95 -0
- fides/api/alembic/migrations/versions/a55e12c2c2df_add_tagging_instructions_to_data_.py +29 -0
- fides/api/alembic/migrations/versions/b97e92b038d2_add_digest_execution_model.py +117 -0
- fides/api/alembic/migrations/versions/c09e76282dd1_add_privacy_request_duplication_cols.py +64 -0
- fides/api/alembic/migrations/versions/xx_2025_10_17_1603_5093e92e2a5a_add_consent_data_v3_to_the_database.py +72 -0
- fides/api/alembic/migrations/versions/xx_2025_10_27_1834_67f0f2f4748e_adding_identity_definition_model.py +45 -0
- fides/api/alembic/migrations/versions/xx_2025_10_29_1659_80d28dea3b6b_added_duplicate_group_table.py +79 -0
- fides/api/alembic/migrations/versions/xx_2025_11_05_0200_f1a2b3c4d5e6_create_staged_resource_error_table.py +82 -0
- fides/api/api/v1/endpoints/connection_endpoints.py +38 -45
- fides/api/api/v1/endpoints/generic_overrides.py +75 -6
- fides/api/api/v1/endpoints/privacy_request_endpoints.py +60 -6
- fides/api/api/v1/endpoints/saas_config_endpoints.py +60 -48
- fides/api/api/v1/endpoints/system.py +11 -43
- fides/api/api/v1/endpoints/user_endpoints.py +8 -1
- fides/api/app_setup.py +1 -3
- fides/api/common_exceptions.py +8 -0
- fides/api/db/base.py +2 -0
- fides/api/db/database.py +257 -2
- fides/api/email_templates/get_email_template.py +3 -0
- fides/api/email_templates/template_names.py +1 -0
- fides/api/email_templates/templates/manual_task_digest.html +316 -0
- fides/api/main.py +2 -2
- fides/api/models/attachment.py +1 -0
- fides/api/models/detection_discovery/__init__.py +2 -0
- fides/api/models/detection_discovery/core.py +10 -0
- fides/api/models/detection_discovery/monitor_task.py +1 -0
- fides/api/models/detection_discovery/staged_resource_error.py +25 -0
- fides/api/models/digest/__init__.py +2 -0
- fides/api/models/digest/digest_config.py +10 -1
- fides/api/models/digest/digest_execution.py +142 -0
- fides/api/models/event_audit.py +17 -0
- fides/api/models/identity_definition.py +65 -0
- fides/api/models/messaging_template.py +7 -0
- fides/api/models/privacy_experience.py +11 -0
- fides/api/models/privacy_preference.py +2 -0
- fides/api/models/privacy_request/duplicate_group.py +84 -0
- fides/api/models/privacy_request/privacy_request.py +56 -8
- fides/api/models/privacy_request/request_task.py +98 -1
- fides/api/models/sql_models.py +3 -0
- fides/api/models/taxonomy.py +14 -4
- fides/api/models/v3/__init__.py +0 -0
- fides/api/models/v3/privacy_preferences.py +85 -0
- fides/api/models/worker_task.py +8 -0
- fides/api/schemas/application_config.py +28 -0
- fides/api/schemas/connection_configuration/connection_config.py +1 -30
- fides/api/schemas/messaging/messaging.py +15 -0
- fides/api/schemas/privacy_request.py +17 -3
- fides/api/schemas/saas/async_polling_configuration.py +81 -0
- fides/api/schemas/saas/saas_config.py +10 -3
- fides/api/schemas/saas/strategy_configuration.py +0 -12
- fides/api/schemas/taxonomy_extensions.py +8 -0
- fides/api/service/async_dsr/handlers/__init__.py +0 -0
- fides/api/service/async_dsr/handlers/polling_attachment_handler.py +155 -0
- fides/api/service/async_dsr/handlers/polling_request_handler.py +88 -0
- fides/api/service/async_dsr/handlers/polling_response_handler.py +261 -0
- fides/api/service/async_dsr/handlers/polling_sub_request_handler.py +123 -0
- fides/api/service/async_dsr/strategies/__init__.py +0 -0
- fides/api/service/async_dsr/strategies/async_dsr_strategy.py +52 -0
- fides/api/service/async_dsr/strategies/async_dsr_strategy_callback.py +199 -0
- fides/api/service/async_dsr/strategies/async_dsr_strategy_factory.py +72 -0
- fides/api/service/async_dsr/strategies/async_dsr_strategy_polling.py +686 -0
- fides/api/service/async_dsr/utils.py +130 -0
- fides/api/service/connectors/bigquery_connector.py +34 -16
- fides/api/service/connectors/fides/fides_client.py +63 -1
- fides/api/service/connectors/query_configs/saas_query_config.py +160 -79
- fides/api/service/connectors/saas/connector_registry_service.py +1 -138
- fides/api/service/connectors/saas_connector.py +116 -94
- fides/api/service/connectors/sql_connector.py +14 -4
- fides/api/service/deps.py +8 -0
- fides/api/service/messaging/message_dispatch_service.py +38 -1
- fides/api/service/privacy_request/attachment_handling.py +9 -2
- fides/api/service/privacy_request/duplication_detection.py +424 -0
- fides/api/service/privacy_request/request_runner_service.py +46 -84
- fides/api/service/privacy_request/request_service.py +47 -74
- fides/api/service/saas_request/saas_request_override_factory.py +71 -1
- fides/api/task/execute_request_tasks.py +17 -9
- fides/api/task/filter_results.py +35 -2
- fides/api/task/graph_task.py +37 -8
- fides/api/tasks/__init__.py +0 -1
- fides/api/util/connection_util.py +99 -215
- fides/api/util/event_audit_util.py +230 -0
- fides/api/util/logger_context_utils.py +3 -1
- fides/api/util/masking_util.py +31 -0
- fides/api/util/memory_watchdog.py +118 -0
- fides/api/util/saas_config_updater.py +66 -0
- fides/api/util/saas_util.py +28 -1
- fides/common/api/scope_registry.py +0 -7
- fides/common/api/v1/urn_registry.py +2 -0
- fides/config/__init__.py +10 -1
- fides/config/celery_settings.py +42 -0
- fides/config/config_proxy.py +10 -0
- fides/config/duplicate_detection_settings.py +31 -0
- fides/config/execution_settings.py +7 -3
- fides/config/utils.py +5 -0
- fides/data/language/languages.yml +2 -0
- fides/service/connection/__init__.py +0 -0
- fides/service/connection/connection_service.py +651 -0
- fides/service/event_audit_service.py +16 -22
- fides/service/privacy_request/privacy_request_service.py +162 -43
- fides/service/taxonomy/handlers/legacy_handler.py +3 -3
- fides/service/taxonomy/taxonomy_service.py +15 -15
- fides/ui-build/static/admin/404.html +1 -1
- fides/ui-build/static/admin/_next/static/FZTEUgamBvOhgPWce135w/_buildManifest.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{1115-90baef2a89f361ad.js → 1115-0da062111df309bf.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{6148-59a59d5c5925344f.js → 1533-84e250d1f26e6d7d.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/1817-508b16628e8eb225.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/1840-5bbe6d878ed73fb4.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{1975.78e719130cfe3fd6.js → 1975.afe8cad52f904fcf.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{2040-fdecc41a18e40bdc.js → 2040-fe1a06d82c0413f1.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/2397-40b8db1cb2f23e2a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/2921-b10bbc3a9104933b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3214-90ce0a366b0f461a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3377-eb5cd82b3ee6ab0c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3615-5e2d062d684b8fa1.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3655-93ecd09f1cb9dbef.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{3696-90c8b336bbc46782.js → 3696-6db05a35ae806825.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{3923-98bea73b618292aa.js → 3923-44255a63d6d80ff5.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/401-fe8db8b5d8f600de.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{4259.d1507e0db19cbed7.js → 4259.05038c9b78467244.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/4277-13bcf4516326d474.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/431-e01ee730c8ad9ece.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/4496-bed72bd5639075be.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/454-d5c2c84f1a14e4f1.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/4817-d29f40d4ce729f37.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5185-b2ac9fecc00b67e7.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5258-4672eae0656430f9.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5487-8dedd1ca94fbba54.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/549-6e2442db533a711e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5643-55d758444a8d7162.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5724-1e40975cefa405f0.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{5783-d119cb132abd8a91.js → 5783-6055edba275155ca.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/6084-82e2df433fe5ba85.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6344-3e21444374f8059f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6362-12e3fd23130ccf15.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6372-a8d0f08dac1ebd0e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6780-3db5133c1f4c6f1e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6853-1adbdf6418ec3d62.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6954-aa0c60ee1092be8e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7059-12be23a345a94c1e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7079-6e6efc3396ff1ebb.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7218-d297a4a06f924b09.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7245-686665c197b58e68.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{7476-d055aa931da47ac0.js → 7476-a43c046c24de37cc.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/7630-c654c61ba98d8c74.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7654-716cf37a020b3d11.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{796-02086581996a0548.js → 796-e83ace3c6ab99ac7.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/8212-b9e8295ca883c9f8.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/8939-4925751c57c51f87.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9014-eeae6f581158e645.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9046-e4daf28840a69fd6.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{5596-29a7c8322530b7cf.js → 9195-550bd50d538c5f79.js} +3 -3
- fides/ui-build/static/admin/_next/static/chunks/9330-e519adec48222d45.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9341-bfc0e59bcc56c604.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9450-b7b7bb1d755ecf57.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{9676.b86ecbcfe5afd25d.js → 9676.7d029a5383595b69.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/9682-da69ac5d06f281da.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{9826-ccedc28e978ca9e1.js → 9826-657652d55936a8c6.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/9911-ece086f2230e34f0.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9965-56c5e4fc9cd3b3a5.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/{404-2eb8aed4939f1142.js → 404-d079b8bf35250874.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{_app-c1c2f757b1f3da12.js → _app-e64fd8510033a27c.js} +63 -63
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/manual-ddd9d7d40847fc28.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/multiple-b4d18c1f4d414f5f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-d451bc8932330141.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-7a258b7ecd6da4b8.js → add-vendors-c24663cd5dec57db.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{configure-fb5017ff5fa54fcc.js → configure-d93418688bd258eb.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{[id]-e1e2fd704ac2d71d.js → [id]-9b1f2b1c06968166.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{new-a5e738a234dadc7e.js → new-115a085e5d42de45.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience-d9b7b311195df29e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-5fc78b78a51c239c.js → [id]-3de34624829cbce8.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-b79bcb93b5f4c734.js → new-dc95e7ed278d1a29.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-cdfc9bb19f47c709.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-069f4e3ee96ebf77.js → properties-0b995b01dc4dbd1f.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-e3ad3a55624e302a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/{consent-d2bf72508c3cad55.js → consent-b37ed76849330edd.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/{[resourceUrn]-2fa4b3a58f75f81d.js → [resourceUrn]-dd82729296dee5c5.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]-49e5477eb1a11b92.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects-dfc1ead4a12c9ffa.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/{[resourceUrn]-5b31e3d7727b917a.js → [resourceUrn]-8442eb219958ac7e.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources-feda358d1801c18d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-d16acb6fc07aad46.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/datastore/[monitorId]-c51a1e98c45d231a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/datastore-4498881c26f1458d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/website/[monitorId]/[systemId]-bcfe38eebca30f8c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/website/[monitorId]-f66d0655897c4400.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/website-5b3e0009d442bc3f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-6f1e012cd641da19.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-581d6248fcf98d17.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/detection/{[resourceUrn]-844a8de0d1b506e2.js → [resourceUrn]-ddc1c1641e1e9430.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{detection-11b07cf2d91b17ef.js → detection-2b48f7e524743b2b.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/{[resourceUrn]-5525cf287d4ab493.js → [resourceUrn]-862b67418600251e.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{discovery-ed4723e1b67d890e.js → discovery-0ffec855f5df262c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datamap-6a030ab8c2e2b0db.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-6cb66f649b8ca4bf.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]-0b008dad90b00aaa.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]-5566edf9a9d1be2d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-d4ca1f485b6e9e02.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset-85dee7e81dc4bafb.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/[id]-e905e018a2cab35d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/new-912723bc86299b1a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-f1f0affc18327033.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/{fides-js-docs-1f4335dca5c09860.js → fides-js-docs-5235760b3e508d7d.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{index-b74d1e8608ae5b5d.js → index-692d27dbe9392c9f.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-1b94e2d769a182b2.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations-adfe6c5ac5b703d0.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/new-privacy-requests-f9be7080ebbb7445.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/notifications/digests/[id]-caaa8602a1d449b1.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/notifications/digests/new-9b106b1d2d93985b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/notifications/digests-6a1ded8cdde836c4.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/notifications/providers/[key]-f94e3accf9507ebf.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/notifications/providers/new-5e83220ff1f2a250.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/notifications/providers-a03cbd698a23e5b3.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/notifications/templates/[id]-3cde574b3c8447c0.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/notifications/templates/add-template-0448bb4ae8536c58.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/notifications/templates-1621a4b87c432117.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/notifications-4ea28f6b1dd63642.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/ant-components-e02516d9fd314528.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/AntForm-fec08bea801b4918.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikAntFormItem-d911e5fbf5a4a888.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikControlled-91b1adcac6a57b2d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikField-de309d8813b1ebfb.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/forms-f2943c1309062284.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/{table-migration-29fb7b39f8962650.js → table-migration-03eda417711ae909.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-1fe486f3af832c80.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-ea6f78fa8b2d3f6c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{configure-8f577df28ebca869.js → configure-bda7b474493e7128.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-2c0ec8fed16c20ae.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-57a75c7e9659271a.js → [id]-30d298a47e85709f.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-8964c2300206bc89.js → add-property-438084cca0d0f10d.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{properties-08472b2a6bf1d392.js → properties-17fd44d98f5bd5b6.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-baf77d34a3b3bece.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/sandbox/privacy-notices-8c80391025ca7339.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-7c19810858b708cc.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-ee8820fe0fa14c77.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields/{[id]-bd1042a0e9be6aff.js → [id]-8eb862182f19a6c2.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields/{new-469ad83c8cfa1290.js → new-37c29ef618e9fe3c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-1db425150dcb1b6b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domain-records-744f669431b84f71.js → domain-records-e334b43fa5c5b1e6.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-9d18eb5c38d85522.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{email-templates-604790638c656fbd.js → email-templates-cb937ed7c4b1e5a8.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-be2a885150adc133.js → locations-835281251f0785cd.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{organization-3c86162afe9759df.js → organization-7fd050c92866938c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/privacy-requests-59ea66130fca0d05.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{regulations-4fe3b90747d885e5.js → regulations-b0fe1051d908f366.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-f108bf5015144d2f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/{[id]-4d470bbf199a2f9c.js → [id]-0e7c7228d01290ea.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems-adc13b542e10a37d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-23dd250da26511c5.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/{[id]-98f737e735eaa0f0.js → [id]-aed30fb22ae7c9ec.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{user-management-562624e5461083ec.js → user-management-6b88ca3e02ee67c9.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/webpack-6f97ebe373e7ef6b.js +1 -0
- fides/ui-build/static/admin/_next/static/css/012b10627a654d5c.css +1 -0
- fides/ui-build/static/admin/_next/static/css/05d05fc31d09638b.css +1 -0
- fides/ui-build/static/admin/_next/static/css/0fd6e0884cfcc5f3.css +1 -0
- fides/ui-build/static/admin/_next/static/css/14ba79c49597d37a.css +1 -0
- fides/ui-build/static/admin/_next/static/css/{34a7eb08b86ddb57.css → 3d6582469f7d56e0.css} +1 -1
- fides/ui-build/static/admin/_next/static/css/4861ca3e088f2d05.css +1 -0
- fides/ui-build/static/admin/_next/static/css/65ae906f224cd8ae.css +1 -0
- fides/ui-build/static/admin/_next/static/css/a1800714b486e230.css +1 -0
- fides/ui-build/static/admin/_next/static/css/af32fcac7a177a0e.css +1 -0
- fides/ui-build/static/admin/_next/static/css/cb417f0587918f85.css +1 -0
- fides/ui-build/static/admin/_next/static/css/d5701118537cbdd2.css +1 -0
- fides/ui-build/static/admin/_next/static/css/dd15c278b964de80.css +1 -0
- fides/ui-build/static/admin/_next/static/css/{5f393dea1c0d031c.css → f89607996ad54f4b.css} +1 -1
- fides/ui-build/static/admin/_next/static/css/f9a2a44d3d34c904.css +1 -0
- fides/ui-build/static/admin/add-systems/manual.html +1 -1
- fides/ui-build/static/admin/add-systems/multiple.html +1 -1
- fides/ui-build/static/admin/add-systems.html +1 -1
- fides/ui-build/static/admin/consent/configure/add-vendors.html +1 -1
- fides/ui-build/static/admin/consent/configure.html +1 -1
- fides/ui-build/static/admin/consent/privacy-experience/[id].html +1 -1
- fides/ui-build/static/admin/consent/privacy-experience/new.html +1 -1
- fides/ui-build/static/admin/consent/privacy-experience.html +1 -1
- fides/ui-build/static/admin/consent/privacy-notices/[id].html +1 -1
- fides/ui-build/static/admin/consent/privacy-notices/new.html +1 -1
- fides/ui-build/static/admin/consent/privacy-notices.html +1 -1
- fides/ui-build/static/admin/consent/properties.html +1 -1
- fides/ui-build/static/admin/consent/reporting.html +1 -1
- fides/ui-build/static/admin/consent.html +1 -1
- fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn].html +1 -1
- fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn].html +1 -1
- fides/ui-build/static/admin/data-catalog/[systemId]/projects.html +1 -1
- fides/ui-build/static/admin/data-catalog/[systemId]/resources/[resourceUrn].html +1 -1
- fides/ui-build/static/admin/data-catalog/[systemId]/resources.html +1 -1
- fides/ui-build/static/admin/data-catalog.html +1 -1
- fides/ui-build/static/admin/data-discovery/action-center/datastore/[monitorId].html +1 -0
- fides/ui-build/static/admin/data-discovery/action-center/datastore.html +1 -0
- fides/ui-build/static/admin/data-discovery/action-center/website/[monitorId]/[systemId].html +1 -0
- fides/ui-build/static/admin/data-discovery/action-center/website/[monitorId].html +1 -0
- fides/ui-build/static/admin/data-discovery/action-center/website.html +1 -0
- fides/ui-build/static/admin/data-discovery/action-center.html +1 -1
- fides/ui-build/static/admin/data-discovery/activity.html +1 -1
- fides/ui-build/static/admin/data-discovery/detection/[resourceUrn].html +1 -1
- fides/ui-build/static/admin/data-discovery/detection.html +1 -1
- fides/ui-build/static/admin/data-discovery/discovery/[resourceUrn].html +1 -1
- fides/ui-build/static/admin/data-discovery/discovery.html +1 -1
- fides/ui-build/static/admin/datamap.html +1 -1
- fides/ui-build/static/admin/dataset/[datasetId]/[collectionName]/[...subfieldNames].html +1 -1
- fides/ui-build/static/admin/dataset/[datasetId]/[collectionName].html +1 -1
- fides/ui-build/static/admin/dataset/[datasetId].html +1 -1
- fides/ui-build/static/admin/dataset/new.html +1 -1
- fides/ui-build/static/admin/dataset.html +1 -1
- fides/ui-build/static/admin/datastore-connection/[id].html +1 -1
- fides/ui-build/static/admin/datastore-connection/new.html +1 -1
- fides/ui-build/static/admin/datastore-connection.html +1 -1
- fides/ui-build/static/admin/index.html +1 -1
- fides/ui-build/static/admin/integrations/[id].html +1 -1
- fides/ui-build/static/admin/integrations.html +1 -1
- fides/ui-build/static/admin/lib/fides-ext-gpp.js +1 -1
- fides/ui-build/static/admin/lib/fides-headless.js +1 -1
- fides/ui-build/static/admin/lib/fides-preview.js +1 -1
- fides/ui-build/static/admin/lib/fides-tcf.js +3 -3
- fides/ui-build/static/admin/lib/fides.js +3 -3
- fides/ui-build/static/admin/login/[provider].html +1 -1
- fides/ui-build/static/admin/login.html +1 -1
- fides/ui-build/static/admin/new-privacy-requests.html +1 -0
- fides/ui-build/static/admin/notifications/digests/[id].html +1 -0
- fides/ui-build/static/admin/notifications/digests/new.html +1 -0
- fides/ui-build/static/admin/notifications/digests.html +1 -0
- fides/ui-build/static/admin/notifications/providers/[key].html +1 -0
- fides/ui-build/static/admin/notifications/providers/new.html +1 -0
- fides/ui-build/static/admin/notifications/providers.html +1 -0
- fides/ui-build/static/admin/notifications/templates/[id].html +1 -0
- fides/ui-build/static/admin/notifications/templates/add-template.html +1 -0
- fides/ui-build/static/admin/notifications/templates.html +1 -0
- fides/ui-build/static/admin/notifications.html +1 -0
- fides/ui-build/static/admin/poc/ant-components.html +1 -1
- fides/ui-build/static/admin/poc/form-experiments/AntForm.html +1 -1
- fides/ui-build/static/admin/poc/form-experiments/FormikAntFormItem.html +1 -1
- fides/ui-build/static/admin/poc/form-experiments/FormikControlled.html +1 -1
- fides/ui-build/static/admin/poc/form-experiments/FormikField.html +1 -1
- fides/ui-build/static/admin/poc/form-experiments/FormikSpreadField.html +1 -1
- fides/ui-build/static/admin/poc/forms.html +1 -1
- fides/ui-build/static/admin/poc/table-migration.html +1 -1
- fides/ui-build/static/admin/privacy-requests/[id].html +1 -1
- fides/ui-build/static/admin/privacy-requests/configure/storage.html +1 -1
- fides/ui-build/static/admin/privacy-requests/configure.html +1 -1
- fides/ui-build/static/admin/privacy-requests.html +1 -1
- fides/ui-build/static/admin/properties/[id].html +1 -1
- fides/ui-build/static/admin/properties/add-property.html +1 -1
- fides/ui-build/static/admin/properties.html +1 -1
- fides/ui-build/static/admin/reporting/datamap.html +1 -1
- fides/ui-build/static/admin/sandbox/privacy-notices.html +1 -0
- fides/ui-build/static/admin/settings/about/alpha.html +1 -1
- fides/ui-build/static/admin/settings/about.html +1 -1
- fides/ui-build/static/admin/settings/consent/[configuration_id]/[purpose_id].html +1 -1
- fides/ui-build/static/admin/settings/consent.html +1 -1
- fides/ui-build/static/admin/settings/custom-fields/[id].html +1 -1
- fides/ui-build/static/admin/settings/custom-fields/new.html +1 -1
- fides/ui-build/static/admin/settings/custom-fields.html +1 -1
- fides/ui-build/static/admin/settings/domain-records.html +1 -1
- fides/ui-build/static/admin/settings/domains.html +1 -1
- fides/ui-build/static/admin/settings/email-templates.html +1 -1
- fides/ui-build/static/admin/settings/locations.html +1 -1
- fides/ui-build/static/admin/settings/organization.html +1 -1
- fides/ui-build/static/admin/settings/privacy-requests.html +1 -1
- fides/ui-build/static/admin/settings/regulations.html +1 -1
- fides/ui-build/static/admin/systems/configure/[id]/test-datasets.html +1 -1
- fides/ui-build/static/admin/systems/configure/[id].html +1 -1
- fides/ui-build/static/admin/systems.html +1 -1
- fides/ui-build/static/admin/taxonomy.html +1 -1
- fides/ui-build/static/admin/user-management/new.html +1 -1
- fides/ui-build/static/admin/user-management/profile/[id].html +1 -1
- fides/ui-build/static/admin/user-management.html +1 -1
- fides/api/service/async_dsr/async_dsr_service.py +0 -195
- fides/api/service/async_dsr/async_dsr_strategy.py +0 -5
- fides/api/service/async_dsr/async_dsr_strategy_callback.py +0 -16
- fides/api/service/async_dsr/async_dsr_strategy_factory.py +0 -63
- fides/api/service/async_dsr/async_dsr_strategy_polling.py +0 -94
- fides/ui-build/static/admin/_next/static/_IxwgneyQjdSaZFEF3Tqu/_buildManifest.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/1316-2606e19807c08aa5.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/1467-8808ec8836e033f9.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/155-b4337d0826d5addc.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/1817-1ad037b7d6d2f6d2.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/1896-49010da5c2705fc5.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/2150-930ffaf2c4718edc.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/255-1bc0cbef7a59cdc6.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/2921-66f65496c3a09316.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/2962-e92d525bf570a9a3.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/346-aa3b88efb85f2e28.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3550-83cb70e80cbe41ba.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3585-f728d32fda6f1ac1.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3855-ed226b8a8050bd40.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3872-04d3afbfa41a7782.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/401-ffe4e8436e1eceb9.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/409-5c3d31163028339f.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/431-78bf05f35d7eec4f.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4558-8305aee48def1dcd.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4608-0c6ef78e30a51f84.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4718-3a412bdb90add82f.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/502-0d9f4ac29ef34a1c.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/504-88caa30c03374e9b.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5163-e682273cd76a7d07.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5185-51eaa78e3ed6bfb7.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5279-12c9cbdc67ad7b14.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5309-3b6cf0cc9d0c6a83.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5574-c31ea831371610d5.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5619-9b50cec521203989.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5643-10a36584c399526c.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6277-182efc294d413f64.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6419-9b3a86af57c86791.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6853-7004a8c420b1ca02.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6882-dbe0a25dcf1a8ee0.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6954-4b24e1731c1cc3b3.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/699-8ca44b0de9fa20f0.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7045-14e955890f1147e4.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7079-50571e9f3269d74d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7158-04745cc8d684b2e7.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7218-e2983b96b95e33b4.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7630-d0d3a0fe3f95e971.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7725-f2a7be705b75dcc3.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7929-0fd0d4948bc8d70e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/8002-ed832921ad190832.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/8765-f622a35b40a7ec63.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9037-453224ba3ee65b13.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9046-b6616ba7b59d947e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9187-7438242f0d380bb0.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9226-4a7027057f55ca2a.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9278-08cc704317fe535e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9729-fcf6ff4e3534e4a8.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/manual-4ec03eed67572861.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/multiple-2ca59996860a33c5.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-19214babd1f219e3.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience-92182be6603c2842.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-ab54b19609bff325.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-c1a3caf3c286bf5d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]-4a1af12d2d7cd660.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects-99573a1ee3ef8f4c.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources-6e429b7511028d60.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-b7326c51d88cc2cc.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-5b57f9132426fe52.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-0d512528b498d75c.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-040813022f0890c9.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-a28cc0e23bbe4fc8.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datamap-7d22222608ec3aac.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-0abd30eada811b5b.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]-007965429368d9a3.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]-60a4a9eb4aab4c11.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-d514cd4ec62e3b03.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset-0e3a6ac4797ffbbb.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/[id]-816e02b6cbe4a684.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/new-b6838162200141b3.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-223c2d1ded51bfb1.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-153eb88ab4e7dc6d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations-331544e9b85c4ac2.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging/[id]-e8d2140787045acd.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging/add-template-e3f93462a08251bf.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging-b5f7d6afdecd013d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/ant-components-248ad9f65a872442.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/AntForm-aedb66a62042b10a.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikAntFormItem-018df38b7cd77fdb.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikControlled-6ca9099d03aab817.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikField-0f2c90786ea005a4.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/forms-200b51a725f8b2d1.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-7dac2302f573f5ee.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-479890582973deaf.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-7af00f72cf694077.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-f7753e9effae3816.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-f3e6e74e0efb005c.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-4d658222ec800511.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-2fcd95c41e578d57.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-a3275554ffe8e640.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/messaging-providers/[key]-77239269acc2d31a.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/messaging-providers/new-8bf1821722b082e9.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/messaging-providers-8d92be437793c96f.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/privacy-requests-97221067330c0c27.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-2deb6becece69d46.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems-6c91bdea40875227.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-3059aba38adefa56.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/webpack-2766492c5dbceb0a.js +0 -1
- fides/ui-build/static/admin/_next/static/css/073713cd1eddda79.css +0 -1
- fides/ui-build/static/admin/_next/static/css/23cf870196941c9a.css +0 -1
- fides/ui-build/static/admin/_next/static/css/295d729ea1b11885.css +0 -1
- fides/ui-build/static/admin/_next/static/css/304c6f148886a8d4.css +0 -1
- fides/ui-build/static/admin/data-discovery/action-center/[monitorId]/[systemId].html +0 -1
- fides/ui-build/static/admin/data-discovery/action-center/[monitorId].html +0 -1
- fides/ui-build/static/admin/messaging/[id].html +0 -1
- fides/ui-build/static/admin/messaging/add-template.html +0 -1
- fides/ui-build/static/admin/messaging.html +0 -1
- fides/ui-build/static/admin/settings/messaging-providers/[key].html +0 -1
- fides/ui-build/static/admin/settings/messaging-providers/new.html +0 -1
- fides/ui-build/static/admin/settings/messaging-providers.html +0 -1
- {ethyca_fides-2.71.1b1.dist-info → ethyca_fides-2.74.0rc1.dist-info}/WHEEL +0 -0
- {ethyca_fides-2.71.1b1.dist-info → ethyca_fides-2.74.0rc1.dist-info}/entry_points.txt +0 -0
- {ethyca_fides-2.71.1b1.dist-info → ethyca_fides-2.74.0rc1.dist-info}/licenses/LICENSE +0 -0
- {ethyca_fides-2.71.1b1.dist-info → ethyca_fides-2.74.0rc1.dist-info}/top_level.txt +0 -0
- /fides/ui-build/static/admin/_next/static/{_IxwgneyQjdSaZFEF3Tqu → FZTEUgamBvOhgPWce135w}/_ssgManifest.js +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/user-management/{new-629c88e90699369b.js → new-7dce2916cc589c54.js} +0 -0
|
@@ -30,7 +30,7 @@ from fides.api.db.system import (
|
|
|
30
30
|
upsert_system,
|
|
31
31
|
validate_privacy_declarations,
|
|
32
32
|
)
|
|
33
|
-
from fides.api.models.connectionconfig import ConnectionConfig
|
|
33
|
+
from fides.api.models.connectionconfig import ConnectionConfig
|
|
34
34
|
from fides.api.models.fides_user import FidesUser
|
|
35
35
|
from fides.api.models.sql_models import System # type:ignore[attr-defined]
|
|
36
36
|
from fides.api.oauth.roles import APPROVER
|
|
@@ -57,14 +57,12 @@ from fides.api.schemas.system import (
|
|
|
57
57
|
BasicSystemResponse,
|
|
58
58
|
SystemResponse,
|
|
59
59
|
)
|
|
60
|
-
from fides.api.service.deps import get_system_service
|
|
60
|
+
from fides.api.service.deps import get_connection_service, get_system_service
|
|
61
61
|
from fides.api.util.api_router import APIRouter
|
|
62
62
|
from fides.api.util.connection_util import (
|
|
63
|
-
connection_status,
|
|
64
63
|
delete_connection_config,
|
|
65
|
-
get_connection_config_or_error,
|
|
66
64
|
patch_connection_configs,
|
|
67
|
-
|
|
65
|
+
update_connection_secrets,
|
|
68
66
|
)
|
|
69
67
|
from fides.common.api.scope_registry import (
|
|
70
68
|
CONNECTION_CREATE_OR_UPDATE,
|
|
@@ -81,6 +79,7 @@ from fides.common.api.v1.urn_registry import (
|
|
|
81
79
|
SYSTEM_CONNECTIONS,
|
|
82
80
|
V1_URL_PREFIX,
|
|
83
81
|
)
|
|
82
|
+
from fides.service.connection.connection_service import ConnectionService
|
|
84
83
|
from fides.service.system.system_service import SystemService
|
|
85
84
|
|
|
86
85
|
SYSTEM_ROUTER = APIRouter(tags=["System"], prefix=f"{V1_URL_PREFIX}/system")
|
|
@@ -160,6 +159,7 @@ def patch_connection_secrets(
|
|
|
160
159
|
db: Session = Depends(deps.get_db),
|
|
161
160
|
unvalidated_secrets: connection_secrets_schemas,
|
|
162
161
|
verify: Optional[bool] = True,
|
|
162
|
+
connection_service: ConnectionService = Depends(get_connection_service),
|
|
163
163
|
) -> TestStatusMessage:
|
|
164
164
|
"""
|
|
165
165
|
Patch secrets that will be used to connect to a specified connection_type.
|
|
@@ -169,45 +169,13 @@ def patch_connection_secrets(
|
|
|
169
169
|
"""
|
|
170
170
|
|
|
171
171
|
system = get_system(db, fides_key)
|
|
172
|
-
|
|
173
|
-
|
|
172
|
+
return update_connection_secrets(
|
|
173
|
+
connection_service,
|
|
174
|
+
system.connection_configs.key,
|
|
175
|
+
unvalidated_secrets,
|
|
176
|
+
verify,
|
|
177
|
+
merge_with_existing=True,
|
|
174
178
|
)
|
|
175
|
-
# Inserts unchanged sensitive values. The FE does not send masked values sensitive secrets.
|
|
176
|
-
if connection_config.secrets is not None:
|
|
177
|
-
for key, value in connection_config.secrets.items():
|
|
178
|
-
if key not in unvalidated_secrets:
|
|
179
|
-
# unvalidated_secrets is actually a dictionary here. connection_secrets_schemas
|
|
180
|
-
# are just provided for documentation but the data was not parsed up front.
|
|
181
|
-
# That happens below in validate_secrets.
|
|
182
|
-
unvalidated_secrets[key] = value # type: ignore
|
|
183
|
-
else:
|
|
184
|
-
connection_config.secrets = {}
|
|
185
|
-
|
|
186
|
-
validated_secrets = validate_secrets(
|
|
187
|
-
db, unvalidated_secrets, connection_config
|
|
188
|
-
).model_dump(mode="json")
|
|
189
|
-
|
|
190
|
-
for key, value in validated_secrets.items():
|
|
191
|
-
connection_config.secrets[key] = value # type: ignore
|
|
192
|
-
|
|
193
|
-
# Deauthorize an OAuth connection when the secrets are updated. This is necessary because
|
|
194
|
-
# the existing access tokens may not be valid anymore. This only applies to SaaS connection
|
|
195
|
-
# configurations that use the "oauth2_authorization_code" authentication strategy.
|
|
196
|
-
if (
|
|
197
|
-
connection_config.authorized
|
|
198
|
-
and connection_config.connection_type == ConnectionType.saas
|
|
199
|
-
):
|
|
200
|
-
del connection_config.secrets["access_token"]
|
|
201
|
-
|
|
202
|
-
# Save validated secrets, regardless of whether they've been verified.
|
|
203
|
-
logger.info("Updating connection config secrets for '{}'", connection_config.key)
|
|
204
|
-
connection_config.save(db=db)
|
|
205
|
-
|
|
206
|
-
msg = f"Secrets updated for ConnectionConfig with key: {connection_config.key}."
|
|
207
|
-
if verify:
|
|
208
|
-
return connection_status(connection_config, msg, db)
|
|
209
|
-
|
|
210
|
-
return TestStatusMessage(msg=msg, test_status=None)
|
|
211
179
|
|
|
212
180
|
|
|
213
181
|
@SYSTEM_CONNECTIONS_ROUTER.delete(
|
|
@@ -36,7 +36,7 @@ from fides.api.models.fides_user import FidesUser
|
|
|
36
36
|
from fides.api.models.fides_user_invite import FidesUserInvite
|
|
37
37
|
from fides.api.models.fides_user_permissions import FidesUserPermissions
|
|
38
38
|
from fides.api.models.sql_models import System # type: ignore[attr-defined]
|
|
39
|
-
from fides.api.oauth.roles import APPROVER, VIEWER
|
|
39
|
+
from fides.api.oauth.roles import APPROVER, EXTERNAL_RESPONDENT, VIEWER
|
|
40
40
|
from fides.api.oauth.utils import (
|
|
41
41
|
create_temporary_user_for_login_flow,
|
|
42
42
|
extract_payload,
|
|
@@ -608,6 +608,7 @@ def get_users(
|
|
|
608
608
|
db: Session = Depends(get_db),
|
|
609
609
|
params: Params = Depends(),
|
|
610
610
|
username: Optional[str] = None,
|
|
611
|
+
include_external: bool = True,
|
|
611
612
|
client: ClientDetail = Security(verify_user_read_scopes),
|
|
612
613
|
authorization: str = Security(oauth2_scheme),
|
|
613
614
|
) -> AbstractPage[FidesUser]:
|
|
@@ -625,6 +626,12 @@ def get_users(
|
|
|
625
626
|
# User has USER_READ scope, can see all users
|
|
626
627
|
if username:
|
|
627
628
|
query = query.filter(FidesUser.username.ilike(f"%{escape_like(username)}%"))
|
|
629
|
+
|
|
630
|
+
# Filter out external respondents if include_external is False
|
|
631
|
+
if not include_external:
|
|
632
|
+
query = query.join(FidesUserPermissions).filter(
|
|
633
|
+
~FidesUserPermissions.roles.op("@>")([EXTERNAL_RESPONDENT])
|
|
634
|
+
)
|
|
628
635
|
else:
|
|
629
636
|
# User has USER_READ_OWN scope, only show their own data
|
|
630
637
|
query = query.filter(FidesUser.id == client.user_id)
|
fides/api/app_setup.py
CHANGED
|
@@ -39,9 +39,6 @@ from fides.api.oauth.system_manager_oauth_util import (
|
|
|
39
39
|
verify_oauth_client_for_system_from_request_body_cli,
|
|
40
40
|
)
|
|
41
41
|
from fides.api.oauth.utils import get_root_client, verify_oauth_client_prod
|
|
42
|
-
from fides.api.service.connectors.saas.connector_registry_service import (
|
|
43
|
-
update_saas_configs,
|
|
44
|
-
)
|
|
45
42
|
|
|
46
43
|
# pylint: disable=wildcard-import, unused-wildcard-import
|
|
47
44
|
from fides.api.service.saas_request.override_implementations import *
|
|
@@ -55,6 +52,7 @@ from fides.api.util.rate_limit import (
|
|
|
55
52
|
fides_limiter,
|
|
56
53
|
is_rate_limit_enabled,
|
|
57
54
|
)
|
|
55
|
+
from fides.api.util.saas_config_updater import update_saas_configs
|
|
58
56
|
from fides.config import CONFIG
|
|
59
57
|
from fides.config.config_proxy import ConfigProxy
|
|
60
58
|
|
fides/api/common_exceptions.py
CHANGED
|
@@ -179,6 +179,10 @@ class AwaitingAsyncTask(BaseException):
|
|
|
179
179
|
"""Request Task is Awaiting Processing - Awaiting Async Task"""
|
|
180
180
|
|
|
181
181
|
|
|
182
|
+
class AwaitingAsyncProcessing(BaseException):
|
|
183
|
+
"""Request Task is actively being processed by external system - Fides is polling"""
|
|
184
|
+
|
|
185
|
+
|
|
182
186
|
class UpstreamTasksNotReady(BaseException):
|
|
183
187
|
"""Privacy Request Task awaiting upstream tasks"""
|
|
184
188
|
|
|
@@ -402,3 +406,7 @@ class MonitorConfigNotFoundException(BaseException):
|
|
|
402
406
|
|
|
403
407
|
class MissingNamespaceSchemaException(BaseException):
|
|
404
408
|
"""Attempting to use namespace fides_meta without specifying the schema to validate it."""
|
|
409
|
+
|
|
410
|
+
|
|
411
|
+
class ConnectionNotFoundException(BaseException):
|
|
412
|
+
"""ConnectionConfig could not be found"""
|
fides/api/db/base.py
CHANGED
|
@@ -33,6 +33,7 @@ from fides.api.models.fides_user_permissions import FidesUserPermissions
|
|
|
33
33
|
from fides.api.models.fides_user_respondent_email_verification import (
|
|
34
34
|
FidesUserRespondentEmailVerification,
|
|
35
35
|
)
|
|
36
|
+
from fides.api.models.identity_definition import IdentityDefinition
|
|
36
37
|
from fides.api.models.identity_salt import IdentitySalt
|
|
37
38
|
from fides.api.models.location_regulation_selections import LocationRegulationSelections
|
|
38
39
|
from fides.api.models.manual_task import (
|
|
@@ -95,3 +96,4 @@ from fides.api.models.tcf_publisher_restrictions import (
|
|
|
95
96
|
TCFPublisherRestriction,
|
|
96
97
|
)
|
|
97
98
|
from fides.api.models.tcf_purpose_overrides import TCFPurposeOverride
|
|
99
|
+
from fides.api.models.v3.privacy_preferences import PrivacyPreferences
|
fides/api/db/database.py
CHANGED
|
@@ -2,14 +2,19 @@
|
|
|
2
2
|
Contains all of the logic related to the database including connections, setup, teardown, etc.
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
+
import os
|
|
6
|
+
import subprocess
|
|
5
7
|
from os import path
|
|
8
|
+
from pathlib import Path
|
|
6
9
|
from typing import Literal, Optional, Tuple
|
|
7
10
|
|
|
8
11
|
from alembic import command, script
|
|
9
12
|
from alembic.config import Config
|
|
10
13
|
from alembic.runtime import migration
|
|
11
14
|
from loguru import logger as log
|
|
15
|
+
from sqlalchemy import text
|
|
12
16
|
from sqlalchemy.orm import Session
|
|
17
|
+
from sqlalchemy.schema import SchemaItem
|
|
13
18
|
from sqlalchemy_utils.functions import create_database, database_exists
|
|
14
19
|
from sqlalchemy_utils.types.encrypted.encrypted_type import InvalidCiphertextError
|
|
15
20
|
|
|
@@ -20,6 +25,25 @@ from fides.api.util.errors import get_full_exception_name
|
|
|
20
25
|
|
|
21
26
|
DatabaseHealth = Literal["healthy", "unhealthy", "needs migration"]
|
|
22
27
|
|
|
28
|
+
# Tables to exclude from migration auto-generation (e.g., tables without SQLAlchemy models)
|
|
29
|
+
EXCLUDED_TABLES = {
|
|
30
|
+
"privacy_preferences_current",
|
|
31
|
+
"privacy_preferences_historic",
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def include_object(
|
|
36
|
+
object: SchemaItem, # pylint: disable=redefined-builtin
|
|
37
|
+
name: str,
|
|
38
|
+
type_: str,
|
|
39
|
+
reflected: bool,
|
|
40
|
+
compare_to: SchemaItem,
|
|
41
|
+
) -> bool:
|
|
42
|
+
"""Filter out excluded tables from migration comparison and auto-generation."""
|
|
43
|
+
if type_ == "table" and name in EXCLUDED_TABLES:
|
|
44
|
+
return False
|
|
45
|
+
return True
|
|
46
|
+
|
|
23
47
|
|
|
24
48
|
def get_alembic_config(database_url: str) -> Config:
|
|
25
49
|
"""
|
|
@@ -91,6 +115,10 @@ def reset_db(database_url: str) -> None:
|
|
|
91
115
|
log.info("Dropping tables...")
|
|
92
116
|
Base.metadata.drop_all(connection)
|
|
93
117
|
|
|
118
|
+
log.info("Dropping excluded tables without models...")
|
|
119
|
+
for table_name in EXCLUDED_TABLES:
|
|
120
|
+
connection.execute(text(f"DROP TABLE IF EXISTS {table_name} CASCADE"))
|
|
121
|
+
|
|
94
122
|
log.info("Dropping Alembic table...")
|
|
95
123
|
migration_context = migration.MigrationContext.configure(connection)
|
|
96
124
|
version = migration_context._version # pylint: disable=protected-access
|
|
@@ -151,13 +179,240 @@ def check_missing_migrations(database_url: str) -> None:
|
|
|
151
179
|
Tries to autogenerate migrations, returns True if a migration
|
|
152
180
|
was generated.
|
|
153
181
|
"""
|
|
154
|
-
|
|
155
182
|
engine = get_db_engine(database_uri=database_url)
|
|
156
183
|
connection = engine.connect()
|
|
157
184
|
|
|
158
|
-
migration_context = migration.MigrationContext.configure(
|
|
185
|
+
migration_context = migration.MigrationContext.configure(
|
|
186
|
+
connection, opts={"include_object": include_object}
|
|
187
|
+
)
|
|
159
188
|
result = command.autogen.compare_metadata(migration_context, Base.metadata) # type: ignore[attr-defined]
|
|
160
189
|
|
|
161
190
|
if result:
|
|
191
|
+
log.error("Migration needs to be generated!")
|
|
192
|
+
log.error("Detected the following schema differences:")
|
|
193
|
+
for item in result:
|
|
194
|
+
log.error(f" - {item}")
|
|
162
195
|
raise SystemExit("Migration needs to be generated!")
|
|
163
196
|
print("No migrations need to be generated.")
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
def _get_base_branch_for_comparison() -> str:
|
|
200
|
+
"""
|
|
201
|
+
Determine the base branch to compare against for detecting new migrations.
|
|
202
|
+
|
|
203
|
+
In GitHub Actions PRs, uses GITHUB_BASE_REF (the PR target branch).
|
|
204
|
+
Otherwise, falls back to origin/main for local development.
|
|
205
|
+
|
|
206
|
+
Returns:
|
|
207
|
+
The base branch reference (e.g., 'origin/main', 'origin/develop')
|
|
208
|
+
"""
|
|
209
|
+
base_ref = os.environ.get("GITHUB_BASE_REF")
|
|
210
|
+
if base_ref:
|
|
211
|
+
base_branch = f"origin/{base_ref}"
|
|
212
|
+
log.info(f"Comparing against PR target branch: {base_branch}")
|
|
213
|
+
else:
|
|
214
|
+
base_branch = "origin/main"
|
|
215
|
+
log.info(f"No GITHUB_BASE_REF found, comparing against: {base_branch}")
|
|
216
|
+
return base_branch
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
def _get_new_migration_files(repo_root: str, base_branch: str) -> list[str]:
|
|
220
|
+
"""
|
|
221
|
+
Get list of new migration files added in the current branch.
|
|
222
|
+
|
|
223
|
+
Files are sorted by the timestamp in their filename to ensure chronological order.
|
|
224
|
+
Migration files follow the pattern: xx_YYYY_MM_DD_HHMM_revision_description.py
|
|
225
|
+
|
|
226
|
+
Args:
|
|
227
|
+
repo_root: Absolute path to the git repository root
|
|
228
|
+
base_branch: The base branch to compare against
|
|
229
|
+
|
|
230
|
+
Returns:
|
|
231
|
+
List of relative file paths to new migration files, sorted chronologically
|
|
232
|
+
|
|
233
|
+
Raises:
|
|
234
|
+
SystemExit: If the migrations directory does not exist
|
|
235
|
+
"""
|
|
236
|
+
# Validate that the migrations directory exists
|
|
237
|
+
migrations_dir = (
|
|
238
|
+
Path(repo_root)
|
|
239
|
+
/ "src"
|
|
240
|
+
/ "fides"
|
|
241
|
+
/ "api"
|
|
242
|
+
/ "alembic"
|
|
243
|
+
/ "migrations"
|
|
244
|
+
/ "versions"
|
|
245
|
+
)
|
|
246
|
+
if not migrations_dir.exists():
|
|
247
|
+
log.error(f"Migrations directory not found: {migrations_dir}")
|
|
248
|
+
raise SystemExit(
|
|
249
|
+
f"Migration directory not found at expected path: {migrations_dir}\n"
|
|
250
|
+
"If the migrations directory has been moved, update the path in "
|
|
251
|
+
"fides.api.db.database._get_new_migration_files()"
|
|
252
|
+
)
|
|
253
|
+
|
|
254
|
+
migration_pattern = "src/fides/api/alembic/migrations/versions/*.py"
|
|
255
|
+
diff_output = subprocess.check_output(
|
|
256
|
+
[
|
|
257
|
+
"git",
|
|
258
|
+
"diff",
|
|
259
|
+
"--name-only",
|
|
260
|
+
"--diff-filter=A", # Only added files
|
|
261
|
+
f"{base_branch}...HEAD",
|
|
262
|
+
"--",
|
|
263
|
+
migration_pattern,
|
|
264
|
+
],
|
|
265
|
+
stderr=subprocess.STDOUT,
|
|
266
|
+
text=True,
|
|
267
|
+
cwd=repo_root,
|
|
268
|
+
).strip()
|
|
269
|
+
|
|
270
|
+
if not diff_output:
|
|
271
|
+
return []
|
|
272
|
+
|
|
273
|
+
migration_files = [f for f in diff_output.split("\n") if f]
|
|
274
|
+
|
|
275
|
+
# Sort by filename to ensure chronological order
|
|
276
|
+
# Files are named: xx_YYYY_MM_DD_HHMM_revision_description.py
|
|
277
|
+
# Sorting alphabetically will sort them chronologically due to the date format
|
|
278
|
+
migration_files.sort()
|
|
279
|
+
|
|
280
|
+
return migration_files
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
def _parse_migration_revisions(migration_path: Path) -> tuple[str, Optional[str]]:
|
|
284
|
+
"""
|
|
285
|
+
Extract revision and down_revision IDs from a migration file.
|
|
286
|
+
|
|
287
|
+
Args:
|
|
288
|
+
migration_path: Path to the migration file
|
|
289
|
+
|
|
290
|
+
Returns:
|
|
291
|
+
Tuple of (revision, down_revision). down_revision may be None.
|
|
292
|
+
|
|
293
|
+
Raises:
|
|
294
|
+
SystemExit: If revision ID cannot be found in the file
|
|
295
|
+
"""
|
|
296
|
+
revision = None
|
|
297
|
+
down_revision = None
|
|
298
|
+
|
|
299
|
+
with open(migration_path, "r", encoding="utf-8") as f:
|
|
300
|
+
for line in f:
|
|
301
|
+
if line.strip().startswith("revision ="):
|
|
302
|
+
revision = line.split("=")[1].strip().strip("\"'")
|
|
303
|
+
elif line.strip().startswith("down_revision ="):
|
|
304
|
+
down_rev_value = line.split("=")[1].strip().strip("\"'")
|
|
305
|
+
if down_rev_value.lower() != "none":
|
|
306
|
+
down_revision = down_rev_value
|
|
307
|
+
|
|
308
|
+
if not revision:
|
|
309
|
+
log.error(f"Could not find revision ID in {migration_path}")
|
|
310
|
+
raise SystemExit(f"Invalid migration file: {migration_path}")
|
|
311
|
+
|
|
312
|
+
return revision, down_revision
|
|
313
|
+
|
|
314
|
+
|
|
315
|
+
def _test_migrations_upgrade_downgrade_sequence(
|
|
316
|
+
alembic_config: Config,
|
|
317
|
+
migrations: list[tuple[str, str, Optional[str]]],
|
|
318
|
+
) -> None:
|
|
319
|
+
"""
|
|
320
|
+
Test multiple migrations can be upgraded and downgraded successfully in sequence.
|
|
321
|
+
|
|
322
|
+
Tests all new migrations together by:
|
|
323
|
+
1. Downgrading incrementally through all migrations (newest to oldest)
|
|
324
|
+
2. Upgrading incrementally back through all migrations (oldest to newest)
|
|
325
|
+
|
|
326
|
+
After Phase 2, the database is at the newest migration revision, which should
|
|
327
|
+
match HEAD for the new migrations being tested.
|
|
328
|
+
|
|
329
|
+
This approach tests migrations in a realistic sequence and can catch
|
|
330
|
+
interaction issues between migrations.
|
|
331
|
+
|
|
332
|
+
Args:
|
|
333
|
+
alembic_config: Alembic configuration
|
|
334
|
+
migrations: List of (migration_name, revision, down_revision) tuples
|
|
335
|
+
|
|
336
|
+
Raises:
|
|
337
|
+
SystemExit: If any migration upgrade/downgrade test fails
|
|
338
|
+
"""
|
|
339
|
+
if not migrations:
|
|
340
|
+
return
|
|
341
|
+
|
|
342
|
+
log.info(f"Testing {len(migrations)} migration(s) in sequence")
|
|
343
|
+
|
|
344
|
+
try:
|
|
345
|
+
# Phase 1: Downgrade through all migrations (newest to oldest)
|
|
346
|
+
log.info("Phase 1: Downgrading through all new migrations...")
|
|
347
|
+
for migration_name, revision, down_revision in reversed(migrations):
|
|
348
|
+
if down_revision:
|
|
349
|
+
log.info(f" Downgrading {migration_name} to {down_revision}...")
|
|
350
|
+
downgrade_db(alembic_config, down_revision)
|
|
351
|
+
else:
|
|
352
|
+
log.info(f" Skipping {migration_name} (no down_revision)")
|
|
353
|
+
|
|
354
|
+
# Phase 2: Upgrade back through all migrations (oldest to newest)
|
|
355
|
+
log.info("Phase 2: Upgrading back through all new migrations...")
|
|
356
|
+
for migration_name, revision, down_revision in migrations:
|
|
357
|
+
log.info(f" Upgrading {migration_name} to {revision}...")
|
|
358
|
+
upgrade_db(alembic_config, revision)
|
|
359
|
+
|
|
360
|
+
log.info(f"✓ All {len(migrations)} migration(s) passed upgrade/downgrade test")
|
|
361
|
+
|
|
362
|
+
except Exception as error:
|
|
363
|
+
log.error("Migration upgrade/downgrade sequence test failed!")
|
|
364
|
+
log.error(str(error))
|
|
365
|
+
raise SystemExit("Migration upgrade/downgrade test failed")
|
|
366
|
+
|
|
367
|
+
|
|
368
|
+
def check_new_migrations_upgrade_downgrade(database_url: str) -> None:
|
|
369
|
+
"""
|
|
370
|
+
Detects new migrations added in the current branch and tests that they
|
|
371
|
+
can be successfully upgraded and downgraded.
|
|
372
|
+
|
|
373
|
+
Uses git to compare against the target/base branch to find new migration files.
|
|
374
|
+
In CI, uses GITHUB_BASE_REF if available, otherwise falls back to origin/main.
|
|
375
|
+
"""
|
|
376
|
+
try:
|
|
377
|
+
# Get the repo root directory
|
|
378
|
+
repo_root = subprocess.check_output(
|
|
379
|
+
["git", "rev-parse", "--show-toplevel"],
|
|
380
|
+
stderr=subprocess.STDOUT,
|
|
381
|
+
text=True,
|
|
382
|
+
).strip()
|
|
383
|
+
|
|
384
|
+
# Determine base branch and get new migration files
|
|
385
|
+
base_branch = _get_base_branch_for_comparison()
|
|
386
|
+
migration_files = _get_new_migration_files(repo_root, base_branch)
|
|
387
|
+
|
|
388
|
+
if not migration_files:
|
|
389
|
+
log.info("No new migration files detected in current branch")
|
|
390
|
+
print("No new migrations to test.")
|
|
391
|
+
return
|
|
392
|
+
|
|
393
|
+
log.info(f"Detected {len(migration_files)} new migration(s) to test")
|
|
394
|
+
|
|
395
|
+
# Log the migrations in order
|
|
396
|
+
for i, file_path in enumerate(migration_files, 1):
|
|
397
|
+
log.info(f" {i}. {Path(file_path).name}")
|
|
398
|
+
|
|
399
|
+
alembic_config = get_alembic_config(database_url)
|
|
400
|
+
|
|
401
|
+
# Parse all migrations first
|
|
402
|
+
migrations = []
|
|
403
|
+
for file_path in migration_files:
|
|
404
|
+
abs_path = Path(repo_root) / file_path
|
|
405
|
+
revision, down_revision = _parse_migration_revisions(abs_path)
|
|
406
|
+
migrations.append((abs_path.name, revision, down_revision))
|
|
407
|
+
|
|
408
|
+
# Test all migrations in sequence
|
|
409
|
+
_test_migrations_upgrade_downgrade_sequence(alembic_config, migrations)
|
|
410
|
+
|
|
411
|
+
print(
|
|
412
|
+
f"All {len(migration_files)} new migration(s) passed upgrade/downgrade tests."
|
|
413
|
+
)
|
|
414
|
+
|
|
415
|
+
except subprocess.CalledProcessError as error:
|
|
416
|
+
# Git command failed - might not be in a git repo or no origin/main
|
|
417
|
+
log.warning(f"Could not detect new migrations via git: {error}")
|
|
418
|
+
print("Skipping migration upgrade/downgrade check (git detection failed).")
|
|
@@ -9,6 +9,7 @@ from fides.api.email_templates.template_names import (
|
|
|
9
9
|
CONSENT_REQUEST_VERIFICATION_TEMPLATE,
|
|
10
10
|
EMAIL_ERASURE_REQUEST_FULFILLMENT,
|
|
11
11
|
EXTERNAL_USER_WELCOME,
|
|
12
|
+
MANUAL_TASK_DIGEST,
|
|
12
13
|
PRIVACY_REQUEST_COMPLETE_ACCESS_TEMPLATE,
|
|
13
14
|
PRIVACY_REQUEST_COMPLETE_DELETION_TEMPLATE,
|
|
14
15
|
PRIVACY_REQUEST_ERROR_NOTIFICATION_TEMPLATE,
|
|
@@ -59,6 +60,8 @@ def get_email_template( # pylint: disable=too-many-return-statements, too-many-
|
|
|
59
60
|
return template_env.get_template(USER_INVITE)
|
|
60
61
|
if action_type == MessagingActionType.EXTERNAL_USER_WELCOME:
|
|
61
62
|
return template_env.get_template(EXTERNAL_USER_WELCOME)
|
|
63
|
+
if action_type == MessagingActionType.MANUAL_TASK_DIGEST:
|
|
64
|
+
return template_env.get_template(MANUAL_TASK_DIGEST)
|
|
62
65
|
|
|
63
66
|
logger.error("No corresponding template linked to the {}", action_type)
|
|
64
67
|
raise EmailTemplateUnhandledActionType(
|