ethyca-fides 2.64.2rc0__py2.py3-none-any.whl → 2.64.3b0__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of ethyca-fides might be problematic. Click here for more details.

Files changed (285) hide show
  1. {ethyca_fides-2.64.2rc0.dist-info → ethyca_fides-2.64.3b0.dist-info}/METADATA +3 -3
  2. {ethyca_fides-2.64.2rc0.dist-info → ethyca_fides-2.64.3b0.dist-info}/RECORD +237 -245
  3. fides/_version.py +3 -3
  4. fides/api/alembic/migrations/versions/41a634d8c669_manual_task_restrict_deletes.py +257 -0
  5. fides/api/alembic/migrations/versions/6a76a1fa4f3f_add_manual_task_instance_table.py +256 -0
  6. fides/api/alembic/migrations/versions/aadfe83c5644_add_manual_task_to_connectiontype_enum.py +46 -0
  7. fides/api/api/v1/api.py +2 -0
  8. fides/api/api/v1/endpoints/partitioning_endpoints.py +108 -0
  9. fides/api/db/base.py +6 -3
  10. fides/api/db/database.py +27 -2
  11. fides/api/graph/config.py +16 -9
  12. fides/api/models/attachment.py +15 -3
  13. fides/api/models/comment.py +23 -5
  14. fides/api/models/connectionconfig.py +11 -0
  15. fides/api/models/db_cache.py +1 -1
  16. fides/api/models/detection_discovery/core.py +15 -15
  17. fides/api/models/fides_user_respondent_email_verification.py +27 -2
  18. fides/api/models/manual_task.py +965 -0
  19. fides/api/models/tcf_publisher_restrictions.py +16 -4
  20. fides/api/schemas/partitioning/__init__.py +17 -0
  21. fides/api/schemas/partitioning/bigquery_time_based_partitioning.py +31 -0
  22. fides/api/schemas/partitioning/time_based_partitioning.py +1376 -0
  23. fides/api/service/connectors/query_configs/bigquery_query_config.py +44 -22
  24. fides/api/service/connectors/query_configs/query_config.py +5 -2
  25. fides/api/util/connection_util.py +25 -2
  26. fides/common/api/v1/urn_registry.py +4 -0
  27. fides/ui-build/static/admin/404.html +1 -1
  28. fides/ui-build/static/admin/_next/static/chunks/{1040-af383f535c11eb24.js → 1040-3def3c62138371bb.js} +1 -1
  29. fides/ui-build/static/admin/_next/static/chunks/1169-76bbada4f3d16538.js +1 -0
  30. fides/ui-build/static/admin/_next/static/chunks/1807-3beab149351d5ded.js +1 -0
  31. fides/ui-build/static/admin/_next/static/chunks/{1817-b4688ba5042ec687.js → 1817-a3813209d7a6d28d.js} +1 -1
  32. fides/ui-build/static/admin/_next/static/chunks/{2921-aabf41bf3d7573f9.js → 2921-81a48418f77bc9a7.js} +1 -1
  33. fides/ui-build/static/admin/_next/static/chunks/{3450-f6fc4ed04a63935f.js → 3450-3a1f0e80ead8d1b0.js} +1 -1
  34. fides/ui-build/static/admin/_next/static/chunks/3615-5e2d062d684b8fa1.js +1 -0
  35. fides/ui-build/static/admin/_next/static/chunks/{3855-0dec3e7d9e886550.js → 3855-b85ad4e52433d519.js} +1 -1
  36. fides/ui-build/static/admin/_next/static/chunks/{3872-ffa16c2df7ef0ab6.js → 3872-09f81435f7905d76.js} +1 -1
  37. fides/ui-build/static/admin/_next/static/chunks/{3923-b0fb0989671407b7.js → 3923-565a852f322fdadc.js} +1 -1
  38. fides/ui-build/static/admin/_next/static/chunks/{401-6721f8bcb14a6537.js → 401-c3f586a23a061526.js} +1 -1
  39. fides/ui-build/static/admin/_next/static/chunks/{409-037cfc3f096150f0.js → 409-e0d39af1d9ce8ff2.js} +1 -1
  40. fides/ui-build/static/admin/_next/static/chunks/4121-de4ca969faf2b9f4.js +1 -0
  41. fides/ui-build/static/admin/_next/static/chunks/{4230-18f4849f9db58a08.js → 4230-d80ae2430aca784a.js} +1 -1
  42. fides/ui-build/static/admin/_next/static/chunks/{431-f72599f01b98f07d.js → 431-c74dab231c8ac968.js} +1 -1
  43. fides/ui-build/static/admin/_next/static/chunks/{5309-4511df9708d5a63c.js → 5309-0e44dbd914896514.js} +1 -1
  44. fides/ui-build/static/admin/_next/static/chunks/{5574-3cd33b3a6c937899.js → 5574-917c5ff63d222308.js} +1 -1
  45. fides/ui-build/static/admin/_next/static/chunks/570-c99f07161bd339cd.js +1 -0
  46. fides/ui-build/static/admin/_next/static/chunks/6084-40d5d94561a6093e.js +1 -0
  47. fides/ui-build/static/admin/_next/static/chunks/6662-6a915300505fd9c0.js +1 -0
  48. fides/ui-build/static/admin/_next/static/chunks/{6853-a4097260e402980e.js → 6853-8d0a099f61c758d1.js} +1 -1
  49. fides/ui-build/static/admin/_next/static/chunks/{6882-3cc73d407a088d7d.js → 6882-13d6f8d95b1e404f.js} +1 -1
  50. fides/ui-build/static/admin/_next/static/chunks/{6954-8bac07b8278ded5c.js → 6954-882b87698c5ed4fb.js} +1 -1
  51. fides/ui-build/static/admin/_next/static/chunks/7476-aaf8970dbbbe4864.js +1 -0
  52. fides/ui-build/static/admin/_next/static/chunks/7630-c558dc3a199a633d.js +1 -0
  53. fides/ui-build/static/admin/_next/static/chunks/787-9c751615f5816094.js +1 -0
  54. fides/ui-build/static/admin/_next/static/chunks/{79-5670e31eb65d0a53.js → 79-3f742fe4efd9893f.js} +1 -1
  55. fides/ui-build/static/admin/_next/static/chunks/{796-9a6b13c838e25538.js → 796-83a8bbdcdb67f2ba.js} +1 -1
  56. fides/ui-build/static/admin/_next/static/chunks/827-c6fe34fb336467ae.js +1 -0
  57. fides/ui-build/static/admin/_next/static/chunks/9014-eeae6f581158e645.js +1 -0
  58. fides/ui-build/static/admin/_next/static/chunks/{9046-fdf53cc7e926a8c1.js → 9046-6995482a030e323c.js} +1 -1
  59. fides/ui-build/static/admin/_next/static/chunks/{905-742074a074be1055.js → 905-ffdbd0b14167e8bd.js} +1 -1
  60. fides/ui-build/static/admin/_next/static/chunks/{9226-50427ff861ffa8bf.js → 9226-8a3be36ad1a9c1e7.js} +1 -1
  61. fides/ui-build/static/admin/_next/static/chunks/{9392.25024e070026343d.js → 9392.9a948112de74781b.js} +1 -1
  62. fides/ui-build/static/admin/_next/static/chunks/{9676.e60a53f1f5890847.js → 9676.cc515c853b8cf578.js} +1 -1
  63. fides/ui-build/static/admin/_next/static/chunks/9767-1dca308466dce863.js +1 -0
  64. fides/ui-build/static/admin/_next/static/chunks/9826-303b14ef4fc7ab4a.js +1 -0
  65. fides/ui-build/static/admin/_next/static/chunks/{9951-7de52d41dc1319f7.js → 9951-b5b77bfcc8efb493.js} +1 -1
  66. fides/ui-build/static/admin/_next/static/chunks/pages/{404-ac2f0844e5c4b4cd.js → 404-488f8f03fe0ffbc7.js} +1 -1
  67. fides/ui-build/static/admin/_next/static/chunks/pages/{_app-8310662c216e8f04.js → _app-030b20295bb61f96.js} +92 -89
  68. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{manual-0a5f2310ce6b1059.js → manual-1e88ac28bc7a41b6.js} +1 -1
  69. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{multiple-00cb904825aad7e3.js → multiple-f2c9451fffaaa529.js} +1 -1
  70. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-a8e0bc7b6674f47e.js +1 -0
  71. fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-fa7305b88c1afd20.js → add-vendors-b17d160147365cf3.js} +1 -1
  72. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{configure-f140ec9d8e8a0f7a.js → configure-8e168d78acdf0cfe.js} +1 -1
  73. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{[id]-0edb7c92518e7d21.js → [id]-5ca2467de7986929.js} +1 -1
  74. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{new-a0039f216fb3eb93.js → new-06bb3b0bf097fcdb.js} +1 -1
  75. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-experience-d8d926f0735a2546.js → privacy-experience-3c11fecc2797ab68.js} +1 -1
  76. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-5c949f2e3cef2398.js → [id]-92bc6c7b82a679b4.js} +1 -1
  77. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-130155cfb4a0bcc7.js → new-a3da3243526b7ecb.js} +1 -1
  78. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-notices-1135ad8924d32c36.js → privacy-notices-b7d82386e7521041.js} +1 -1
  79. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-776855e370414beb.js → properties-20a2029b7e7fc895.js} +1 -1
  80. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{reporting-21c23f75ff1135d9.js → reporting-0ce299131db4c3e5.js} +1 -1
  81. fides/ui-build/static/admin/_next/static/chunks/pages/{consent-4d5ea70a77df1bb8.js → consent-9f6a7a231bba17b7.js} +1 -1
  82. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/{[resourceUrn]-c623d6f1a61c8ea9.js → [resourceUrn]-11d52f1570759c4d.js} +1 -1
  83. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/{[projectUrn]-030ee304cbe5e530.js → [projectUrn]-fd705968b357e99a.js} +1 -1
  84. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{projects-cfac259a30641e68.js → projects-45b585deee0b2371.js} +1 -1
  85. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/{[resourceUrn]-57bd5cdf784f059f.js → [resourceUrn]-b83afa5565d0c84e.js} +1 -1
  86. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{resources-51d99174c8006eb5.js → resources-d8db234a44a2ddf4.js} +1 -1
  87. fides/ui-build/static/admin/_next/static/chunks/pages/{data-catalog-132e54310cd047af.js → data-catalog-2810fa2b519a076b.js} +1 -1
  88. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/{[systemId]-c948f93c833d4358.js → [systemId]-e861699a8866c64b.js} +1 -1
  89. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/{[monitorId]-333f53caab751428.js → [monitorId]-5dd2fbf33e228f9c.js} +1 -1
  90. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{action-center-27205f8457a1ecb0.js → action-center-806cae6bc128cd38.js} +1 -1
  91. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{activity-20a1043f6a06198f.js → activity-487285bd5eca2595.js} +1 -1
  92. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/detection/{[resourceUrn]-06edce289876dea1.js → [resourceUrn]-393e20924c83373e.js} +1 -1
  93. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{detection-faf326a6200637d0.js → detection-8733807dad4bc96e.js} +1 -1
  94. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/{[resourceUrn]-64acf269256ee74f.js → [resourceUrn]-14bd7500362ff224.js} +1 -1
  95. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{discovery-8c3e4be6d36da66d.js → discovery-9e7dfd5a6acc2e8f.js} +1 -1
  96. fides/ui-build/static/admin/_next/static/chunks/pages/{datamap-fb50de22f83edd4a.js → datamap-c9509d72c538d22b.js} +1 -1
  97. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/{[...subfieldNames]-41ab27c4195cfa93.js → [...subfieldNames]-4e8a436297a055b2.js} +1 -1
  98. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/{[collectionName]-6e2caba24b3e78c2.js → [collectionName]-6ce02295bb7f5b6d.js} +1 -1
  99. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/{[datasetId]-904d43e31157aa55.js → [datasetId]-9eaa907437fde063.js} +1 -1
  100. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-55243db34cf77b7e.js +1 -0
  101. fides/ui-build/static/admin/_next/static/chunks/pages/{dataset-5a24f549246605b2.js → dataset-b328595abf20ea5d.js} +1 -1
  102. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{[id]-4a33dd0371dbaebc.js → [id]-81ab412e337d2888.js} +1 -1
  103. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{new-e88509346b2d2851.js → new-34dfc172165dbb1c.js} +1 -1
  104. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-cdb77886d7fd4f44.js +1 -0
  105. fides/ui-build/static/admin/_next/static/chunks/pages/{index-1adb6bcb71701ac2.js → index-de954b741cbca022.js} +1 -1
  106. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/{[id]-41c4f321da3c6169.js → [id]-16dd6eff8f5dcc81.js} +1 -1
  107. fides/ui-build/static/admin/_next/static/chunks/pages/integrations-40a3cd14264796e2.js +1 -0
  108. fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{[id]-9b4d1d61c7c97509.js → [id]-42edcab11e8b5c3c.js} +1 -1
  109. fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{add-template-f8fd4795e260887c.js → add-template-333e54ac8c3ad57a.js} +1 -1
  110. fides/ui-build/static/admin/_next/static/chunks/pages/{messaging-aa744ae8b61e5ff2.js → messaging-8e1e6f3782983225.js} +1 -1
  111. fides/ui-build/static/admin/_next/static/chunks/pages/poc/ant-components-3f62dd959a039fe9.js +1 -0
  112. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{AntForm-47e947c02ae90fd0.js → AntForm-920338760f5a71b5.js} +1 -1
  113. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikAntFormItem-24f9a44512ce8827.js → FormikAntFormItem-7462fb387a9de3f8.js} +1 -1
  114. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikControlled-e567a69f8c37fb9a.js → FormikControlled-6148fce7a4e2e9ca.js} +1 -1
  115. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikField-35a33f9c7def2220.js → FormikField-30efd8c937bf19e4.js} +1 -1
  116. fides/ui-build/static/admin/_next/static/chunks/pages/poc/{forms-780e18dde8e38099.js → forms-c44de83e0952d1e0.js} +1 -1
  117. fides/ui-build/static/admin/_next/static/chunks/pages/poc/table-migration-7852aa60090c8c9a.js +1 -0
  118. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-11dd6152bf6607cc.js +1 -0
  119. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-c50c2ee7d7d2a585.js +1 -0
  120. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-282de19599d67aaf.js +1 -0
  121. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{configure-1a1aa83a3f88844c.js → configure-1d981663e1a84166.js} +1 -1
  122. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-3f962ade5df86380.js +1 -0
  123. fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-19737d4f21aadbee.js → [id]-b08a69b1c460c7fe.js} +1 -1
  124. fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-9ccb295110feee20.js → add-property-a5d1c65ec21df69d.js} +1 -1
  125. fides/ui-build/static/admin/_next/static/chunks/pages/{properties-3a1037a2e036212a.js → properties-3a75c6ed8308d126.js} +1 -1
  126. fides/ui-build/static/admin/_next/static/chunks/pages/reporting/{datamap-959d2a35ca015976.js → datamap-dda59a7105ee609b.js} +1 -1
  127. fides/ui-build/static/admin/_next/static/chunks/pages/settings/about/{alpha-965cc21889b25e44.js → alpha-6773158ba6ccf4b0.js} +1 -1
  128. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{about-0e1c381d488a7ada.js → about-2e046d177d52465c.js} +1 -1
  129. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/{[purpose_id]-1ad018d87c79a9d6.js → [purpose_id]-91f2ec72f9654cbd.js} +1 -1
  130. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-0a87f29768425a37.js +1 -0
  131. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{custom-fields-9d5310145cbdc8ba.js → custom-fields-94d97e3eb964c494.js} +1 -1
  132. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domain-records-0b44b2b224077dcd.js → domain-records-2c7ecff0a8a74c42.js} +1 -1
  133. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-b9e77c75c6b77c88.js +1 -0
  134. fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-bb60c397a03558d8.js +1 -0
  135. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-811dadb489f23d7d.js → locations-8d4383584c72eb5a.js} +1 -1
  136. fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-4b835393f5274379.js +1 -0
  137. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{regulations-54f142bc3e4c95ba.js → regulations-29892065d99ff113.js} +1 -1
  138. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-9669fa6b20545530.js +1 -0
  139. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/{[id]-6eb886e7b7e6785b.js → [id]-8fa8a2f238e08791.js} +1 -1
  140. fides/ui-build/static/admin/_next/static/chunks/pages/{systems-7b71274334c559a4.js → systems-acdbdd3dfd21162f.js} +1 -1
  141. fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-c9510a1eb612323d.js +1 -0
  142. fides/ui-build/static/admin/_next/static/chunks/pages/user-management/{new-b124cc24b930c9e1.js → new-a2524414e968f862.js} +1 -1
  143. fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/{[id]-75d41fde668b9025.js → [id]-87ed17fa1d9f8f72.js} +1 -1
  144. fides/ui-build/static/admin/_next/static/chunks/pages/{user-management-dd43755b687c09a7.js → user-management-6b4e0764bb8816b8.js} +1 -1
  145. fides/ui-build/static/admin/_next/static/chunks/webpack-da78c536f3d86d06.js +1 -0
  146. fides/ui-build/static/admin/_next/static/css/{c693338e3bc8dcc6.css → 1994066ec907b7df.css} +1 -1
  147. fides/ui-build/static/admin/_next/static/ezJVaZ_Oi_0J2-wPEOvj1/_buildManifest.js +1 -0
  148. fides/ui-build/static/admin/add-systems/manual.html +1 -1
  149. fides/ui-build/static/admin/add-systems/multiple.html +1 -1
  150. fides/ui-build/static/admin/add-systems.html +1 -1
  151. fides/ui-build/static/admin/consent/configure/add-vendors.html +1 -1
  152. fides/ui-build/static/admin/consent/configure.html +1 -1
  153. fides/ui-build/static/admin/consent/privacy-experience/[id].html +1 -1
  154. fides/ui-build/static/admin/consent/privacy-experience/new.html +1 -1
  155. fides/ui-build/static/admin/consent/privacy-experience.html +1 -1
  156. fides/ui-build/static/admin/consent/privacy-notices/[id].html +1 -1
  157. fides/ui-build/static/admin/consent/privacy-notices/new.html +1 -1
  158. fides/ui-build/static/admin/consent/privacy-notices.html +1 -1
  159. fides/ui-build/static/admin/consent/properties.html +1 -1
  160. fides/ui-build/static/admin/consent/reporting.html +1 -1
  161. fides/ui-build/static/admin/consent.html +1 -1
  162. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn].html +1 -1
  163. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn].html +1 -1
  164. fides/ui-build/static/admin/data-catalog/[systemId]/projects.html +1 -1
  165. fides/ui-build/static/admin/data-catalog/[systemId]/resources/[resourceUrn].html +1 -1
  166. fides/ui-build/static/admin/data-catalog/[systemId]/resources.html +1 -1
  167. fides/ui-build/static/admin/data-catalog.html +1 -1
  168. fides/ui-build/static/admin/data-discovery/action-center/[monitorId]/[systemId].html +1 -1
  169. fides/ui-build/static/admin/data-discovery/action-center/[monitorId].html +1 -1
  170. fides/ui-build/static/admin/data-discovery/action-center.html +1 -1
  171. fides/ui-build/static/admin/data-discovery/activity.html +1 -1
  172. fides/ui-build/static/admin/data-discovery/detection/[resourceUrn].html +1 -1
  173. fides/ui-build/static/admin/data-discovery/detection.html +1 -1
  174. fides/ui-build/static/admin/data-discovery/discovery/[resourceUrn].html +1 -1
  175. fides/ui-build/static/admin/data-discovery/discovery.html +1 -1
  176. fides/ui-build/static/admin/datamap.html +1 -1
  177. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName]/[...subfieldNames].html +1 -1
  178. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName].html +1 -1
  179. fides/ui-build/static/admin/dataset/[datasetId].html +1 -1
  180. fides/ui-build/static/admin/dataset/new.html +1 -1
  181. fides/ui-build/static/admin/dataset.html +1 -1
  182. fides/ui-build/static/admin/datastore-connection/[id].html +1 -1
  183. fides/ui-build/static/admin/datastore-connection/new.html +1 -1
  184. fides/ui-build/static/admin/datastore-connection.html +1 -1
  185. fides/ui-build/static/admin/index.html +1 -1
  186. fides/ui-build/static/admin/integrations/[id].html +1 -1
  187. fides/ui-build/static/admin/integrations.html +1 -1
  188. fides/ui-build/static/admin/lib/fides-ext-gpp.js +1 -1
  189. fides/ui-build/static/admin/lib/fides-headless.js +1 -1
  190. fides/ui-build/static/admin/lib/fides-preview.js +1 -1
  191. fides/ui-build/static/admin/lib/fides-tcf.js +2 -2
  192. fides/ui-build/static/admin/lib/fides.js +2 -2
  193. fides/ui-build/static/admin/login/[provider].html +1 -1
  194. fides/ui-build/static/admin/login.html +1 -1
  195. fides/ui-build/static/admin/messaging/[id].html +1 -1
  196. fides/ui-build/static/admin/messaging/add-template.html +1 -1
  197. fides/ui-build/static/admin/messaging.html +1 -1
  198. fides/ui-build/static/admin/poc/ant-components.html +1 -1
  199. fides/ui-build/static/admin/poc/form-experiments/AntForm.html +1 -1
  200. fides/ui-build/static/admin/poc/form-experiments/FormikAntFormItem.html +1 -1
  201. fides/ui-build/static/admin/poc/form-experiments/FormikControlled.html +1 -1
  202. fides/ui-build/static/admin/poc/form-experiments/FormikField.html +1 -1
  203. fides/ui-build/static/admin/poc/form-experiments/FormikSpreadField.html +1 -1
  204. fides/ui-build/static/admin/poc/forms.html +1 -1
  205. fides/ui-build/static/admin/poc/table-migration.html +1 -1
  206. fides/ui-build/static/admin/privacy-requests/[id].html +1 -1
  207. fides/ui-build/static/admin/privacy-requests/configure/messaging.html +1 -1
  208. fides/ui-build/static/admin/privacy-requests/configure/storage.html +1 -1
  209. fides/ui-build/static/admin/privacy-requests/configure.html +1 -1
  210. fides/ui-build/static/admin/privacy-requests.html +1 -1
  211. fides/ui-build/static/admin/properties/[id].html +1 -1
  212. fides/ui-build/static/admin/properties/add-property.html +1 -1
  213. fides/ui-build/static/admin/properties.html +1 -1
  214. fides/ui-build/static/admin/reporting/datamap.html +1 -1
  215. fides/ui-build/static/admin/settings/about/alpha.html +1 -1
  216. fides/ui-build/static/admin/settings/about.html +1 -1
  217. fides/ui-build/static/admin/settings/consent/[configuration_id]/[purpose_id].html +1 -1
  218. fides/ui-build/static/admin/settings/consent.html +1 -1
  219. fides/ui-build/static/admin/settings/custom-fields.html +1 -1
  220. fides/ui-build/static/admin/settings/domain-records.html +1 -1
  221. fides/ui-build/static/admin/settings/domains.html +1 -1
  222. fides/ui-build/static/admin/settings/email-templates.html +1 -1
  223. fides/ui-build/static/admin/settings/locations.html +1 -1
  224. fides/ui-build/static/admin/settings/organization.html +1 -1
  225. fides/ui-build/static/admin/settings/regulations.html +1 -1
  226. fides/ui-build/static/admin/systems/configure/[id]/test-datasets.html +1 -1
  227. fides/ui-build/static/admin/systems/configure/[id].html +1 -1
  228. fides/ui-build/static/admin/systems.html +1 -1
  229. fides/ui-build/static/admin/taxonomy.html +1 -1
  230. fides/ui-build/static/admin/user-management/new.html +1 -1
  231. fides/ui-build/static/admin/user-management/profile/[id].html +1 -1
  232. fides/ui-build/static/admin/user-management.html +1 -1
  233. fides/api/models/manual_tasks/__init__.py +0 -14
  234. fides/api/models/manual_tasks/manual_task.py +0 -120
  235. fides/api/models/manual_tasks/manual_task_config.py +0 -136
  236. fides/api/models/manual_tasks/manual_task_log.py +0 -104
  237. fides/api/schemas/manual_tasks/__init__.py +0 -0
  238. fides/api/schemas/manual_tasks/manual_task_config.py +0 -311
  239. fides/api/schemas/manual_tasks/manual_task_schemas.py +0 -79
  240. fides/api/schemas/manual_tasks/manual_task_status.py +0 -151
  241. fides/service/manual_tasks/__init__.py +0 -0
  242. fides/service/manual_tasks/manual_task_config_service.py +0 -370
  243. fides/service/manual_tasks/manual_task_service.py +0 -294
  244. fides/service/manual_tasks/utils.py +0 -185
  245. fides/ui-build/static/admin/_next/static/chunks/1100-2dfb464ef0359d6d.js +0 -1
  246. fides/ui-build/static/admin/_next/static/chunks/2430-b480401d44c55416.js +0 -1
  247. fides/ui-build/static/admin/_next/static/chunks/3505-a79256cd851dfab4.js +0 -1
  248. fides/ui-build/static/admin/_next/static/chunks/3513-24db696153a0778b.js +0 -1
  249. fides/ui-build/static/admin/_next/static/chunks/3670-2abd9b2f17770872.js +0 -1
  250. fides/ui-build/static/admin/_next/static/chunks/3983-17ae9c232bddc413.js +0 -1
  251. fides/ui-build/static/admin/_next/static/chunks/4060-cb74476245af456e.js +0 -1
  252. fides/ui-build/static/admin/_next/static/chunks/4121-8a791c8cc79d28c4.js +0 -1
  253. fides/ui-build/static/admin/_next/static/chunks/4481-f597a7cf03f8c9e1.js +0 -1
  254. fides/ui-build/static/admin/_next/static/chunks/6060-cb1ab5be7067bf7b.js +0 -4
  255. fides/ui-build/static/admin/_next/static/chunks/6277-32adfa799bfd1616.js +0 -1
  256. fides/ui-build/static/admin/_next/static/chunks/6659-b2088f525bf13c17.js +0 -1
  257. fides/ui-build/static/admin/_next/static/chunks/6662-0ce35f1a7a4d07b0.js +0 -1
  258. fides/ui-build/static/admin/_next/static/chunks/69-9952d261ca57275e.js +0 -1
  259. fides/ui-build/static/admin/_next/static/chunks/7553-a95939c32d54b5b7.js +0 -1
  260. fides/ui-build/static/admin/_next/static/chunks/8433-0acacfca722ce475.js +0 -1
  261. fides/ui-build/static/admin/_next/static/chunks/9767-118e4abca85bbd97.js +0 -1
  262. fides/ui-build/static/admin/_next/static/chunks/c78d26b1-88a3e1bacb2a03c2.js +0 -1
  263. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-9fee3bc13b393070.js +0 -1
  264. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-3f997c29f6d8cb24.js +0 -1
  265. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-8f9b8890018e1ea5.js +0 -1
  266. fides/ui-build/static/admin/_next/static/chunks/pages/integrations-adc286ff254e7f41.js +0 -1
  267. fides/ui-build/static/admin/_next/static/chunks/pages/poc/ant-components-3407158757fb3627.js +0 -1
  268. fides/ui-build/static/admin/_next/static/chunks/pages/poc/table-migration-7a17dffa515e5560.js +0 -1
  269. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-91dd0039cc2b70bc.js +0 -1
  270. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-dda47b868cf8ea27.js +0 -1
  271. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-53acc4a492d160ab.js +0 -1
  272. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-138e4697e269d339.js +0 -1
  273. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-4c56222e847986ff.js +0 -1
  274. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-50bdc72e2f34c39e.js +0 -1
  275. fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-983fbf2cf335b945.js +0 -1
  276. fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-5ae1bdd93c5bd72a.js +0 -1
  277. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-fef247a87baeb080.js +0 -1
  278. fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-88178d29a15ba479.js +0 -1
  279. fides/ui-build/static/admin/_next/static/chunks/webpack-0a61b5bd21a41fe6.js +0 -1
  280. fides/ui-build/static/admin/_next/static/rJbP2kuATyoki-YIQWFdS/_buildManifest.js +0 -1
  281. {ethyca_fides-2.64.2rc0.dist-info → ethyca_fides-2.64.3b0.dist-info}/WHEEL +0 -0
  282. {ethyca_fides-2.64.2rc0.dist-info → ethyca_fides-2.64.3b0.dist-info}/entry_points.txt +0 -0
  283. {ethyca_fides-2.64.2rc0.dist-info → ethyca_fides-2.64.3b0.dist-info}/licenses/LICENSE +0 -0
  284. {ethyca_fides-2.64.2rc0.dist-info → ethyca_fides-2.64.3b0.dist-info}/top_level.txt +0 -0
  285. /fides/ui-build/static/admin/_next/static/{rJbP2kuATyoki-YIQWFdS → ezJVaZ_Oi_0J2-wPEOvj1}/_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-06-30T17:23:53-0400",
