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
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>Weekly DSR Summary</title>
|
|
7
|
+
<style>
|
|
8
|
+
/* Reset styles for email clients */
|
|
9
|
+
body, table, td, p, a, li, blockquote {
|
|
10
|
+
-webkit-text-size-adjust: 100%;
|
|
11
|
+
-ms-text-size-adjust: 100%;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
table, td {
|
|
15
|
+
mso-table-lspace: 0pt;
|
|
16
|
+
mso-table-rspace: 0pt;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
img {
|
|
20
|
+
-ms-interpolation-mode: bicubic;
|
|
21
|
+
border: 0;
|
|
22
|
+
height: auto;
|
|
23
|
+
line-height: 100%;
|
|
24
|
+
outline: none;
|
|
25
|
+
text-decoration: none;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/* Main styles */
|
|
29
|
+
body {
|
|
30
|
+
margin: 0;
|
|
31
|
+
padding: 0;
|
|
32
|
+
width: 100% !important;
|
|
33
|
+
min-width: 100%;
|
|
34
|
+
height: 100%;
|
|
35
|
+
background-color: #f8fafc;
|
|
36
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
37
|
+
font-size: 16px;
|
|
38
|
+
line-height: 1.6;
|
|
39
|
+
color: #334155;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.email-container {
|
|
43
|
+
max-width: 600px;
|
|
44
|
+
margin: 0 auto;
|
|
45
|
+
background-color: #ffffff;
|
|
46
|
+
border-radius: 8px;
|
|
47
|
+
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
|
|
48
|
+
overflow: hidden;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.logo-section {
|
|
52
|
+
background-color: #ffffff;
|
|
53
|
+
padding: 24px;
|
|
54
|
+
text-align: center;
|
|
55
|
+
border-bottom: 1px solid #e5e5e5;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.logo-container {
|
|
59
|
+
margin-bottom: 0;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.header {
|
|
63
|
+
background-color: #000000;
|
|
64
|
+
padding: 32px 24px;
|
|
65
|
+
text-align: center;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.logo {
|
|
69
|
+
max-width: 200px;
|
|
70
|
+
max-height: 60px;
|
|
71
|
+
width: auto;
|
|
72
|
+
height: auto;
|
|
73
|
+
display: block;
|
|
74
|
+
margin: 0 auto;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.logo-placeholder {
|
|
78
|
+
width: 200px;
|
|
79
|
+
height: 60px;
|
|
80
|
+
background-color: #333333;
|
|
81
|
+
border: 2px dashed #666666;
|
|
82
|
+
display: flex;
|
|
83
|
+
align-items: center;
|
|
84
|
+
justify-content: center;
|
|
85
|
+
margin: 0 auto;
|
|
86
|
+
color: #999999;
|
|
87
|
+
font-size: 14px;
|
|
88
|
+
font-weight: 500;
|
|
89
|
+
text-align: center;
|
|
90
|
+
border-radius: 4px;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.header h1 {
|
|
94
|
+
color: #ffffff;
|
|
95
|
+
font-size: 24px;
|
|
96
|
+
font-weight: 600;
|
|
97
|
+
margin: 0;
|
|
98
|
+
letter-spacing: -0.025em;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.content {
|
|
102
|
+
padding: 32px 24px;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.greeting {
|
|
106
|
+
font-size: 18px;
|
|
107
|
+
color: #000000;
|
|
108
|
+
margin-bottom: 24px;
|
|
109
|
+
font-weight: 500;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.intro-text {
|
|
113
|
+
margin-bottom: 32px;
|
|
114
|
+
color: #333333;
|
|
115
|
+
line-height: 1.7;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.section {
|
|
119
|
+
margin-bottom: 32px;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.section-title {
|
|
123
|
+
font-size: 20px;
|
|
124
|
+
font-weight: 600;
|
|
125
|
+
color: #000000;
|
|
126
|
+
margin-bottom: 16px;
|
|
127
|
+
padding-bottom: 8px;
|
|
128
|
+
border-bottom: 2px solid #e5e5e5;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.task-count {
|
|
132
|
+
background-color: #f5f5f5;
|
|
133
|
+
border-left: 4px solid #000000;
|
|
134
|
+
padding: 16px 20px;
|
|
135
|
+
margin-bottom: 20px;
|
|
136
|
+
border-radius: 0 6px 6px 0;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.task-count-text {
|
|
140
|
+
font-size: 18px;
|
|
141
|
+
font-weight: 600;
|
|
142
|
+
color: #000000;
|
|
143
|
+
margin: 0;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.cta-button {
|
|
147
|
+
display: inline-block;
|
|
148
|
+
background-color: #000000;
|
|
149
|
+
color: #ffffff !important;
|
|
150
|
+
text-decoration: none;
|
|
151
|
+
padding: 12px 24px;
|
|
152
|
+
border-radius: 6px;
|
|
153
|
+
font-weight: 600;
|
|
154
|
+
font-size: 16px;
|
|
155
|
+
text-align: center;
|
|
156
|
+
transition: all 0.2s ease;
|
|
157
|
+
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
.cta-button:hover {
|
|
161
|
+
background-color: #333333;
|
|
162
|
+
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
|
|
163
|
+
transform: translateY(-1px);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.footer {
|
|
167
|
+
background-color: #f5f5f5;
|
|
168
|
+
padding: 24px;
|
|
169
|
+
text-align: center;
|
|
170
|
+
border-top: 1px solid #e5e5e5;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
.footer-text {
|
|
174
|
+
color: #666666;
|
|
175
|
+
font-size: 14px;
|
|
176
|
+
line-height: 1.6;
|
|
177
|
+
margin: 0;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
.signature {
|
|
181
|
+
margin-top: 24px;
|
|
182
|
+
color: #333333;
|
|
183
|
+
font-weight: 500;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/* Responsive styles */
|
|
187
|
+
@media only screen and (max-width: 600px) {
|
|
188
|
+
.email-container {
|
|
189
|
+
margin: 0;
|
|
190
|
+
border-radius: 0;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
.header, .content, .footer {
|
|
194
|
+
padding: 24px 16px;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
.header h1 {
|
|
198
|
+
font-size: 20px;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
.greeting {
|
|
202
|
+
font-size: 16px;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
.section-title {
|
|
206
|
+
font-size: 18px;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
.cta-button {
|
|
210
|
+
width: 100%;
|
|
211
|
+
box-sizing: border-box;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/* Dark mode support */
|
|
216
|
+
@media (prefers-color-scheme: dark) {
|
|
217
|
+
body {
|
|
218
|
+
background-color: #000000;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
.email-container {
|
|
222
|
+
background-color: #1a1a1a;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
.greeting, .section-title {
|
|
226
|
+
color: #ffffff;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
.intro-text, .footer-text, .signature {
|
|
230
|
+
color: #cccccc;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
.task-count {
|
|
234
|
+
background-color: #333333;
|
|
235
|
+
border-left-color: #ffffff;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
.task-count-text {
|
|
239
|
+
color: #ffffff;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
.footer {
|
|
243
|
+
background-color: #333333;
|
|
244
|
+
border-top-color: #666666;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
.logo-section {
|
|
248
|
+
background-color: #1a1a1a;
|
|
249
|
+
border-bottom-color: #666666;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
.logo-placeholder {
|
|
253
|
+
background-color: #555555;
|
|
254
|
+
border-color: #888888;
|
|
255
|
+
color: #cccccc;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
</style>
|
|
259
|
+
</head>
|
|
260
|
+
<body>
|
|
261
|
+
<div style="padding: 20px 0;">
|
|
262
|
+
<div class="email-container">
|
|
263
|
+
<!-- Logo Section -->
|
|
264
|
+
<div class="logo-section">
|
|
265
|
+
<div class="logo-container">
|
|
266
|
+
{% if company_logo_url %}
|
|
267
|
+
<img src="{{ company_logo_url }}" alt="{{ organization_name }} Logo" class="logo">
|
|
268
|
+
{% else %}
|
|
269
|
+
<div class="logo-placeholder">{{ organization_name }}</div>
|
|
270
|
+
{% endif %}
|
|
271
|
+
</div>
|
|
272
|
+
</div>
|
|
273
|
+
|
|
274
|
+
<!-- Main Content -->
|
|
275
|
+
<div class="content">
|
|
276
|
+
<div class="greeting">Hi {{ vendor_contact_name }},</div>
|
|
277
|
+
|
|
278
|
+
<div class="intro-text">
|
|
279
|
+
{{ intro_text | default("This is your weekly summary of open data subject requests tasks from " + organization_name + " that require your attention. Please review the tasks listed below in our <a href='" + portal_url + "' style='color: #000000; text-decoration: underline; font-weight: 600;'>Privacy Center</a> to ensure timely completion.") | safe }}
|
|
280
|
+
</div>
|
|
281
|
+
|
|
282
|
+
<!-- Tasks Due Soon Section -->
|
|
283
|
+
<div class="section">
|
|
284
|
+
<div class="section-title">Tasks Due Soon</div>
|
|
285
|
+
|
|
286
|
+
<div class="task-count">
|
|
287
|
+
<p class="task-count-text">You have {{ total_task_count }} request{{ 's' if total_task_count != 1 else '' }} coming due, including {{ imminent_task_count }} within the next 7 days and {{ upcoming_task_count }} due in the next period.</p>
|
|
288
|
+
</div>
|
|
289
|
+
|
|
290
|
+
<div style="text-align: center;">
|
|
291
|
+
<a href="{{ portal_url }}" class="cta-button">View All Tasks</a>
|
|
292
|
+
</div>
|
|
293
|
+
</div>
|
|
294
|
+
|
|
295
|
+
<!-- Closing -->
|
|
296
|
+
<div style="margin-top: 32px;">
|
|
297
|
+
<p style="color: #333333; margin-bottom: 24px;">
|
|
298
|
+
{{ closing_text | default("Thank you for your partnership in processing these requests efficiently. If you have any questions or issues, please reach out to your contacts at " + organization_name + ".") | safe }}
|
|
299
|
+
</p>
|
|
300
|
+
|
|
301
|
+
<div class="signature">
|
|
302
|
+
{{ signature | default("Best regards,<br>The " + organization_name + " Privacy Team") | safe }}
|
|
303
|
+
</div>
|
|
304
|
+
</div>
|
|
305
|
+
</div>
|
|
306
|
+
|
|
307
|
+
<!-- Footer -->
|
|
308
|
+
<div class="footer">
|
|
309
|
+
<p class="footer-text">
|
|
310
|
+
This email was sent from your Privacy Center. Please do not reply to this email.
|
|
311
|
+
</p>
|
|
312
|
+
</div>
|
|
313
|
+
</div>
|
|
314
|
+
</div>
|
|
315
|
+
</body>
|
|
316
|
+
</html>
|
fides/api/main.py
CHANGED
|
@@ -45,9 +45,9 @@ from fides.api.service.privacy_request.email_batch_service import (
|
|
|
45
45
|
initiate_scheduled_batch_email_send,
|
|
46
46
|
)
|
|
47
47
|
from fides.api.service.privacy_request.request_service import (
|
|
48
|
-
initiate_async_tasks_status_polling,
|
|
49
48
|
initiate_interrupted_task_requeue_poll,
|
|
50
49
|
initiate_poll_for_exited_privacy_request_tasks,
|
|
50
|
+
initiate_polling_task_requeue,
|
|
51
51
|
initiate_scheduled_dsr_data_removal,
|
|
52
52
|
)
|
|
53
53
|
|
|
@@ -103,7 +103,7 @@ async def lifespan(wrapped_app: FastAPI) -> AsyncGenerator[None, None]:
|
|
|
103
103
|
initiate_poll_for_exited_privacy_request_tasks()
|
|
104
104
|
initiate_scheduled_dsr_data_removal()
|
|
105
105
|
initiate_interrupted_task_requeue_poll()
|
|
106
|
-
|
|
106
|
+
initiate_polling_task_requeue()
|
|
107
107
|
initiate_bcrypt_migration_task()
|
|
108
108
|
initiate_post_upgrade_index_creation()
|
|
109
109
|
|
fides/api/models/attachment.py
CHANGED
|
@@ -17,6 +17,7 @@ from .monitor_task import (
|
|
|
17
17
|
create_monitor_task_with_execution_log,
|
|
18
18
|
update_monitor_task_with_execution_log,
|
|
19
19
|
)
|
|
20
|
+
from .staged_resource_error import StagedResourceError
|
|
20
21
|
|
|
21
22
|
__all__ = [
|
|
22
23
|
"ClassificationBenchmark",
|
|
@@ -27,6 +28,7 @@ __all__ = [
|
|
|
27
28
|
"SharedMonitorConfig",
|
|
28
29
|
"StagedResource",
|
|
29
30
|
"StagedResourceAncestor",
|
|
31
|
+
"StagedResourceError",
|
|
30
32
|
"fetch_staged_resources_by_type_query",
|
|
31
33
|
"MonitorTask",
|
|
32
34
|
"MonitorTaskExecutionLog",
|
|
@@ -29,6 +29,9 @@ from sqlalchemy.orm.query import Query
|
|
|
29
29
|
|
|
30
30
|
from fides.api.db.base_class import Base, FidesBase
|
|
31
31
|
from fides.api.models.connectionconfig import ConnectionConfig
|
|
32
|
+
from fides.api.models.detection_discovery.staged_resource_error import (
|
|
33
|
+
StagedResourceError,
|
|
34
|
+
)
|
|
32
35
|
from fides.api.models.sql_models import System # type: ignore[attr-defined]
|
|
33
36
|
|
|
34
37
|
|
|
@@ -573,6 +576,13 @@ class StagedResource(Base):
|
|
|
573
576
|
# diff-related fields
|
|
574
577
|
diff_status = Column(String, nullable=True, index=True)
|
|
575
578
|
|
|
579
|
+
errors: RelationshipProperty[List[StagedResourceError]] = relationship(
|
|
580
|
+
"StagedResourceError",
|
|
581
|
+
foreign_keys=[StagedResourceError.staged_resource_urn],
|
|
582
|
+
primaryjoin="StagedResource.urn == StagedResourceError.staged_resource_urn",
|
|
583
|
+
cascade="all, delete-orphan",
|
|
584
|
+
)
|
|
585
|
+
|
|
576
586
|
ancestor_links: RelationshipProperty[List[StagedResourceAncestor]] = relationship(
|
|
577
587
|
"StagedResourceAncestor",
|
|
578
588
|
back_populates="descendant_staged_resource",
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"""Module for staged resource error tracking."""
|
|
2
|
+
|
|
3
|
+
from sqlalchemy import Column, DateTime, ForeignKey, String
|
|
4
|
+
|
|
5
|
+
from fides.api.db.base_class import Base, FidesBase
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class StagedResourceError(Base):
|
|
9
|
+
"""
|
|
10
|
+
DB model for tracking errors associated with staged resources.
|
|
11
|
+
Linked to StagedResource via FK with cascade delete.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
id = Column(String(255), primary_key=True, default=FidesBase.generate_uuid)
|
|
15
|
+
staged_resource_urn = Column(
|
|
16
|
+
String,
|
|
17
|
+
ForeignKey("stagedresource.urn", ondelete="CASCADE"),
|
|
18
|
+
nullable=False,
|
|
19
|
+
index=True,
|
|
20
|
+
)
|
|
21
|
+
message = Column(String, nullable=False)
|
|
22
|
+
timestamp = Column(DateTime(timezone=True), nullable=False)
|
|
23
|
+
error_type = Column(String, nullable=False)
|
|
24
|
+
diff_status = Column(String, nullable=False) # Phase where error occurred
|
|
25
|
+
task_id = Column(String, nullable=True, index=True)
|
|
@@ -5,10 +5,12 @@ from fides.api.models.digest.conditional_dependencies import (
|
|
|
5
5
|
DigestConditionType,
|
|
6
6
|
)
|
|
7
7
|
from fides.api.models.digest.digest_config import DigestConfig, DigestType
|
|
8
|
+
from fides.api.models.digest.digest_execution import DigestTaskExecution
|
|
8
9
|
|
|
9
10
|
__all__ = [
|
|
10
11
|
"DigestConfig",
|
|
11
12
|
"DigestType",
|
|
12
13
|
"DigestCondition",
|
|
13
14
|
"DigestConditionType",
|
|
15
|
+
"DigestTaskExecution",
|
|
14
16
|
]
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from enum import Enum
|
|
2
|
-
from typing import Optional, Union
|
|
2
|
+
from typing import TYPE_CHECKING, Optional, Union
|
|
3
3
|
|
|
4
4
|
from sqlalchemy import Boolean, Column, DateTime, String, Text
|
|
5
5
|
from sqlalchemy.dialects.postgresql import JSONB
|
|
@@ -19,6 +19,9 @@ from fides.api.task.conditional_dependencies.schemas import (
|
|
|
19
19
|
ConditionLeaf,
|
|
20
20
|
)
|
|
21
21
|
|
|
22
|
+
if TYPE_CHECKING:
|
|
23
|
+
from fides.api.models.digest.digest_execution import DigestTaskExecution
|
|
24
|
+
|
|
22
25
|
|
|
23
26
|
class DigestType(str, Enum):
|
|
24
27
|
"""Types of digests that can be configured."""
|
|
@@ -60,6 +63,12 @@ class DigestConfig(Base):
|
|
|
60
63
|
back_populates="digest_config",
|
|
61
64
|
cascade="all, delete-orphan",
|
|
62
65
|
)
|
|
66
|
+
executions = relationship(
|
|
67
|
+
"DigestTaskExecution",
|
|
68
|
+
back_populates="digest_config",
|
|
69
|
+
cascade="all, delete-orphan",
|
|
70
|
+
order_by="DigestTaskExecution.created_at.desc()",
|
|
71
|
+
)
|
|
63
72
|
|
|
64
73
|
def get_receiver_condition(
|
|
65
74
|
self, db: Session
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
from typing import TYPE_CHECKING, Any, Dict, List, Optional
|
|
2
|
+
|
|
3
|
+
from sqlalchemy import Column, DateTime, ForeignKey, Integer, String, Text
|
|
4
|
+
from sqlalchemy.dialects.postgresql import JSONB
|
|
5
|
+
from sqlalchemy.ext.declarative import declared_attr
|
|
6
|
+
from sqlalchemy.orm import Session, relationship
|
|
7
|
+
from sqlalchemy.orm.attributes import flag_modified
|
|
8
|
+
from sqlalchemy.sql import func
|
|
9
|
+
|
|
10
|
+
from fides.api.db.base_class import Base
|
|
11
|
+
from fides.api.models.worker_task import ExecutionLogStatus, WorkerTask
|
|
12
|
+
|
|
13
|
+
if TYPE_CHECKING:
|
|
14
|
+
from fides.api.models.digest.digest_config import DigestConfig
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class DigestTaskExecution(
|
|
18
|
+
WorkerTask, Base
|
|
19
|
+
): # pylint: disable=too-many-instance-attributes
|
|
20
|
+
"""
|
|
21
|
+
Model for tracking digest task execution state and progress.
|
|
22
|
+
|
|
23
|
+
This model enables graceful resumption of digest tasks after worker
|
|
24
|
+
interruptions by persisting execution state and progress information.
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
@declared_attr
|
|
28
|
+
def __tablename__(cls) -> str:
|
|
29
|
+
return "digest_task_execution"
|
|
30
|
+
|
|
31
|
+
# Foreign key to digest config
|
|
32
|
+
digest_config_id = Column(
|
|
33
|
+
String,
|
|
34
|
+
ForeignKey("digest_config.id", ondelete="CASCADE"),
|
|
35
|
+
nullable=False,
|
|
36
|
+
index=True,
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
# Celery task tracking
|
|
40
|
+
celery_task_id = Column(String, nullable=True, index=True)
|
|
41
|
+
|
|
42
|
+
# Progress tracking
|
|
43
|
+
total_recipients = Column(Integer, nullable=True)
|
|
44
|
+
processed_recipients = Column(Integer, nullable=False, default=0)
|
|
45
|
+
successful_communications = Column(Integer, nullable=False, default=0)
|
|
46
|
+
failed_communications = Column(Integer, nullable=False, default=0)
|
|
47
|
+
|
|
48
|
+
# State persistence for resumption
|
|
49
|
+
execution_state = Column(JSONB, nullable=True, default={})
|
|
50
|
+
processed_user_ids = Column(JSONB, nullable=True, default=[])
|
|
51
|
+
|
|
52
|
+
# Timing information
|
|
53
|
+
started_at = Column(DateTime(timezone=True), nullable=True)
|
|
54
|
+
completed_at = Column(DateTime(timezone=True), nullable=True)
|
|
55
|
+
last_checkpoint_at = Column(DateTime(timezone=True), nullable=True)
|
|
56
|
+
|
|
57
|
+
# Error information
|
|
58
|
+
error_message = Column(Text, nullable=True)
|
|
59
|
+
|
|
60
|
+
# Relationships
|
|
61
|
+
digest_config = relationship("DigestConfig", back_populates="executions")
|
|
62
|
+
|
|
63
|
+
@classmethod
|
|
64
|
+
def allowed_action_types(cls) -> List[str]:
|
|
65
|
+
"""Return allowed action types for digest task execution."""
|
|
66
|
+
return ["digest_processing"]
|
|
67
|
+
|
|
68
|
+
def mark_started(self, db: Session, celery_task_id: str) -> None:
|
|
69
|
+
"""Mark the execution as started."""
|
|
70
|
+
self.status = ExecutionLogStatus.in_processing
|
|
71
|
+
self.celery_task_id = celery_task_id
|
|
72
|
+
self.started_at = func.now()
|
|
73
|
+
self.save(db)
|
|
74
|
+
|
|
75
|
+
def mark_awaiting_processing(self, db: Session) -> None:
|
|
76
|
+
"""Mark the execution as awaiting processing."""
|
|
77
|
+
self.status = ExecutionLogStatus.awaiting_processing
|
|
78
|
+
self.save(db)
|
|
79
|
+
|
|
80
|
+
def update_progress(
|
|
81
|
+
self,
|
|
82
|
+
db: Session,
|
|
83
|
+
processed_count: int,
|
|
84
|
+
successful_count: int,
|
|
85
|
+
failed_count: int,
|
|
86
|
+
processed_user_ids: List[str],
|
|
87
|
+
execution_state: Optional[Dict[str, Any]] = None,
|
|
88
|
+
) -> None:
|
|
89
|
+
"""Update execution progress and create checkpoint."""
|
|
90
|
+
self.processed_recipients = processed_count
|
|
91
|
+
self.successful_communications = successful_count
|
|
92
|
+
self.failed_communications = failed_count
|
|
93
|
+
self.processed_user_ids = processed_user_ids
|
|
94
|
+
self.last_checkpoint_at = func.now()
|
|
95
|
+
|
|
96
|
+
# Mark JSONB fields as modified so SQLAlchemy knows they changed
|
|
97
|
+
flag_modified(self, "processed_user_ids")
|
|
98
|
+
|
|
99
|
+
if execution_state:
|
|
100
|
+
self.execution_state = execution_state
|
|
101
|
+
flag_modified(self, "execution_state")
|
|
102
|
+
|
|
103
|
+
self.save(db)
|
|
104
|
+
|
|
105
|
+
def mark_completed(self, db: Session) -> None:
|
|
106
|
+
"""Mark the execution as completed."""
|
|
107
|
+
self.status = ExecutionLogStatus.complete
|
|
108
|
+
self.completed_at = func.now()
|
|
109
|
+
self.save(db)
|
|
110
|
+
|
|
111
|
+
def mark_failed(self, db: Session, error_message: str) -> None:
|
|
112
|
+
"""Mark the execution as failed."""
|
|
113
|
+
self.status = ExecutionLogStatus.error
|
|
114
|
+
self.error_message = error_message
|
|
115
|
+
self.completed_at = func.now()
|
|
116
|
+
self.save(db)
|
|
117
|
+
|
|
118
|
+
def can_resume(self) -> bool:
|
|
119
|
+
"""Check if this execution can be resumed."""
|
|
120
|
+
return (
|
|
121
|
+
self.status
|
|
122
|
+
in [
|
|
123
|
+
ExecutionLogStatus.in_processing,
|
|
124
|
+
ExecutionLogStatus.awaiting_processing,
|
|
125
|
+
]
|
|
126
|
+
and self.processed_user_ids is not None
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
def get_remaining_work(self) -> Dict[str, Any]:
|
|
130
|
+
"""Get information about remaining work for resumption."""
|
|
131
|
+
# Ensure processed_user_ids is always a list
|
|
132
|
+
raw_processed_user_ids = self.processed_user_ids or []
|
|
133
|
+
processed_user_ids = (
|
|
134
|
+
raw_processed_user_ids if isinstance(raw_processed_user_ids, list) else []
|
|
135
|
+
)
|
|
136
|
+
return {
|
|
137
|
+
"processed_user_ids": processed_user_ids,
|
|
138
|
+
"execution_state": self.execution_state or {},
|
|
139
|
+
"processed_count": self.processed_recipients or 0,
|
|
140
|
+
"successful_count": self.successful_communications,
|
|
141
|
+
"failed_count": self.failed_communications,
|
|
142
|
+
}
|
fides/api/models/event_audit.py
CHANGED
|
@@ -31,6 +31,23 @@ class EventAuditType(str, EnumType):
|
|
|
31
31
|
taxonomy_element_updated = "taxonomy.element.updated"
|
|
32
32
|
taxonomy_element_deleted = "taxonomy.element.deleted"
|
|
33
33
|
|
|
34
|
+
# Connection operations
|
|
35
|
+
connection_created = "connection.created"
|
|
36
|
+
connection_updated = "connection.updated"
|
|
37
|
+
connection_deleted = "connection.deleted"
|
|
38
|
+
|
|
39
|
+
# Connection secrets operations
|
|
40
|
+
connection_secrets_created = "connection.secrets.created"
|
|
41
|
+
connection_secrets_updated = "connection.secrets.updated"
|
|
42
|
+
|
|
43
|
+
# Digest
|
|
44
|
+
digest_execution_started = "digest.execution.started"
|
|
45
|
+
digest_execution_completed = "digest.execution.completed"
|
|
46
|
+
digest_execution_interrupted = "digest.execution.interrupted"
|
|
47
|
+
digest_execution_resumed = "digest.execution.resumed"
|
|
48
|
+
digest_communications_sent = "digest.communications.sent"
|
|
49
|
+
digest_checkpoint_created = "digest.checkpoint.created"
|
|
50
|
+
|
|
34
51
|
|
|
35
52
|
class EventAuditStatus(str, EnumType):
|
|
36
53
|
"""Status enum for event audit logging."""
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
from enum import Enum
|
|
2
|
+
|
|
3
|
+
from sqlalchemy import Column, String, Text
|
|
4
|
+
from sqlalchemy.ext.declarative import declared_attr
|
|
5
|
+
|
|
6
|
+
from fides.api.db.base_class import Base, FidesBase
|
|
7
|
+
from fides.api.db.util import EnumColumn
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class IdentityDefinitionType(str, Enum):
|
|
11
|
+
"""Enum for the type of identity"""
|
|
12
|
+
|
|
13
|
+
EMAIL = "email"
|
|
14
|
+
PHONE_NUMBER = "phone_number"
|
|
15
|
+
UUID = "uuid"
|
|
16
|
+
STRING = "string"
|
|
17
|
+
INTEGER = "integer"
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class IdentityDefinition(Base):
|
|
21
|
+
"""
|
|
22
|
+
Model for identity definitions in Fides. This isn't for specific identity values,
|
|
23
|
+
but for the types of identities that can be used in Fides.
|
|
24
|
+
|
|
25
|
+
For example:
|
|
26
|
+
```json
|
|
27
|
+
{
|
|
28
|
+
"identity_key": "customer_id",
|
|
29
|
+
"name": "Customer ID",
|
|
30
|
+
"description": "The unique identifier for the customer",
|
|
31
|
+
"type": "string"
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
@declared_attr
|
|
37
|
+
def __tablename__(self) -> str:
|
|
38
|
+
return "identity_definition"
|
|
39
|
+
|
|
40
|
+
# Overriding the id definition from Base so we don't treat this as the primary key
|
|
41
|
+
id = Column(
|
|
42
|
+
String(255),
|
|
43
|
+
nullable=False,
|
|
44
|
+
index=False,
|
|
45
|
+
unique=True,
|
|
46
|
+
default=FidesBase.generate_uuid,
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
# Primary key
|
|
50
|
+
identity_key = Column(String(255), primary_key=True)
|
|
51
|
+
|
|
52
|
+
# Schema definition
|
|
53
|
+
name = Column(String(255), nullable=False)
|
|
54
|
+
description = Column(Text, nullable=True)
|
|
55
|
+
type = Column(
|
|
56
|
+
EnumColumn(
|
|
57
|
+
IdentityDefinitionType,
|
|
58
|
+
native_enum=False,
|
|
59
|
+
values_callable=lambda x: [
|
|
60
|
+
i.value for i in x
|
|
61
|
+
], # allows enum _values_ to be stored rather than name
|
|
62
|
+
),
|
|
63
|
+
nullable=False,
|
|
64
|
+
)
|
|
65
|
+
created_by = Column(String(255), nullable=True)
|