ethyca-fides 2.56.1rc3__py2.py3-none-any.whl → 2.56.2b0__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.
Files changed (302) hide show
  1. {ethyca_fides-2.56.1rc3.dist-info → ethyca_fides-2.56.2b0.dist-info}/METADATA +1 -1
  2. {ethyca_fides-2.56.1rc3.dist-info → ethyca_fides-2.56.2b0.dist-info}/RECORD +211 -210
  3. fides/_version.py +3 -3
  4. fides/api/alembic/migrations/versions/bd875a8b5d96_add_attachments_and_.py +96 -0
  5. fides/api/api/deps.py +28 -0
  6. fides/api/api/v1/endpoints/consent_request_endpoints.py +1 -2
  7. fides/api/api/v1/endpoints/dataset_config_endpoints.py +21 -8
  8. fides/api/api/v1/endpoints/generic_overrides.py +1 -2
  9. fides/api/api/v1/endpoints/privacy_request_endpoints.py +7 -7
  10. fides/api/models/attachment.py +153 -0
  11. fides/api/models/audit_log.py +3 -0
  12. fides/api/task/graph_task.py +20 -52
  13. fides/ui-build/static/admin/404.html +1 -1
  14. fides/ui-build/static/admin/_next/static/Wjdglx57ebjwS6WP9HE5_/_buildManifest.js +1 -0
  15. fides/ui-build/static/admin/_next/static/chunks/1150-45ae64b8999bde9e.js +1 -0
  16. fides/ui-build/static/admin/_next/static/chunks/2201-5cda6f245e348ec1.js +1 -0
  17. fides/ui-build/static/admin/_next/static/chunks/{5728-32ce3e7a41d1fb9f.js → 2397-5382265aeb68b955.js} +1 -1
  18. fides/ui-build/static/admin/_next/static/chunks/{255-8d4d20193afd2223.js → 255-1dab28b6d23451cf.js} +1 -1
  19. fides/ui-build/static/admin/_next/static/chunks/{3005-137ef60b77c71ce1.js → 3005-373de16453ed7eea.js} +1 -1
  20. fides/ui-build/static/admin/_next/static/chunks/3086-f15b42926fd055a0.js +1 -0
  21. fides/ui-build/static/admin/_next/static/chunks/3320-1070e41adcf432ac.js +1 -0
  22. fides/ui-build/static/admin/_next/static/chunks/{5318-d81dc29254349932.js → 3627-5e589e91b738f5cd.js} +1 -1
  23. fides/ui-build/static/admin/_next/static/chunks/3662-5639ae50b8dccf23.js +1 -0
  24. fides/ui-build/static/admin/_next/static/chunks/3855-7fc48fe049dc17e6.js +1 -0
  25. fides/ui-build/static/admin/_next/static/chunks/{4456-87020c4b11dc6e0e.js → 3872-bd02ad87861b67d7.js} +1 -1
  26. fides/ui-build/static/admin/_next/static/chunks/{8141-4eb48e91039a27d5.js → 3949-afca6e7434ad561f.js} +1 -1
  27. fides/ui-build/static/admin/_next/static/chunks/4481-a29f20bb58b211a4.js +1 -0
  28. fides/ui-build/static/admin/_next/static/chunks/4723-fc2288987e3b29d8.js +1 -0
  29. fides/ui-build/static/admin/_next/static/chunks/5246-9b38e34e434a8568.js +1 -0
  30. fides/ui-build/static/admin/_next/static/chunks/5258-299a63d9b4a469d9.js +1 -0
  31. fides/ui-build/static/admin/_next/static/chunks/5480-2abe7916447fa595.js +1 -0
  32. fides/ui-build/static/admin/_next/static/chunks/5487-348c811472ef5608.js +1 -0
  33. fides/ui-build/static/admin/_next/static/chunks/5826-3df3a9cd796a943f.js +1 -0
  34. fides/ui-build/static/admin/_next/static/chunks/5908-532dfbc9d930f635.js +1 -0
  35. fides/ui-build/static/admin/_next/static/chunks/5960-8895f51b30c35798.js +1 -0
  36. fides/ui-build/static/admin/_next/static/chunks/{618f8807-5792121b4eda076b.js → 618f8807-d15c33d1d6c8b961.js} +1 -1
  37. fides/ui-build/static/admin/_next/static/chunks/6277-ea65024c767f543e.js +1 -0
  38. fides/ui-build/static/admin/_next/static/chunks/6315-2ae623f4d2e24041.js +1 -0
  39. fides/ui-build/static/admin/_next/static/chunks/6362-d6d930922043de83.js +1 -0
  40. fides/ui-build/static/admin/_next/static/chunks/{5632-6a150393937e52ea.js → 6372-e305cd2ea5577339.js} +1 -1
  41. fides/ui-build/static/admin/_next/static/chunks/6853-350da1a0d61b7dda.js +1 -0
  42. fides/ui-build/static/admin/_next/static/chunks/6954-67c09ef890b489eb.js +1 -0
  43. fides/ui-build/static/admin/_next/static/chunks/7044-fc557bec36e0d833.js +1 -0
  44. fides/ui-build/static/admin/_next/static/chunks/7495-cf5540ed1d3a5f02.js +1 -0
  45. fides/ui-build/static/admin/_next/static/chunks/{7548-cdf0d184fa13ddaf.js → 7751-b2504265ef7c096f.js} +1 -1
  46. fides/ui-build/static/admin/_next/static/chunks/79-8a82c28f90175a36.js +1 -0
  47. fides/ui-build/static/admin/_next/static/chunks/{5973-7bbf7cd9475c070d.js → 7980-fb48142b786fcef9.js} +1 -1
  48. fides/ui-build/static/admin/_next/static/chunks/8433-3912cacade51b692.js +1 -0
  49. fides/ui-build/static/admin/_next/static/chunks/8499-8cdbf2da63982520.js +1 -0
  50. fides/ui-build/static/admin/_next/static/chunks/8573.b0736c9c6f17dae9.js +1 -0
  51. fides/ui-build/static/admin/_next/static/chunks/{8837-2b785a4e5bad4813.js → 8837-cf26e5ca1ae5aaf5.js} +1 -1
  52. fides/ui-build/static/admin/_next/static/chunks/9046-c49e36fc13e9643b.js +1 -0
  53. fides/ui-build/static/admin/_next/static/chunks/9111-8675301d4dd068bd.js +1 -0
  54. fides/ui-build/static/admin/_next/static/chunks/{9255-2b1bafefb091a640.js → 9255-336a890ada321f89.js} +1 -1
  55. fides/ui-build/static/admin/_next/static/chunks/9282-cf4638e56db0a232.js +1 -0
  56. fides/ui-build/static/admin/_next/static/chunks/{2800.6615615b3f98c173.js → 9392.0f11b5b42a4ccb18.js} +1 -1
  57. fides/ui-build/static/admin/_next/static/chunks/9999-fa566e2617c2d660.js +1 -0
  58. fides/ui-build/static/admin/_next/static/chunks/main-app-2650f704701c6a7b.js +1 -0
  59. fides/ui-build/static/admin/_next/static/chunks/main-ce7f38a12ea8c223.js +1 -0
  60. fides/ui-build/static/admin/_next/static/chunks/pages/404-162aedfa3b5c6960.js +1 -0
  61. fides/ui-build/static/admin/_next/static/chunks/pages/{_app-ec8f262156df2273.js → _app-56cdc9725fe73b37.js} +8 -8
  62. fides/ui-build/static/admin/_next/static/chunks/pages/{_error-c91b5eabd7ac9382.js → _error-bede3a8288930dcf.js} +1 -1
  63. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/manual-3cd7cb111fafa3f9.js +1 -0
  64. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{multiple-e47482277518eeac.js → multiple-c2b5ce54dae22850.js} +1 -1
  65. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-b1f944d2eb1676ff.js +1 -0
  66. fides/ui-build/static/admin/_next/static/chunks/pages/ant-poc-1e6090a92e89eba3.js +1 -0
  67. fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-59913e9cc73e09c9.js → add-vendors-ffa474e483e82d14.js} +1 -1
  68. fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure-40da2d94f2830e1e.js +1 -0
  69. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/[id]-78ef82002d3d8c19.js +1 -0
  70. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/new-34a85dfbd8040688.js +1 -0
  71. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience-fe7d178376b26c3e.js +1 -0
  72. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-941d95c937170eca.js → [id]-1a3b9b906df09b89.js} +1 -1
  73. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-0e3788b351b85329.js → new-95f9157a1576682a.js} +1 -1
  74. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-94419df1a94676cd.js +1 -0
  75. fides/ui-build/static/admin/_next/static/chunks/pages/consent/properties-03cf23593252980e.js +1 -0
  76. fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-fd33cf4bc3bd7217.js +1 -0
  77. fides/ui-build/static/admin/_next/static/chunks/pages/{consent-160eab9ebbbd1d25.js → consent-419008bdf518df6b.js} +1 -1
  78. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]-dd11337b3513bb8a.js +1 -0
  79. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]-d409ce34ece16cae.js +1 -0
  80. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects-afaca2d14f3f3372.js +1 -0
  81. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/[resourceUrn]-af0763217947fb8d.js +1 -0
  82. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{resources-71ce2e9dbf646ecd.js → resources-9596052d50cf6cc9.js} +1 -1
  83. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-6d0c56a49450b23e.js +1 -0
  84. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-dd67d205d8e01310.js +1 -0
  85. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/{[monitorId]-ca97d78d3e655a9d.js → [monitorId]-39050055e1623a2c.js} +1 -1
  86. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{action-center-6d6d0b3bd37434da.js → action-center-d141b9651696c214.js} +1 -1
  87. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-44c921fc8f07ff28.js +1 -0
  88. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/detection/{[resourceUrn]-f8f65f23ff9edaeb.js → [resourceUrn]-82d053232db137ac.js} +1 -1
  89. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{detection-dbcda00811800c31.js → detection-083c8fba2837e11c.js} +1 -1
  90. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/[resourceUrn]-c2f75aae2435b3f3.js +1 -0
  91. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery-6fdf5929b50052fa.js +1 -0
  92. fides/ui-build/static/admin/_next/static/chunks/pages/datamap-fdc1e31b739774a2.js +1 -0
  93. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-bac79550f4a641a6.js +1 -0
  94. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]-968b9f1be2e8015e.js +1 -0
  95. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]-fc98597c22321ee5.js +1 -0
  96. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-13c36e0f9a5851e7.js +1 -0
  97. fides/ui-build/static/admin/_next/static/chunks/pages/dataset-784376c7068a46ea.js +1 -0
  98. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/[id]-a5c8556b5a936710.js +1 -0
  99. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/new-ddadae7cf352bdec.js +1 -0
  100. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-b04df874d0de1600.js +1 -0
  101. fides/ui-build/static/admin/_next/static/chunks/pages/index-0cb69e8e091559f5.js +1 -0
  102. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-fefec1d20c5f53d3.js +1 -0
  103. fides/ui-build/static/admin/_next/static/chunks/pages/integrations-7cbceff4d808ddef.js +1 -0
  104. fides/ui-build/static/admin/_next/static/chunks/pages/login/{[provider]-cac9584cefa85a09.js → [provider]-c58beef131c3a82d.js} +1 -1
  105. fides/ui-build/static/admin/_next/static/chunks/pages/{login-e55849091751c65a.js → login-0cb0eb44bf2dd24c.js} +1 -1
  106. fides/ui-build/static/admin/_next/static/chunks/pages/messaging/[id]-dd87f20c6c304f6e.js +1 -0
  107. fides/ui-build/static/admin/_next/static/chunks/pages/messaging/add-template-0282fb9efb4ec896.js +1 -0
  108. fides/ui-build/static/admin/_next/static/chunks/pages/{messaging-5a6202c3aaf15cce.js → messaging-194be66253503679.js} +1 -1
  109. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-4069f3831c0b30e3.js +1 -0
  110. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-69f722cd2d034c91.js +1 -0
  111. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-70b68e4b21f7cc55.js +1 -0
  112. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{configure-9ec13a78be8f23bf.js → configure-8badde37699accd4.js} +1 -1
  113. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-049931ac72a90590.js +1 -0
  114. fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-6597c1714cb44cbc.js → [id]-4bf43e86f68a99fb.js} +1 -1
  115. fides/ui-build/static/admin/_next/static/chunks/pages/properties/add-property-5403174fb79895c3.js +1 -0
  116. fides/ui-build/static/admin/_next/static/chunks/pages/properties-06c55d3d713867b5.js +1 -0
  117. fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-4e1429ad4c083e4f.js +1 -0
  118. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{about-ec35b0518d3fb3bb.js → about-a425b79765abd602.js} +1 -1
  119. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-402a7da5dae35b7a.js +1 -0
  120. fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-24d12a789adc39e2.js +1 -0
  121. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domain-records-b205aaafb53a629d.js +1 -0
  122. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-7af5f66895a7f321.js +1 -0
  123. fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-1859b23d0e9ff327.js +1 -0
  124. fides/ui-build/static/admin/_next/static/chunks/pages/settings/locations-7fa58dfa4acc9924.js +1 -0
  125. fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-50624926a6cf17f0.js +1 -0
  126. fides/ui-build/static/admin/_next/static/chunks/pages/settings/regulations-51cea4d659db4309.js +1 -0
  127. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-cee5aa3edcc6d827.js +1 -0
  128. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]-6fb382995c4a8249.js +1 -0
  129. fides/ui-build/static/admin/_next/static/chunks/pages/systems-c800e9fcf38bc6f6.js +1 -0
  130. fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-cdc44bbdf5694639.js +1 -0
  131. fides/ui-build/static/admin/_next/static/chunks/pages/user-management/new-d6717378b42982d5.js +1 -0
  132. fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/[id]-d4a7854a4faf0b0a.js +1 -0
  133. fides/ui-build/static/admin/_next/static/chunks/pages/user-management-858a0d0fabeac02a.js +1 -0
  134. fides/ui-build/static/admin/_next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  135. fides/ui-build/static/admin/_next/static/chunks/{webpack-f8d056f5e13fe08a.js → webpack-2156b65f5a3e1784.js} +1 -1
  136. fides/ui-build/static/admin/add-systems/manual.html +1 -1
  137. fides/ui-build/static/admin/add-systems/multiple.html +1 -1
  138. fides/ui-build/static/admin/add-systems.html +1 -1
  139. fides/ui-build/static/admin/ant-poc.html +1 -1
  140. fides/ui-build/static/admin/consent/configure/add-vendors.html +1 -1
  141. fides/ui-build/static/admin/consent/configure.html +1 -1
  142. fides/ui-build/static/admin/consent/privacy-experience/[id].html +1 -1
  143. fides/ui-build/static/admin/consent/privacy-experience/new.html +1 -1
  144. fides/ui-build/static/admin/consent/privacy-experience.html +1 -1
  145. fides/ui-build/static/admin/consent/privacy-notices/[id].html +1 -1
  146. fides/ui-build/static/admin/consent/privacy-notices/new.html +1 -1
  147. fides/ui-build/static/admin/consent/privacy-notices.html +1 -1
  148. fides/ui-build/static/admin/consent/properties.html +1 -1
  149. fides/ui-build/static/admin/consent/reporting.html +1 -1
  150. fides/ui-build/static/admin/consent.html +1 -1
  151. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn].html +1 -1
  152. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn].html +1 -1
  153. fides/ui-build/static/admin/data-catalog/[systemId]/projects.html +1 -1
  154. fides/ui-build/static/admin/data-catalog/[systemId]/resources/[resourceUrn].html +1 -1
  155. fides/ui-build/static/admin/data-catalog/[systemId]/resources.html +1 -1
  156. fides/ui-build/static/admin/data-catalog.html +1 -1
  157. fides/ui-build/static/admin/data-discovery/action-center/[monitorId]/[systemId].html +1 -1
  158. fides/ui-build/static/admin/data-discovery/action-center/[monitorId].html +1 -1
  159. fides/ui-build/static/admin/data-discovery/action-center.html +1 -1
  160. fides/ui-build/static/admin/data-discovery/activity.html +1 -1
  161. fides/ui-build/static/admin/data-discovery/detection/[resourceUrn].html +1 -1
  162. fides/ui-build/static/admin/data-discovery/detection.html +1 -1
  163. fides/ui-build/static/admin/data-discovery/discovery/[resourceUrn].html +1 -1
  164. fides/ui-build/static/admin/data-discovery/discovery.html +1 -1
  165. fides/ui-build/static/admin/datamap.html +1 -1
  166. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName]/[...subfieldNames].html +1 -1
  167. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName].html +1 -1
  168. fides/ui-build/static/admin/dataset/[datasetId].html +1 -1
  169. fides/ui-build/static/admin/dataset/new.html +1 -1
  170. fides/ui-build/static/admin/dataset.html +1 -1
  171. fides/ui-build/static/admin/datastore-connection/[id].html +1 -1
  172. fides/ui-build/static/admin/datastore-connection/new.html +1 -1
  173. fides/ui-build/static/admin/datastore-connection.html +1 -1
  174. fides/ui-build/static/admin/index.html +1 -1
  175. fides/ui-build/static/admin/integrations/[id].html +1 -1
  176. fides/ui-build/static/admin/integrations.html +1 -1
  177. fides/ui-build/static/admin/login/[provider].html +1 -1
  178. fides/ui-build/static/admin/login.html +1 -1
  179. fides/ui-build/static/admin/messaging/[id].html +1 -1
  180. fides/ui-build/static/admin/messaging/add-template.html +1 -1
  181. fides/ui-build/static/admin/messaging.html +1 -1
  182. fides/ui-build/static/admin/privacy-requests/[id].html +1 -1
  183. fides/ui-build/static/admin/privacy-requests/configure/messaging.html +1 -1
  184. fides/ui-build/static/admin/privacy-requests/configure/storage.html +1 -1
  185. fides/ui-build/static/admin/privacy-requests/configure.html +1 -1
  186. fides/ui-build/static/admin/privacy-requests.html +1 -1
  187. fides/ui-build/static/admin/properties/[id].html +1 -1
  188. fides/ui-build/static/admin/properties/add-property.html +1 -1
  189. fides/ui-build/static/admin/properties.html +1 -1
  190. fides/ui-build/static/admin/reporting/datamap.html +1 -1
  191. fides/ui-build/static/admin/settings/about.html +1 -1
  192. fides/ui-build/static/admin/settings/consent.html +1 -1
  193. fides/ui-build/static/admin/settings/custom-fields.html +1 -1
  194. fides/ui-build/static/admin/settings/domain-records.html +1 -1
  195. fides/ui-build/static/admin/settings/domains.html +1 -1
  196. fides/ui-build/static/admin/settings/email-templates.html +1 -1
  197. fides/ui-build/static/admin/settings/locations.html +1 -1
  198. fides/ui-build/static/admin/settings/organization.html +1 -1
  199. fides/ui-build/static/admin/settings/regulations.html +1 -1
  200. fides/ui-build/static/admin/systems/configure/[id]/test-datasets.html +1 -1
  201. fides/ui-build/static/admin/systems/configure/[id].html +1 -1
  202. fides/ui-build/static/admin/systems.html +1 -1
  203. fides/ui-build/static/admin/taxonomy.html +1 -1
  204. fides/ui-build/static/admin/user-management/new.html +1 -1
  205. fides/ui-build/static/admin/user-management/profile/[id].html +1 -1
  206. fides/ui-build/static/admin/user-management.html +1 -1
  207. fides/api/service/deps.py +0 -34
  208. fides/ui-build/static/admin/_next/static/chunks/1241-438935108aed21e7.js +0 -1
  209. fides/ui-build/static/admin/_next/static/chunks/1288-ba1df63e7fa2234a.js +0 -1
  210. fides/ui-build/static/admin/_next/static/chunks/1827-2d2f6eb59ebca43f.js +0 -1
  211. fides/ui-build/static/admin/_next/static/chunks/2017-312ebd5e1ee3a4cc.js +0 -1
  212. fides/ui-build/static/admin/_next/static/chunks/2025-8e051f2e024df3bf.js +0 -1
  213. fides/ui-build/static/admin/_next/static/chunks/2163-4ea4bc558daae7b9.js +0 -1
  214. fides/ui-build/static/admin/_next/static/chunks/2556-a58aca0405c150e6.js +0 -1
  215. fides/ui-build/static/admin/_next/static/chunks/2973-995ae9f580873e5b.js +0 -1
  216. fides/ui-build/static/admin/_next/static/chunks/3163-7ebdab4fefa7e21f.js +0 -1
  217. fides/ui-build/static/admin/_next/static/chunks/3309-d014168a94ed008b.js +0 -1
  218. fides/ui-build/static/admin/_next/static/chunks/3528-5e4ade882be165e4.js +0 -1
  219. fides/ui-build/static/admin/_next/static/chunks/3990-d38bb0b12394ae4d.js +0 -1
  220. fides/ui-build/static/admin/_next/static/chunks/4321-9c97c4e0d5cf38bd.js +0 -1
  221. fides/ui-build/static/admin/_next/static/chunks/4981-c7710c0d9ff7f9cf.js +0 -1
  222. fides/ui-build/static/admin/_next/static/chunks/53-bd8367b6a28ef9b0.js +0 -1
  223. fides/ui-build/static/admin/_next/static/chunks/6182-87e468239a93f7e2.js +0 -1
  224. fides/ui-build/static/admin/_next/static/chunks/637-3f7f3e47e69e75fe.js +0 -1
  225. fides/ui-build/static/admin/_next/static/chunks/6546-7d8e618a3e49a19a.js +0 -1
  226. fides/ui-build/static/admin/_next/static/chunks/7080-54768a5669e98da9.js +0 -1
  227. fides/ui-build/static/admin/_next/static/chunks/7269-aaa4ad906c8bf8f7.js +0 -1
  228. fides/ui-build/static/admin/_next/static/chunks/7528.b7f05f44d1ff3997.js +0 -1
  229. fides/ui-build/static/admin/_next/static/chunks/7636-bf8c77691e80223b.js +0 -1
  230. fides/ui-build/static/admin/_next/static/chunks/7871-69ffa5607b57cbcf.js +0 -1
  231. fides/ui-build/static/admin/_next/static/chunks/7996-5521a6949bfe4640.js +0 -1
  232. fides/ui-build/static/admin/_next/static/chunks/8001-f142a2097615505a.js +0 -1
  233. fides/ui-build/static/admin/_next/static/chunks/8540-cf0177abbe201868.js +0 -1
  234. fides/ui-build/static/admin/_next/static/chunks/8986-b955f08aba857064.js +0 -1
  235. fides/ui-build/static/admin/_next/static/chunks/9111-36f3eb6456817560.js +0 -1
  236. fides/ui-build/static/admin/_next/static/chunks/9659-7a6f150315045fdd.js +0 -1
  237. fides/ui-build/static/admin/_next/static/chunks/9822-e0b4ee48b9ca9d6c.js +0 -1
  238. fides/ui-build/static/admin/_next/static/chunks/main-6880a3888740c515.js +0 -1
  239. fides/ui-build/static/admin/_next/static/chunks/main-app-de538a24cbd2733c.js +0 -1
  240. fides/ui-build/static/admin/_next/static/chunks/pages/404-cf2b98b932c99b1e.js +0 -1
  241. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/manual-227ad8dba69aadab.js +0 -1
  242. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-500ee461301938a8.js +0 -1
  243. fides/ui-build/static/admin/_next/static/chunks/pages/ant-poc-833eede89996ded2.js +0 -1
  244. fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure-49c576c235a79105.js +0 -1
  245. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/[id]-f88c83c3daedc898.js +0 -1
  246. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/new-8eb5999c73f3e445.js +0 -1
  247. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience-3eaec69fa89f74ce.js +0 -1
  248. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-363b22d7785b3820.js +0 -1
  249. fides/ui-build/static/admin/_next/static/chunks/pages/consent/properties-5f80a5d6b216b7d3.js +0 -1
  250. fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-d1abffec10948e2e.js +0 -1
  251. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]-ef19223d2cdc1258.js +0 -1
  252. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]-50b989ef31996157.js +0 -1
  253. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects-96f81e13cc52686f.js +0 -1
  254. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/[resourceUrn]-fd3d508ab13ddb5b.js +0 -1
  255. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-11d772fe8b66f9b6.js +0 -1
  256. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-e3dbeac39e3ebd59.js +0 -1
  257. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-bdb48de828181c14.js +0 -1
  258. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/[resourceUrn]-90ebc7dd32d37952.js +0 -1
  259. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery-3251e73054b9f980.js +0 -1
  260. fides/ui-build/static/admin/_next/static/chunks/pages/datamap-f79309e33e7583fa.js +0 -1
  261. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-63f5bebe5851b767.js +0 -1
  262. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]-18ff69fb79811cff.js +0 -1
  263. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]-ad8ab0745c40a187.js +0 -1
  264. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-72cdfa2ff1a4f38b.js +0 -1
  265. fides/ui-build/static/admin/_next/static/chunks/pages/dataset-6ab8c03b8baa93ca.js +0 -1
  266. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/[id]-9f1a9e0e2b443b2a.js +0 -1
  267. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/new-c7de595cc7a42eba.js +0 -1
  268. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-9cafd280f2dff51b.js +0 -1
  269. fides/ui-build/static/admin/_next/static/chunks/pages/index-f6c4817f3c27b16c.js +0 -1
  270. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-c431f92c941859c4.js +0 -1
  271. fides/ui-build/static/admin/_next/static/chunks/pages/integrations-43234d749fbc0606.js +0 -1
  272. fides/ui-build/static/admin/_next/static/chunks/pages/messaging/[id]-014724a2527621b5.js +0 -1
  273. fides/ui-build/static/admin/_next/static/chunks/pages/messaging/add-template-860ee8c0e0a2d994.js +0 -1
  274. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-ae047733e540e0ef.js +0 -1
  275. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-c6881c16a4058f20.js +0 -1
  276. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-4b68311b85486f8c.js +0 -1
  277. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-c0ee732681c1d4ef.js +0 -1
  278. fides/ui-build/static/admin/_next/static/chunks/pages/properties/add-property-674abcb6eaeb32de.js +0 -1
  279. fides/ui-build/static/admin/_next/static/chunks/pages/properties-f939fbdb6bc969ef.js +0 -1
  280. fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-7446940b5f984a24.js +0 -1
  281. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-92a19e7da38d3325.js +0 -1
  282. fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-3bbbb1612eb447e9.js +0 -1
  283. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domain-records-c59eedd4f4a637aa.js +0 -1
  284. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-61ddd1a76e4ab2c6.js +0 -1
  285. fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-4d55571c2799e7fe.js +0 -1
  286. fides/ui-build/static/admin/_next/static/chunks/pages/settings/locations-725f4a6a809bd1e6.js +0 -1
  287. fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-fc13f3473328020d.js +0 -1
  288. fides/ui-build/static/admin/_next/static/chunks/pages/settings/regulations-8934706c2c817abe.js +0 -1
  289. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-0ee9dc1f37205410.js +0 -1
  290. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]-15f55e6c399eed5e.js +0 -1
  291. fides/ui-build/static/admin/_next/static/chunks/pages/systems-0b4f7a20fa248642.js +0 -1
  292. fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-ad082f72d90bdfe2.js +0 -1
  293. fides/ui-build/static/admin/_next/static/chunks/pages/user-management/new-a59a02634d672703.js +0 -1
  294. fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/[id]-99490929267dbcef.js +0 -1
  295. fides/ui-build/static/admin/_next/static/chunks/pages/user-management-2eedb806df4160b3.js +0 -1
  296. fides/ui-build/static/admin/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js +0 -1
  297. fides/ui-build/static/admin/_next/static/r-3WeuV_snrkjgQH_dysX/_buildManifest.js +0 -1
  298. {ethyca_fides-2.56.1rc3.dist-info → ethyca_fides-2.56.2b0.dist-info}/LICENSE +0 -0
  299. {ethyca_fides-2.56.1rc3.dist-info → ethyca_fides-2.56.2b0.dist-info}/WHEEL +0 -0
  300. {ethyca_fides-2.56.1rc3.dist-info → ethyca_fides-2.56.2b0.dist-info}/entry_points.txt +0 -0
  301. {ethyca_fides-2.56.1rc3.dist-info → ethyca_fides-2.56.2b0.dist-info}/top_level.txt +0 -0
  302. /fides/ui-build/static/admin/_next/static/{r-3WeuV_snrkjgQH_dysX → Wjdglx57ebjwS6WP9HE5_}/_ssgManifest.js +0 -0
