ethyca-fides 2.64.5rc1__py2.py3-none-any.whl → 2.64.6b0__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 (286) hide show
  1. {ethyca_fides-2.64.5rc1.dist-info → ethyca_fides-2.64.6b0.dist-info}/METADATA +3 -3
  2. {ethyca_fides-2.64.5rc1.dist-info → ethyca_fides-2.64.6b0.dist-info}/RECORD +237 -246
  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/7-nocO64klVotMrKmugnq/_buildManifest.js +1 -0
  29. fides/ui-build/static/admin/_next/static/chunks/{1040-c1c1372a7f909aef.js → 1040-d246ed641088a416.js} +1 -1
  30. fides/ui-build/static/admin/_next/static/chunks/1169-ae67fde0c6d69abc.js +1 -0
  31. fides/ui-build/static/admin/_next/static/chunks/1807-3beab149351d5ded.js +1 -0
  32. fides/ui-build/static/admin/_next/static/chunks/{1817-96182c1558f80b63.js → 1817-60f08a3619b9139c.js} +1 -1
  33. fides/ui-build/static/admin/_next/static/chunks/{2921-f5608275555bd7d9.js → 2921-85515257dd94ef4d.js} +1 -1
  34. fides/ui-build/static/admin/_next/static/chunks/{3450-272f26c102f3510d.js → 3450-4e472b9e2754fa47.js} +1 -1
  35. fides/ui-build/static/admin/_next/static/chunks/3615-5e2d062d684b8fa1.js +1 -0
  36. fides/ui-build/static/admin/_next/static/chunks/{3855-beb58821d1ddba89.js → 3855-2d045674fbf72a3c.js} +1 -1
  37. fides/ui-build/static/admin/_next/static/chunks/{3872-82482e55e69b5a93.js → 3872-056ddf3ed9d10b51.js} +1 -1
  38. fides/ui-build/static/admin/_next/static/chunks/{3923-a54c286a2ba0a47a.js → 3923-257df982a95371b5.js} +1 -1
  39. fides/ui-build/static/admin/_next/static/chunks/{401-d2ce0a5a9120e056.js → 401-3f2160e3910d075b.js} +1 -1
  40. fides/ui-build/static/admin/_next/static/chunks/{409-86f4f687105917fb.js → 409-3e2248a63dd60e58.js} +1 -1
  41. fides/ui-build/static/admin/_next/static/chunks/4121-10bfa009892586fa.js +1 -0
  42. fides/ui-build/static/admin/_next/static/chunks/{4230-63abbdfb9e9016b9.js → 4230-38c6e446801a8729.js} +1 -1
  43. fides/ui-build/static/admin/_next/static/chunks/{431-77d59d43e90058ca.js → 431-13b0ef67d5a3df2f.js} +1 -1
  44. fides/ui-build/static/admin/_next/static/chunks/{5309-10f68cf805817cfb.js → 5309-fd8cd5aedd45f7c1.js} +1 -1
  45. fides/ui-build/static/admin/_next/static/chunks/{5574-b6db9d62362e72d9.js → 5574-028ef28c3cf16995.js} +1 -1
  46. fides/ui-build/static/admin/_next/static/chunks/570-c99f07161bd339cd.js +1 -0
  47. fides/ui-build/static/admin/_next/static/chunks/6084-fa1c82d03f6c256a.js +1 -0
  48. fides/ui-build/static/admin/_next/static/chunks/6662-d8ae12f69d325004.js +1 -0
  49. fides/ui-build/static/admin/_next/static/chunks/{6853-8a1b8e1c8b249f2f.js → 6853-2644f28976b46c25.js} +1 -1
  50. fides/ui-build/static/admin/_next/static/chunks/{6882-6c94583bffe85ba7.js → 6882-ea071425d25dd2b0.js} +1 -1
  51. fides/ui-build/static/admin/_next/static/chunks/{6954-dc3540389daf94da.js → 6954-bb360fb60aac9440.js} +1 -1
  52. fides/ui-build/static/admin/_next/static/chunks/7476-7073ec015f84a3e0.js +1 -0
  53. fides/ui-build/static/admin/_next/static/chunks/7630-302a13c63f9bfb45.js +1 -0
  54. fides/ui-build/static/admin/_next/static/chunks/787-b393c03ade9d93dc.js +1 -0
  55. fides/ui-build/static/admin/_next/static/chunks/{79-26ccd45dfd6653a7.js → 79-b67ba449b0f2cc9c.js} +1 -1
  56. fides/ui-build/static/admin/_next/static/chunks/{796-38c0f7e6755ad359.js → 796-b7608f09607288b8.js} +1 -1
  57. fides/ui-build/static/admin/_next/static/chunks/827-c6fe34fb336467ae.js +1 -0
  58. fides/ui-build/static/admin/_next/static/chunks/9014-eeae6f581158e645.js +1 -0
  59. fides/ui-build/static/admin/_next/static/chunks/{9046-bbce3c73af16daf9.js → 9046-ece5efe762b810cb.js} +1 -1
  60. fides/ui-build/static/admin/_next/static/chunks/{905-742074a074be1055.js → 905-ffdbd0b14167e8bd.js} +1 -1
  61. fides/ui-build/static/admin/_next/static/chunks/{9226-5e0ce31cfdedd5ee.js → 9226-c9111590692341b1.js} +1 -1
  62. fides/ui-build/static/admin/_next/static/chunks/{9392.25024e070026343d.js → 9392.9a948112de74781b.js} +1 -1
  63. fides/ui-build/static/admin/_next/static/chunks/{9676.e60a53f1f5890847.js → 9676.cc515c853b8cf578.js} +1 -1
  64. fides/ui-build/static/admin/_next/static/chunks/9767-277a0229aae7662a.js +1 -0
  65. fides/ui-build/static/admin/_next/static/chunks/9826-82c473dcaf892d00.js +1 -0
  66. fides/ui-build/static/admin/_next/static/chunks/{9951-d3d5d0fe4c4edb86.js → 9951-dbd76d7f3a7f1b9a.js} +1 -1
  67. fides/ui-build/static/admin/_next/static/chunks/pages/{404-d41660858638adee.js → 404-ef01376efb8427e1.js} +1 -1
  68. fides/ui-build/static/admin/_next/static/chunks/pages/{_app-6b3539f8d82ce9ae.js → _app-1650bbc3cb8c2299.js} +92 -89
  69. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{manual-7c5e1e845372c99b.js → manual-4057c399f58d331e.js} +1 -1
  70. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{multiple-87e78f52af21c4a9.js → multiple-2726ca51f0327347.js} +1 -1
  71. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-a2457d5da25aa854.js +1 -0
  72. fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-6374a3a7747df964.js → add-vendors-9fe46ed10a7e7a1a.js} +1 -1
  73. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{configure-0512151e2ed0f4c1.js → configure-095828301f22cdaa.js} +1 -1
  74. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{[id]-09435f4ab2deafd2.js → [id]-de60a5b74f6b20ff.js} +1 -1
  75. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{new-a0039f216fb3eb93.js → new-06bb3b0bf097fcdb.js} +1 -1
  76. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-experience-cd036518b5d4efbe.js → privacy-experience-1ee05fd0bc012ec6.js} +1 -1
  77. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-0e534580abf670be.js → [id]-5a2e61c7d88bdda1.js} +1 -1
  78. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-bb1790eb87b63109.js → new-1bc69669215fa55c.js} +1 -1
  79. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-notices-67e9846f877a3f38.js → privacy-notices-fa8394d2e1072aba.js} +1 -1
  80. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-69a92b6ddbc2bae2.js → properties-213c5405e9e4219c.js} +1 -1
  81. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{reporting-d07d05f4b898a5ed.js → reporting-44aa77149d71a6fe.js} +1 -1
  82. fides/ui-build/static/admin/_next/static/chunks/pages/{consent-23e886d692ab6d1a.js → consent-23ab7bd613a0ad53.js} +1 -1
  83. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/{[resourceUrn]-c623d6f1a61c8ea9.js → [resourceUrn]-11d52f1570759c4d.js} +1 -1
  84. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/{[projectUrn]-6c766c766dc97c5c.js → [projectUrn]-dae11464a091537f.js} +1 -1
  85. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{projects-28937a8da3d73145.js → projects-7442023478422295.js} +1 -1
  86. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/{[resourceUrn]-57bd5cdf784f059f.js → [resourceUrn]-b83afa5565d0c84e.js} +1 -1
  87. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{resources-51d99174c8006eb5.js → resources-d8db234a44a2ddf4.js} +1 -1
  88. fides/ui-build/static/admin/_next/static/chunks/pages/{data-catalog-627fbf19dce88e81.js → data-catalog-5597d2e691313bb0.js} +1 -1
  89. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/{[systemId]-ed1629b05519a370.js → [systemId]-da06d05d255d0cd0.js} +1 -1
  90. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/{[monitorId]-ad307bfc5f51fd9d.js → [monitorId]-895591fe32af0f4c.js} +1 -1
  91. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{action-center-07cbd61ede6e18ac.js → action-center-a932a39e29ac3489.js} +1 -1
  92. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{activity-6a2aaed8d0e66d82.js → activity-2cfdf4d55a7594ba.js} +1 -1
  93. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/detection/{[resourceUrn]-06edce289876dea1.js → [resourceUrn]-393e20924c83373e.js} +1 -1
  94. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{detection-faf326a6200637d0.js → detection-8733807dad4bc96e.js} +1 -1
  95. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/{[resourceUrn]-64acf269256ee74f.js → [resourceUrn]-14bd7500362ff224.js} +1 -1
  96. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{discovery-8c3e4be6d36da66d.js → discovery-9e7dfd5a6acc2e8f.js} +1 -1
  97. fides/ui-build/static/admin/_next/static/chunks/pages/{datamap-b576a94b583a7940.js → datamap-07881d1a5fc03d41.js} +1 -1
  98. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/{[...subfieldNames]-4912858ffde4621a.js → [...subfieldNames]-57be9d40c67b0acb.js} +1 -1
  99. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/{[collectionName]-df21dd7ca0f35718.js → [collectionName]-bd78d6c6264e2467.js} +1 -1
  100. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/{[datasetId]-5ce28a329e8f667f.js → [datasetId]-3c9103487b55e76f.js} +1 -1
  101. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-e30a546a8cfb6658.js +1 -0
  102. fides/ui-build/static/admin/_next/static/chunks/pages/{dataset-c6fab547396df6ac.js → dataset-500610c0b60f9e7e.js} +1 -1
  103. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{[id]-d04c9925d324eee1.js → [id]-34958fe8183d9479.js} +1 -1
  104. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{new-656abd09ea5ee39a.js → new-761294dbaf59bbe1.js} +1 -1
  105. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-59abd36059863e05.js +1 -0
  106. fides/ui-build/static/admin/_next/static/chunks/pages/{index-b66687e8194495a2.js → index-ae100a873eb66d59.js} +1 -1
  107. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-8eee4d0314c83e50.js +1 -0
  108. fides/ui-build/static/admin/_next/static/chunks/pages/integrations-bf3b87b0dd702551.js +1 -0
  109. fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{[id]-b74db8488e2e4b58.js → [id]-2aada2c7b9156053.js} +1 -1
  110. fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{add-template-a607018ff097b6c2.js → add-template-fbb7b0c43dedf072.js} +1 -1
  111. fides/ui-build/static/admin/_next/static/chunks/pages/{messaging-4a1a04c5179d2053.js → messaging-7230d7ee21368cef.js} +1 -1
  112. fides/ui-build/static/admin/_next/static/chunks/pages/poc/{ant-components-1567c9770a5f05aa.js → ant-components-7c234412502f8102.js} +1 -1
  113. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{AntForm-4949fe7f1815462b.js → AntForm-72791aab60f3a4bf.js} +1 -1
  114. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikAntFormItem-6085f73850302d55.js → FormikAntFormItem-da7d11d6146fa746.js} +1 -1
  115. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikControlled-a3158e8217c13850.js → FormikControlled-3045d24344e99017.js} +1 -1
  116. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikField-8576f1ef5c67d87d.js → FormikField-5b5b165d3f41a1de.js} +1 -1
  117. fides/ui-build/static/admin/_next/static/chunks/pages/poc/{forms-341e67462b5e3352.js → forms-3afd8b6ba6234366.js} +1 -1
  118. fides/ui-build/static/admin/_next/static/chunks/pages/poc/table-migration-52d50286216bcb8c.js +1 -0
  119. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-ee8d27e2f17563a0.js +1 -0
  120. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-535b6e5003d892eb.js +1 -0
  121. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-7ded688a1e832c63.js +1 -0
  122. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{configure-d24230b890b13762.js → configure-08e0863d432b3348.js} +1 -1
  123. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-7d625b170911a072.js +1 -0
  124. fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-2bedc5013e13ab52.js → [id]-b8dcb1f5213521ef.js} +1 -1
  125. fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-9d68bd70299dd945.js → add-property-7d8418bb7cb9e1fd.js} +1 -1
  126. fides/ui-build/static/admin/_next/static/chunks/pages/{properties-c3116b6bfe2e695e.js → properties-537003822f360ae7.js} +1 -1
  127. fides/ui-build/static/admin/_next/static/chunks/pages/reporting/{datamap-6dfa7091b99d8321.js → datamap-ac25749935da453b.js} +1 -1
  128. fides/ui-build/static/admin/_next/static/chunks/pages/settings/about/{alpha-9751059905bba190.js → alpha-647d59bb0aa060bf.js} +1 -1
  129. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{about-ad29d77012ec9dba.js → about-73adc03fe0182e3f.js} +1 -1
  130. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/{[purpose_id]-32e3190c1ad00b40.js → [purpose_id]-ffa9e9e79ad75828.js} +1 -1
  131. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-4fb6c8c4bd9cdb3f.js +1 -0
  132. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{custom-fields-d2c0aac32f5d2930.js → custom-fields-94c1b7bfc6cec4d2.js} +1 -1
  133. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domain-records-a10674380f94d014.js → domain-records-e9838b8e49e64e57.js} +1 -1
  134. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-0de16778ad2f8865.js +1 -0
  135. fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-aac71677024210ad.js +1 -0
  136. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-cc7d629433fa6d44.js → locations-f43e238571b21643.js} +1 -1
  137. fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-f5e0a34f6ae473ad.js +1 -0
  138. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{regulations-64a813cb2741683b.js → regulations-05d3c86ca3ca4d5d.js} +1 -1
  139. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-31fcf7b52d8028b0.js +1 -0
  140. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/{[id]-fb3d094e4f4585f6.js → [id]-6db01a1afe2f82d5.js} +1 -1
  141. fides/ui-build/static/admin/_next/static/chunks/pages/{systems-c2df5b7b0596a9cb.js → systems-8ec7472a7032301f.js} +1 -1
  142. fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-84caae0fc02f8ae1.js +1 -0
  143. fides/ui-build/static/admin/_next/static/chunks/pages/user-management/{new-b124cc24b930c9e1.js → new-a2524414e968f862.js} +1 -1
  144. fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/{[id]-fd2ff6b13052c54e.js → [id]-e452541827698b1f.js} +1 -1
  145. fides/ui-build/static/admin/_next/static/chunks/pages/{user-management-fa052b0439920ef6.js → user-management-530be849391d2425.js} +1 -1
  146. fides/ui-build/static/admin/_next/static/chunks/{webpack-e61d457474e00565.js → webpack-e25ccaae1ef867a2.js} +1 -1
  147. fides/ui-build/static/admin/_next/static/css/23391a3311f80cfe.css +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-3fdbdf211c3c2a5b.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-192986c86dc47869.js +0 -1
  248. fides/ui-build/static/admin/_next/static/chunks/3513-a563133845dc990f.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-3486b45081151b69.js +0 -1
  252. fides/ui-build/static/admin/_next/static/chunks/4121-f0aecb2abd384945.js +0 -1
  253. fides/ui-build/static/admin/_next/static/chunks/4481-d181a9db72984adf.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-ccdb50f676a1b336.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-42940a2b00933e79.js +0 -1
  258. fides/ui-build/static/admin/_next/static/chunks/69-943b19d39da339d9.js +0 -1
  259. fides/ui-build/static/admin/_next/static/chunks/7553-e7ae268701f3dcfe.js +0 -1
  260. fides/ui-build/static/admin/_next/static/chunks/8433-1e065c55c8da73b0.js +0 -1
  261. fides/ui-build/static/admin/_next/static/chunks/9767-96ed554a043c3c4d.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-68955d8441e60668.js +0 -1
  264. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-5287c76ecf600281.js +0 -1
  265. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-23fbec0590c8d192.js +0 -1
  266. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-906bc5f05702efb0.js +0 -1
  267. fides/ui-build/static/admin/_next/static/chunks/pages/integrations-024a1facb9be04d0.js +0 -1
  268. fides/ui-build/static/admin/_next/static/chunks/pages/poc/table-migration-6f0e64f0c52bd68f.js +0 -1
  269. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-6971c7773dbf9b51.js +0 -1
  270. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-303bd2182da03088.js +0 -1
  271. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-831572cc7f42615f.js +0 -1
  272. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-569ff31eff637034.js +0 -1
  273. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-13a17a4ace7293d1.js +0 -1
  274. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-78449b0e02bced88.js +0 -1
  275. fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-7d299c4cb3199036.js +0 -1
  276. fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-a9fa55c40fa570a6.js +0 -1
  277. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-547b0cfe1e49e6d2.js +0 -1
  278. fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-261deb6fb3e51cb3.js +0 -1
  279. fides/ui-build/static/admin/_next/static/css/c693338e3bc8dcc6.css +0 -1
  280. fides/ui-build/static/admin/_next/static/css/e458b5f1afdbb7fc.css +0 -1
  281. fides/ui-build/static/admin/_next/static/wyqNbL8A-USLbXV5z1vV0/_buildManifest.js +0 -1
  282. {ethyca_fides-2.64.5rc1.dist-info → ethyca_fides-2.64.6b0.dist-info}/WHEEL +0 -0
  283. {ethyca_fides-2.64.5rc1.dist-info → ethyca_fides-2.64.6b0.dist-info}/entry_points.txt +0 -0
  284. {ethyca_fides-2.64.5rc1.dist-info → ethyca_fides-2.64.6b0.dist-info}/licenses/LICENSE +0 -0
  285. {ethyca_fides-2.64.5rc1.dist-info → ethyca_fides-2.64.6b0.dist-info}/top_level.txt +0 -0
  286. /fides/ui-build/static/admin/_next/static/{wyqNbL8A-USLbXV5z1vV0 → 7-nocO64klVotMrKmugnq}/_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-07-01T14:34:23-0400",
11
+ "date": "2025-07-01T18:40:21-0300",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "9bd466c63833c2d7121e94da227bc32ae47e587d",
15
- "version": "2.64.5rc1"
14
+ "full-revisionid": "16d393aa32ce758adc6ad9a3878274daef1791d0",
15
+ "version": "2.64.6b0"
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)