ethyca-fides 2.57.1rc0__py2.py3-none-any.whl → 2.57.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 (296) hide show
  1. {ethyca_fides-2.57.1rc0.dist-info → ethyca_fides-2.57.2b0.dist-info}/METADATA +1 -1
  2. {ethyca_fides-2.57.1rc0.dist-info → ethyca_fides-2.57.2b0.dist-info}/RECORD +243 -228
  3. fides/_version.py +3 -3
  4. fides/api/alembic/migrations/versions/1d2f04ac19f2_add_page_column_to_asset_table.py +49 -0
  5. fides/api/alembic/migrations/versions/7c3fbee90c78_add_user_assigned_data_uses_and_system_.py +54 -0
  6. fides/api/alembic/migrations/versions/9a1eacd2666b_add_description_column_to_asset.py +25 -0
  7. fides/api/api/v1/endpoints/config_endpoints.py +4 -2
  8. fides/api/api/v1/endpoints/generic_overrides.py +48 -6
  9. fides/api/models/asset.py +37 -18
  10. fides/api/models/attachment.py +11 -13
  11. fides/api/models/comment.py +17 -17
  12. fides/api/models/connectionconfig.py +1 -1
  13. fides/api/models/detection_discovery.py +12 -0
  14. fides/api/models/location_regulation_selections.py +1 -0
  15. fides/api/models/privacy_request/__init__.py +44 -0
  16. fides/api/models/privacy_request/consent.py +155 -0
  17. fides/api/models/privacy_request/execution_log.py +108 -0
  18. fides/api/models/{privacy_request.py → privacy_request/privacy_request.py} +82 -691
  19. fides/api/models/privacy_request/provided_identity.py +149 -0
  20. fides/api/models/privacy_request/request_task.py +284 -0
  21. fides/api/models/privacy_request/webhook.py +94 -0
  22. fides/api/models/sql_models.py +28 -5
  23. fides/api/oauth/jwt.py +18 -0
  24. fides/api/oauth/utils.py +11 -11
  25. fides/api/schemas/dataset.py +22 -2
  26. fides/api/schemas/saas/strategy_configuration.py +1 -0
  27. fides/api/service/pagination/pagination_strategy_cursor.py +15 -1
  28. fides/api/service/pagination/pagination_strategy_link.py +1 -1
  29. fides/api/service/storage/s3.py +193 -0
  30. fides/api/service/storage/util.py +10 -0
  31. fides/api/tasks/storage.py +12 -111
  32. fides/config/__init__.py +1 -1
  33. fides/data/language/languages.yml +2 -0
  34. fides/data/location/locations.yml +244 -1
  35. fides/ui-build/static/admin/404.html +1 -1
  36. fides/ui-build/static/admin/_next/static/chunks/1100-053fc6b76c65a00f.js +1 -0
  37. fides/ui-build/static/admin/_next/static/chunks/{1150-73440d7b319558e8.js → 1150-035a721a04f4451e.js} +1 -1
  38. fides/ui-build/static/admin/_next/static/chunks/1376-5cea5ef9362215e8.js +1 -0
  39. fides/ui-build/static/admin/_next/static/chunks/{2397-7177ecf4ebe68feb.js → 2397-ee53235fb21b5e97.js} +1 -1
  40. fides/ui-build/static/admin/_next/static/chunks/{255-bf1797f78249d090.js → 255-7db55b0e3a0f9dea.js} +1 -1
  41. fides/ui-build/static/admin/_next/static/chunks/2fbcc6de-a6c61724c327e9fa.js +8 -0
  42. fides/ui-build/static/admin/_next/static/chunks/{3086-be6b52546c3efc90.js → 3086-b5054ec2c75700b9.js} +1 -1
  43. fides/ui-build/static/admin/_next/static/chunks/3320-5dd62a256ecfc9c3.js +1 -0
  44. fides/ui-build/static/admin/_next/static/chunks/355-8a77c9a1cd027f2e.js +1 -0
  45. fides/ui-build/static/admin/_next/static/chunks/3615-5e2d062d684b8fa1.js +1 -0
  46. fides/ui-build/static/admin/_next/static/chunks/{3855-5c7b11871f59e0e0.js → 3855-b6b7865dedd7bc2a.js} +1 -1
  47. fides/ui-build/static/admin/_next/static/chunks/{3872-f3d5054bdc584eaa.js → 3872-4e053c20d546f027.js} +1 -1
  48. fides/ui-build/static/admin/_next/static/chunks/4060-8d165e1236ea521a.js +1 -0
  49. fides/ui-build/static/admin/_next/static/chunks/4481-aab99ff80f707473.js +1 -0
  50. fides/ui-build/static/admin/_next/static/chunks/4723-0a3c5e2ce143a7d0.js +1 -0
  51. fides/ui-build/static/admin/_next/static/chunks/{5258-3a650be9142cf914.js → 5258-0658dc2274df6832.js} +1 -1
  52. fides/ui-build/static/admin/_next/static/chunks/5277-e8a036319456127f.js +1 -0
  53. fides/ui-build/static/admin/_next/static/chunks/{5480-f5bec5e881f72f8d.js → 5480-f49696df5e8ae500.js} +1 -1
  54. fides/ui-build/static/admin/_next/static/chunks/{5487-d96e1abc93f92631.js → 5487-3ad50d21cdbc9209.js} +1 -1
  55. fides/ui-build/static/admin/_next/static/chunks/570-c99f07161bd339cd.js +1 -0
  56. fides/ui-build/static/admin/_next/static/chunks/{5826-16e497af363a0cbc.js → 5826-e5dcb4e68cfe6289.js} +1 -1
  57. fides/ui-build/static/admin/_next/static/chunks/5973-52aee296edc44f7e.js +1 -0
  58. fides/ui-build/static/admin/_next/static/chunks/605-e692e9cfea2e2cb8.js +1 -0
  59. fides/ui-build/static/admin/_next/static/chunks/6060-cb1ab5be7067bf7b.js +4 -0
  60. fides/ui-build/static/admin/_next/static/chunks/{6315-dee79f6861c94d2d.js → 6315-fa1519cdf080f42d.js} +1 -1
  61. fides/ui-build/static/admin/_next/static/chunks/{6372-f1b54f3cb4888660.js → 6372-ca9c12ac8902365b.js} +1 -1
  62. fides/ui-build/static/admin/_next/static/chunks/6527-0eed08abe252a918.js +1 -0
  63. fides/ui-build/static/admin/_next/static/chunks/678d4732-50255cc09048e643.js +2 -0
  64. fides/ui-build/static/admin/_next/static/chunks/{6853-cacea421af3bfc26.js → 6853-8941824350c3c1a8.js} +1 -1
  65. fides/ui-build/static/admin/_next/static/chunks/6954-3b887fb444f9228c.js +1 -0
  66. fides/ui-build/static/admin/_next/static/chunks/{7088.0e7c92a7cbb57562.js → 7088.eb76fca286e5f2e6.js} +1 -1
  67. fides/ui-build/static/admin/_next/static/chunks/7434-e6fc02c2dd852991.js +1 -0
  68. fides/ui-build/static/admin/_next/static/chunks/{7751-25e0c1307988ffd7.js → 7751-a8f31c062d4cb09d.js} +1 -1
  69. fides/ui-build/static/admin/_next/static/chunks/{79-ba88d0cf4c65aaa2.js → 79-f9b948ebb186900f.js} +1 -1
  70. fides/ui-build/static/admin/_next/static/chunks/7980-4bd08957448dea32.js +1 -0
  71. fides/ui-build/static/admin/_next/static/chunks/7c79804f.7a7112aece470725.js +1 -0
  72. fides/ui-build/static/admin/_next/static/chunks/{8433-969280d321d1c3a2.js → 8433-b3008ecaf9834e7f.js} +1 -1
  73. fides/ui-build/static/admin/_next/static/chunks/{8499-07507004e8275df2.js → 8499-43606100edf42fdf.js} +1 -1
  74. fides/ui-build/static/admin/_next/static/chunks/8702-d1c8296f9f6afc10.js +1 -0
  75. fides/ui-build/static/admin/_next/static/chunks/{5908-532dfbc9d930f635.js → 9014-eeae6f581158e645.js} +1 -1
  76. fides/ui-build/static/admin/_next/static/chunks/{9046-80f1ea44f89fe32c.js → 9046-04bd7becea207cb1.js} +1 -1
  77. fides/ui-build/static/admin/_next/static/chunks/905-8ab919e7b274ed50.js +8 -0
  78. fides/ui-build/static/admin/_next/static/chunks/9187-851756440f79cd75.js +1 -0
  79. fides/ui-build/static/admin/_next/static/chunks/9282-2bfbdca45e84e810.js +1 -0
  80. fides/ui-build/static/admin/_next/static/chunks/9327-2cba327d10586683.js +1 -0
  81. fides/ui-build/static/admin/_next/static/chunks/{9392.97b2e3327dceb7c9.js → 9392.da35a8e778812d91.js} +1 -1
  82. fides/ui-build/static/admin/_next/static/chunks/9676.f297a1347ac09c56.js +1 -0
  83. fides/ui-build/static/admin/_next/static/chunks/9767-1a23925d2cb27b51.js +1 -0
  84. fides/ui-build/static/admin/_next/static/chunks/{9999-f2e40d5b13343220.js → 9999-637e0e5341f15f4a.js} +1 -1
  85. fides/ui-build/static/admin/_next/static/chunks/e3251fe7-5777b5d778e6fffa.js +1 -0
  86. fides/ui-build/static/admin/_next/static/chunks/main-24f422f93845a596.js +1 -0
  87. fides/ui-build/static/admin/_next/static/chunks/{main-app-2650f704701c6a7b.js → main-app-94a0711202e08b15.js} +1 -1
  88. fides/ui-build/static/admin/_next/static/chunks/pages/{404-1087258931760074.js → 404-b202c0d8f6fc75c3.js} +1 -1
  89. fides/ui-build/static/admin/_next/static/chunks/pages/_app-fa5f8f8b1d6d8c08.js +923 -0
  90. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{manual-d7f60624cbc12217.js → manual-c2705210ce986109.js} +1 -1
  91. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{multiple-18b0b521255289a3.js → multiple-ba975134a85588f8.js} +1 -1
  92. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-d258f0c25fa020bf.js +1 -0
  93. fides/ui-build/static/admin/_next/static/chunks/pages/{ant-poc-b3b4d0a98450ffd1.js → ant-poc-b9932971a479f3a7.js} +1 -1
  94. fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-64f83e9a2b777bf3.js → add-vendors-b34e5324461d0c87.js} +1 -1
  95. fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure-723cc3d4f5740ea6.js +1 -0
  96. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{[id]-443e6dd191ce5588.js → [id]-cf51752eb0902233.js} +1 -1
  97. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{new-36162d5bea29dcc2.js → new-be194737b41ccec9.js} +1 -1
  98. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-experience-35e9df60b21e21a6.js → privacy-experience-c946b33b0322b8ad.js} +1 -1
  99. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-2d651499c07d12d9.js → [id]-72251b48e2e03a1e.js} +1 -1
  100. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-36e57d2f2446be82.js → new-9611dd42856d6062.js} +1 -1
  101. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-notices-da37afbe5ec81339.js → privacy-notices-ea57f9d6ad17e957.js} +1 -1
  102. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-c57b209feef7c2da.js → properties-e5748812ba055a56.js} +1 -1
  103. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{reporting-97fea4ac45093cbd.js → reporting-9d2c1f0c9f270d07.js} +1 -1
  104. fides/ui-build/static/admin/_next/static/chunks/pages/{consent-24bef021ee71e36c.js → consent-39d65f13cc8f1cf8.js} +1 -1
  105. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/{[resourceUrn]-6cbd79481199812d.js → [resourceUrn]-ac033a16f043e6f9.js} +1 -1
  106. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/{[projectUrn]-46b9790da2fec05a.js → [projectUrn]-a29850536c85d4b8.js} +1 -1
  107. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{projects-1f965b9c496071d1.js → projects-c44ce244122e96d5.js} +1 -1
  108. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/{[resourceUrn]-e7833c1c606081a9.js → [resourceUrn]-71e26d262afcaea5.js} +1 -1
  109. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{resources-bed368d048ea6883.js → resources-305555b74c357bf2.js} +1 -1
  110. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-900004e402c31797.js +1 -0
  111. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-5182d356672a3b02.js +1 -0
  112. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-7c74373a4d666a3d.js +1 -0
  113. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-02439d3aeecfb4b9.js +1 -0
  114. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{activity-1d7936f05d23097f.js → activity-11b3ce9f61d9bfe9.js} +1 -1
  115. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/detection/{[resourceUrn]-68122dbf449a11b4.js → [resourceUrn]-054ca46a782e99a5.js} +1 -1
  116. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{detection-0ceaf3c555e84714.js → detection-b75dd3e4306ac18e.js} +1 -1
  117. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/{[resourceUrn]-22c27fe0f898ad2a.js → [resourceUrn]-1da20aeb6fc995e4.js} +1 -1
  118. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{discovery-8f2b102e19b0b8f2.js → discovery-cad50b0cc6d1050c.js} +1 -1
  119. fides/ui-build/static/admin/_next/static/chunks/pages/{datamap-9cd0c40bef77b120.js → datamap-8cb714cdd44ac40e.js} +1 -1
  120. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-d79551d4c64c398c.js +1 -0
  121. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]-7e5df4a0de7540bb.js +1 -0
  122. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/{[datasetId]-e14c1c07658f8a10.js → [datasetId]-6ba18f92ba561114.js} +1 -1
  123. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-803c1b577ab17ae3.js +1 -0
  124. fides/ui-build/static/admin/_next/static/chunks/pages/dataset-fa743ddc7f89d76b.js +1 -0
  125. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{[id]-0616437e1a82d3ed.js → [id]-bbe1ca2793798e6b.js} +1 -1
  126. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{new-f8218440494e8532.js → new-abc17fef69cd951b.js} +1 -1
  127. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-a78a73b65929853a.js +1 -0
  128. fides/ui-build/static/admin/_next/static/chunks/pages/fides-js-docs-80b241bf6cddb72e.js +1 -0
  129. fides/ui-build/static/admin/_next/static/chunks/pages/{index-94e6d589c4edf360.js → index-bfaacdb55a5a6c9f.js} +1 -1
  130. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-d4329043219fed9b.js +1 -0
  131. fides/ui-build/static/admin/_next/static/chunks/pages/integrations-adb6aced3bdb4899.js +1 -0
  132. fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{[id]-6b032de0a6c2c400.js → [id]-ad02e019b2467958.js} +1 -1
  133. fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{add-template-c0d6ae68ff7979c6.js → add-template-f9693cb6a0b7ded8.js} +1 -1
  134. fides/ui-build/static/admin/_next/static/chunks/pages/messaging-1e60754abec1ee6b.js +1 -0
  135. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{[id]-bbe5854b7d19b7e9.js → [id]-fe765154315782cf.js} +1 -1
  136. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-f5f7a8069909ef24.js +1 -0
  137. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-9f7eaad05e5b9292.js +1 -0
  138. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{configure-4bad69cd42c9722c.js → configure-2987edc77388e85a.js} +1 -1
  139. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-d85c0d16ba09ba35.js +1 -0
  140. fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-b4c808a8a0287d11.js → [id]-94e2faa73dd6a3e6.js} +1 -1
  141. fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-5a701477b006a63b.js → add-property-630a6a3dd6502ba6.js} +1 -1
  142. fides/ui-build/static/admin/_next/static/chunks/pages/{properties-9a1899dfe052023e.js → properties-20ca2f963906674b.js} +1 -1
  143. fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-afedc48ef4e7f858.js +1 -0
  144. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{about-d073be113e9ca7b0.js → about-a49d0f84cf0cf05e.js} +1 -1
  145. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-89524101b7279f6e.js +1 -0
  146. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{custom-fields-744e7bbc200557e7.js → custom-fields-52d030b1db2ca1b9.js} +1 -1
  147. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domain-records-c5cd5fb578de9515.js → domain-records-fa42d8f18df44927.js} +1 -1
  148. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-24cba38685dc872c.js +1 -0
  149. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{email-templates-39c7ae3602ac69b2.js → email-templates-6fd6071e2009b8f2.js} +1 -1
  150. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-45e33ba111f8f8b0.js → locations-66c757325cb58467.js} +1 -1
  151. fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-a08693d0d1e10bc8.js +1 -0
  152. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{regulations-94975aeab348528e.js → regulations-c6c239996cfa6ae8.js} +1 -1
  153. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-151571cff4e85894.js +1 -0
  154. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/{[id]-82d9af34546adaa2.js → [id]-d3ea9034461511cd.js} +1 -1
  155. fides/ui-build/static/admin/_next/static/chunks/pages/{systems-c320df35d51dc537.js → systems-abd68fc5ddde5482.js} +1 -1
  156. fides/ui-build/static/admin/_next/static/chunks/pages/{taxonomy-181ea5b0ac975239.js → taxonomy-16b4d75c49276add.js} +1 -1
  157. fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/{[id]-622e16a17a11c096.js → [id]-78eaf933f755bfe8.js} +1 -1
  158. fides/ui-build/static/admin/_next/static/chunks/pages/{user-management-aa872b21bb835d34.js → user-management-6c9ad62479a7d03e.js} +1 -1
  159. fides/ui-build/static/admin/_next/static/chunks/{webpack-4df2ba5ee2d40f0a.js → webpack-2c7ccac5843c4d8e.js} +1 -1
  160. fides/ui-build/static/admin/_next/static/css/113d823fe71f6af0.css +1 -0
  161. fides/ui-build/static/admin/_next/static/css/ab65b8cc3144bfc8.css +1 -0
  162. fides/ui-build/static/admin/_next/static/sdQ5v46RH3_stSYmL-sZd/_buildManifest.js +1 -0
  163. fides/ui-build/static/admin/_next/static/sdQ5v46RH3_stSYmL-sZd/_ssgManifest.js +1 -0
  164. fides/ui-build/static/admin/add-systems/manual.html +1 -1
  165. fides/ui-build/static/admin/add-systems/multiple.html +1 -1
  166. fides/ui-build/static/admin/add-systems.html +1 -1
  167. fides/ui-build/static/admin/ant-poc.html +1 -1
  168. fides/ui-build/static/admin/consent/configure/add-vendors.html +1 -1
  169. fides/ui-build/static/admin/consent/configure.html +1 -1
  170. fides/ui-build/static/admin/consent/privacy-experience/[id].html +1 -1
  171. fides/ui-build/static/admin/consent/privacy-experience/new.html +1 -1
  172. fides/ui-build/static/admin/consent/privacy-experience.html +1 -1
  173. fides/ui-build/static/admin/consent/privacy-notices/[id].html +1 -1
  174. fides/ui-build/static/admin/consent/privacy-notices/new.html +1 -1
  175. fides/ui-build/static/admin/consent/privacy-notices.html +1 -1
  176. fides/ui-build/static/admin/consent/properties.html +1 -1
  177. fides/ui-build/static/admin/consent/reporting.html +1 -1
  178. fides/ui-build/static/admin/consent.html +1 -1
  179. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn].html +1 -1
  180. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn].html +1 -1
  181. fides/ui-build/static/admin/data-catalog/[systemId]/projects.html +1 -1
  182. fides/ui-build/static/admin/data-catalog/[systemId]/resources/[resourceUrn].html +1 -1
  183. fides/ui-build/static/admin/data-catalog/[systemId]/resources.html +1 -1
  184. fides/ui-build/static/admin/data-catalog.html +1 -1
  185. fides/ui-build/static/admin/data-discovery/action-center/[monitorId]/[systemId].html +1 -1
  186. fides/ui-build/static/admin/data-discovery/action-center/[monitorId].html +1 -1
  187. fides/ui-build/static/admin/data-discovery/action-center.html +1 -1
  188. fides/ui-build/static/admin/data-discovery/activity.html +1 -1
  189. fides/ui-build/static/admin/data-discovery/detection/[resourceUrn].html +1 -1
  190. fides/ui-build/static/admin/data-discovery/detection.html +1 -1
  191. fides/ui-build/static/admin/data-discovery/discovery/[resourceUrn].html +1 -1
  192. fides/ui-build/static/admin/data-discovery/discovery.html +1 -1
  193. fides/ui-build/static/admin/datamap.html +1 -1
  194. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName]/[...subfieldNames].html +1 -1
  195. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName].html +1 -1
  196. fides/ui-build/static/admin/dataset/[datasetId].html +1 -1
  197. fides/ui-build/static/admin/dataset/new.html +1 -1
  198. fides/ui-build/static/admin/dataset.html +1 -1
  199. fides/ui-build/static/admin/datastore-connection/[id].html +1 -1
  200. fides/ui-build/static/admin/datastore-connection/new.html +1 -1
  201. fides/ui-build/static/admin/datastore-connection.html +1 -1
  202. fides/ui-build/static/admin/index.html +1 -1
  203. fides/ui-build/static/admin/integrations/[id].html +1 -1
  204. fides/ui-build/static/admin/integrations.html +1 -1
  205. fides/ui-build/static/admin/lib/fides-ext-gpp.js +1 -1
  206. fides/ui-build/static/admin/lib/fides-headless.js +1 -1
  207. fides/ui-build/static/admin/lib/fides-tcf.js +3 -3
  208. fides/ui-build/static/admin/lib/fides.js +2 -2
  209. fides/ui-build/static/admin/login/[provider].html +1 -1
  210. fides/ui-build/static/admin/login.html +1 -1
  211. fides/ui-build/static/admin/messaging/[id].html +1 -1
  212. fides/ui-build/static/admin/messaging/add-template.html +1 -1
  213. fides/ui-build/static/admin/messaging.html +1 -1
  214. fides/ui-build/static/admin/privacy-requests/[id].html +1 -1
  215. fides/ui-build/static/admin/privacy-requests/configure/messaging.html +1 -1
  216. fides/ui-build/static/admin/privacy-requests/configure/storage.html +1 -1
  217. fides/ui-build/static/admin/privacy-requests/configure.html +1 -1
  218. fides/ui-build/static/admin/privacy-requests.html +1 -1
  219. fides/ui-build/static/admin/properties/[id].html +1 -1
  220. fides/ui-build/static/admin/properties/add-property.html +1 -1
  221. fides/ui-build/static/admin/properties.html +1 -1
  222. fides/ui-build/static/admin/reporting/datamap.html +1 -1
  223. fides/ui-build/static/admin/settings/about.html +1 -1
  224. fides/ui-build/static/admin/settings/consent.html +1 -1
  225. fides/ui-build/static/admin/settings/custom-fields.html +1 -1
  226. fides/ui-build/static/admin/settings/domain-records.html +1 -1
  227. fides/ui-build/static/admin/settings/domains.html +1 -1
  228. fides/ui-build/static/admin/settings/email-templates.html +1 -1
  229. fides/ui-build/static/admin/settings/locations.html +1 -1
  230. fides/ui-build/static/admin/settings/organization.html +1 -1
  231. fides/ui-build/static/admin/settings/regulations.html +1 -1
  232. fides/ui-build/static/admin/systems/configure/[id]/test-datasets.html +1 -1
  233. fides/ui-build/static/admin/systems/configure/[id].html +1 -1
  234. fides/ui-build/static/admin/systems.html +1 -1
  235. fides/ui-build/static/admin/taxonomy.html +1 -1
  236. fides/ui-build/static/admin/user-management/new.html +1 -1
  237. fides/ui-build/static/admin/user-management/profile/[id].html +1 -1
  238. fides/ui-build/static/admin/user-management.html +1 -1
  239. fides/ui-build/static/admin/_next/static/chunks/1995-0e4fc4f7b44ed72b.js +0 -1
  240. fides/ui-build/static/admin/_next/static/chunks/2780-8328de94968d05e4.js +0 -4
  241. fides/ui-build/static/admin/_next/static/chunks/3005-373de16453ed7eea.js +0 -1
  242. fides/ui-build/static/admin/_next/static/chunks/3320-87c75df57a47487e.js +0 -1
  243. fides/ui-build/static/admin/_next/static/chunks/3627-fb83adac32c128e6.js +0 -1
  244. fides/ui-build/static/admin/_next/static/chunks/3662-420d9807c30008ab.js +0 -1
  245. fides/ui-build/static/admin/_next/static/chunks/3949-9888699e2ac564c4.js +0 -1
  246. fides/ui-build/static/admin/_next/static/chunks/3967-845c902667e47c4f.js +0 -1
  247. fides/ui-build/static/admin/_next/static/chunks/3e38ba78-4487e45fd4ed2479.js +0 -2
  248. fides/ui-build/static/admin/_next/static/chunks/4481-ca8d2c75d634b6bc.js +0 -1
  249. fides/ui-build/static/admin/_next/static/chunks/4723-81d28e5be5c7b6d7.js +0 -1
  250. fides/ui-build/static/admin/_next/static/chunks/4833-a85bd5d25ebc40c4.js +0 -1
  251. fides/ui-build/static/admin/_next/static/chunks/5246-9fc6af1a6499e0a4.js +0 -1
  252. fides/ui-build/static/admin/_next/static/chunks/5574-a4047e826a8cd4c3.js +0 -1
  253. fides/ui-build/static/admin/_next/static/chunks/5834-bd9ed01c4ab2ef5c.js +0 -1
  254. fides/ui-build/static/admin/_next/static/chunks/5960-8895f51b30c35798.js +0 -1
  255. fides/ui-build/static/admin/_next/static/chunks/5973-67c7562997f7d5cb.js +0 -1
  256. fides/ui-build/static/admin/_next/static/chunks/6277-515c922445b8edc5.js +0 -1
  257. fides/ui-build/static/admin/_next/static/chunks/6954-6eb480eb132239c3.js +0 -1
  258. fides/ui-build/static/admin/_next/static/chunks/7044-9dc90893067f38ae.js +0 -1
  259. fides/ui-build/static/admin/_next/static/chunks/7980-2597c279c30fbcda.js +0 -1
  260. fides/ui-build/static/admin/_next/static/chunks/7c79804f.26834f883d5ad770.js +0 -1
  261. fides/ui-build/static/admin/_next/static/chunks/8837-cf26e5ca1ae5aaf5.js +0 -1
  262. fides/ui-build/static/admin/_next/static/chunks/9282-1a5a2f6f4d9ed586.js +0 -1
  263. fides/ui-build/static/admin/_next/static/chunks/9676.f4d5977a5f148797.js +0 -1
  264. fides/ui-build/static/admin/_next/static/chunks/9767-4c591bd478c72650.js +0 -1
  265. fides/ui-build/static/admin/_next/static/chunks/main-ce7f38a12ea8c223.js +0 -1
  266. fides/ui-build/static/admin/_next/static/chunks/pages/_app-9ceff88561dc1250.js +0 -909
  267. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-136bcbd20ac59bf5.js +0 -1
  268. fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure-e11ace4f273ebb47.js +0 -1
  269. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-942d68a88b321067.js +0 -1
  270. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-00526324583139ab.js +0 -1
  271. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-f0ab51d0d5f995de.js +0 -1
  272. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-2220c30c3863b5a5.js +0 -1
  273. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-ab9bc1a3640547db.js +0 -1
  274. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]-17ec8385bb1fa6d4.js +0 -1
  275. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-740824dfa6823e26.js +0 -1
  276. fides/ui-build/static/admin/_next/static/chunks/pages/dataset-5541ecd2f62711a5.js +0 -1
  277. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-b8eaa9b9d3832b30.js +0 -1
  278. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-a6448ce6ba7f0cf5.js +0 -1
  279. fides/ui-build/static/admin/_next/static/chunks/pages/integrations-1a6965d78bfb26b0.js +0 -1
  280. fides/ui-build/static/admin/_next/static/chunks/pages/messaging-f263e6bacf0f2d19.js +0 -1
  281. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-b96ee3fea3920fcf.js +0 -1
  282. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-1b0f9469cb65abfc.js +0 -1
  283. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-eebd2f4ead19cfd6.js +0 -1
  284. fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-a3fa3ad77730a03b.js +0 -1
  285. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-4769f55b138073f7.js +0 -1
  286. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-775f55b3f80cd452.js +0 -1
  287. fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-14def4ca3cc9cda5.js +0 -1
  288. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-21f26c0dc4d09e9f.js +0 -1
  289. fides/ui-build/static/admin/_next/static/css/957d0e4fea846ff0.css +0 -1
  290. fides/ui-build/static/admin/_next/static/rOPehh5NMs1hjog7nTw1q/_buildManifest.js +0 -1
  291. fides/ui-build/static/admin/_next/static/rOPehh5NMs1hjog7nTw1q/_ssgManifest.js +0 -1
  292. {ethyca_fides-2.57.1rc0.dist-info → ethyca_fides-2.57.2b0.dist-info}/LICENSE +0 -0
  293. {ethyca_fides-2.57.1rc0.dist-info → ethyca_fides-2.57.2b0.dist-info}/WHEEL +0 -0
  294. {ethyca_fides-2.57.1rc0.dist-info → ethyca_fides-2.57.2b0.dist-info}/entry_points.txt +0 -0
  295. {ethyca_fides-2.57.1rc0.dist-info → ethyca_fides-2.57.2b0.dist-info}/top_level.txt +0 -0
  296. /fides/ui-build/static/admin/_next/static/chunks/pages/user-management/{new-d6717378b42982d5.js → new-be690621a944bfe2.js} +0 -0
