ethyca-fides 2.71.1rc2__py2.py3-none-any.whl → 2.72.0__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.1rc2.dist-info → ethyca_fides-2.72.0.dist-info}/METADATA +2 -2
- {ethyca_fides-2.71.1rc2.dist-info → ethyca_fides-2.72.0.dist-info}/RECORD +272 -253
- fides/_version.py +3 -3
- fides/api/api/v1/endpoints/connection_endpoints.py +38 -45
- fides/api/api/v1/endpoints/generic_overrides.py +9 -3
- 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 +4 -0
- 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/models/detection_discovery/monitor_task.py +1 -0
- fides/api/models/digest/digest_execution.py +11 -1
- fides/api/models/event_audit.py +9 -0
- fides/api/models/messaging_template.py +7 -0
- fides/api/models/privacy_request/privacy_request.py +1 -1
- fides/api/schemas/connection_configuration/connection_config.py +1 -30
- fides/api/schemas/messaging/messaging.py +15 -0
- fides/api/service/connectors/query_configs/saas_query_config.py +16 -0
- fides/api/service/connectors/saas/connector_registry_service.py +1 -138
- fides/api/service/connectors/saas_connector.py +9 -1
- fides/api/service/deps.py +8 -0
- fides/api/service/messaging/message_dispatch_service.py +38 -1
- fides/api/service/privacy_request/request_runner_service.py +32 -1
- 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/masking_util.py +31 -0
- fides/api/util/saas_config_updater.py +66 -0
- fides/api/util/saas_util.py +1 -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/dataset/dataset_service.py +39 -0
- fides/service/event_audit_service.py +16 -22
- fides/service/privacy_request/privacy_request_service.py +103 -48
- fides/ui-build/static/admin/404.html +1 -1
- fides/ui-build/static/admin/_next/static/BOxlzhSs4KC4KKoRi_z4Y/_buildManifest.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/1099-d1b22e891705eaf8.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{1115-90baef2a89f361ad.js → 1115-584dac093cef6cc3.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/1437-4604a69888906ec0.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/155-bf4e3ffb18f29226.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{1817-1ad037b7d6d2f6d2.js → 1817-6a6b4aea9d242c5b.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{1975.78e719130cfe3fd6.js → 1975.50599b6774562644.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{2040-fdecc41a18e40bdc.js → 2040-8eead9d29546a50f.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/2397-92f628c53688925b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/2921-9b596ba7f5267afc.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3377-80612c111e047cb6.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{3696-90c8b336bbc46782.js → 3696-e4abb6a922b954a2.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/3700-1f9f6e5ebfa3ab0a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3772-b945c6839e43c753.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{3923-98bea73b618292aa.js → 3923-c1e41661ebf57178.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/401-c2f1e4ea077f1f26.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-8204168bae78092d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/4817-066598cef25d7e88.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5185-bf5655b5d697b714.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5258-63325c03319e87dc.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{5279-12c9cbdc67ad7b14.js → 5279-fcac4a8575f41ecc.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/549-3e3b8d01bc984f96.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5643-7800464c8df7a78e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{5783-d119cb132abd8a91.js → 5783-7deeb7de5d2db4c4.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/6277-0ab2a15c37b83b8d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6315-d0b886d849c2e5e3.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6344-ca66a6e10d128179.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{6853-7004a8c420b1ca02.js → 6853-6d64d627df6f8194.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/6954-8b106311a3be35f4.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7245-53a20677c49b41c8.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{7476-d055aa931da47ac0.js → 7476-08717f00da5f89ab.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/7488-bad160a2bfd89871.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7630-775c578fa8109b0f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7773-24899908bf8ff659.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{796-02086581996a0548.js → 796-6fe49d134f660156.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/8011-c23d609ed3f0efa5.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/8212-67ac884660ddb63a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/8373-43b6df89a2085d6b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9046-28fe0723e3b6584f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9070-6d3aaaf5aa5913ba.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9330-6eb11127296c54c2.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{9676.b86ecbcfe5afd25d.js → 9676.1ea49d4b6e0541f2.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/9682-65d253d54f84f6f2.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{9826-ccedc28e978ca9e1.js → 9826-1f42934a2863992e.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/9899-63998972698a49fb.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9965-4709f43bf62af9a9.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/{404-2eb8aed4939f1142.js → 404-962d132471cd41ba.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{_app-a7c02dd2ff07f9e1.js → _app-4f697016cf2fb1bb.js} +43 -43
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/manual-055d058d16c02957.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/multiple-e2a5c951347195e3.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-0058fe05f2d23d1a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-7a258b7ecd6da4b8.js → add-vendors-7c829e58485fc821.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{configure-fb5017ff5fa54fcc.js → configure-5c58b69dd473cc06.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{[id]-e1e2fd704ac2d71d.js → [id]-58460ac9c1dface5.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience-b6b2d50d894cefa5.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-5fc78b78a51c239c.js → [id]-25ce8366e689363b.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-b79bcb93b5f4c734.js → new-faa457089616711a.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-a7fe3925771bb6c3.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-069f4e3ee96ebf77.js → properties-45a2901a35edc8f7.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-e9ec351281c54822.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/{consent-d2bf72508c3cad55.js → consent-a7a4e419e4086033.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/{[resourceUrn]-2fa4b3a58f75f81d.js → [resourceUrn]-3b59925f6c9a13a9.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]-ffb6e0fe6712342e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects-3c935e93208d2bdd.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/{[resourceUrn]-5b31e3d7727b917a.js → [resourceUrn]-8d7d9152e215c3b6.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources-96be972a983616e3.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-79d06a04698c47c0.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-e50e9c8e11412b2a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/data-explorer-dd93cffd6744837d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-878aa4ab0746df5b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-a2e9c0bfa67c633d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-70ca690b253a118e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/detection/{[resourceUrn]-844a8de0d1b506e2.js → [resourceUrn]-260f5deb68966b70.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{detection-11b07cf2d91b17ef.js → detection-d735dab3d9f3adc5.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/{[resourceUrn]-5525cf287d4ab493.js → [resourceUrn]-c7f055275a2c503f.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{discovery-ed4723e1b67d890e.js → discovery-b1cfd55c7e127865.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datamap-18f255a8bbeecaa4.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-e04a4e16ccf32aef.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]-a40c4febe16a0a6d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]-f500a77eefb057e7.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-5c20080cdb053b1d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset-96355a68e8c28fe8.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/[id]-448729ee9d1d78c3.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/new-42c720ec5c941573.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-a8fc95a46de38b35.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/{index-b74d1e8608ae5b5d.js → index-ca794e85c16cba67.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-2f1dc17eba11fb4e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations-bbec0140433a199b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/notifications/digests/[id]-058125922d1eaeec.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/notifications/digests/new-7a5f76708c79f714.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/notifications/digests-31bed1f86b89d1d8.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/notifications/providers/[key]-d08f3a7cd2d011ec.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/notifications/providers/new-cb2c7fbc26886052.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/notifications/providers-40b9f1f70d27b660.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/notifications/templates/[id]-a6ae72abe59ff830.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/notifications/templates/add-template-a3e4b5b575b31be1.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/notifications/templates-4918f86f7300ac9b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/notifications-9644c0f088a01fea.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/ant-components-39b5586d9c8b64aa.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/AntForm-5163f3213377bd35.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikAntFormItem-0b1547cd9b114c6b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikControlled-da562cba4cffd6bb.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikField-3a587676869d2ef6.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/forms-defc3b917306a6d8.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/{table-migration-29fb7b39f8962650.js → table-migration-11a70bcfa672ce8f.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-787621468b5a7619.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-24a8c2ab57625556.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{configure-8f577df28ebca869.js → configure-1926359bdf5d6c30.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-da634187d8201ab3.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-57a75c7e9659271a.js → [id]-47118b9976ad7212.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-8964c2300206bc89.js → add-property-2e6b0d8b409ba1fd.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{properties-08472b2a6bf1d392.js → properties-32486c25255c9cb1.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-e410d13a2b35cff4.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-aec1bf8a409ec75f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-4c20c08ca7ea8cff.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-8e4a76376927afd5.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domain-records-744f669431b84f71.js → domain-records-e3dcef1ec8cf8b9e.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-2e88cc7a6074a28b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{email-templates-604790638c656fbd.js → email-templates-7469d2f85396c693.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-be2a885150adc133.js → locations-20789aa0c84d544e.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{organization-3c86162afe9759df.js → organization-f84a13eb9688cb5f.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/privacy-requests-b72df6f3d460125f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{regulations-4fe3b90747d885e5.js → regulations-aa02bc818e089c49.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-5be9ce7a745ce908.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/{[id]-4d470bbf199a2f9c.js → [id]-2fc7c0d3988427b3.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems-86f5557384124f79.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-2589729c47976357.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/{[id]-98f737e735eaa0f0.js → [id]-6217433a26599521.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{user-management-562624e5461083ec.js → user-management-b6c4bf35c003965d.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{webpack-2766492c5dbceb0a.js → webpack-8eac1ea5c825c8b4.js} +1 -1
- fides/ui-build/static/admin/_next/static/css/de09ed8a0adf1ca2.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/[monitorId]/[systemId].html +1 -1
- fides/ui-build/static/admin/data-discovery/action-center/[monitorId]/data-explorer.html +1 -0
- fides/ui-build/static/admin/data-discovery/action-center/[monitorId].html +1 -1
- 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-preview.js +1 -1
- fides/ui-build/static/admin/lib/fides-tcf.js +2 -2
- fides/ui-build/static/admin/lib/fides.js +2 -2
- fides/ui-build/static/admin/login/[provider].html +1 -1
- fides/ui-build/static/admin/login.html +1 -1
- 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/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/ui-build/static/admin/_next/static/ayPtYqII_BsdUxHOkbH2k/_buildManifest.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/155-c1ae010c664e2245.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/2921-66f65496c3a09316.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3585-efd5d41f08e180c4.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3855-12ee1dfbbe47fd28.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-c1256ecda1b15db6.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-de5ced790b3380dc.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4608-a9941d0c236ebca1.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4718-6585c97c26647e65.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/502-d3ecae97b67befbd.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/504-88caa30c03374e9b.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5185-51eaa78e3ed6bfb7.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/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/6882-10296485ec326e6b.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6954-4b24e1731c1cc3b3.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7045-f15044a4d4525946.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7079-bbc7b856802a4834.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/9046-2a332fe338535c84.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9226-4a7027057f55ca2a.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-58920afe2b67f952.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-ae4909cad9b67822.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-56fd0f3e465e52b6.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-29c1fb777bd464e0.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-2635ef588bf06145.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datamap-15616bea02397ef4.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-d4031e438c363fff.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]-9463af37079762d0.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-ea198c4a7869f402.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-f682b1def859931e.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]-febf156d2977f3ac.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-648d775d0fce49dc.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-5edfec10a945ca43.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-8cbdfd08e0fa88fb.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-0f1d833282f09684.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-a8cfa7de4948b374.js +0 -1
- fides/ui-build/static/admin/_next/static/css/64fac6fb884435c2.css +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.1rc2.dist-info → ethyca_fides-2.72.0.dist-info}/WHEEL +0 -0
- {ethyca_fides-2.71.1rc2.dist-info → ethyca_fides-2.72.0.dist-info}/entry_points.txt +0 -0
- {ethyca_fides-2.71.1rc2.dist-info → ethyca_fides-2.72.0.dist-info}/licenses/LICENSE +0 -0
- {ethyca_fides-2.71.1rc2.dist-info → ethyca_fides-2.72.0.dist-info}/top_level.txt +0 -0
- /fides/ui-build/static/admin/_next/static/{ayPtYqII_BsdUxHOkbH2k → BOxlzhSs4KC4KKoRi_z4Y}/_ssgManifest.js +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields/{[id]-bd1042a0e9be6aff.js → [id]-a270325109398f48.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields/{new-469ad83c8cfa1290.js → new-2e0c8e249f286427.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/user-management/{new-629c88e90699369b.js → new-e399005c3bb4db1b.js} +0 -0
|
@@ -1,24 +1,18 @@
|
|
|
1
1
|
# pylint: disable=protected-access
|
|
2
2
|
import os
|
|
3
3
|
from abc import ABC, abstractmethod
|
|
4
|
-
from typing import Dict,
|
|
4
|
+
from typing import Dict, List, Optional, Type
|
|
5
5
|
from zipfile import ZipFile
|
|
6
6
|
|
|
7
7
|
from fideslang.models import Dataset
|
|
8
8
|
from loguru import logger
|
|
9
|
-
from packaging.version import Version
|
|
10
9
|
from packaging.version import parse as parse_version
|
|
11
10
|
from sqlalchemy.orm import Session
|
|
12
11
|
|
|
13
12
|
from fides.api.api.deps import get_api_session
|
|
14
13
|
from fides.api.common_exceptions import ValidationError
|
|
15
14
|
from fides.api.cryptography.cryptographic_util import str_to_b64_str
|
|
16
|
-
from fides.api.models.connectionconfig import ConnectionConfig
|
|
17
15
|
from fides.api.models.custom_connector_template import CustomConnectorTemplate
|
|
18
|
-
from fides.api.models.datasetconfig import DatasetConfig
|
|
19
|
-
from fides.api.schemas.connection_configuration.saas_config_template_values import (
|
|
20
|
-
SaasConnectionTemplateValues,
|
|
21
|
-
)
|
|
22
16
|
from fides.api.schemas.saas.connector_template import ConnectorTemplate
|
|
23
17
|
from fides.api.schemas.saas.saas_config import SaaSConfig
|
|
24
18
|
from fides.api.service.authentication.authentication_strategy_oauth2_authorization_code import (
|
|
@@ -31,8 +25,6 @@ from fides.api.util.saas_util import (
|
|
|
31
25
|
load_config_from_string,
|
|
32
26
|
load_dataset_from_string,
|
|
33
27
|
load_yaml_as_string,
|
|
34
|
-
replace_config_placeholders,
|
|
35
|
-
replace_dataset_placeholders,
|
|
36
28
|
replace_version,
|
|
37
29
|
)
|
|
38
30
|
from fides.api.util.unsafe_file_util import verify_svg, verify_zip
|
|
@@ -317,132 +309,3 @@ class ConnectorRegistry:
|
|
|
317
309
|
Returns an object containing the various SaaS connector artifacts
|
|
318
310
|
"""
|
|
319
311
|
return cls._get_combined_templates().get(connector_type)
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
def create_connection_config_from_template_no_save(
|
|
323
|
-
db: Session,
|
|
324
|
-
template: ConnectorTemplate,
|
|
325
|
-
template_values: SaasConnectionTemplateValues,
|
|
326
|
-
system_id: Optional[str] = None,
|
|
327
|
-
) -> ConnectionConfig:
|
|
328
|
-
"""Creates a SaaS connection config from a template without saving it."""
|
|
329
|
-
# Load SaaS config from template and replace every instance of "<instance_fides_key>" with the fides_key
|
|
330
|
-
# the user has chosen
|
|
331
|
-
config_from_template: Dict = replace_config_placeholders(
|
|
332
|
-
template.config, "<instance_fides_key>", template_values.instance_key
|
|
333
|
-
)
|
|
334
|
-
|
|
335
|
-
data = template_values.generate_config_data_from_template(
|
|
336
|
-
config_from_template=config_from_template
|
|
337
|
-
)
|
|
338
|
-
|
|
339
|
-
if system_id:
|
|
340
|
-
data["system_id"] = system_id
|
|
341
|
-
|
|
342
|
-
# Create SaaS ConnectionConfig
|
|
343
|
-
connection_config = ConnectionConfig.create_without_saving(db, data=data)
|
|
344
|
-
|
|
345
|
-
return connection_config
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
def upsert_dataset_config_from_template(
|
|
349
|
-
db: Session,
|
|
350
|
-
connection_config: ConnectionConfig,
|
|
351
|
-
template: ConnectorTemplate,
|
|
352
|
-
template_values: SaasConnectionTemplateValues,
|
|
353
|
-
) -> DatasetConfig:
|
|
354
|
-
"""
|
|
355
|
-
Creates a `DatasetConfig` from a template
|
|
356
|
-
and associates it with a ConnectionConfig.
|
|
357
|
-
If the `DatasetConfig` already exists in the db,
|
|
358
|
-
then the existing record is updated.
|
|
359
|
-
"""
|
|
360
|
-
# Load the dataset config from template and replace every instance of "<instance_fides_key>" with the fides_key
|
|
361
|
-
# the user has chosen
|
|
362
|
-
dataset_from_template: Dict = replace_dataset_placeholders(
|
|
363
|
-
template.dataset, "<instance_fides_key>", template_values.instance_key
|
|
364
|
-
)
|
|
365
|
-
data = {
|
|
366
|
-
"connection_config_id": connection_config.id,
|
|
367
|
-
"fides_key": template_values.instance_key,
|
|
368
|
-
"dataset": dataset_from_template, # Currently used for upserting a CTL Dataset
|
|
369
|
-
}
|
|
370
|
-
dataset_config = DatasetConfig.create_or_update(db, data=data)
|
|
371
|
-
return dataset_config
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
def update_saas_configs(db: Session) -> None:
|
|
375
|
-
"""
|
|
376
|
-
Updates SaaS config instances currently in the DB if to the
|
|
377
|
-
corresponding template in the registry are found.
|
|
378
|
-
|
|
379
|
-
Effectively an "update script" for SaaS config instances,
|
|
380
|
-
to be run on server bootstrap.
|
|
381
|
-
"""
|
|
382
|
-
for connector_type in ConnectorRegistry.connector_types():
|
|
383
|
-
logger.debug(
|
|
384
|
-
"Determining if any updates are needed for connectors of type {} based on templates...",
|
|
385
|
-
connector_type,
|
|
386
|
-
)
|
|
387
|
-
template: ConnectorTemplate = ConnectorRegistry.get_connector_template( # type: ignore
|
|
388
|
-
connector_type
|
|
389
|
-
)
|
|
390
|
-
saas_config = SaaSConfig(**load_config_from_string(template.config))
|
|
391
|
-
template_version: Version = parse_version(saas_config.version)
|
|
392
|
-
|
|
393
|
-
connection_configs: Iterable[ConnectionConfig] = ConnectionConfig.filter(
|
|
394
|
-
db=db,
|
|
395
|
-
conditions=(ConnectionConfig.saas_config["type"].astext == connector_type),
|
|
396
|
-
).all()
|
|
397
|
-
for connection_config in connection_configs:
|
|
398
|
-
saas_config_instance = SaaSConfig.model_validate(
|
|
399
|
-
connection_config.saas_config
|
|
400
|
-
)
|
|
401
|
-
if parse_version(saas_config_instance.version) < template_version:
|
|
402
|
-
logger.info(
|
|
403
|
-
"Updating SaaS config instance '{}' of type '{}' as its version, {}, was found to be lower than the template version {}",
|
|
404
|
-
saas_config_instance.fides_key,
|
|
405
|
-
connector_type,
|
|
406
|
-
saas_config_instance.version,
|
|
407
|
-
template_version,
|
|
408
|
-
)
|
|
409
|
-
try:
|
|
410
|
-
update_saas_instance(
|
|
411
|
-
db,
|
|
412
|
-
connection_config,
|
|
413
|
-
template,
|
|
414
|
-
saas_config_instance,
|
|
415
|
-
)
|
|
416
|
-
except Exception:
|
|
417
|
-
logger.exception(
|
|
418
|
-
"Encountered error attempting to update SaaS config instance {}",
|
|
419
|
-
saas_config_instance.fides_key,
|
|
420
|
-
)
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
def update_saas_instance(
|
|
424
|
-
db: Session,
|
|
425
|
-
connection_config: ConnectionConfig,
|
|
426
|
-
template: ConnectorTemplate,
|
|
427
|
-
saas_config_instance: SaaSConfig,
|
|
428
|
-
) -> None:
|
|
429
|
-
"""
|
|
430
|
-
Replace in the DB the existing SaaS instance configuration data
|
|
431
|
-
(SaaSConfig, DatasetConfig) associated with the given ConnectionConfig
|
|
432
|
-
with new instance configuration data based on the given ConnectorTemplate
|
|
433
|
-
"""
|
|
434
|
-
template_vals = SaasConnectionTemplateValues(
|
|
435
|
-
name=connection_config.name,
|
|
436
|
-
key=connection_config.key,
|
|
437
|
-
description=connection_config.description,
|
|
438
|
-
secrets=connection_config.secrets,
|
|
439
|
-
instance_key=saas_config_instance.fides_key,
|
|
440
|
-
)
|
|
441
|
-
|
|
442
|
-
config_from_template: Dict = replace_config_placeholders(
|
|
443
|
-
template.config, "<instance_fides_key>", template_vals.instance_key
|
|
444
|
-
)
|
|
445
|
-
|
|
446
|
-
connection_config.update_saas_config(db, SaaSConfig(**config_from_template))
|
|
447
|
-
|
|
448
|
-
upsert_dataset_config_from_template(db, connection_config, template, template_vals)
|
|
@@ -67,6 +67,7 @@ from fides.api.util.logger_context_utils import (
|
|
|
67
67
|
from fides.api.util.saas_util import (
|
|
68
68
|
ALL_OBJECT_FIELDS,
|
|
69
69
|
CUSTOM_PRIVACY_REQUEST_FIELDS,
|
|
70
|
+
PRIVACY_REQUEST_OBJECT,
|
|
70
71
|
assign_placeholders,
|
|
71
72
|
map_param_values,
|
|
72
73
|
)
|
|
@@ -276,6 +277,8 @@ class SaaSConnector(BaseConnector[AuthenticatedClient], Contextualizable):
|
|
|
276
277
|
if custom_privacy_request_fields:
|
|
277
278
|
input_data[CUSTOM_PRIVACY_REQUEST_FIELDS] = [custom_privacy_request_fields]
|
|
278
279
|
|
|
280
|
+
input_data[PRIVACY_REQUEST_OBJECT] = [privacy_request.to_safe_dict()]
|
|
281
|
+
|
|
279
282
|
rows: List[Row] = []
|
|
280
283
|
for read_request in read_requests:
|
|
281
284
|
self.set_saas_request_state(read_request)
|
|
@@ -300,7 +303,12 @@ class SaaSConnector(BaseConnector[AuthenticatedClient], Contextualizable):
|
|
|
300
303
|
# if a path is provided, it means we want to generate HTTP requests from the config
|
|
301
304
|
if read_request.path:
|
|
302
305
|
prepared_requests: List[Tuple[SaaSRequestParams, Dict[str, Any]]] = (
|
|
303
|
-
query_config.generate_requests(
|
|
306
|
+
query_config.generate_requests(
|
|
307
|
+
input_data,
|
|
308
|
+
policy,
|
|
309
|
+
read_request,
|
|
310
|
+
privacy_request=privacy_request,
|
|
311
|
+
)
|
|
304
312
|
)
|
|
305
313
|
|
|
306
314
|
# Iterates through initial list of prepared requests and through subsequent
|
fides/api/service/deps.py
CHANGED
|
@@ -6,6 +6,7 @@ from fides.api.api.deps import get_config, get_config_proxy, get_db
|
|
|
6
6
|
from fides.api.db.ctl_session import get_async_db
|
|
7
7
|
from fides.config import FidesConfig
|
|
8
8
|
from fides.config.config_proxy import ConfigProxy
|
|
9
|
+
from fides.service.connection.connection_service import ConnectionService
|
|
9
10
|
from fides.service.dataset.dataset_config_service import DatasetConfigService
|
|
10
11
|
from fides.service.dataset.dataset_service import DatasetService
|
|
11
12
|
from fides.service.event_audit_service import EventAuditService
|
|
@@ -59,5 +60,12 @@ def get_taxonomy_service(
|
|
|
59
60
|
return TaxonomyService(db, event_audit_service)
|
|
60
61
|
|
|
61
62
|
|
|
63
|
+
def get_connection_service(
|
|
64
|
+
db: Session = Depends(get_db),
|
|
65
|
+
event_audit_service: EventAuditService = Depends(get_event_audit_service),
|
|
66
|
+
) -> ConnectionService:
|
|
67
|
+
return ConnectionService(db, event_audit_service)
|
|
68
|
+
|
|
69
|
+
|
|
62
70
|
def get_system_service(db: AsyncSession = Depends(get_async_db)) -> SystemService:
|
|
63
71
|
return SystemService(db)
|
|
@@ -28,6 +28,7 @@ from fides.api.schemas.messaging.messaging import (
|
|
|
28
28
|
ErrorNotificationBodyParams,
|
|
29
29
|
ExternalUserWelcomeBodyParams,
|
|
30
30
|
FidesopsMessage,
|
|
31
|
+
ManualTaskDigestBodyParams,
|
|
31
32
|
MessagingActionType,
|
|
32
33
|
MessagingMethod,
|
|
33
34
|
MessagingServiceDetails,
|
|
@@ -177,6 +178,7 @@ def dispatch_message(
|
|
|
177
178
|
UserInviteBodyParams,
|
|
178
179
|
ErrorNotificationBodyParams,
|
|
179
180
|
ExternalUserWelcomeBodyParams,
|
|
181
|
+
ManualTaskDigestBodyParams,
|
|
180
182
|
]
|
|
181
183
|
] = None,
|
|
182
184
|
subject_override: Optional[str] = None,
|
|
@@ -352,7 +354,7 @@ def _render(template_str: str, variables: Optional[Dict] = None) -> str:
|
|
|
352
354
|
return template_str
|
|
353
355
|
|
|
354
356
|
|
|
355
|
-
def _build_email( # pylint: disable=too-many-return-statements, too-many-branches
|
|
357
|
+
def _build_email( # pylint: disable=too-many-return-statements, too-many-branches, too-many-statements
|
|
356
358
|
config_proxy: ConfigProxy,
|
|
357
359
|
action_type: MessagingActionType,
|
|
358
360
|
body_params: Any,
|
|
@@ -494,6 +496,41 @@ def _build_email( # pylint: disable=too-many-return-statements, too-many-branch
|
|
|
494
496
|
template_variables=variables,
|
|
495
497
|
)
|
|
496
498
|
|
|
499
|
+
if action_type == MessagingActionType.MANUAL_TASK_DIGEST:
|
|
500
|
+
variables = {
|
|
501
|
+
"vendor_contact_name": body_params.vendor_contact_name,
|
|
502
|
+
"organization_name": body_params.organization_name,
|
|
503
|
+
"portal_url": body_params.portal_url,
|
|
504
|
+
"imminent_task_count": body_params.imminent_task_count,
|
|
505
|
+
"upcoming_task_count": body_params.upcoming_task_count,
|
|
506
|
+
"total_task_count": body_params.total_task_count,
|
|
507
|
+
"company_logo_url": body_params.company_logo_url,
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
# Start with default subject
|
|
511
|
+
subject = f"Weekly DSR Summary from {body_params.organization_name}"
|
|
512
|
+
|
|
513
|
+
# If messaging template exists, extract customizable content
|
|
514
|
+
if messaging_template:
|
|
515
|
+
# Use custom subject if provided
|
|
516
|
+
if "subject" in messaging_template.content:
|
|
517
|
+
subject = _render(messaging_template.content["subject"], variables)
|
|
518
|
+
|
|
519
|
+
# Use custom body content to replace the intro text in HTML template
|
|
520
|
+
custom_body = messaging_template.content.get("body", "")
|
|
521
|
+
if custom_body.strip():
|
|
522
|
+
# Replace the default intro text with the custom body content
|
|
523
|
+
rendered_custom_body = _render(custom_body, variables)
|
|
524
|
+
variables["intro_text"] = rendered_custom_body
|
|
525
|
+
|
|
526
|
+
# Always use the HTML template
|
|
527
|
+
base_template = get_email_template(action_type)
|
|
528
|
+
return EmailForActionType(
|
|
529
|
+
subject=subject,
|
|
530
|
+
body=base_template.render(variables),
|
|
531
|
+
template_variables=variables,
|
|
532
|
+
)
|
|
533
|
+
|
|
497
534
|
logger.error("Message action type {} is not implemented", action_type)
|
|
498
535
|
raise MessageDispatchException(
|
|
499
536
|
f"Message action type {action_type} is not implemented"
|
|
@@ -4,7 +4,11 @@ from copy import deepcopy
|
|
|
4
4
|
from datetime import datetime, timedelta
|
|
5
5
|
from typing import Any, Optional
|
|
6
6
|
|
|
7
|
+
import sqlalchemy.exc
|
|
7
8
|
from loguru import logger
|
|
9
|
+
|
|
10
|
+
# pylint: disable=no-name-in-module
|
|
11
|
+
from psycopg2.errors import InternalError_ # type: ignore[import-untyped]
|
|
8
12
|
from pydantic import ValidationError as PydanticValidationError
|
|
9
13
|
from sqlalchemy.orm import Query, Session
|
|
10
14
|
|
|
@@ -270,6 +274,11 @@ def upload_access_results(
|
|
|
270
274
|
return download_urls
|
|
271
275
|
|
|
272
276
|
|
|
277
|
+
@log_context(
|
|
278
|
+
capture_args={
|
|
279
|
+
"privacy_request_id": LoggerContextKeys.privacy_request_id,
|
|
280
|
+
}
|
|
281
|
+
)
|
|
273
282
|
def save_access_results(
|
|
274
283
|
session: Session,
|
|
275
284
|
privacy_request: PrivacyRequest,
|
|
@@ -278,12 +287,34 @@ def save_access_results(
|
|
|
278
287
|
) -> None:
|
|
279
288
|
"""Save the results we uploaded to the user for later retrieval"""
|
|
280
289
|
# Save the results we uploaded to the user for later retrieval
|
|
281
|
-
privacy_request.save_filtered_access_results(session, rule_filtered_results)
|
|
282
290
|
# Saving access request URL's on the privacy request in case DSR 3.0
|
|
283
291
|
# exits processing before the email is sent
|
|
284
292
|
privacy_request.access_result_urls = {"access_result_urls": download_urls}
|
|
285
293
|
privacy_request.save(session)
|
|
286
294
|
|
|
295
|
+
# Try to save the backup results, but don't fail the DSR if this fails
|
|
296
|
+
try:
|
|
297
|
+
privacy_request.save_filtered_access_results(session, rule_filtered_results)
|
|
298
|
+
logger.info("Successfully saved backup filtered access results to database")
|
|
299
|
+
except (
|
|
300
|
+
InternalError_, # invalid memory alloc request size 1073741824
|
|
301
|
+
sqlalchemy.exc.StatementError, # SQL statement errors
|
|
302
|
+
# Python memory errors
|
|
303
|
+
MemoryError, # system out of memory
|
|
304
|
+
OverflowError, # numeric overflow during serialization
|
|
305
|
+
) as exc:
|
|
306
|
+
logger.warning(
|
|
307
|
+
"Failed to save backup of DSR results to database after successful S3 upload. "
|
|
308
|
+
"DSR will continue processing. Error: {}",
|
|
309
|
+
str(exc),
|
|
310
|
+
)
|
|
311
|
+
except Exception as exc:
|
|
312
|
+
logger.error(
|
|
313
|
+
"Failed to save backup of DSR results to database after successful S3 upload. "
|
|
314
|
+
"DSR will continue processing. Unexpected Error: {}",
|
|
315
|
+
str(exc),
|
|
316
|
+
)
|
|
317
|
+
|
|
287
318
|
|
|
288
319
|
@log_context(
|
|
289
320
|
capture_args={
|
fides/api/tasks/__init__.py
CHANGED
|
@@ -86,7 +86,6 @@ class DatabaseTask(Task): # pylint: disable=W0223
|
|
|
86
86
|
# to prevent session overlap when requests are executing concurrently
|
|
87
87
|
# when in task_always_eager mode (i.e. without proper workers)
|
|
88
88
|
new_session = self._sessionmaker()
|
|
89
|
-
logger.debug(f"DatabaseTaskSession ID: {id(new_session)}. Self ID: {id(self)}")
|
|
90
89
|
return new_session
|
|
91
90
|
|
|
92
91
|
|