fides/_version.py CHANGED
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2025-03-04T19:26:00-0300",
11
+ "date": "2025-03-04T12:01:28+0000",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "9b153e3bc346229dafbf553d8859a18260cbefda",
15
- "version": "2.56.1rc3"
14
+ "full-revisionid": "64a1e6762694dd595fbd0b4b4ea3d0eee83ff5a9",
15
+ "version": "2.56.2b0"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -0,0 +1,96 @@
1
+ """Add Attachment and AttachmentReference tables
2
+
3
+ Revision ID: bd875a8b5d96
4
+ Revises: 82883b0df5e4
5
+ Create Date: 2025-02-19 14:09:07.124680
6
+
7
+ """
8
+
9
+ import sqlalchemy as sa
10
+ from alembic import op
11
+ from sqlalchemy.dialects import postgresql
12
+
13
+ # revision identifiers, used by Alembic.
14
+ revision = "bd875a8b5d96"
15
+ down_revision = "82883b0df5e4"
16
+ branch_labels = None
17
+ depends_on = None
18
+
19
+
20
+ def upgrade():
21
+ # ### commands auto generated by Alembic - please adjust! ###
22
+ # create attachment table
23
+ op.create_table(
24
+ "attachment",
25
+ sa.Column("id", sa.String(length=255), nullable=False),
26
+ sa.Column("user_id", sa.String(), nullable=True),
27
+ sa.Column("file_name", sa.String(), nullable=False),
28
+ sa.Column("attachment_type", sa.String(), nullable=False),
29
+ sa.Column("storage_key", sa.String(), nullable=False),
30
+ sa.Column(
31
+ "created_at",
32
+ sa.DateTime(timezone=True),
33
+ server_default=sa.text("now()"),
34
+ nullable=False,
35
+ ),
36
+ sa.Column(
37
+ "updated_at",
38
+ sa.DateTime(timezone=True),
39
+ server_default=sa.text("now()"),
40
+ nullable=True,
41
+ ),
42
+ sa.ForeignKeyConstraint(
43
+ ["user_id"],
44
+ ["fidesuser.id"],
45
+ ondelete="SET NULL",
46
+ ),
47
+ sa.PrimaryKeyConstraint("id"),
48
+ )
49
+ op.create_index(op.f("ix_attachment_id"), "attachment", ["id"], unique=False)
50
+
51
+ # create attachment_reference table
52
+ op.create_table(
53
+ "attachment_reference",
54
+ sa.Column("id", sa.String(length=255), nullable=False),
55
+ sa.Column(
56
+ "created_at",
57
+ sa.DateTime(timezone=True),
58
+ server_default=sa.text("now()"),
59
+ nullable=False,
60
+ ),
61
+ sa.Column(
62
+ "updated_at",
63
+ sa.DateTime(timezone=True),
64
+ server_default=sa.text("now()"),
65
+ nullable=True,
66
+ ),
67
+ sa.Column("attachment_id", sa.String(), nullable=False),
68
+ sa.Column("reference_id", sa.String(), nullable=False),
69
+ sa.Column("reference_type", sa.String(), nullable=False),
70
+ sa.ForeignKeyConstraint(
71
+ ["attachment_id"],
72
+ ["attachment.id"],
73
+ ),
74
+ sa.PrimaryKeyConstraint("id"),
75
+ )
76
+ op.create_index(
77
+ op.f("ix_attachment_reference_id"),
78
+ "attachment_reference",
79
+ ["id"],
80
+ unique=False,
81
+ )
82
+ op.create_unique_constraint(
83
+ "_attachment_reference_uc",
84
+ "attachment_reference",
85
+ ["attachment_id", "reference_id"],
86
+ )
87
+ # ### end Alembic commands ###
88
+
89
+
90
+ def downgrade():
91
+ # ### commands auto generated by Alembic - please adjust! ###
92
+ op.drop_index(op.f("ix_attachment_reference_id"), table_name="attachment_reference")
93
+ op.drop_table("attachment_reference")
94
+ op.drop_index(op.f("ix_attachment_id"), table_name="attachment")
95
+ op.drop_table("attachment")
96
+ # ### end Alembic commands ###
fides/api/api/deps.py CHANGED
@@ -10,6 +10,10 @@ from fides.api.util.cache import get_cache as get_redis_connection
10
10
  from fides.config import CONFIG, FidesConfig