@@ -1,6 +1,7 @@
1
1
  from typing import Any, Dict, Optional
2
2
 
3
3
  import pydash
4
+ from loguru import logger
4
5
  from requests import Response
5
6
 
6
7
  from fides.api.schemas.saas.shared_schemas import SaaSRequestParams
@@ -15,6 +16,7 @@ class CursorPaginationStrategy(PaginationStrategy):
15
16
  def __init__(self, configuration: CursorPaginationConfiguration):
16
17
  self.cursor_param = configuration.cursor_param
17
18
  self.field = configuration.field
19
+ self.has_next = configuration.has_next
18
20
 
19
21
  def get_next_request(
20
22
  self,
@@ -27,11 +29,15 @@ class CursorPaginationStrategy(PaginationStrategy):
27
29
 
28
30
  # get the last object in the array and read the cursor value
29
31
  cursor = None
32
+ has_next = None
30
33
  object_list = (
31
34
  pydash.get(response.json(), data_path) if data_path else response.json()
32
35
  )
33
36
  if object_list and isinstance(object_list, list):
34
- cursor = pydash.get(object_list.pop(), self.field)
37
+ last_object = object_list.pop()
38
+ cursor = pydash.get(last_object, self.field)
39
+ if self.has_next:
40
+ has_next = pydash.get(last_object, self.has_next)
35
41
 
36
42
  # If the cursor value isn't found, try to find the value in response.json() using the field value
37
43
  if cursor is None:
@@ -41,6 +47,14 @@ class CursorPaginationStrategy(PaginationStrategy):
41
47
  if cursor is None:
42
48
  return None
43
49
 
50
+ if self.has_next and has_next is None:
51
+ has_next = pydash.get(response.json(), self.has_next)
52
+
53
+ if self.has_next:
54
+ logger.debug(f"The {self.has_next} field has a value of {has_next}")
55
+ if str(has_next).lower() != "true":
56
+ return None
57
+
44
58
  # add or replace cursor_param with new cursor value
45
59
  request_params.query_params[self.cursor_param] = cursor
46
60
 
@@ -43,7 +43,7 @@ class LinkPaginationStrategy(PaginationStrategy):
43
43
 
44
44
  if self.has_next:
45
45
  has_next = pydash.get(response.json(), self.has_next)
46
- logger.info(f"The {self.has_next} field has a value of {has_next}")
46
+ logger.debug(f"The {self.has_next} field has a value of {has_next}")
47
47
  if str(has_next).lower() != "true":
48
48
  return None
49
49
 
@@ -0,0 +1,193 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import IO, Any, Dict, Optional, Tuple
4
+
5
+ from boto3.s3.transfer import TransferConfig
6
+ from botocore.exceptions import ClientError, ParamValidationError
7
+ from fideslang.validation import AnyHttpUrlString
8
+ from loguru import logger
9
+
10
+ from fides.api.schemas.storage.storage import StorageSecrets
11
+ from fides.api.util.aws_util import get_s3_client
12
+ from fides.config import CONFIG
13
+
14
+ LARGE_FILE_THRESHOLD = 5 * 1024 * 1024 # 5 MB threshold for large files
15
+ LARGE_FILE_WARNING_TEXT = (
16
+ "File is too large to display directly. Please use the provided link to download."
17
+ )
18
+
19
+
20
+ def maybe_get_s3_client(
21
+ auth_method: str, storage_secrets: Dict[StorageSecrets, Any]
22
+ ) -> Any:
23
+ """
24
+ Returns an S3 client if the client can be created successfully, otherwise raises an exception.
25
+ """
26
+ try:
27
+ return get_s3_client(auth_method, storage_secrets)
28
+ except ClientError as e:
29
+ logger.error(
30
+ "Encountered error while uploading and generating link for S3 object: {}", e
31
+ )
32
+ raise e
33
+ except ParamValidationError as e:
34
+ raise ValueError(f"The parameters you provided are incorrect: {e}")
35
+
36
+
37
+ def create_presigned_url_for_s3(
38
+ s3_client: Any, bucket_name: str, file_key: str
39
+ ) -> AnyHttpUrlString:
40
+ """
41
+ Generates a presigned URL to share an S3 object
42
+
43
+ :param s3_client: s3 base client
44
+ :param bucket_name: string
45
+ :param file_key: string
46
+ :return: Presigned URL as string.
47
+ """
48
+ response = s3_client.generate_presigned_url(
49
+ "get_object",
50
+ Params={"Bucket": bucket_name, "Key": file_key},
51
+ ExpiresIn=CONFIG.security.subject_request_download_link_ttl_seconds,
52
+ )
53
+
54
+ # The response contains the presigned URL
55
+ return response
56
+
57
+
58
+ def generic_upload_to_s3( # pylint: disable=R0913
59
+ storage_secrets: Dict[StorageSecrets, Any],
60
+ bucket_name: str,
61
+ file_key: str,
62
+ auth_method: str,
63
+ document: IO[bytes],
64
+ size_threshold: int = LARGE_FILE_THRESHOLD, # 5 MB threshold
65
+ ) -> Optional[AnyHttpUrlString]:
66
+ """
67
+ Uploads arbitrary data to S3 returned from an access request.
68
+ Handles both small and large uploads.
69
+
70
+ :param storage_secrets: S3 storage secrets
71
+ :param bucket_name: Name of the S3 bucket
72
+ :param file_key: Key of the file in the bucket
73
+ :param auth_method: Authentication method for S3
74
+ :param document: File contents to upload
75
+ """
76
+ logger.info("Starting S3 Upload of {}", file_key)
77
+
78
+ s3_client = maybe_get_s3_client(auth_method, storage_secrets)
79
+
80
+ # Define a transfer configuration for multipart uploads
81
+ transfer_config = TransferConfig(
82
+ multipart_threshold=size_threshold,
83
+ multipart_chunksize=size_threshold,
84
+ )
85
+
86
+ # Use upload_fileobj for efficient uploads (handles both small and large files)
87
+ try:
88
+ # Use upload_fileobj for efficient uploads (handles both small and large files)
89
+ s3_client.upload_fileobj(
90
+ Fileobj=document,
91
+ Bucket=bucket_name,
92
+ Key=file_key,
93
+ Config=transfer_config,
94
+ )
95
+ except Exception as e:
96
+ logger.error(f"Failed to upload file {file_key} to bucket {bucket_name}: {e}")
97
+ raise e # Re-raise the exception if you want it to propagate
98
+
99
+ # Generate a presigned URL for the uploaded file
100
+ logger.info(f"Successfully uploaded file {file_key} to bucket {bucket_name}")
101
+ return create_presigned_url_for_s3(s3_client, bucket_name, file_key)
102
+
103
+
104
+ def generic_download_from_s3(
105
+ storage_secrets: Dict[StorageSecrets, Any],
106
+ bucket_name: str,
107
+ file_key: str,
108
+ auth_method: str,
109
+ ) -> Optional[AnyHttpUrlString]:
110
+ """
111
+ Returns a presigned URL for downloading an S3 object.
112
+
113
+ :param storage_secrets: S3 storage secrets
114
+ :param bucket_name: Name of the S3 bucket
115
+ :param file_key: Key of the file in the bucket
116
+ :param auth_method: Authentication method for S3
117
+ :return: A presigned URL (str) for the S3 object
118
+ """
119
+ logger.info("Generating presigned URL for downloading file: {}", file_key)
120
+
121
+ s3_client = maybe_get_s3_client(auth_method, storage_secrets)
122
+
123
+ # Generate a presigned URL for the file
124
+ return create_presigned_url_for_s3(s3_client, bucket_name, file_key)
125
+
126
+
127
+ def generic_retrieve_from_s3(
128
+ storage_secrets: Dict[StorageSecrets, Any],
129
+ bucket_name: str,
130
+ file_key: str,
131
+ auth_method: str,
132
+ size_threshold: int = LARGE_FILE_THRESHOLD, # 5 MB threshold
133
+ ) -> Tuple[str, AnyHttpUrlString]:
134
+ """
135
+ Retrieves arbitrary data from S3.
136
+ Returns the file contents and presigned url to download the file if the file is small,
137
+ or a warning message with the presigned URL to download the file if it is large.
138
+
139
+ :param storage_secrets: S3 storage secrets
140
+ :param bucket_name: Name of the S3 bucket
141
+ :param file_key: Key of the file in the bucket
142
+ :param auth_method: Authentication method for S3
143
+ :param size_threshold: Size threshold in bytes to determine small vs large files
144
+ :return: File contents (BytesIO) for small files or a presigned URL (str) for large files
145
+ """
146
+ logger.info("Starting S3 Retrieve of {}", file_key)
147
+
148
+ s3_client = maybe_get_s3_client(auth_method, storage_secrets)
149
+ try:
150
+ # Get the object metadata to check its size
151
+ head_response = s3_client.head_object(Bucket=bucket_name, Key=file_key)
152
+ file_size = head_response["ContentLength"]
153
+
154
+ if file_size <= size_threshold:
155
+ # File is small, return its contents and presigned url
156
+ response = s3_client.get_object(Bucket=bucket_name, Key=file_key)
157
+ return response["Body"].read(), create_presigned_url_for_s3(
158
+ s3_client, bucket_name, file_key
159
+ )
160
+
161
+ # File is large, return warning text and a presigned URL
162
+ return (
163
+ LARGE_FILE_WARNING_TEXT,
164
+ create_presigned_url_for_s3(s3_client, bucket_name, file_key),
165
+ )
166
+
167
+ except Exception as e:
168
+ logger.error("Encountered error while retrieving S3 object: {}", e)
169
+ raise e
170
+
171
+
172
+ def generic_delete_from_s3(
173
+ storage_secrets: Dict[StorageSecrets, Any],
174
+ bucket_name: str,
175
+ file_key: str,
176
+ auth_method: str,
177
+ ) -> None:
178
+ """
179
+ Deletes arbitrary data from s3
180
+
181
+ :param storage_secrets: S3 storage secrets
182
+ :param bucket_name: Name of the S3 bucket
183
+ :param file_key: Key of the file in the bucket
184
+ :param auth_method: Authentication method for S3
185
+ """
186
+ logger.info("Starting S3 Delete of {}", file_key)
187
+
188
+ s3_client = maybe_get_s3_client(auth_method, storage_secrets)
189
+ try:
190
+ s3_client.delete_object(Bucket=bucket_name, Key=file_key)
191
+ except Exception as e:
192
+ logger.error("Encountered error while deleting s3 object: {}", e)
193
+ raise e
@@ -0,0 +1,10 @@
1
+ import os
2
+
3
+ LOCAL_FIDES_UPLOAD_DIRECTORY = "fides_uploads"
4
+
5
+
6
+ def get_local_filename(file_key: str) -> str:
7
+ """Verifies that the local storage directory exists"""
8
+ if not os.path.exists(LOCAL_FIDES_UPLOAD_DIRECTORY):
9
+ os.makedirs(LOCAL_FIDES_UPLOAD_DIRECTORY)
10
+ return f"{LOCAL_FIDES_UPLOAD_DIRECTORY}/{file_key}"
@@ -1,11 +1,10 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import json
4
- import os
5
4
  import secrets
6
5
  import zipfile
7
6
  from io import BytesIO
8
- from typing import Any, Dict, Optional, Union
7
+ from typing import TYPE_CHECKING, Any, Dict, Optional, Union
9
8
 
10
9
  import pandas as pd
11
10
  from botocore.exceptions import ClientError, ParamValidationError
@@ -13,11 +12,18 @@ from fideslang.validation import AnyHttpUrlString
13
12
  from loguru import logger
14
13
 
15
14
  from fides.api.cryptography.cryptographic_util import bytes_to_b64_str
16
- from fides.api.models.privacy_request import PrivacyRequest
17
15
  from fides.api.schemas.storage.storage import ResponseFormat, StorageSecrets
18
16
  from fides.api.service.privacy_request.dsr_package.dsr_report_builder import (
19
17
  DsrReportBuilder,
20
18
  )
19
+ from fides.api.service.storage.s3 import (
20
+ create_presigned_url_for_s3,
21
+ generic_upload_to_s3,
22
+ )
23
+ from fides.api.service.storage.util import (
24
+ LOCAL_FIDES_UPLOAD_DIRECTORY,
25
+ get_local_filename,
26
+ )
21
27
  from fides.api.util.aws_util import get_s3_client
22
28
  from fides.api.util.cache import get_cache, get_encryption_cache_key
23
29
  from fides.api.util.encryption.aes_gcm_encryption_scheme import (
@@ -26,7 +32,8 @@ from fides.api.util.encryption.aes_gcm_encryption_scheme import (
26
32
  from fides.api.util.storage_util import storage_json_encoder
27
33
  from fides.config import CONFIG
28
34
 
29
- LOCAL_FIDES_UPLOAD_DIRECTORY = "fides_uploads"
35
+ if TYPE_CHECKING:
36
+ from fides.api.models.privacy_request import PrivacyRequest
30
37
 
31
38
 
32
39
  def encrypt_access_request_results(data: Union[str, bytes], request_id: str) -> str:
@@ -101,105 +108,6 @@ def write_to_in_memory_buffer(
101
108
  raise NotImplementedError(f"No handling for response format {resp_format}.")
102
109
 
103
110
 
104
- def create_presigned_url_for_s3(
105
- s3_client: Any, bucket_name: str, file_key: str
106
- ) -> AnyHttpUrlString:
107
- """ "Generate a presigned URL to share an S3 object
108
-
109
- :param s3_client: s3 base client
110
- :param bucket_name: string
111
- :param file_key: string
112
- :return: Presigned URL as string.
113
- """
114
- response = s3_client.generate_presigned_url(
115
- "get_object",
116
- Params={"Bucket": bucket_name, "Key": file_key},
117
- ExpiresIn=CONFIG.security.subject_request_download_link_ttl_seconds,
118
- )
119
-
120
- # The response contains the presigned URL
121
- return response
122
-
123
-
124
- def generic_upload_to_s3( # pylint: disable=R0913
125
- storage_secrets: Dict[StorageSecrets, Any],
126
- bucket_name: str,
127
- file_key: str,
128
- auth_method: str,
129
- document: bytes,
130
- ) -> Optional[AnyHttpUrlString]:
131
- """Uploads arbitrary data to s3 returned from an access request"""
132
- logger.info("Starting S3 Upload of {}", file_key)
133
-
134
- try:
135
- s3_client = get_s3_client(auth_method, storage_secrets)
136
- try:
137
- s3_client.put_object(Bucket=bucket_name, Key=file_key, Body=document)
138
- except Exception as e:
139
- logger.error("Encountered error while uploading s3 object: {}", e)
140
- raise e
141
-
142
- presigned_url: AnyHttpUrlString = create_presigned_url_for_s3(
143
- s3_client, bucket_name, file_key
144
- )
145
-
146
- return presigned_url
147
- except ClientError as e:
148
- logger.error(
149
- "Encountered error while uploading and generating link for s3 object: {}", e
150
- )
151
- raise e
152
- except ParamValidationError as e:
153
- raise ValueError(f"The parameters you provided are incorrect: {e}")
154
-
155
-
156
- def generic_retrieve_from_s3(
157
- storage_secrets: Dict[StorageSecrets, Any],
158
- bucket_name: str,
159
- file_key: str,
160
- auth_method: str,
161
- ) -> Optional[bytes]:
162
- """Retrieves arbitrary data from s3"""
163
- logger.info("Starting S3 Retrieve of {}", file_key)
164
-
165
- try:
166
- s3_client = get_s3_client(auth_method, storage_secrets)
167
- try:
168
- response = s3_client.get_object(Bucket=bucket_name, Key=file_key)
169
- return response["Body"].read()
170
- except Exception as e:
171
- logger.error("Encountered error while retrieving s3 object: {}", e)
172
- raise e
173
- except ClientError as e:
174
- logger.error("Encountered error while retrieving s3 object: {}", e)
175
- raise e
176
- except ParamValidationError as e:
177
- raise ValueError(f"The parameters you provided are incorrect: {e}")
178
-
179
-
180
- def generic_delete_from_s3(
181
- storage_secrets: Dict[StorageSecrets, Any],
182
- bucket_name: str,
183
- file_key: str,
184
- auth_method: str,
185
- ) -> None:
186
- """Deletes arbitrary data from s3"""
187
- logger.info("Starting S3 Delete of {}", file_key)
188
-
189
- try:
190
- s3_client = get_s3_client(auth_method, storage_secrets)
191
- try:
192
- s3_client.delete_object(Bucket=bucket_name, Key=file_key)
193
- except Exception as e:
194
- logger.error("Encountered error while deleting s3 object: {}", e)
195
- raise e
196
- except ClientError as e:
197
- logger.error("Encountered error while deleting s3 object: {}", e)
198
- raise e
199
- except ParamValidationError as e:
200
- raise ValueError(f"The parameters you provided are incorrect: {e}")
201
-
202
-
203
111
  def upload_to_s3( # pylint: disable=R0913
204
112
  storage_secrets: Dict[StorageSecrets, Any],
205
113
  data: Dict,
@@ -207,7 +115,7 @@ def upload_to_s3( # pylint: disable=R0913
207
115
  file_key: str,
208
116
  resp_format: str,
209
117
  privacy_request: Optional[PrivacyRequest],
210
- document: Optional[bytes],
118
+ document: Optional[BytesIO],
211
119
  auth_method: str,
212
120
  ) -> Optional[AnyHttpUrlString]:
213
121
  """Uploads arbitrary data to s3 returned from an access request"""
@@ -249,13 +157,6 @@ def upload_to_s3( # pylint: disable=R0913
249
157
  raise ValueError(f"The parameters you provided are incorrect: {e}")
250
158
 
251
159
 
252
- def get_local_filename(file_key: str) -> str:
253
- """Verifies that the local storage directory exists"""
254
- if not os.path.exists(LOCAL_FIDES_UPLOAD_DIRECTORY):
255
- os.makedirs(LOCAL_FIDES_UPLOAD_DIRECTORY)
256
- return f"{LOCAL_FIDES_UPLOAD_DIRECTORY}/{file_key}"
257
-
258
-
259
160
  def upload_to_local(
260
161
  data: Dict,
261
162
  file_key: str,
fides/config/__init__.py CHANGED
@@ -133,7 +133,7 @@ def censor_config(config: Union[FidesConfig, Dict[str, Any]]) -> Dict[str, Any]:
133
133
  data = as_dict[key]
134
134
  filtered[key] = {}
135
135
  for field in value:
136
- if field in data:
136
+ if data and field in data:
137
137
  filtered[key][field] = data[field]
138
138
 
139
139
  return filtered
@@ -45,6 +45,8 @@ languages:
45
45
  name: Italian
46
46
  - id: ja
47
47
  name: Japanese
48
+ - id: ko
49
+ name: Korean
48
50
  - id: lt
49
51
  name: Lithuanian
50
52
  - id: lv