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.

Files changed (359) hide show
  1. {ethyca_fides-2.71.1rc2.dist-info → ethyca_fides-2.72.0.dist-info}/METADATA +2 -2
  2. {ethyca_fides-2.71.1rc2.dist-info → ethyca_fides-2.72.0.dist-info}/RECORD +272 -253
  3. fides/_version.py +3 -3
  4. fides/api/api/v1/endpoints/connection_endpoints.py +38 -45
  5. fides/api/api/v1/endpoints/generic_overrides.py +9 -3
  6. fides/api/api/v1/endpoints/saas_config_endpoints.py +60 -48
  7. fides/api/api/v1/endpoints/system.py +11 -43
  8. fides/api/api/v1/endpoints/user_endpoints.py +8 -1
  9. fides/api/app_setup.py +1 -3
  10. fides/api/common_exceptions.py +4 -0
  11. fides/api/email_templates/get_email_template.py +3 -0
  12. fides/api/email_templates/template_names.py +1 -0
  13. fides/api/email_templates/templates/manual_task_digest.html +316 -0
  14. fides/api/models/detection_discovery/monitor_task.py +1 -0
  15. fides/api/models/digest/digest_execution.py +11 -1
  16. fides/api/models/event_audit.py +9 -0
  17. fides/api/models/messaging_template.py +7 -0
  18. fides/api/models/privacy_request/privacy_request.py +1 -1
  19. fides/api/schemas/connection_configuration/connection_config.py +1 -30
  20. fides/api/schemas/messaging/messaging.py +15 -0
  21. fides/api/service/connectors/query_configs/saas_query_config.py +16 -0
  22. fides/api/service/connectors/saas/connector_registry_service.py +1 -138
  23. fides/api/service/connectors/saas_connector.py +9 -1
  24. fides/api/service/deps.py +8 -0
  25. fides/api/service/messaging/message_dispatch_service.py +38 -1
  26. fides/api/service/privacy_request/request_runner_service.py +32 -1
  27. fides/api/tasks/__init__.py +0 -1
  28. fides/api/util/connection_util.py +99 -215
  29. fides/api/util/event_audit_util.py +230 -0
  30. fides/api/util/masking_util.py +31 -0
  31. fides/api/util/saas_config_updater.py +66 -0
  32. fides/api/util/saas_util.py +1 -0
  33. fides/data/language/languages.yml +2 -0
  34. fides/service/connection/__init__.py +0 -0
  35. fides/service/connection/connection_service.py +651 -0
  36. fides/service/dataset/dataset_service.py +39 -0
  37. fides/service/event_audit_service.py +16 -22
  38. fides/service/privacy_request/privacy_request_service.py +103 -48
  39. fides/ui-build/static/admin/404.html +1 -1
  40. fides/ui-build/static/admin/_next/static/BOxlzhSs4KC4KKoRi_z4Y/_buildManifest.js +1 -0
  41. fides/ui-build/static/admin/_next/static/chunks/1099-d1b22e891705eaf8.js +1 -0
  42. fides/ui-build/static/admin/_next/static/chunks/{1115-90baef2a89f361ad.js → 1115-584dac093cef6cc3.js} +1 -1
  43. fides/ui-build/static/admin/_next/static/chunks/1437-4604a69888906ec0.js +1 -0
  44. fides/ui-build/static/admin/_next/static/chunks/155-bf4e3ffb18f29226.js +1 -0
  45. fides/ui-build/static/admin/_next/static/chunks/{1817-1ad037b7d6d2f6d2.js → 1817-6a6b4aea9d242c5b.js} +1 -1
  46. fides/ui-build/static/admin/_next/static/chunks/{1975.78e719130cfe3fd6.js → 1975.50599b6774562644.js} +1 -1
  47. fides/ui-build/static/admin/_next/static/chunks/{2040-fdecc41a18e40bdc.js → 2040-8eead9d29546a50f.js} +1 -1
  48. fides/ui-build/static/admin/_next/static/chunks/2397-92f628c53688925b.js +1 -0
  49. fides/ui-build/static/admin/_next/static/chunks/2921-9b596ba7f5267afc.js +1 -0
  50. fides/ui-build/static/admin/_next/static/chunks/3377-80612c111e047cb6.js +1 -0
  51. fides/ui-build/static/admin/_next/static/chunks/{3696-90c8b336bbc46782.js → 3696-e4abb6a922b954a2.js} +1 -1
  52. fides/ui-build/static/admin/_next/static/chunks/3700-1f9f6e5ebfa3ab0a.js +1 -0
  53. fides/ui-build/static/admin/_next/static/chunks/3772-b945c6839e43c753.js +1 -0
  54. fides/ui-build/static/admin/_next/static/chunks/{3923-98bea73b618292aa.js → 3923-c1e41661ebf57178.js} +1 -1
  55. fides/ui-build/static/admin/_next/static/chunks/401-c2f1e4ea077f1f26.js +1 -0
  56. fides/ui-build/static/admin/_next/static/chunks/431-e01ee730c8ad9ece.js +1 -0
  57. fides/ui-build/static/admin/_next/static/chunks/4496-8204168bae78092d.js +1 -0
  58. fides/ui-build/static/admin/_next/static/chunks/4817-066598cef25d7e88.js +1 -0
  59. fides/ui-build/static/admin/_next/static/chunks/5185-bf5655b5d697b714.js +1 -0
  60. fides/ui-build/static/admin/_next/static/chunks/5258-63325c03319e87dc.js +1 -0
  61. fides/ui-build/static/admin/_next/static/chunks/{5279-12c9cbdc67ad7b14.js → 5279-fcac4a8575f41ecc.js} +1 -1
  62. fides/ui-build/static/admin/_next/static/chunks/549-3e3b8d01bc984f96.js +1 -0
  63. fides/ui-build/static/admin/_next/static/chunks/5643-7800464c8df7a78e.js +1 -0
  64. fides/ui-build/static/admin/_next/static/chunks/{5783-d119cb132abd8a91.js → 5783-7deeb7de5d2db4c4.js} +1 -1
  65. fides/ui-build/static/admin/_next/static/chunks/6277-0ab2a15c37b83b8d.js +1 -0
  66. fides/ui-build/static/admin/_next/static/chunks/6315-d0b886d849c2e5e3.js +1 -0
  67. fides/ui-build/static/admin/_next/static/chunks/6344-ca66a6e10d128179.js +1 -0
  68. fides/ui-build/static/admin/_next/static/chunks/{6853-7004a8c420b1ca02.js → 6853-6d64d627df6f8194.js} +1 -1
  69. fides/ui-build/static/admin/_next/static/chunks/6954-8b106311a3be35f4.js +1 -0
  70. fides/ui-build/static/admin/_next/static/chunks/7245-53a20677c49b41c8.js +1 -0
  71. fides/ui-build/static/admin/_next/static/chunks/{7476-d055aa931da47ac0.js → 7476-08717f00da5f89ab.js} +1 -1
  72. fides/ui-build/static/admin/_next/static/chunks/7488-bad160a2bfd89871.js +1 -0
  73. fides/ui-build/static/admin/_next/static/chunks/7630-775c578fa8109b0f.js +1 -0
  74. fides/ui-build/static/admin/_next/static/chunks/7773-24899908bf8ff659.js +1 -0
  75. fides/ui-build/static/admin/_next/static/chunks/{796-02086581996a0548.js → 796-6fe49d134f660156.js} +1 -1
  76. fides/ui-build/static/admin/_next/static/chunks/8011-c23d609ed3f0efa5.js +1 -0
  77. fides/ui-build/static/admin/_next/static/chunks/8212-67ac884660ddb63a.js +1 -0
  78. fides/ui-build/static/admin/_next/static/chunks/8373-43b6df89a2085d6b.js +1 -0
  79. fides/ui-build/static/admin/_next/static/chunks/9046-28fe0723e3b6584f.js +1 -0
  80. fides/ui-build/static/admin/_next/static/chunks/9070-6d3aaaf5aa5913ba.js +1 -0
  81. fides/ui-build/static/admin/_next/static/chunks/9330-6eb11127296c54c2.js +1 -0
  82. fides/ui-build/static/admin/_next/static/chunks/{9676.b86ecbcfe5afd25d.js → 9676.1ea49d4b6e0541f2.js} +1 -1
  83. fides/ui-build/static/admin/_next/static/chunks/9682-65d253d54f84f6f2.js +1 -0
  84. fides/ui-build/static/admin/_next/static/chunks/{9826-ccedc28e978ca9e1.js → 9826-1f42934a2863992e.js} +1 -1
  85. fides/ui-build/static/admin/_next/static/chunks/9899-63998972698a49fb.js +1 -0
  86. fides/ui-build/static/admin/_next/static/chunks/9965-4709f43bf62af9a9.js +1 -0
  87. fides/ui-build/static/admin/_next/static/chunks/pages/{404-2eb8aed4939f1142.js → 404-962d132471cd41ba.js} +1 -1
  88. fides/ui-build/static/admin/_next/static/chunks/pages/{_app-a7c02dd2ff07f9e1.js → _app-4f697016cf2fb1bb.js} +43 -43
  89. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/manual-055d058d16c02957.js +1 -0
  90. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/multiple-e2a5c951347195e3.js +1 -0
  91. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-0058fe05f2d23d1a.js +1 -0
  92. fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-7a258b7ecd6da4b8.js → add-vendors-7c829e58485fc821.js} +1 -1
  93. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{configure-fb5017ff5fa54fcc.js → configure-5c58b69dd473cc06.js} +1 -1
  94. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{[id]-e1e2fd704ac2d71d.js → [id]-58460ac9c1dface5.js} +1 -1
  95. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience-b6b2d50d894cefa5.js +1 -0
  96. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-5fc78b78a51c239c.js → [id]-25ce8366e689363b.js} +1 -1
  97. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-b79bcb93b5f4c734.js → new-faa457089616711a.js} +1 -1
  98. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-a7fe3925771bb6c3.js +1 -0
  99. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-069f4e3ee96ebf77.js → properties-45a2901a35edc8f7.js} +1 -1
  100. fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-e9ec351281c54822.js +1 -0
  101. fides/ui-build/static/admin/_next/static/chunks/pages/{consent-d2bf72508c3cad55.js → consent-a7a4e419e4086033.js} +1 -1
  102. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/{[resourceUrn]-2fa4b3a58f75f81d.js → [resourceUrn]-3b59925f6c9a13a9.js} +1 -1
  103. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]-ffb6e0fe6712342e.js +1 -0
  104. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects-3c935e93208d2bdd.js +1 -0
  105. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/{[resourceUrn]-5b31e3d7727b917a.js → [resourceUrn]-8d7d9152e215c3b6.js} +1 -1
  106. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources-96be972a983616e3.js +1 -0
  107. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-79d06a04698c47c0.js +1 -0
  108. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-e50e9c8e11412b2a.js +1 -0
  109. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/data-explorer-dd93cffd6744837d.js +1 -0
  110. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-878aa4ab0746df5b.js +1 -0
  111. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-a2e9c0bfa67c633d.js +1 -0
  112. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-70ca690b253a118e.js +1 -0
  113. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/detection/{[resourceUrn]-844a8de0d1b506e2.js → [resourceUrn]-260f5deb68966b70.js} +1 -1
  114. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{detection-11b07cf2d91b17ef.js → detection-d735dab3d9f3adc5.js} +1 -1
  115. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/{[resourceUrn]-5525cf287d4ab493.js → [resourceUrn]-c7f055275a2c503f.js} +1 -1
  116. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{discovery-ed4723e1b67d890e.js → discovery-b1cfd55c7e127865.js} +1 -1
  117. fides/ui-build/static/admin/_next/static/chunks/pages/datamap-18f255a8bbeecaa4.js +1 -0
  118. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-e04a4e16ccf32aef.js +1 -0
  119. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]-a40c4febe16a0a6d.js +1 -0
  120. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]-f500a77eefb057e7.js +1 -0
  121. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-5c20080cdb053b1d.js +1 -0
  122. fides/ui-build/static/admin/_next/static/chunks/pages/dataset-96355a68e8c28fe8.js +1 -0
  123. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/[id]-448729ee9d1d78c3.js +1 -0
  124. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/new-42c720ec5c941573.js +1 -0
  125. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-a8fc95a46de38b35.js +1 -0
  126. fides/ui-build/static/admin/_next/static/chunks/pages/{index-b74d1e8608ae5b5d.js → index-ca794e85c16cba67.js} +1 -1
  127. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-2f1dc17eba11fb4e.js +1 -0
  128. fides/ui-build/static/admin/_next/static/chunks/pages/integrations-bbec0140433a199b.js +1 -0
  129. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/digests/[id]-058125922d1eaeec.js +1 -0
  130. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/digests/new-7a5f76708c79f714.js +1 -0
  131. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/digests-31bed1f86b89d1d8.js +1 -0
  132. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/providers/[key]-d08f3a7cd2d011ec.js +1 -0
  133. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/providers/new-cb2c7fbc26886052.js +1 -0
  134. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/providers-40b9f1f70d27b660.js +1 -0
  135. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/templates/[id]-a6ae72abe59ff830.js +1 -0
  136. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/templates/add-template-a3e4b5b575b31be1.js +1 -0
  137. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/templates-4918f86f7300ac9b.js +1 -0
  138. fides/ui-build/static/admin/_next/static/chunks/pages/notifications-9644c0f088a01fea.js +1 -0
  139. fides/ui-build/static/admin/_next/static/chunks/pages/poc/ant-components-39b5586d9c8b64aa.js +1 -0
  140. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/AntForm-5163f3213377bd35.js +1 -0
  141. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikAntFormItem-0b1547cd9b114c6b.js +1 -0
  142. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikControlled-da562cba4cffd6bb.js +1 -0
  143. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikField-3a587676869d2ef6.js +1 -0
  144. fides/ui-build/static/admin/_next/static/chunks/pages/poc/forms-defc3b917306a6d8.js +1 -0
  145. fides/ui-build/static/admin/_next/static/chunks/pages/poc/{table-migration-29fb7b39f8962650.js → table-migration-11a70bcfa672ce8f.js} +1 -1
  146. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-787621468b5a7619.js +1 -0
  147. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-24a8c2ab57625556.js +1 -0
  148. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{configure-8f577df28ebca869.js → configure-1926359bdf5d6c30.js} +1 -1
  149. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-da634187d8201ab3.js +1 -0
  150. fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-57a75c7e9659271a.js → [id]-47118b9976ad7212.js} +1 -1
  151. fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-8964c2300206bc89.js → add-property-2e6b0d8b409ba1fd.js} +1 -1
  152. fides/ui-build/static/admin/_next/static/chunks/pages/{properties-08472b2a6bf1d392.js → properties-32486c25255c9cb1.js} +1 -1
  153. fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-e410d13a2b35cff4.js +1 -0
  154. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-aec1bf8a409ec75f.js +1 -0
  155. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-4c20c08ca7ea8cff.js +1 -0
  156. fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-8e4a76376927afd5.js +1 -0
  157. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domain-records-744f669431b84f71.js → domain-records-e3dcef1ec8cf8b9e.js} +1 -1
  158. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-2e88cc7a6074a28b.js +1 -0
  159. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{email-templates-604790638c656fbd.js → email-templates-7469d2f85396c693.js} +1 -1
  160. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-be2a885150adc133.js → locations-20789aa0c84d544e.js} +1 -1
  161. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{organization-3c86162afe9759df.js → organization-f84a13eb9688cb5f.js} +1 -1
  162. fides/ui-build/static/admin/_next/static/chunks/pages/settings/privacy-requests-b72df6f3d460125f.js +1 -0
  163. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{regulations-4fe3b90747d885e5.js → regulations-aa02bc818e089c49.js} +1 -1
  164. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-5be9ce7a745ce908.js +1 -0
  165. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/{[id]-4d470bbf199a2f9c.js → [id]-2fc7c0d3988427b3.js} +1 -1
  166. fides/ui-build/static/admin/_next/static/chunks/pages/systems-86f5557384124f79.js +1 -0
  167. fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-2589729c47976357.js +1 -0
  168. fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/{[id]-98f737e735eaa0f0.js → [id]-6217433a26599521.js} +1 -1
  169. fides/ui-build/static/admin/_next/static/chunks/pages/{user-management-562624e5461083ec.js → user-management-b6c4bf35c003965d.js} +1 -1
  170. fides/ui-build/static/admin/_next/static/chunks/{webpack-2766492c5dbceb0a.js → webpack-8eac1ea5c825c8b4.js} +1 -1
  171. fides/ui-build/static/admin/_next/static/css/de09ed8a0adf1ca2.css +1 -0
  172. fides/ui-build/static/admin/add-systems/manual.html +1 -1
  173. fides/ui-build/static/admin/add-systems/multiple.html +1 -1
  174. fides/ui-build/static/admin/add-systems.html +1 -1
  175. fides/ui-build/static/admin/consent/configure/add-vendors.html +1 -1
  176. fides/ui-build/static/admin/consent/configure.html +1 -1
  177. fides/ui-build/static/admin/consent/privacy-experience/[id].html +1 -1
  178. fides/ui-build/static/admin/consent/privacy-experience/new.html +1 -1
  179. fides/ui-build/static/admin/consent/privacy-experience.html +1 -1
  180. fides/ui-build/static/admin/consent/privacy-notices/[id].html +1 -1
  181. fides/ui-build/static/admin/consent/privacy-notices/new.html +1 -1
  182. fides/ui-build/static/admin/consent/privacy-notices.html +1 -1
  183. fides/ui-build/static/admin/consent/properties.html +1 -1
  184. fides/ui-build/static/admin/consent/reporting.html +1 -1
  185. fides/ui-build/static/admin/consent.html +1 -1
  186. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn].html +1 -1
  187. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn].html +1 -1
  188. fides/ui-build/static/admin/data-catalog/[systemId]/projects.html +1 -1
  189. fides/ui-build/static/admin/data-catalog/[systemId]/resources/[resourceUrn].html +1 -1
  190. fides/ui-build/static/admin/data-catalog/[systemId]/resources.html +1 -1
  191. fides/ui-build/static/admin/data-catalog.html +1 -1
  192. fides/ui-build/static/admin/data-discovery/action-center/[monitorId]/[systemId].html +1 -1
  193. fides/ui-build/static/admin/data-discovery/action-center/[monitorId]/data-explorer.html +1 -0
  194. fides/ui-build/static/admin/data-discovery/action-center/[monitorId].html +1 -1
  195. fides/ui-build/static/admin/data-discovery/action-center.html +1 -1
  196. fides/ui-build/static/admin/data-discovery/activity.html +1 -1
  197. fides/ui-build/static/admin/data-discovery/detection/[resourceUrn].html +1 -1
  198. fides/ui-build/static/admin/data-discovery/detection.html +1 -1
  199. fides/ui-build/static/admin/data-discovery/discovery/[resourceUrn].html +1 -1
  200. fides/ui-build/static/admin/data-discovery/discovery.html +1 -1
  201. fides/ui-build/static/admin/datamap.html +1 -1
  202. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName]/[...subfieldNames].html +1 -1
  203. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName].html +1 -1
  204. fides/ui-build/static/admin/dataset/[datasetId].html +1 -1
  205. fides/ui-build/static/admin/dataset/new.html +1 -1
  206. fides/ui-build/static/admin/dataset.html +1 -1
  207. fides/ui-build/static/admin/datastore-connection/[id].html +1 -1
  208. fides/ui-build/static/admin/datastore-connection/new.html +1 -1
  209. fides/ui-build/static/admin/datastore-connection.html +1 -1
  210. fides/ui-build/static/admin/index.html +1 -1
  211. fides/ui-build/static/admin/integrations/[id].html +1 -1
  212. fides/ui-build/static/admin/integrations.html +1 -1
  213. fides/ui-build/static/admin/lib/fides-preview.js +1 -1
  214. fides/ui-build/static/admin/lib/fides-tcf.js +2 -2
  215. fides/ui-build/static/admin/lib/fides.js +2 -2
  216. fides/ui-build/static/admin/login/[provider].html +1 -1
  217. fides/ui-build/static/admin/login.html +1 -1
  218. fides/ui-build/static/admin/notifications/digests/[id].html +1 -0
  219. fides/ui-build/static/admin/notifications/digests/new.html +1 -0
  220. fides/ui-build/static/admin/notifications/digests.html +1 -0
  221. fides/ui-build/static/admin/notifications/providers/[key].html +1 -0
  222. fides/ui-build/static/admin/notifications/providers/new.html +1 -0
  223. fides/ui-build/static/admin/notifications/providers.html +1 -0
  224. fides/ui-build/static/admin/notifications/templates/[id].html +1 -0
  225. fides/ui-build/static/admin/notifications/templates/add-template.html +1 -0
  226. fides/ui-build/static/admin/notifications/templates.html +1 -0
  227. fides/ui-build/static/admin/notifications.html +1 -0
  228. fides/ui-build/static/admin/poc/ant-components.html +1 -1
  229. fides/ui-build/static/admin/poc/form-experiments/AntForm.html +1 -1
  230. fides/ui-build/static/admin/poc/form-experiments/FormikAntFormItem.html +1 -1
  231. fides/ui-build/static/admin/poc/form-experiments/FormikControlled.html +1 -1
  232. fides/ui-build/static/admin/poc/form-experiments/FormikField.html +1 -1
  233. fides/ui-build/static/admin/poc/form-experiments/FormikSpreadField.html +1 -1
  234. fides/ui-build/static/admin/poc/forms.html +1 -1
  235. fides/ui-build/static/admin/poc/table-migration.html +1 -1
  236. fides/ui-build/static/admin/privacy-requests/[id].html +1 -1
  237. fides/ui-build/static/admin/privacy-requests/configure/storage.html +1 -1
  238. fides/ui-build/static/admin/privacy-requests/configure.html +1 -1
  239. fides/ui-build/static/admin/privacy-requests.html +1 -1
  240. fides/ui-build/static/admin/properties/[id].html +1 -1
  241. fides/ui-build/static/admin/properties/add-property.html +1 -1
  242. fides/ui-build/static/admin/properties.html +1 -1
  243. fides/ui-build/static/admin/reporting/datamap.html +1 -1
  244. fides/ui-build/static/admin/settings/about/alpha.html +1 -1
  245. fides/ui-build/static/admin/settings/about.html +1 -1
  246. fides/ui-build/static/admin/settings/consent/[configuration_id]/[purpose_id].html +1 -1
  247. fides/ui-build/static/admin/settings/consent.html +1 -1
  248. fides/ui-build/static/admin/settings/custom-fields/[id].html +1 -1
  249. fides/ui-build/static/admin/settings/custom-fields/new.html +1 -1
  250. fides/ui-build/static/admin/settings/custom-fields.html +1 -1
  251. fides/ui-build/static/admin/settings/domain-records.html +1 -1
  252. fides/ui-build/static/admin/settings/domains.html +1 -1
  253. fides/ui-build/static/admin/settings/email-templates.html +1 -1
  254. fides/ui-build/static/admin/settings/locations.html +1 -1
  255. fides/ui-build/static/admin/settings/organization.html +1 -1
  256. fides/ui-build/static/admin/settings/privacy-requests.html +1 -1
  257. fides/ui-build/static/admin/settings/regulations.html +1 -1
  258. fides/ui-build/static/admin/systems/configure/[id]/test-datasets.html +1 -1
  259. fides/ui-build/static/admin/systems/configure/[id].html +1 -1
  260. fides/ui-build/static/admin/systems.html +1 -1
  261. fides/ui-build/static/admin/taxonomy.html +1 -1
  262. fides/ui-build/static/admin/user-management/new.html +1 -1
  263. fides/ui-build/static/admin/user-management/profile/[id].html +1 -1
  264. fides/ui-build/static/admin/user-management.html +1 -1
  265. fides/ui-build/static/admin/_next/static/ayPtYqII_BsdUxHOkbH2k/_buildManifest.js +0 -1
  266. fides/ui-build/static/admin/_next/static/chunks/155-c1ae010c664e2245.js +0 -1
  267. fides/ui-build/static/admin/_next/static/chunks/2921-66f65496c3a09316.js +0 -1
  268. fides/ui-build/static/admin/_next/static/chunks/3585-efd5d41f08e180c4.js +0 -1
  269. fides/ui-build/static/admin/_next/static/chunks/3855-12ee1dfbbe47fd28.js +0 -1
  270. fides/ui-build/static/admin/_next/static/chunks/3872-04d3afbfa41a7782.js +0 -1
  271. fides/ui-build/static/admin/_next/static/chunks/401-ffe4e8436e1eceb9.js +0 -1
  272. fides/ui-build/static/admin/_next/static/chunks/409-c1256ecda1b15db6.js +0 -1
  273. fides/ui-build/static/admin/_next/static/chunks/431-78bf05f35d7eec4f.js +0 -1
  274. fides/ui-build/static/admin/_next/static/chunks/4558-de5ced790b3380dc.js +0 -1
  275. fides/ui-build/static/admin/_next/static/chunks/4608-a9941d0c236ebca1.js +0 -1
  276. fides/ui-build/static/admin/_next/static/chunks/4718-6585c97c26647e65.js +0 -1
  277. fides/ui-build/static/admin/_next/static/chunks/502-d3ecae97b67befbd.js +0 -1
  278. fides/ui-build/static/admin/_next/static/chunks/504-88caa30c03374e9b.js +0 -1
  279. fides/ui-build/static/admin/_next/static/chunks/5185-51eaa78e3ed6bfb7.js +0 -1
  280. fides/ui-build/static/admin/_next/static/chunks/5309-3b6cf0cc9d0c6a83.js +0 -1
  281. fides/ui-build/static/admin/_next/static/chunks/5574-c31ea831371610d5.js +0 -1
  282. fides/ui-build/static/admin/_next/static/chunks/5643-10a36584c399526c.js +0 -1
  283. fides/ui-build/static/admin/_next/static/chunks/6277-182efc294d413f64.js +0 -1
  284. fides/ui-build/static/admin/_next/static/chunks/6882-10296485ec326e6b.js +0 -1
  285. fides/ui-build/static/admin/_next/static/chunks/6954-4b24e1731c1cc3b3.js +0 -1
  286. fides/ui-build/static/admin/_next/static/chunks/7045-f15044a4d4525946.js +0 -1
  287. fides/ui-build/static/admin/_next/static/chunks/7079-bbc7b856802a4834.js +0 -1
  288. fides/ui-build/static/admin/_next/static/chunks/7158-04745cc8d684b2e7.js +0 -1
  289. fides/ui-build/static/admin/_next/static/chunks/7218-e2983b96b95e33b4.js +0 -1
  290. fides/ui-build/static/admin/_next/static/chunks/7630-d0d3a0fe3f95e971.js +0 -1
  291. fides/ui-build/static/admin/_next/static/chunks/7725-f2a7be705b75dcc3.js +0 -1
  292. fides/ui-build/static/admin/_next/static/chunks/7929-0fd0d4948bc8d70e.js +0 -1
  293. fides/ui-build/static/admin/_next/static/chunks/8002-ed832921ad190832.js +0 -1
  294. fides/ui-build/static/admin/_next/static/chunks/9046-2a332fe338535c84.js +0 -1
  295. fides/ui-build/static/admin/_next/static/chunks/9226-4a7027057f55ca2a.js +0 -1
  296. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/manual-4ec03eed67572861.js +0 -1
  297. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/multiple-2ca59996860a33c5.js +0 -1
  298. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-58920afe2b67f952.js +0 -1
  299. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience-92182be6603c2842.js +0 -1
  300. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-ab54b19609bff325.js +0 -1
  301. fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-ae4909cad9b67822.js +0 -1
  302. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]-4a1af12d2d7cd660.js +0 -1
  303. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects-99573a1ee3ef8f4c.js +0 -1
  304. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources-6e429b7511028d60.js +0 -1
  305. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-56fd0f3e465e52b6.js +0 -1
  306. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-29c1fb777bd464e0.js +0 -1
  307. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-0d512528b498d75c.js +0 -1
  308. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-040813022f0890c9.js +0 -1
  309. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-2635ef588bf06145.js +0 -1
  310. fides/ui-build/static/admin/_next/static/chunks/pages/datamap-15616bea02397ef4.js +0 -1
  311. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-d4031e438c363fff.js +0 -1
  312. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]-9463af37079762d0.js +0 -1
  313. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]-60a4a9eb4aab4c11.js +0 -1
  314. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-ea198c4a7869f402.js +0 -1
  315. fides/ui-build/static/admin/_next/static/chunks/pages/dataset-0e3a6ac4797ffbbb.js +0 -1
  316. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/[id]-816e02b6cbe4a684.js +0 -1
  317. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/new-b6838162200141b3.js +0 -1
  318. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-223c2d1ded51bfb1.js +0 -1
  319. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-153eb88ab4e7dc6d.js +0 -1
  320. fides/ui-build/static/admin/_next/static/chunks/pages/integrations-f682b1def859931e.js +0 -1
  321. fides/ui-build/static/admin/_next/static/chunks/pages/messaging/[id]-e8d2140787045acd.js +0 -1
  322. fides/ui-build/static/admin/_next/static/chunks/pages/messaging/add-template-e3f93462a08251bf.js +0 -1
  323. fides/ui-build/static/admin/_next/static/chunks/pages/messaging-b5f7d6afdecd013d.js +0 -1
  324. fides/ui-build/static/admin/_next/static/chunks/pages/poc/ant-components-248ad9f65a872442.js +0 -1
  325. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/AntForm-aedb66a62042b10a.js +0 -1
  326. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikAntFormItem-018df38b7cd77fdb.js +0 -1
  327. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikControlled-6ca9099d03aab817.js +0 -1
  328. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikField-0f2c90786ea005a4.js +0 -1
  329. fides/ui-build/static/admin/_next/static/chunks/pages/poc/forms-200b51a725f8b2d1.js +0 -1
  330. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-febf156d2977f3ac.js +0 -1
  331. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-648d775d0fce49dc.js +0 -1
  332. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-7af00f72cf694077.js +0 -1
  333. fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-f7753e9effae3816.js +0 -1
  334. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-f3e6e74e0efb005c.js +0 -1
  335. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-4d658222ec800511.js +0 -1
  336. fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-5edfec10a945ca43.js +0 -1
  337. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-a3275554ffe8e640.js +0 -1
  338. fides/ui-build/static/admin/_next/static/chunks/pages/settings/messaging-providers/[key]-77239269acc2d31a.js +0 -1
  339. fides/ui-build/static/admin/_next/static/chunks/pages/settings/messaging-providers/new-8bf1821722b082e9.js +0 -1
  340. fides/ui-build/static/admin/_next/static/chunks/pages/settings/messaging-providers-8d92be437793c96f.js +0 -1
  341. fides/ui-build/static/admin/_next/static/chunks/pages/settings/privacy-requests-8cbdfd08e0fa88fb.js +0 -1
  342. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-2deb6becece69d46.js +0 -1
  343. fides/ui-build/static/admin/_next/static/chunks/pages/systems-0f1d833282f09684.js +0 -1
  344. fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-a8cfa7de4948b374.js +0 -1
  345. fides/ui-build/static/admin/_next/static/css/64fac6fb884435c2.css +0 -1
  346. fides/ui-build/static/admin/messaging/[id].html +0 -1
  347. fides/ui-build/static/admin/messaging/add-template.html +0 -1
  348. fides/ui-build/static/admin/messaging.html +0 -1
  349. fides/ui-build/static/admin/settings/messaging-providers/[key].html +0 -1
  350. fides/ui-build/static/admin/settings/messaging-providers/new.html +0 -1
  351. fides/ui-build/static/admin/settings/messaging-providers.html +0 -1
  352. {ethyca_fides-2.71.1rc2.dist-info → ethyca_fides-2.72.0.dist-info}/WHEEL +0 -0
  353. {ethyca_fides-2.71.1rc2.dist-info → ethyca_fides-2.72.0.dist-info}/entry_points.txt +0 -0
  354. {ethyca_fides-2.71.1rc2.dist-info → ethyca_fides-2.72.0.dist-info}/licenses/LICENSE +0 -0
  355. {ethyca_fides-2.71.1rc2.dist-info → ethyca_fides-2.72.0.dist-info}/top_level.txt +0 -0
  356. /fides/ui-build/static/admin/_next/static/{ayPtYqII_BsdUxHOkbH2k → BOxlzhSs4KC4KKoRi_z4Y}/_ssgManifest.js +0 -0
  357. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields/{[id]-bd1042a0e9be6aff.js → [id]-a270325109398f48.js} +0 -0
  358. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields/{new-469ad83c8cfa1290.js → new-2e0c8e249f286427.js} +0 -0
  359. /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, Iterable, List, Optional, Type
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(input_data, policy, read_request)
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={
@@ -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