11
+ "date": "2025-06-30T18:45:24-0400",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "d8c2d556c6fe9897f0831b78449658c930aa37c9",
15
- "version": "2.64.2rc0"
14
+ "full-revisionid": "25f89cf50afcac815c38422d299fb39b35cd76a3",
15
+ "version": "2.64.3b0"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -0,0 +1,257 @@
1
+ """manual task allow deletion with orphaned configs
2
+
3
+ Revision ID: 41a634d8c669
4
+ Revises: aadfe83c5644
5
+ Create Date: 2025-06-22 19:34:22.336406
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 = "41a634d8c669"
15
+ down_revision = "aadfe83c5644"
16
+ branch_labels = None
17
+ depends_on = None
18
+
19
+
20
+ def upgrade():
21
+ """Allow manual task deletion by making task_id nullable and using SET NULL constraints."""
22
+
23
+ # Make task_id columns nullable to support orphaned records
24
+ op.alter_column("manual_task_config", "task_id", nullable=True)
25
+ op.alter_column("manual_task_instance", "task_id", nullable=True)
26
+ op.alter_column("manual_task_submission", "task_id", nullable=True)
27
+ op.alter_column("manual_task_config_field", "task_id", nullable=True)
28
+ op.alter_column("manual_task_log", "task_id", nullable=True)
29
+
30
+ # manual_task_config: Change task_id to SET NULL (preserve configs when task deleted)
31
+ op.drop_constraint(
32
+ "manual_task_config_task_id_fkey", "manual_task_config", type_="foreignkey"
33
+ )
34
+ op.create_foreign_key(
35
+ None,
36
+ "manual_task_config",
37
+ "manual_task",
38
+ ["task_id"],
39
+ ["id"],
40
+ ondelete="SET NULL",
41
+ )
42
+
43
+ # manual_task_instance: Change task_id to SET NULL (preserve instances when task deleted)
44
+ # Keep config_id as RESTRICT (instances should not be deleted when config deleted)
45
+ op.drop_constraint(
46
+ "manual_task_instance_config_id_fkey",
47
+ "manual_task_instance",
48
+ type_="foreignkey",
49
+ )
50
+ op.drop_constraint(
51
+ "manual_task_instance_task_id_fkey", "manual_task_instance", type_="foreignkey"
52
+ )
53
+ op.create_foreign_key(
54
+ None,
55
+ "manual_task_instance",
56
+ "manual_task_config",
57
+ ["config_id"],
58
+ ["id"],
59
+ ondelete="RESTRICT",
60
+ )
61
+ op.create_foreign_key(
62
+ None,
63
+ "manual_task_instance",
64
+ "manual_task",
65
+ ["task_id"],
66
+ ["id"],
67
+ ondelete="SET NULL",
68
+ )
69
+
70
+ # manual_task_submission: Change task_id to SET NULL, keep others as RESTRICT
71
+ # Keep instance_id as CASCADE since submissions should be deleted when instance is deleted
72
+ op.drop_constraint(
73
+ "manual_task_submission_config_id_fkey",
74
+ "manual_task_submission",
75
+ type_="foreignkey",
76
+ )
77
+ op.drop_constraint(
78
+ "manual_task_submission_field_id_fkey",
79
+ "manual_task_submission",
80
+ type_="foreignkey",
81
+ )
82
+ op.drop_constraint(
83
+ "manual_task_submission_task_id_fkey",
84
+ "manual_task_submission",
85
+ type_="foreignkey",
86
+ )
87
+ op.create_foreign_key(
88
+ None,
89
+ "manual_task_submission",
90
+ "manual_task",
91
+ ["task_id"],
92
+ ["id"],
93
+ ondelete="SET NULL",
94
+ )
95
+ op.create_foreign_key(
96
+ None,
97
+ "manual_task_submission",
98
+ "manual_task_config",
99
+ ["config_id"],
100
+ ["id"],
101
+ ondelete="RESTRICT",
102
+ )
103
+ op.create_foreign_key(
104
+ None,
105
+ "manual_task_submission",
106
+ "manual_task_config_field",
107
+ ["field_id"],
108
+ ["id"],
109
+ ondelete="RESTRICT",
110
+ )
111
+
112
+ # manual_task_config_field: Change task_id to SET NULL (preserve fields when task deleted)
113
+ op.drop_constraint(
114
+ "manual_task_config_field_task_id_fkey",
115
+ "manual_task_config_field",
116
+ type_="foreignkey",
117
+ )
118
+ op.create_foreign_key(
119
+ None,
120
+ "manual_task_config_field",
121
+ "manual_task",
122
+ ["task_id"],
123
+ ["id"],
124
+ ondelete="SET NULL",
125
+ )
126
+
127
+ # manual_task_log: Change task_id to SET NULL (preserve logs when task deleted)
128
+ op.drop_constraint(
129
+ "manual_task_log_task_id_fkey", "manual_task_log", type_="foreignkey"
130
+ )
131
+ op.create_foreign_key(
132
+ "manual_task_log_task_id_fkey",
133
+ "manual_task_log",
134
+ "manual_task",
135
+ ["task_id"],
136
+ ["id"],
137
+ ondelete="SET NULL",
138
+ )
139
+
140
+
141
+ def downgrade():
142
+ """Revert to original CASCADE behavior and make task_id non-nullable."""
143
+
144
+ # Revert manual_task_log constraints
145
+ op.drop_constraint(
146
+ "manual_task_log_task_id_fkey", "manual_task_log", type_="foreignkey"
147
+ )
148
+ op.create_foreign_key(
149
+ "manual_task_log_task_id_fkey",
150
+ "manual_task_log",
151
+ "manual_task",
152
+ ["task_id"],
153
+ ["id"],
154
+ ondelete="CASCADE",
155
+ )
156
+
157
+ # Revert manual_task_config_field constraints
158
+ op.drop_constraint(
159
+ "manual_task_config_field_task_id_fkey",
160
+ "manual_task_config_field",
161
+ type_="foreignkey",
162
+ )
163
+ op.create_foreign_key(
164
+ "manual_task_config_field_task_id_fkey",
165
+ "manual_task_config_field",
166
+ "manual_task",
167
+ ["task_id"],
168
+ ["id"],
169
+ ondelete="CASCADE",
170
+ )
171
+
172
+ # Revert manual_task_submission constraints
173
+ op.drop_constraint(
174
+ "manual_task_submission_task_id_fkey",
175
+ "manual_task_submission",
176
+ type_="foreignkey",
177
+ )
178
+ op.drop_constraint(
179
+ "manual_task_submission_field_id_fkey",
180
+ "manual_task_submission",
181
+ type_="foreignkey",
182
+ )
183
+ op.drop_constraint(
184
+ "manual_task_submission_config_id_fkey",
185
+ "manual_task_submission",
186
+ type_="foreignkey",
187
+ )
188
+ op.create_foreign_key(
189
+ "manual_task_submission_task_id_fkey",
190
+ "manual_task_submission",
191
+ "manual_task",
192
+ ["task_id"],
193
+ ["id"],
194
+ ondelete="CASCADE",
195
+ )
196
+ op.create_foreign_key(
197
+ "manual_task_submission_field_id_fkey",
198
+ "manual_task_submission",
199
+ "manual_task_config_field",
200
+ ["field_id"],
201
+ ["id"],
202
+ ondelete="CASCADE",
203
+ )
204
+ op.create_foreign_key(
205
+ "manual_task_submission_config_id_fkey",
206
+ "manual_task_submission",
207
+ "manual_task_config",
208
+ ["config_id"],
209
+ ["id"],
210
+ ondelete="CASCADE",
211
+ )
212
+
213
+ # Revert manual_task_instance constraints
214
+ op.drop_constraint(
215
+ "manual_task_instance_task_id_fkey", "manual_task_instance", type_="foreignkey"
216
+ )
217
+ op.drop_constraint(
218
+ "manual_task_instance_config_id_fkey",
219
+ "manual_task_instance",
220
+ type_="foreignkey",
221
+ )
222
+ op.create_foreign_key(
223
+ "manual_task_instance_task_id_fkey",
224
+ "manual_task_instance",
225
+ "manual_task",
226
+ ["task_id"],
227
+ ["id"],
228
+ ondelete="CASCADE",
229
+ )
230
+ op.create_foreign_key(
231
+ "manual_task_instance_config_id_fkey",
232
+ "manual_task_instance",
233
+ "manual_task_config",
234
+ ["config_id"],
235
+ ["id"],
236
+ ondelete="CASCADE",
237
+ )
238
+
239
+ # Revert manual_task_config constraints
240
+ op.drop_constraint(
241
+ "manual_task_config_task_id_fkey", "manual_task_config", type_="foreignkey"
242
+ )
243
+ op.create_foreign_key(
244
+ "manual_task_config_task_id_fkey",
245
+ "manual_task_config",
246
+ "manual_task",
247
+ ["task_id"],
248
+ ["id"],
249
+ ondelete="CASCADE",
250
+ )
251
+
252
+ # Make task_id columns non-nullable again
253
+ op.alter_column("manual_task_log", "task_id", nullable=False)
254
+ op.alter_column("manual_task_config_field", "task_id", nullable=False)
255
+ op.alter_column("manual_task_submission", "task_id", nullable=False)
256
+ op.alter_column("manual_task_instance", "task_id", nullable=False)
257
+ op.alter_column("manual_task_config", "task_id", nullable=False)
@@ -0,0 +1,256 @@
1
+ """add_manual_task_instance_table
2
+
3
+ Revision ID: 6a76a1fa4f3f
4
+ Revises: ba414a58ba90
5
+ Create Date: 2025-06-10 22:45:27.591492
6
+
7
+ """
8
+
9
+ import sqlalchemy as sa
10
+ from alembic import op
11
+ from sqlalchemy.dialects.postgresql import JSONB
12
+
13
+ # revision identifiers, used by Alembic.
14
+ revision = "6a76a1fa4f3f"
15
+ down_revision = "ba414a58ba90"
16
+ branch_labels = None
17
+ depends_on = None
18
+
19
+
20
+ def upgrade():
21
+ # Add execution_timing column to manual_task_config
22
+ op.add_column(
23
+ "manual_task_config",
24
+ sa.Column(
25
+ "execution_timing",
26
+ sa.String(),
27
+ nullable=False,
28
+ server_default="pre_execution",
29
+ ),
30
+ )
31
+
32
+ # Remove due_date column from manual_task
33
+ op.drop_column("manual_task", "due_date")
34
+
35
+ # Create manual_task_instance table
36
+ op.create_table(
37
+ "manual_task_instance",
38
+ sa.Column("id", sa.String(), nullable=False),
39
+ sa.Column(
40
+ "created_at",
41
+ sa.DateTime(timezone=True),
42
+ server_default=sa.text("now()"),
43
+ nullable=False,
44
+ ),
45
+ sa.Column(
46
+ "updated_at",
47
+ sa.DateTime(timezone=True),
48
+ server_default=sa.text("now()"),
49
+ nullable=False,
50
+ ),
51
+ sa.Column("task_id", sa.String(), nullable=False),
52
+ sa.Column("config_id", sa.String(), nullable=False),
53
+ sa.Column("entity_id", sa.String(), nullable=False),
54
+ sa.Column("entity_type", sa.String(), nullable=False),
55
+ sa.Column("status", sa.String(), nullable=False, server_default="pending"),
56
+ sa.Column("due_date", sa.DateTime(timezone=True), nullable=True),
57
+ sa.Column("completed_at", sa.DateTime(timezone=True), nullable=True),
58
+ sa.Column("completed_by_id", sa.String(), nullable=True),
59
+ sa.ForeignKeyConstraint(
60
+ ["config_id"], ["manual_task_config.id"], ondelete="CASCADE"
61
+ ),
62
+ sa.ForeignKeyConstraint(["task_id"], ["manual_task.id"], ondelete="CASCADE"),
63
+ sa.PrimaryKeyConstraint("id"),
64
+ )
65
+
66
+ # Create indexes for manual_task_instance
67
+ op.create_index(
68
+ "ix_manual_task_instance_task_id", "manual_task_instance", ["task_id"]
69
+ )
70
+ op.create_index(
71
+ "ix_manual_task_instance_config_id", "manual_task_instance", ["config_id"]
72
+ )
73
+ op.create_index(
74
+ "ix_manual_task_instance_entity_id", "manual_task_instance", ["entity_id"]
75
+ )
76
+ op.create_index(
77
+ "ix_manual_task_instance_entity_type", "manual_task_instance", ["entity_type"]
78
+ )
79
+ op.create_index(
80
+ "ix_manual_task_instance_status", "manual_task_instance", ["status"]
81
+ )
82
+ op.create_index(
83
+ "ix_manual_task_instance_completed_at", "manual_task_instance", ["completed_at"]
84
+ )
85
+ # Composite index for common query pattern
86
+ op.create_index(
87
+ "ix_manual_task_instance_entity",
88
+ "manual_task_instance",
89
+ ["entity_type", "entity_id"],
90
+ )
91
+
92
+ # Create manual_task_submission table
93
+ op.create_table(
94
+ "manual_task_submission",
95
+ sa.Column("id", sa.String(), nullable=False),
96
+ sa.Column(
97
+ "created_at",
98
+ sa.DateTime(timezone=True),
99
+ server_default=sa.text("now()"),
100
+ nullable=False,
101
+ ),
102
+ sa.Column(
103
+ "updated_at",
104
+ sa.DateTime(timezone=True),
105
+ server_default=sa.text("now()"),
106
+ nullable=False,
107
+ ),
108
+ sa.Column("task_id", sa.String(), nullable=False),
109
+ sa.Column("config_id", sa.String(), nullable=False),
110
+ sa.Column("field_id", sa.String(), nullable=False),
111
+ sa.Column("instance_id", sa.String(), nullable=False),
112
+ sa.Column("submitted_by", sa.String(), nullable=True),
113
+ sa.Column("submitted_at", sa.DateTime(timezone=True), nullable=False),
114
+ sa.Column("data", JSONB, nullable=False),
115
+ sa.ForeignKeyConstraint(
116
+ ["config_id"], ["manual_task_config.id"], ondelete="CASCADE"
117
+ ),
118
+ sa.ForeignKeyConstraint(
119
+ ["field_id"], ["manual_task_config_field.id"], ondelete="CASCADE"
120
+ ),
121
+ sa.ForeignKeyConstraint(
122
+ ["instance_id"], ["manual_task_instance.id"], ondelete="CASCADE"
123
+ ),
124
+ sa.ForeignKeyConstraint(["task_id"], ["manual_task.id"], ondelete="CASCADE"),
125
+ sa.ForeignKeyConstraint(
126
+ ["submitted_by"], ["fidesuser.id"], ondelete="SET NULL"
127
+ ),
128
+ sa.PrimaryKeyConstraint("id"),
129
+ )
130
+
131
+ # Create indexes for manual_task_submission
132
+ op.create_index(
133
+ "ix_manual_task_submission_task_id", "manual_task_submission", ["task_id"]
134
+ )
135
+ op.create_index(
136
+ "ix_manual_task_submission_config_id", "manual_task_submission", ["config_id"]
137
+ )
138
+ op.create_index(
139
+ "ix_manual_task_submission_field_id", "manual_task_submission", ["field_id"]
140
+ )
141
+ op.create_index(
142
+ "ix_manual_task_submission_instance_id",
143
+ "manual_task_submission",
144
+ ["instance_id"],
145
+ )
146
+ op.create_index(
147
+ "ix_manual_task_submission_submitted_by",
148
+ "manual_task_submission",
149
+ ["submitted_by"],
150
+ )
151
+ op.create_index(
152
+ "ix_manual_task_submission_submitted_at",
153
+ "manual_task_submission",
154
+ ["submitted_at"],
155
+ )
156
+ # Composite index for common query pattern
157
+ op.create_index(
158
+ "ix_manual_task_submission_instance_field",
159
+ "manual_task_submission",
160
+ ["instance_id", "field_id"],
161
+ )
162
+
163
+ # Add foreign key constraint to manual_task_log.instance_id
164
+ op.create_foreign_key(
165
+ "fk_manual_task_log_instance_id",
166
+ "manual_task_log",
167
+ "manual_task_instance",
168
+ ["instance_id"],
169
+ ["id"],
170
+ ondelete="CASCADE",
171
+ )
172
+
173
+ # Update foreign key constraint for manual_task_log.config_id to use CASCADE
174
+ op.drop_constraint(
175
+ "fk_manual_task_log_config_id", "manual_task_log", type_="foreignkey"
176
+ )
177
+ op.create_foreign_key(
178
+ "fk_manual_task_log_config_id",
179
+ "manual_task_log",
180
+ "manual_task_config",
181
+ ["config_id"],
182
+ ["id"],
183
+ ondelete="CASCADE",
184
+ )
185
+
186
+
187
+ def downgrade():
188
+ # Drop execution_timing column from manual_task_config
189
+ op.drop_column("manual_task_config", "execution_timing")
190
+
191
+ # Add due_date column to manual_task
192
+ op.add_column(
193
+ "manual_task",
194
+ sa.Column("due_date", sa.DateTime(timezone=True), nullable=True),
195
+ )
196
+
197
+ # Drop foreign key constraint from manual_task_log.instance_id
198
+ op.drop_constraint(
199
+ "fk_manual_task_log_instance_id", "manual_task_log", type_="foreignkey"
200
+ )
201
+
202
+ # Revert foreign key constraint for manual_task_log.config_id back to SET NULL
203
+ op.drop_constraint(
204
+ "fk_manual_task_log_config_id", "manual_task_log", type_="foreignkey"
205
+ )
206
+ op.create_foreign_key(
207
+ "fk_manual_task_log_config_id",
208
+ "manual_task_log",
209
+ "manual_task_config",
210
+ ["config_id"],
211
+ ["id"],
212
+ ondelete="SET NULL",
213
+ )
214
+
215
+ # Drop indexes first
216
+ op.drop_index(
217
+ "ix_manual_task_submission_instance_field", table_name="manual_task_submission"
218
+ )
219
+ op.drop_index(
220
+ "ix_manual_task_submission_submitted_at", table_name="manual_task_submission"
221
+ )
222
+ op.drop_index(
223
+ "ix_manual_task_submission_submitted_by", table_name="manual_task_submission"
224
+ )
225
+ op.drop_index(
226
+ "ix_manual_task_submission_instance_id", table_name="manual_task_submission"
227
+ )
228
+ op.drop_index(
229
+ "ix_manual_task_submission_field_id", table_name="manual_task_submission"
230
+ )
231
+ op.drop_index(
232
+ "ix_manual_task_submission_config_id", table_name="manual_task_submission"
233
+ )
234
+ op.drop_index(
235
+ "ix_manual_task_submission_task_id", table_name="manual_task_submission"
236
+ )
237
+
238
+ op.drop_index("ix_manual_task_instance_entity", table_name="manual_task_instance")
239
+ op.drop_index(
240
+ "ix_manual_task_instance_completed_at", table_name="manual_task_instance"
241
+ )
242
+ op.drop_index("ix_manual_task_instance_status", table_name="manual_task_instance")
243
+ op.drop_index(
244
+ "ix_manual_task_instance_entity_type", table_name="manual_task_instance"
245
+ )
246
+ op.drop_index(
247
+ "ix_manual_task_instance_entity_id", table_name="manual_task_instance"
248
+ )
249
+ op.drop_index(
250
+ "ix_manual_task_instance_config_id", table_name="manual_task_instance"
251
+ )
252
+ op.drop_index("ix_manual_task_instance_task_id", table_name="manual_task_instance")
253
+
254
+ # Drop tables in reverse order to handle foreign key constraints
255
+ op.drop_table("manual_task_submission")
256
+ op.drop_table("manual_task_instance")
@@ -0,0 +1,46 @@
1
+ """add_manual_task_to_connectiontype_enum
2
+
3
+ Revision ID: aadfe83c5644
4
+ Revises: 6a76a1fa4f3f
5
+ Create Date: 2025-06-19 18:55:08.131278
6
+
7
+ """
8
+
9
+ import sqlalchemy as sa
10
+ from alembic import op
11
+
12
+ # revision identifiers, used by Alembic.
13
+ revision = "aadfe83c5644"
14
+ down_revision = "6a76a1fa4f3f"
15
+ branch_labels = None
16
+ depends_on = None
17
+
18
+
19
+ def upgrade():
20
+ # Add manual_task to ConnectionType enum
21
+ op.execute("alter type connectiontype rename to connectiontype_old")
22
+ op.execute(
23
+ "create type connectiontype as enum('attentive_email', 'bigquery', 'datahub', 'dynamodb', 'fides', 'generic_consent_email', 'generic_erasure_email', 'dynamic_erasure_email', 'google_cloud_sql_mysql', 'google_cloud_sql_postgres', 'https', 'manual', 'manual_webhook', 'manual_task', 'mariadb', 'mongodb', 'mssql', 'mysql', 'okta', 'postgres', 'rds_mysql', 'rds_postgres', 'redshift', 's3', 'saas', 'scylla', 'snowflake', 'sovrn', 'timescale', 'website')"
24
+ )
25
+ op.execute(
26
+ (
27
+ "alter table connectionconfig alter column connection_type type connectiontype using "
28
+ "connection_type::text::connectiontype"
29
+ )
30
+ )
31
+ op.execute("drop type connectiontype_old")
32
+
33
+
34
+ def downgrade():
35
+ # Remove manual_task from ConnectionType enum
36
+ op.execute("alter type connectiontype rename to connectiontype_old")
37
+ op.execute(
38
+ "create type connectiontype as enum('attentive_email', 'bigquery', 'datahub', 'dynamodb', 'fides', 'generic_consent_email', 'generic_erasure_email', 'dynamic_erasure_email', 'google_cloud_sql_mysql', 'google_cloud_sql_postgres', 'https', 'manual', 'manual_webhook', 'mariadb', 'mongodb', 'mssql', 'mysql', 'okta', 'postgres', 'rds_mysql', 'rds_postgres', 'redshift', 's3', 'saas', 'scylla', 'snowflake', 'sovrn', 'timescale', 'website')"
39
+ )
40
+ op.execute(
41
+ (
42
+ "alter table connectionconfig alter column connection_type type connectiontype using "
43
+ "connection_type::text::connectiontype"
44
+ )
45
+ )
46
+ op.execute("drop type connectiontype_old")
fides/api/api/v1/api.py CHANGED
@@ -11,6 +11,7 @@ from fides.api.api.v1.endpoints import (
11
11
  masking_endpoints,
12
12
  messaging_endpoints,
13
13
  oauth_endpoints,
14
+ partitioning_endpoints,
14
15
  policy_endpoints,
15
16
  policy_webhook_endpoints,
16
17
  pre_approval_webhook_endpoints,
@@ -42,6 +43,7 @@ api_router.include_router(identity_verification_endpoints.router)
42
43
  api_router.include_router(storage_endpoints.router)
43
44
  api_router.include_router(messaging_endpoints.router)
44
45
  api_router.include_router(saas_config_endpoints.router)
46
+ api_router.include_router(partitioning_endpoints.router)
45
47
  api_router.include_router(user_endpoints.router)
46
48
  api_router.include_router(user_permission_endpoints.router)
47
49
  api_router.include_router(manual_webhook_endpoints.router)