11
11
  from fides.config import get_config as get_app_config
12
12
  from fides.config.config_proxy import ConfigProxy
13
+ from fides.service.dataset.dataset_config_service import DatasetConfigService
14
+ from fides.service.dataset.dataset_service import DatasetService
15
+ from fides.service.messaging.messaging_service import MessagingService
16
+ from fides.service.privacy_request.privacy_request_service import PrivacyRequestService
13
17
 
14
18
  _engine = None
15
19
 
@@ -66,3 +70,27 @@ def get_cache() -> Generator:
66
70
  "Application redis cache required, but it is currently disabled! Please update your application configuration to enable integration with a Redis cache."
67
71
  )
68
72
  yield get_redis_connection()
73
+
74
+
75
+ def get_messaging_service(
76
+ db: Session = Depends(get_db),
77
+ config: FidesConfig = Depends(get_config),
78
+ config_proxy: ConfigProxy = Depends(get_config_proxy),
79
+ ) -> MessagingService:
80
+ return MessagingService(db, config, config_proxy)
81
+
82
+
83
+ def get_privacy_request_service(
84
+ db: Session = Depends(get_db),
85
+ config_proxy: ConfigProxy = Depends(get_config_proxy),
86
+ messaging_service: MessagingService = Depends(get_messaging_service),
87
+ ) -> PrivacyRequestService:
88
+ return PrivacyRequestService(db, config_proxy, messaging_service)
89
+
90
+
91
+ def get_dataset_service(db: Session = Depends(get_db)) -> DatasetService:
92
+ return DatasetService(db)
93
+
94
+
95
+ def get_dataset_config_service(db: Session = Depends(get_db)) -> DatasetConfigService:
96
+ return DatasetConfigService(db)
@@ -21,7 +21,7 @@ from starlette.status import (
21
21
  HTTP_422_UNPROCESSABLE_ENTITY,
22
22
  )
23
23
 
24
- from fides.api.api.deps import get_config_proxy, get_db
24
+ from fides.api.api.deps import get_config_proxy, get_db, get_messaging_service
25
25
  from fides.api.common_exceptions import (
26
26
  IdentityVerificationException,
27
27
  RedisNotConfigured,
@@ -50,7 +50,6 @@ from fides.api.schemas.privacy_request import (
50
50
  VerificationCode,
51
51
  )
52
52
  from fides.api.schemas.redis_cache import Identity
53
- from fides.api.service.deps import get_messaging_service
54
53
  from fides.api.util.api_router import APIRouter
55
54
  from fides.api.util.consent_util import (
56
55
  get_or_create_fides_user_device_id_provided_identity,
@@ -38,7 +38,6 @@ from fides.api.schemas.dataset import (
38
38
  )
39
39
  from fides.api.schemas.privacy_request import TestPrivacyRequest
40
40
  from fides.api.schemas.redis_cache import DatasetTestRequest
41
- from fides.api.service.deps import get_dataset_config_service
42
41
  from fides.api.util.api_router import APIRouter
43
42
  from fides.common.api.scope_registry import (
44
43
  DATASET_CREATE_OR_UPDATE,
@@ -94,7 +93,9 @@ def _get_connection_config(
94
93
  )
95
94
  def validate_dataset(
96
95
  dataset: FideslangDataset,
97
- dataset_config_service: DatasetConfigService = Depends(get_dataset_config_service),
96
+ dataset_config_service: DatasetConfigService = Depends(
97
+ deps.get_dataset_config_service
98
+ ),
98
99
  connection_config: ConnectionConfig = Depends(_get_connection_config),
99
100
  ) -> ValidateDatasetResponse:
100
101
  """
@@ -133,7 +134,9 @@ def validate_dataset(
133
134
  def put_dataset_configs(
134
135
  dataset_pairs: Annotated[List[DatasetConfigCtlDataset], Field(max_length=50)], # type: ignore
135
136
  db: Session = Depends(deps.get_db),
136
- dataset_config_service: DatasetConfigService = Depends(get_dataset_config_service),
137
+ dataset_config_service: DatasetConfigService = Depends(
138
+ deps.get_dataset_config_service
139
+ ),
137
140
  connection_config: ConnectionConfig = Depends(_get_connection_config),
138
141
  ) -> BulkPutDataset:
139
142
  """
@@ -182,7 +185,9 @@ def put_dataset_configs(
182
185
  )
183
186
  def patch_dataset_configs(
184
187
  dataset_pairs: Annotated[List[DatasetConfigCtlDataset], Field(max_length=50)], # type: ignore
185
- dataset_config_service: DatasetConfigService = Depends(get_dataset_config_service),
188
+ dataset_config_service: DatasetConfigService = Depends(
189
+ deps.get_dataset_config_service
190
+ ),
186
191
  connection_config: ConnectionConfig = Depends(_get_connection_config),
187
192
  ) -> BulkPutDataset:
188
193
  """
@@ -218,7 +223,9 @@ def patch_dataset_configs(
218
223
  )
219
224
  def patch_datasets(
220
225
  datasets: Annotated[List[FideslangDataset], Field(max_length=50)], # type: ignore
221
- dataset_config_service: DatasetConfigService = Depends(get_dataset_config_service),
226
+ dataset_config_service: DatasetConfigService = Depends(
227
+ deps.get_dataset_config_service
228
+ ),
222
229
  connection_config: ConnectionConfig = Depends(_get_connection_config),
223
230
  ) -> BulkPutDataset:
224
231
  """
@@ -250,7 +257,9 @@ def patch_datasets(
250
257
  )
251
258
  async def patch_yaml_datasets(
252
259
  request: Request,
253
- dataset_config_service: DatasetConfigService = Depends(get_dataset_config_service),
260
+ dataset_config_service: DatasetConfigService = Depends(
261
+ deps.get_dataset_config_service
262
+ ),
254
263
  connection_config: ConnectionConfig = Depends(_get_connection_config),
255
264
  ) -> BulkPutDataset:
256
265
  """
@@ -538,7 +547,9 @@ def dataset_reachability(
538
547
  *,
539
548
  db: Session = Depends(deps.get_db),
540
549
  connection_config: ConnectionConfig = Depends(_get_connection_config),
541
- dataset_config_service: DatasetConfigService = Depends(get_dataset_config_service),
550
+ dataset_config_service: DatasetConfigService = Depends(
551
+ deps.get_dataset_config_service
552
+ ),
542
553
  dataset_key: FidesKey,
543
554
  policy_key: Optional[FidesKey] = None,
544
555
  ) -> Dict[str, Any]:
@@ -584,7 +595,9 @@ def dataset_reachability(
584
595
  def test_connection_datasets(
585
596
  *,
586
597
  db: Session = Depends(deps.get_db),
587
- dataset_config_service: DatasetConfigService = Depends(get_dataset_config_service),
598
+ dataset_config_service: DatasetConfigService = Depends(
599
+ deps.get_dataset_config_service
600
+ ),
588
601
  connection_config: ConnectionConfig = Depends(_get_connection_config),
589
602
  dataset_key: FidesKey,
590
603
  test_request: DatasetTestRequest,
@@ -17,7 +17,7 @@ from starlette.status import (
17
17
  HTTP_422_UNPROCESSABLE_ENTITY,
18
18
  )
19
19
 
20
- from fides.api.api.deps import get_db
20
+ from fides.api.api.deps import get_dataset_service, get_db
21
21
  from fides.api.common_exceptions import KeyOrNameAlreadyExists, ValidationError
22
22
  from fides.api.db.base_class import get_key_from_data
23
23
  from fides.api.db.crud import list_resource_query
@@ -34,7 +34,6 @@ from fides.api.schemas.taxonomy_extensions import (
34
34
  DataUse,
35
35
  DataUseCreateOrUpdate,
36
36
  )
37
- from fides.api.service.deps import get_dataset_service
38
37
  from fides.api.util.api_router import APIRouter
39
38
  from fides.api.util.errors import FidesError, ForbiddenIsDefaultTaxonomyError
40
39
  from fides.api.util.filter_utils import apply_filters_to_query
@@ -41,6 +41,7 @@ from starlette.status import (
41
41
  )
42
42
 
43
43
  from fides.api.api import deps
44
+ from fides.api.api.deps import get_privacy_request_service
44
45
  from fides.api.api.v1.endpoints.dataset_config_endpoints import _get_connection_config
45
46
  from fides.api.api.v1.endpoints.manual_webhook_endpoints import (
46
47
  get_access_manual_webhook_or_404,
@@ -108,7 +109,6 @@ from fides.api.schemas.privacy_request import (
108
109
  ReviewPrivacyRequestIds,
109
110
  VerificationCode,
110
111
  )
111
- from fides.api.service.deps import get_messaging_service, get_privacy_request_service
112
112
  from fides.api.service.messaging.message_dispatch_service import EMAIL_JOIN_STRING
113
113
  from fides.api.task.execute_request_tasks import log_task_queued, queue_request_task
114
114
  from fides.api.task.filter_results import filter_data_categories
@@ -214,7 +214,7 @@ def get_privacy_request_or_error(
214
214
  def create_privacy_request(
215
215
  *,
216
216
  privacy_request_service: PrivacyRequestService = Depends(
217
- get_privacy_request_service
217
+ deps.get_privacy_request_service
218
218
  ),
219
219
  data: Annotated[List[PrivacyRequestCreate], Field(max_length=50)], # type: ignore
220
220
  ) -> BulkPostPrivacyRequests:
@@ -1232,7 +1232,7 @@ def restart_privacy_request_from_failure(
1232
1232
  *,
1233
1233
  db: Session = Depends(deps.get_db),
1234
1234
  privacy_request_service: PrivacyRequestService = Depends(
1235
- get_privacy_request_service
1235
+ deps.get_privacy_request_service
1236
1236
  ),
1237
1237
  ) -> PrivacyRequestResponse:
1238
1238
  """Restart a privacy request from failure"""
@@ -1279,7 +1279,7 @@ def verify_identification_code(
1279
1279
  *,
1280
1280
  db: Session = Depends(deps.get_db),
1281
1281
  config_proxy: ConfigProxy = Depends(deps.get_config_proxy),
1282
- messaging_service: MessagingService = Depends(get_messaging_service),
1282
+ messaging_service: MessagingService = Depends(deps.get_messaging_service),
1283
1283
  provided_code: VerificationCode,
1284
1284
  ) -> PrivacyRequestResponse:
1285
1285
  """Verify the supplied identity verification code.
@@ -1339,7 +1339,7 @@ def approve_privacy_request(
1339
1339
  scopes=[PRIVACY_REQUEST_REVIEW],
1340
1340
  ),
1341
1341
  privacy_request_service: PrivacyRequestService = Depends(
1342
- get_privacy_request_service
1342
+ deps.get_privacy_request_service
1343
1343
  ),
1344
1344
  privacy_requests: ReviewPrivacyRequestIds,
1345
1345
  ) -> BulkReviewResponse:
@@ -1362,7 +1362,7 @@ def deny_privacy_request(
1362
1362
  scopes=[PRIVACY_REQUEST_REVIEW],
1363
1363
  ),
1364
1364
  privacy_request_service: PrivacyRequestService = Depends(
1365
- get_privacy_request_service
1365
+ deps.get_privacy_request_service
1366
1366
  ),
1367
1367
  privacy_requests: DenyPrivacyRequests,
1368
1368
  ) -> BulkReviewResponse:
@@ -1399,7 +1399,7 @@ def mark_privacy_request_pre_approve_eligible(
1399
1399
  *,
1400
1400
  db: Session = Depends(deps.get_db),
1401
1401
  privacy_request_service: PrivacyRequestService = Depends(
1402
- get_privacy_request_service
1402
+ deps.get_privacy_request_service
1403
1403
  ),
1404
1404
  webhook: PreApprovalWebhook = Security(
1405
1405
  verify_callback_oauth_pre_approval_webhook, scopes=[PRIVACY_REQUEST_REVIEW]
@@ -0,0 +1,153 @@
1
+ from enum import Enum as EnumType
2
+ from typing import Any, Optional
3
+
4
+ from sqlalchemy import Column
5
+ from sqlalchemy import Enum as EnumColumn
6
+ from sqlalchemy import ForeignKey, String, UniqueConstraint
7
+ from sqlalchemy.ext.declarative import declared_attr
8
+ from sqlalchemy.orm import Session, relationship
9
+
10
+ from fides.api.db.base_class import Base
11
+ from fides.api.models.fides_user import FidesUser # pylint: disable=unused-import
12
+
13
+
14
+ class AttachmentType(str, EnumType):
15
+ """
16
+ Enum for attachment types. Indicates attachment usage.
17
+ """
18
+
19
+ internal_use_only = "internal_use_only"
20
+ include_with_access_package = "include_with_access_package"
21
+
22
+
23
+ class AttachmentReferenceType(str, EnumType):
24
+ """
25
+ Enum for attachment reference types. Indicates where attachment is referenced.
26
+ """
27
+
28
+ manual_step = "manual_step"
29
+ privacy_request = "privacy_request"
30
+ comment = "comment"
31
+
32
+
33
+ class AttachmentReference(Base):
34
+ """
35
+ Stores information about an Attachment and any other element which may reference that attachment.
36
+ """
37
+
38
+ @declared_attr
39
+ def __tablename__(cls) -> str:
40
+ """Overriding base class method to set the table name."""
41
+ return "attachment_reference"
42
+
43
+ attachment_id = Column(String, ForeignKey("attachment.id"), nullable=False)
44
+ reference_id = Column(String, nullable=False)
45
+ reference_type = Column(EnumColumn(AttachmentReferenceType), nullable=False)
46
+
47
+ __table_args__ = (
48
+ UniqueConstraint(
49
+ "attachment_id", "reference_id", name="_attachment_reference_uc"
50
+ ),
51
+ )
52
+
53
+ attachment = relationship(
54
+ "Attachment",
55
+ back_populates="references",
56
+ uselist=False,
57
+ )
58
+
59
+ @classmethod
60
+ def create(
61
+ cls, db: Session, *, data: dict[str, Any], check_name: bool = False
62
+ ) -> "AttachmentReference":
63
+ """Creates a new attachment reference record in the database."""
64
+ return super().create(db=db, data=data, check_name=check_name)
65
+
66
+
67
+ class Attachment(Base):
68
+ """
69
+ Stores information about an Attachment.
70
+ """
71
+
72
+ user_id = Column(
73
+ String, ForeignKey("fidesuser.id", ondelete="SET NULL"), nullable=True
74
+ )
75
+ file_name = Column(String, nullable=False)
76
+ attachment_type = Column(EnumColumn(AttachmentType), nullable=False)
77
+ storage_key = Column(String, nullable=False)
78
+
79
+ user = relationship(
80
+ "FidesUser",
81
+ backref="attachments",
82
+ lazy="selectin",
83
+ uselist=False,
84
+ )
85
+
86
+ references = relationship(
87
+ "AttachmentReference",
88
+ back_populates="attachment",
89
+ cascade="all, delete",
90
+ uselist=True,
91
+ )
92
+
93
+ async def upload_attachment_to_s3(self, attachment: bytes) -> None:
94
+ """Upload an attachment to S3 to the storage_url."""
95
+ raise NotImplementedError("This method is not yet implemented")
96
+ # AuditLog.create(
97
+ # db=db,
98
+ # data={
99
+ # "user_id": "system",
100
+ # "privacy_request_id": privacy_request.id,
101
+ # "action": AuditLogAction.attachment_uploaded,
102
+ # "message": "",
103
+ # },
104
+ # )
105
+
106
+ async def retrieve_attachment_from_s3(self) -> bytes:
107
+ """Retrieve an attachment from S3."""
108
+ raise NotImplementedError("This method is not yet implemented")
109
+ # AuditLog.create(
110
+ # db=db,
111
+ # data={
112
+ # "user_id": "system",
113
+ # "privacy_request_id": privacy_request.id,
114
+ # "action": AuditLogAction.attachment_retrieved,
115
+ # "message": "",
116
+ # },
117
+ # )
118
+
119
+ async def delete_attachment_from_s3(self) -> None:
120
+ """Delete an attachment from S3."""
121
+ raise NotImplementedError("This method is not yet implemented")
122
+ # AuditLog.create(
123
+ # db=db,
124
+ # data={
125
+ # "user_id": "system",
126
+ # "privacy_request_id": privacy_request.id,
127
+ # "action": AuditLogAction.attachment_deleted,
128
+ # "message": "",
129
+ # },
130
+ # )
131
+
132
+ @classmethod
133
+ def create(
134
+ cls,
135
+ db: Session,
136
+ *,
137
+ data: dict[str, Any],
138
+ check_name: bool = False,
139
+ attachment: Optional[
140
+ bytes
141
+ ] = None, # This will not be optional once the upload method is implemented.
142
+ ) -> "Attachment":
143
+ """Creates a new attachment record in the database and uploads the attachment to S3."""
144
+ # attachment_record.upload_attachment_to_s3(db, attachment)
145
+ # log.info(f"Uploaded attachment {attachment_record.id} to S3")
146
+ return super().create(db=db, data=data, check_name=check_name)
147
+
148
+ def delete(self, db: Session) -> None:
149
+ """Deletes an attachment record from the database and deletes the attachment from S3."""
150
+ # attachment_record = cls.get(db, id)
151
+ # attachment_record.delete_attachment_from_s3(db)
152
+ # log.info(f"Deleted attachment {attachment_record.id} from S3")
153
+ super().delete(db=db)
@@ -11,6 +11,9 @@ class AuditLogAction(str, EnumType):
11
11
  """Enum for audit log actions, reflecting what a user did."""
12
12
 
13
13
  approved = "approved"
14
+ attachment_uploaded = "attachment_uploaded"
15
+ attachment_deleted = "attachment_deleted"
16
+ attachment_retrieved = "attachment_retrieved"
14
17
  denied = "denied"
15
18
  email_sent = "email_sent"
16
19
  finished = "finished"
@@ -10,7 +10,6 @@ from loguru import logger
10
10
  from ordered_set import OrderedSet
11
11
  from sqlalchemy.orm import Session
12
12
 
13
- from fides.api.api.deps import get_db_contextmanager as get_db
14
13
  from fides.api.common_exceptions import (
15
14
  ActionDisabled,
16
15
  AwaitingAsyncTaskCallback,
@@ -366,30 +365,25 @@ class GraphTask(ABC): # pylint: disable=too-many-instance-attributes
366
365
  """Update status activities - create an execution log (which stores historical logs)
367
366
  and update the Request Task's current status.
368
367
  """
369
- with get_db() as db:
370
- ExecutionLog.create(
371
- db=db,
372
- data={
373
- "connection_key": self.execution_node.connection_key,
374
- "dataset_name": self.execution_node.address.dataset,
375
- "collection_name": self.execution_node.address.collection,
376
- "fields_affected": fields_affected,
377
- "action_type": action_type,
378
- "status": status,
379
- "privacy_request_id": self.resources.request.id,
380
- "message": msg,
381
- },
382
- )
368
+ ExecutionLog.create(
369
+ db=self.resources.session,
370
+ data={
371
+ "connection_key": self.execution_node.connection_key,
372
+ "dataset_name": self.execution_node.address.dataset,
373
+ "collection_name": self.execution_node.address.collection,
374
+ "fields_affected": fields_affected,
375
+ "action_type": action_type,
376
+ "status": status,
377
+ "privacy_request_id": self.resources.request.id,
378
+ "message": msg,
379
+ },
380
+ )
383
381
 
382
+ if self.request_task.id:
384
383
  # For DSR 3.0, updating the Request Task status when the ExecutionLog is
385
384
  # created to keep these in sync.
386
385
  # TODO remove conditional above alongside deprecating DSR 2.0
387
- if self.request_task.id:
388
- # Merge the request task to ensure we keep the changes made
389
- # to self.request_task that haven't yet been committed to the database
390
- request_task = db.merge(self.request_task)
391
- request_task.update_status(db, status)
392
- self.request_task = request_task
386
+ self.request_task.update_status(self.resources.session, status)
393
387
 
394
388
  def log_start(self, action_type: ActionType) -> None:
395
389
  """Task start activities"""
@@ -440,10 +434,9 @@ class GraphTask(ABC): # pylint: disable=too-many-instance-attributes
440
434
  # For DSR 3.0, Hooking into the GraphTask.log_end method to also mark the current
441
435
  # Request Task and every Request Task that can be reached from the current
442
436
  # task as errored.
443
-
444
- with get_db() as db:
445
- request_task = db.merge(self.request_task)
446
- mark_current_and_downstream_nodes_as_failed(request_task, db)
437
+ mark_current_and_downstream_nodes_as_failed(
438
+ self.request_task, self.resources.session
439
+ )
447
440
  else:
448
441
  logger.info("Ending {}, {}", self.resources.request.id, self.key)
449
442
  self.update_status(
@@ -550,34 +543,9 @@ class GraphTask(ABC): # pylint: disable=too-many-instance-attributes
550
543
  # Return filtered rows with non-matched array data removed.
551
544
  return output
552
545
 
553
- def get_connection_config(self) -> ConnectionConfig:
554
- """
555
- Retrieves the connection configuration for the current connector.
556
- This method attempts to fetch the connection configuration from the database
557
- using the connector's configuration ID. If the configuration is found in the
558
- database, it is returned. Otherwise, the method returns the connector's
559
- current configuration.
560
- Returns:
561
- ConnectionConfig: The connection configuration object from the database
562
- if found, otherwise the connector's current configuration.
563
- """
564
- connection_config_id = self.connector.configuration.id
565
-
566
- with get_db() as db:
567
- connection_config = (
568
- db.query(ConnectionConfig)
569
- .filter(ConnectionConfig.id == connection_config_id)
570
- .first()
571
- )
572
- if connection_config:
573
- return connection_config
574
-
575
- return self.connector.configuration
576
-
577
546
  def skip_if_disabled(self) -> None:
578
547
  """Skip execution for the given collection if it is attached to a disabled ConnectionConfig."""
579
- connection_config: ConnectionConfig = self.get_connection_config()
580
-
548
+ connection_config: ConnectionConfig = self.connector.configuration
581
549
  if connection_config.disabled:
582
550
  raise CollectionDisabled(
583
551
  f"Skipping collection {self.execution_node.address}. "
@@ -591,7 +559,7 @@ class GraphTask(ABC): # pylint: disable=too-many-instance-attributes
591
559
  if action_type == ActionType.access:
592
560
  return
593
561
 
594
- connection_config: ConnectionConfig = self.get_connection_config()
562
+ connection_config: ConnectionConfig = self.connector.configuration
595
563
  if (
596
564
  connection_config.enabled_actions is not None
597
565
  and action_type not in connection_config.enabled_actions
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link data-next-font="" rel="preconnect" href="/" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/ddd0b958fa57d1b9.css" as="style"/><link rel="stylesheet" href="/_next/static/css/ddd0b958fa57d1b9.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/_next/static/chunks/webpack-f8d056f5e13fe08a.js" defer=""></script><script src="/_next/static/chunks/framework-c92fc3344e6fd165.js" defer=""></script><script src="/_next/static/chunks/main-6880a3888740c515.js" defer=""></script><script src="/_next/static/chunks/pages/_app-ec8f262156df2273.js" defer=""></script><script src="/_next/static/chunks/pages/404-cf2b98b932c99b1e.js" defer=""></script><script src="/_next/static/r-3WeuV_snrkjgQH_dysX/_buildManifest.js" defer=""></script><script src="/_next/static/r-3WeuV_snrkjgQH_dysX/_ssgManifest.js" defer=""></script><style>.data-ant-cssinjs-cache-path{content:"";}</style></head><body><div id="__next"><div style="height:100%;display:flex"></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/404","query":{},"buildId":"r-3WeuV_snrkjgQH_dysX","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link data-next-font="" rel="preconnect" href="/" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/ddd0b958fa57d1b9.css" as="style"/><link rel="stylesheet" href="/_next/static/css/ddd0b958fa57d1b9.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-2156b65f5a3e1784.js" defer=""></script><script src="/_next/static/chunks/framework-c92fc3344e6fd165.js" defer=""></script><script src="/_next/static/chunks/main-ce7f38a12ea8c223.js" defer=""></script><script src="/_next/static/chunks/pages/_app-56cdc9725fe73b37.js" defer=""></script><script src="/_next/static/chunks/pages/404-162aedfa3b5c6960.js" defer=""></script><script src="/_next/static/Wjdglx57ebjwS6WP9HE5_/_buildManifest.js" defer=""></script><script src="/_next/static/Wjdglx57ebjwS6WP9HE5_/_ssgManifest.js" defer=""></script><style>.data-ant-cssinjs-cache-path{content:"";}</style></head><body><div id="__next"><div style="height:100%;display:flex"></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/404","query":{},"buildId":"Wjdglx57ebjwS6WP9HE5_","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>