ethyca-fides 2.64.3b0__py2.py3-none-any.whl → 2.64.5rc1__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 (284) hide show
  1. {ethyca_fides-2.64.3b0.dist-info → ethyca_fides-2.64.5rc1.dist-info}/METADATA +3 -3
  2. {ethyca_fides-2.64.3b0.dist-info → ethyca_fides-2.64.5rc1.dist-info}/RECORD +245 -237
  3. fides/_version.py +3 -3
  4. fides/api/api/v1/api.py +0 -2
  5. fides/api/db/base.py +3 -6
  6. fides/api/db/database.py +2 -27
  7. fides/api/graph/config.py +9 -16
  8. fides/api/models/attachment.py +3 -15
  9. fides/api/models/comment.py +5 -23
  10. fides/api/models/connectionconfig.py +0 -11
  11. fides/api/models/db_cache.py +1 -1
  12. fides/api/models/detection_discovery/core.py +15 -15
  13. fides/api/models/fides_user_respondent_email_verification.py +2 -27
  14. fides/api/models/manual_tasks/__init__.py +14 -0
  15. fides/api/models/manual_tasks/manual_task.py +120 -0
  16. fides/api/models/manual_tasks/manual_task_config.py +136 -0
  17. fides/api/models/manual_tasks/manual_task_log.py +104 -0
  18. fides/api/models/tcf_publisher_restrictions.py +4 -16
  19. fides/api/schemas/manual_tasks/__init__.py +0 -0
  20. fides/api/schemas/manual_tasks/manual_task_config.py +311 -0
  21. fides/api/schemas/manual_tasks/manual_task_schemas.py +79 -0
  22. fides/api/schemas/manual_tasks/manual_task_status.py +151 -0
  23. fides/api/service/connectors/query_configs/bigquery_query_config.py +22 -44
  24. fides/api/service/connectors/query_configs/query_config.py +2 -5
  25. fides/api/util/connection_util.py +2 -25
  26. fides/common/api/v1/urn_registry.py +0 -4
  27. fides/service/manual_tasks/__init__.py +0 -0
  28. fides/service/manual_tasks/manual_task_config_service.py +370 -0
  29. fides/service/manual_tasks/manual_task_service.py +294 -0
  30. fides/service/manual_tasks/utils.py +185 -0
  31. fides/ui-build/static/admin/404.html +1 -1
  32. fides/ui-build/static/admin/_next/static/chunks/{1040-3def3c62138371bb.js → 1040-c1c1372a7f909aef.js} +1 -1
  33. fides/ui-build/static/admin/_next/static/chunks/1100-3fdbdf211c3c2a5b.js +1 -0
  34. fides/ui-build/static/admin/_next/static/chunks/{1817-a3813209d7a6d28d.js → 1817-96182c1558f80b63.js} +1 -1
  35. fides/ui-build/static/admin/_next/static/chunks/2430-b480401d44c55416.js +1 -0
  36. fides/ui-build/static/admin/_next/static/chunks/{2921-81a48418f77bc9a7.js → 2921-f5608275555bd7d9.js} +1 -1
  37. fides/ui-build/static/admin/_next/static/chunks/{3450-3a1f0e80ead8d1b0.js → 3450-272f26c102f3510d.js} +1 -1
  38. fides/ui-build/static/admin/_next/static/chunks/3505-192986c86dc47869.js +1 -0
  39. fides/ui-build/static/admin/_next/static/chunks/3513-a563133845dc990f.js +1 -0
  40. fides/ui-build/static/admin/_next/static/chunks/3670-2abd9b2f17770872.js +1 -0
  41. fides/ui-build/static/admin/_next/static/chunks/{3855-b85ad4e52433d519.js → 3855-beb58821d1ddba89.js} +1 -1
  42. fides/ui-build/static/admin/_next/static/chunks/{3872-09f81435f7905d76.js → 3872-82482e55e69b5a93.js} +1 -1
  43. fides/ui-build/static/admin/_next/static/chunks/{3923-565a852f322fdadc.js → 3923-a54c286a2ba0a47a.js} +1 -1
  44. fides/ui-build/static/admin/_next/static/chunks/3983-17ae9c232bddc413.js +1 -0
  45. fides/ui-build/static/admin/_next/static/chunks/{401-c3f586a23a061526.js → 401-d2ce0a5a9120e056.js} +1 -1
  46. fides/ui-build/static/admin/_next/static/chunks/4060-3486b45081151b69.js +1 -0
  47. fides/ui-build/static/admin/_next/static/chunks/{409-e0d39af1d9ce8ff2.js → 409-86f4f687105917fb.js} +1 -1
  48. fides/ui-build/static/admin/_next/static/chunks/4121-f0aecb2abd384945.js +1 -0
  49. fides/ui-build/static/admin/_next/static/chunks/{4230-d80ae2430aca784a.js → 4230-63abbdfb9e9016b9.js} +1 -1
  50. fides/ui-build/static/admin/_next/static/chunks/{431-c74dab231c8ac968.js → 431-77d59d43e90058ca.js} +1 -1
  51. fides/ui-build/static/admin/_next/static/chunks/4481-d181a9db72984adf.js +1 -0
  52. fides/ui-build/static/admin/_next/static/chunks/{5309-0e44dbd914896514.js → 5309-10f68cf805817cfb.js} +1 -1
  53. fides/ui-build/static/admin/_next/static/chunks/{5574-917c5ff63d222308.js → 5574-b6db9d62362e72d9.js} +1 -1
  54. fides/ui-build/static/admin/_next/static/chunks/6060-cb1ab5be7067bf7b.js +4 -0
  55. fides/ui-build/static/admin/_next/static/chunks/6277-ccdb50f676a1b336.js +1 -0
  56. fides/ui-build/static/admin/_next/static/chunks/6659-b2088f525bf13c17.js +1 -0
  57. fides/ui-build/static/admin/_next/static/chunks/6662-42940a2b00933e79.js +1 -0
  58. fides/ui-build/static/admin/_next/static/chunks/{6853-8d0a099f61c758d1.js → 6853-8a1b8e1c8b249f2f.js} +1 -1
  59. fides/ui-build/static/admin/_next/static/chunks/{6882-13d6f8d95b1e404f.js → 6882-6c94583bffe85ba7.js} +1 -1
  60. fides/ui-build/static/admin/_next/static/chunks/69-943b19d39da339d9.js +1 -0
  61. fides/ui-build/static/admin/_next/static/chunks/{6954-882b87698c5ed4fb.js → 6954-dc3540389daf94da.js} +1 -1
  62. fides/ui-build/static/admin/_next/static/chunks/7553-e7ae268701f3dcfe.js +1 -0
  63. fides/ui-build/static/admin/_next/static/chunks/{79-3f742fe4efd9893f.js → 79-26ccd45dfd6653a7.js} +1 -1
  64. fides/ui-build/static/admin/_next/static/chunks/{796-83a8bbdcdb67f2ba.js → 796-38c0f7e6755ad359.js} +1 -1
  65. fides/ui-build/static/admin/_next/static/chunks/8433-1e065c55c8da73b0.js +1 -0
  66. fides/ui-build/static/admin/_next/static/chunks/{9046-6995482a030e323c.js → 9046-bbce3c73af16daf9.js} +1 -1
  67. fides/ui-build/static/admin/_next/static/chunks/{905-ffdbd0b14167e8bd.js → 905-742074a074be1055.js} +1 -1
  68. fides/ui-build/static/admin/_next/static/chunks/{9226-8a3be36ad1a9c1e7.js → 9226-5e0ce31cfdedd5ee.js} +1 -1
  69. fides/ui-build/static/admin/_next/static/chunks/{9392.9a948112de74781b.js → 9392.25024e070026343d.js} +1 -1
  70. fides/ui-build/static/admin/_next/static/chunks/{9676.cc515c853b8cf578.js → 9676.e60a53f1f5890847.js} +1 -1
  71. fides/ui-build/static/admin/_next/static/chunks/9767-96ed554a043c3c4d.js +1 -0
  72. fides/ui-build/static/admin/_next/static/chunks/{9951-b5b77bfcc8efb493.js → 9951-d3d5d0fe4c4edb86.js} +1 -1
  73. fides/ui-build/static/admin/_next/static/chunks/c78d26b1-88a3e1bacb2a03c2.js +1 -0
  74. fides/ui-build/static/admin/_next/static/chunks/pages/{404-488f8f03fe0ffbc7.js → 404-d41660858638adee.js} +1 -1
  75. fides/ui-build/static/admin/_next/static/chunks/pages/{_app-030b20295bb61f96.js → _app-6b3539f8d82ce9ae.js} +89 -92
  76. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{manual-1e88ac28bc7a41b6.js → manual-7c5e1e845372c99b.js} +1 -1
  77. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{multiple-f2c9451fffaaa529.js → multiple-87e78f52af21c4a9.js} +1 -1
  78. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-68955d8441e60668.js +1 -0
  79. fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-b17d160147365cf3.js → add-vendors-6374a3a7747df964.js} +1 -1
  80. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{configure-8e168d78acdf0cfe.js → configure-0512151e2ed0f4c1.js} +1 -1
  81. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{[id]-5ca2467de7986929.js → [id]-09435f4ab2deafd2.js} +1 -1
  82. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{new-06bb3b0bf097fcdb.js → new-a0039f216fb3eb93.js} +1 -1
  83. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-experience-3c11fecc2797ab68.js → privacy-experience-cd036518b5d4efbe.js} +1 -1
  84. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-92bc6c7b82a679b4.js → [id]-0e534580abf670be.js} +1 -1
  85. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-a3da3243526b7ecb.js → new-bb1790eb87b63109.js} +1 -1
  86. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-notices-b7d82386e7521041.js → privacy-notices-67e9846f877a3f38.js} +1 -1
  87. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-20a2029b7e7fc895.js → properties-69a92b6ddbc2bae2.js} +1 -1
  88. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{reporting-0ce299131db4c3e5.js → reporting-d07d05f4b898a5ed.js} +1 -1
  89. fides/ui-build/static/admin/_next/static/chunks/pages/{consent-9f6a7a231bba17b7.js → consent-23e886d692ab6d1a.js} +1 -1
  90. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/{[resourceUrn]-11d52f1570759c4d.js → [resourceUrn]-c623d6f1a61c8ea9.js} +1 -1
  91. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/{[projectUrn]-fd705968b357e99a.js → [projectUrn]-6c766c766dc97c5c.js} +1 -1
  92. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{projects-45b585deee0b2371.js → projects-28937a8da3d73145.js} +1 -1
  93. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/{[resourceUrn]-b83afa5565d0c84e.js → [resourceUrn]-57bd5cdf784f059f.js} +1 -1
  94. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{resources-d8db234a44a2ddf4.js → resources-51d99174c8006eb5.js} +1 -1
  95. fides/ui-build/static/admin/_next/static/chunks/pages/{data-catalog-2810fa2b519a076b.js → data-catalog-627fbf19dce88e81.js} +1 -1
  96. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/{[systemId]-e861699a8866c64b.js → [systemId]-ed1629b05519a370.js} +1 -1
  97. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/{[monitorId]-5dd2fbf33e228f9c.js → [monitorId]-ad307bfc5f51fd9d.js} +1 -1
  98. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{action-center-806cae6bc128cd38.js → action-center-07cbd61ede6e18ac.js} +1 -1
  99. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{activity-487285bd5eca2595.js → activity-6a2aaed8d0e66d82.js} +1 -1
  100. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/detection/{[resourceUrn]-393e20924c83373e.js → [resourceUrn]-06edce289876dea1.js} +1 -1
  101. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{detection-8733807dad4bc96e.js → detection-faf326a6200637d0.js} +1 -1
  102. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/{[resourceUrn]-14bd7500362ff224.js → [resourceUrn]-64acf269256ee74f.js} +1 -1
  103. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{discovery-9e7dfd5a6acc2e8f.js → discovery-8c3e4be6d36da66d.js} +1 -1
  104. fides/ui-build/static/admin/_next/static/chunks/pages/{datamap-c9509d72c538d22b.js → datamap-b576a94b583a7940.js} +1 -1
  105. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/{[...subfieldNames]-4e8a436297a055b2.js → [...subfieldNames]-4912858ffde4621a.js} +1 -1
  106. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/{[collectionName]-6ce02295bb7f5b6d.js → [collectionName]-df21dd7ca0f35718.js} +1 -1
  107. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/{[datasetId]-9eaa907437fde063.js → [datasetId]-5ce28a329e8f667f.js} +1 -1
  108. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-5287c76ecf600281.js +1 -0
  109. fides/ui-build/static/admin/_next/static/chunks/pages/{dataset-b328595abf20ea5d.js → dataset-c6fab547396df6ac.js} +1 -1
  110. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{[id]-81ab412e337d2888.js → [id]-d04c9925d324eee1.js} +1 -1
  111. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{new-34dfc172165dbb1c.js → new-656abd09ea5ee39a.js} +1 -1
  112. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-23fbec0590c8d192.js +1 -0
  113. fides/ui-build/static/admin/_next/static/chunks/pages/{index-de954b741cbca022.js → index-b66687e8194495a2.js} +1 -1
  114. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/{[id]-16dd6eff8f5dcc81.js → [id]-906bc5f05702efb0.js} +1 -1
  115. fides/ui-build/static/admin/_next/static/chunks/pages/integrations-024a1facb9be04d0.js +1 -0
  116. fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{[id]-42edcab11e8b5c3c.js → [id]-b74db8488e2e4b58.js} +1 -1
  117. fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{add-template-333e54ac8c3ad57a.js → add-template-a607018ff097b6c2.js} +1 -1
  118. fides/ui-build/static/admin/_next/static/chunks/pages/{messaging-8e1e6f3782983225.js → messaging-4a1a04c5179d2053.js} +1 -1
  119. fides/ui-build/static/admin/_next/static/chunks/pages/poc/ant-components-1567c9770a5f05aa.js +1 -0
  120. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{AntForm-920338760f5a71b5.js → AntForm-4949fe7f1815462b.js} +1 -1
  121. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikAntFormItem-7462fb387a9de3f8.js → FormikAntFormItem-6085f73850302d55.js} +1 -1
  122. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikControlled-6148fce7a4e2e9ca.js → FormikControlled-a3158e8217c13850.js} +1 -1
  123. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikField-30efd8c937bf19e4.js → FormikField-8576f1ef5c67d87d.js} +1 -1
  124. fides/ui-build/static/admin/_next/static/chunks/pages/poc/{forms-c44de83e0952d1e0.js → forms-341e67462b5e3352.js} +1 -1
  125. fides/ui-build/static/admin/_next/static/chunks/pages/poc/table-migration-6f0e64f0c52bd68f.js +1 -0
  126. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-6971c7773dbf9b51.js +1 -0
  127. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-303bd2182da03088.js +1 -0
  128. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-831572cc7f42615f.js +1 -0
  129. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{configure-1d981663e1a84166.js → configure-d24230b890b13762.js} +1 -1
  130. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-569ff31eff637034.js +1 -0
  131. fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-b08a69b1c460c7fe.js → [id]-2bedc5013e13ab52.js} +1 -1
  132. fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-a5d1c65ec21df69d.js → add-property-9d68bd70299dd945.js} +1 -1
  133. fides/ui-build/static/admin/_next/static/chunks/pages/{properties-3a75c6ed8308d126.js → properties-c3116b6bfe2e695e.js} +1 -1
  134. fides/ui-build/static/admin/_next/static/chunks/pages/reporting/{datamap-dda59a7105ee609b.js → datamap-6dfa7091b99d8321.js} +1 -1
  135. fides/ui-build/static/admin/_next/static/chunks/pages/settings/about/{alpha-6773158ba6ccf4b0.js → alpha-9751059905bba190.js} +1 -1
  136. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{about-2e046d177d52465c.js → about-ad29d77012ec9dba.js} +1 -1
  137. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/{[purpose_id]-91f2ec72f9654cbd.js → [purpose_id]-32e3190c1ad00b40.js} +1 -1
  138. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-13a17a4ace7293d1.js +1 -0
  139. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{custom-fields-94d97e3eb964c494.js → custom-fields-d2c0aac32f5d2930.js} +1 -1
  140. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domain-records-2c7ecff0a8a74c42.js → domain-records-a10674380f94d014.js} +1 -1
  141. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-78449b0e02bced88.js +1 -0
  142. fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-7d299c4cb3199036.js +1 -0
  143. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-8d4383584c72eb5a.js → locations-cc7d629433fa6d44.js} +1 -1
  144. fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-a9fa55c40fa570a6.js +1 -0
  145. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{regulations-29892065d99ff113.js → regulations-64a813cb2741683b.js} +1 -1
  146. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-547b0cfe1e49e6d2.js +1 -0
  147. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/{[id]-8fa8a2f238e08791.js → [id]-fb3d094e4f4585f6.js} +1 -1
  148. fides/ui-build/static/admin/_next/static/chunks/pages/{systems-acdbdd3dfd21162f.js → systems-c2df5b7b0596a9cb.js} +1 -1
  149. fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-261deb6fb3e51cb3.js +1 -0
  150. fides/ui-build/static/admin/_next/static/chunks/pages/user-management/{new-a2524414e968f862.js → new-b124cc24b930c9e1.js} +1 -1
  151. fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/{[id]-87ed17fa1d9f8f72.js → [id]-fd2ff6b13052c54e.js} +1 -1
  152. fides/ui-build/static/admin/_next/static/chunks/pages/{user-management-6b4e0764bb8816b8.js → user-management-fa052b0439920ef6.js} +1 -1
  153. fides/ui-build/static/admin/_next/static/chunks/{webpack-da78c536f3d86d06.js → webpack-e61d457474e00565.js} +1 -1
  154. fides/ui-build/static/admin/_next/static/css/{1994066ec907b7df.css → c693338e3bc8dcc6.css} +1 -1
  155. fides/ui-build/static/admin/_next/static/wyqNbL8A-USLbXV5z1vV0/_buildManifest.js +1 -0
  156. fides/ui-build/static/admin/add-systems/manual.html +1 -1
  157. fides/ui-build/static/admin/add-systems/multiple.html +1 -1
  158. fides/ui-build/static/admin/add-systems.html +1 -1
  159. fides/ui-build/static/admin/consent/configure/add-vendors.html +1 -1
  160. fides/ui-build/static/admin/consent/configure.html +1 -1
  161. fides/ui-build/static/admin/consent/privacy-experience/[id].html +1 -1
  162. fides/ui-build/static/admin/consent/privacy-experience/new.html +1 -1
  163. fides/ui-build/static/admin/consent/privacy-experience.html +1 -1
  164. fides/ui-build/static/admin/consent/privacy-notices/[id].html +1 -1
  165. fides/ui-build/static/admin/consent/privacy-notices/new.html +1 -1
  166. fides/ui-build/static/admin/consent/privacy-notices.html +1 -1
  167. fides/ui-build/static/admin/consent/properties.html +1 -1
  168. fides/ui-build/static/admin/consent/reporting.html +1 -1
  169. fides/ui-build/static/admin/consent.html +1 -1
  170. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn].html +1 -1
  171. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn].html +1 -1
  172. fides/ui-build/static/admin/data-catalog/[systemId]/projects.html +1 -1
  173. fides/ui-build/static/admin/data-catalog/[systemId]/resources/[resourceUrn].html +1 -1
  174. fides/ui-build/static/admin/data-catalog/[systemId]/resources.html +1 -1
  175. fides/ui-build/static/admin/data-catalog.html +1 -1
  176. fides/ui-build/static/admin/data-discovery/action-center/[monitorId]/[systemId].html +1 -1
  177. fides/ui-build/static/admin/data-discovery/action-center/[monitorId].html +1 -1
  178. fides/ui-build/static/admin/data-discovery/action-center.html +1 -1
  179. fides/ui-build/static/admin/data-discovery/activity.html +1 -1
  180. fides/ui-build/static/admin/data-discovery/detection/[resourceUrn].html +1 -1
  181. fides/ui-build/static/admin/data-discovery/detection.html +1 -1
  182. fides/ui-build/static/admin/data-discovery/discovery/[resourceUrn].html +1 -1
  183. fides/ui-build/static/admin/data-discovery/discovery.html +1 -1
  184. fides/ui-build/static/admin/datamap.html +1 -1
  185. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName]/[...subfieldNames].html +1 -1
  186. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName].html +1 -1
  187. fides/ui-build/static/admin/dataset/[datasetId].html +1 -1
  188. fides/ui-build/static/admin/dataset/new.html +1 -1
  189. fides/ui-build/static/admin/dataset.html +1 -1
  190. fides/ui-build/static/admin/datastore-connection/[id].html +1 -1
  191. fides/ui-build/static/admin/datastore-connection/new.html +1 -1
  192. fides/ui-build/static/admin/datastore-connection.html +1 -1
  193. fides/ui-build/static/admin/index.html +1 -1
  194. fides/ui-build/static/admin/integrations/[id].html +1 -1
  195. fides/ui-build/static/admin/integrations.html +1 -1
  196. fides/ui-build/static/admin/lib/fides-ext-gpp.js +1 -1
  197. fides/ui-build/static/admin/lib/fides-headless.js +1 -1
  198. fides/ui-build/static/admin/lib/fides-preview.js +1 -1
  199. fides/ui-build/static/admin/lib/fides-tcf.js +2 -2
  200. fides/ui-build/static/admin/lib/fides.js +2 -2
  201. fides/ui-build/static/admin/login/[provider].html +1 -1
  202. fides/ui-build/static/admin/login.html +1 -1
  203. fides/ui-build/static/admin/messaging/[id].html +1 -1
  204. fides/ui-build/static/admin/messaging/add-template.html +1 -1
  205. fides/ui-build/static/admin/messaging.html +1 -1
  206. fides/ui-build/static/admin/poc/ant-components.html +1 -1
  207. fides/ui-build/static/admin/poc/form-experiments/AntForm.html +1 -1
  208. fides/ui-build/static/admin/poc/form-experiments/FormikAntFormItem.html +1 -1
  209. fides/ui-build/static/admin/poc/form-experiments/FormikControlled.html +1 -1
  210. fides/ui-build/static/admin/poc/form-experiments/FormikField.html +1 -1
  211. fides/ui-build/static/admin/poc/form-experiments/FormikSpreadField.html +1 -1
  212. fides/ui-build/static/admin/poc/forms.html +1 -1
  213. fides/ui-build/static/admin/poc/table-migration.html +1 -1
  214. fides/ui-build/static/admin/privacy-requests/[id].html +1 -1
  215. fides/ui-build/static/admin/privacy-requests/configure/messaging.html +1 -1
  216. fides/ui-build/static/admin/privacy-requests/configure/storage.html +1 -1
  217. fides/ui-build/static/admin/privacy-requests/configure.html +1 -1
  218. fides/ui-build/static/admin/privacy-requests.html +1 -1
  219. fides/ui-build/static/admin/properties/[id].html +1 -1
  220. fides/ui-build/static/admin/properties/add-property.html +1 -1
  221. fides/ui-build/static/admin/properties.html +1 -1
  222. fides/ui-build/static/admin/reporting/datamap.html +1 -1
  223. fides/ui-build/static/admin/settings/about/alpha.html +1 -1
  224. fides/ui-build/static/admin/settings/about.html +1 -1
  225. fides/ui-build/static/admin/settings/consent/[configuration_id]/[purpose_id].html +1 -1
  226. fides/ui-build/static/admin/settings/consent.html +1 -1
  227. fides/ui-build/static/admin/settings/custom-fields.html +1 -1
  228. fides/ui-build/static/admin/settings/domain-records.html +1 -1
  229. fides/ui-build/static/admin/settings/domains.html +1 -1
  230. fides/ui-build/static/admin/settings/email-templates.html +1 -1
  231. fides/ui-build/static/admin/settings/locations.html +1 -1
  232. fides/ui-build/static/admin/settings/organization.html +1 -1
  233. fides/ui-build/static/admin/settings/regulations.html +1 -1
  234. fides/ui-build/static/admin/systems/configure/[id]/test-datasets.html +1 -1
  235. fides/ui-build/static/admin/systems/configure/[id].html +1 -1
  236. fides/ui-build/static/admin/systems.html +1 -1
  237. fides/ui-build/static/admin/taxonomy.html +1 -1
  238. fides/ui-build/static/admin/user-management/new.html +1 -1
  239. fides/ui-build/static/admin/user-management/profile/[id].html +1 -1
  240. fides/ui-build/static/admin/user-management.html +1 -1
  241. fides/api/alembic/migrations/versions/41a634d8c669_manual_task_restrict_deletes.py +0 -257
  242. fides/api/alembic/migrations/versions/6a76a1fa4f3f_add_manual_task_instance_table.py +0 -256
  243. fides/api/alembic/migrations/versions/aadfe83c5644_add_manual_task_to_connectiontype_enum.py +0 -46
  244. fides/api/api/v1/endpoints/partitioning_endpoints.py +0 -108
  245. fides/api/models/manual_task.py +0 -965
  246. fides/api/schemas/partitioning/__init__.py +0 -17
  247. fides/api/schemas/partitioning/bigquery_time_based_partitioning.py +0 -31
  248. fides/api/schemas/partitioning/time_based_partitioning.py +0 -1376
  249. fides/ui-build/static/admin/_next/static/chunks/1169-76bbada4f3d16538.js +0 -1
  250. fides/ui-build/static/admin/_next/static/chunks/1807-3beab149351d5ded.js +0 -1
  251. fides/ui-build/static/admin/_next/static/chunks/3615-5e2d062d684b8fa1.js +0 -1
  252. fides/ui-build/static/admin/_next/static/chunks/4121-de4ca969faf2b9f4.js +0 -1
  253. fides/ui-build/static/admin/_next/static/chunks/570-c99f07161bd339cd.js +0 -1
  254. fides/ui-build/static/admin/_next/static/chunks/6084-40d5d94561a6093e.js +0 -1
  255. fides/ui-build/static/admin/_next/static/chunks/6662-6a915300505fd9c0.js +0 -1
  256. fides/ui-build/static/admin/_next/static/chunks/7476-aaf8970dbbbe4864.js +0 -1
  257. fides/ui-build/static/admin/_next/static/chunks/7630-c558dc3a199a633d.js +0 -1
  258. fides/ui-build/static/admin/_next/static/chunks/787-9c751615f5816094.js +0 -1
  259. fides/ui-build/static/admin/_next/static/chunks/827-c6fe34fb336467ae.js +0 -1
  260. fides/ui-build/static/admin/_next/static/chunks/9014-eeae6f581158e645.js +0 -1
  261. fides/ui-build/static/admin/_next/static/chunks/9767-1dca308466dce863.js +0 -1
  262. fides/ui-build/static/admin/_next/static/chunks/9826-303b14ef4fc7ab4a.js +0 -1
  263. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-a8e0bc7b6674f47e.js +0 -1
  264. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-55243db34cf77b7e.js +0 -1
  265. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-cdb77886d7fd4f44.js +0 -1
  266. fides/ui-build/static/admin/_next/static/chunks/pages/integrations-40a3cd14264796e2.js +0 -1
  267. fides/ui-build/static/admin/_next/static/chunks/pages/poc/ant-components-3f62dd959a039fe9.js +0 -1
  268. fides/ui-build/static/admin/_next/static/chunks/pages/poc/table-migration-7852aa60090c8c9a.js +0 -1
  269. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-11dd6152bf6607cc.js +0 -1
  270. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-c50c2ee7d7d2a585.js +0 -1
  271. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-282de19599d67aaf.js +0 -1
  272. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-3f962ade5df86380.js +0 -1
  273. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-0a87f29768425a37.js +0 -1
  274. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-b9e77c75c6b77c88.js +0 -1
  275. fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-bb60c397a03558d8.js +0 -1
  276. fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-4b835393f5274379.js +0 -1
  277. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-9669fa6b20545530.js +0 -1
  278. fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-c9510a1eb612323d.js +0 -1
  279. fides/ui-build/static/admin/_next/static/ezJVaZ_Oi_0J2-wPEOvj1/_buildManifest.js +0 -1
  280. {ethyca_fides-2.64.3b0.dist-info → ethyca_fides-2.64.5rc1.dist-info}/WHEEL +0 -0
  281. {ethyca_fides-2.64.3b0.dist-info → ethyca_fides-2.64.5rc1.dist-info}/entry_points.txt +0 -0
  282. {ethyca_fides-2.64.3b0.dist-info → ethyca_fides-2.64.5rc1.dist-info}/licenses/LICENSE +0 -0
  283. {ethyca_fides-2.64.3b0.dist-info → ethyca_fides-2.64.5rc1.dist-info}/top_level.txt +0 -0
  284. /fides/ui-build/static/admin/_next/static/{ezJVaZ_Oi_0J2-wPEOvj1 → wyqNbL8A-USLbXV5z1vV0}/_ssgManifest.js +0 -0
@@ -0,0 +1,151 @@
1
+ from datetime import datetime, timezone
2
+ from enum import Enum as EnumType
3
+ from typing import Optional
4
+
5
+ from sqlalchemy.orm import Session
6
+
7
+
8
+ class StatusTransitionNotAllowed(Exception):
9
+ """Exception raised when a status transition is not allowed."""
10
+
11
+ def __init__(self, message: str):
12
+ self.message = message
13
+ super().__init__(self.message)
14
+
15
+
16
+ class StatusType(str, EnumType):
17
+ """Enum for manual task status."""
18
+
19
+ pending = "pending"
20
+ in_progress = "in_progress"
21
+ completed = "completed"
22
+ failed = "failed"
23
+
24
+ @classmethod
25
+ def get_valid_transitions(cls, current_status: "StatusType") -> list["StatusType"]:
26
+ """Get valid transitions from the current status.
27
+
28
+ Args:
29
+ current_status: The current status
30
+
31
+ Returns:
32
+ list[StatusType]: List of valid transitions
33
+ """
34
+ if current_status == cls.pending:
35
+ return [cls.in_progress, cls.failed, cls.completed]
36
+ if current_status == cls.in_progress:
37
+ return [cls.completed, cls.failed]
38
+ if current_status == cls.completed:
39
+ return []
40
+ if current_status == cls.failed:
41
+ return [cls.pending, cls.in_progress]
42
+ return []
43
+
44
+
45
+ class StatusTransitionMixin:
46
+ """Mixin for handling status transitions.
47
+
48
+ This mixin provides methods for managing status transitions and completion tracking.
49
+ It can be used by any model that needs status management.
50
+ """
51
+
52
+ # These should be overridden by the implementing class
53
+ status: StatusType
54
+ completed_at: Optional[datetime]
55
+ completed_by_id: Optional[str]
56
+
57
+ def _get_valid_transitions(self) -> list[StatusType]:
58
+ """Get valid transitions from the current status.
59
+
60
+ Returns:
61
+ list[StatusType]: List of valid transitions
62
+ """
63
+ return StatusType.get_valid_transitions(self.status)
64
+
65
+ def _validate_status_transition(self, new_status: StatusType) -> None:
66
+ """Validate that a status transition is allowed.
67
+
68
+ Args:
69
+ new_status: The new status to transition to
70
+
71
+ Raises:
72
+ StatusTransitionNotAllowed: If the transition is not allowed
73
+ """
74
+ # Don't allow transitions to the same status
75
+ if new_status == self.status:
76
+ raise StatusTransitionNotAllowed(
77
+ f"Invalid status transition: already in status {new_status}"
78
+ )
79
+
80
+ # Get valid transitions for current status
81
+ valid_transitions = self._get_valid_transitions()
82
+ if new_status not in valid_transitions:
83
+ raise StatusTransitionNotAllowed(
84
+ f"Invalid status transition from {self.status} to {new_status}. "
85
+ f"Valid transitions are: {valid_transitions}"
86
+ )
87
+
88
+ def update_status(
89
+ self, db: Session, new_status: StatusType, user_id: Optional[str] = None
90
+ ) -> None:
91
+ """Update the status with validation and completion handling.
92
+
93
+ Args:
94
+ db: Database session
95
+ new_status: New status to set
96
+ user_id: Optional user ID who is making the change
97
+ """
98
+ self._validate_status_transition(new_status)
99
+
100
+ if new_status == StatusType.completed:
101
+ self.completed_at = datetime.now(timezone.utc)
102
+ self.completed_by_id = user_id
103
+ elif new_status == StatusType.pending:
104
+ # Reset completion fields if going back to pending
105
+ self.completed_at = None
106
+ self.completed_by_id = None
107
+
108
+ self.status = new_status
109
+ db.add(self)
110
+ db.commit()
111
+
112
+ def mark_completed(self, db: Session, user_id: str) -> None:
113
+ """Mark as completed.
114
+
115
+ Args:
116
+ db: Database session
117
+ user_id: user ID who completed the task
118
+ """
119
+ self.update_status(db, StatusType.completed, user_id)
120
+
121
+ def mark_failed(self, db: Session) -> None:
122
+ """Mark as failed."""
123
+ self.update_status(db, StatusType.failed)
124
+
125
+ def start_progress(self, db: Session) -> None:
126
+ """Mark as in progress."""
127
+ self.update_status(db, StatusType.in_progress)
128
+
129
+ def reset_to_pending(self, db: Session) -> None:
130
+ """Reset to pending status."""
131
+ self.update_status(db, StatusType.pending)
132
+
133
+ @property
134
+ def is_completed(self) -> bool:
135
+ """Check if completed."""
136
+ return self.status == StatusType.completed
137
+
138
+ @property
139
+ def is_failed(self) -> bool:
140
+ """Check if failed."""
141
+ return self.status == StatusType.failed
142
+
143
+ @property
144
+ def is_in_progress(self) -> bool:
145
+ """Check if in progress."""
146
+ return self.status == StatusType.in_progress
147
+
148
+ @property
149
+ def is_pending(self) -> bool:
150
+ """Check if pending."""
151
+ return self.status == StatusType.pending
@@ -5,9 +5,8 @@ from fideslang.models import MaskingStrategies
5
5
  from loguru import logger
6
6
  from sqlalchemy import MetaData, Table, text
7
7
  from sqlalchemy.engine import Engine
8
- from sqlalchemy.sql import Delete, Update
8
+ from sqlalchemy.sql import Delete, Update # type: ignore
9
9
  from sqlalchemy.sql.elements import ColumnElement, TextClause
10
- from sqlalchemy_bigquery import BigQueryDialect
11
10
 
12
11
  from fides.api.graph.config import Field, FieldPath
13
12
  from fides.api.graph.execution import ExecutionNode
@@ -16,8 +15,6 @@ from fides.api.models.privacy_request import PrivacyRequest
16
15
  from fides.api.schemas.namespace_meta.bigquery_namespace_meta import (
17
16
  BigQueryNamespaceMeta,
18
17
  )
19
- from fides.api.schemas.partitioning import TIME_BASED_REQUIRED_KEYS, combine_partitions
20
- from fides.api.schemas.partitioning.time_based_partitioning import TimeBasedPartitioning
21
18
  from fides.api.service.connectors.query_configs.query_config import (
22
19
  QueryStringWithoutTuplesOverrideQueryConfig,
23
20
  )
@@ -39,59 +36,40 @@ class BigQueryQueryConfig(QueryStringWithoutTuplesOverrideQueryConfig):
39
36
  namespace_meta_schema = BigQueryNamespaceMeta
40
37
 
41
38
  @property
42
- def partitioning(
43
- self,
44
- ) -> Optional[Union[List[TimeBasedPartitioning], Dict[str, Any]]]:
45
- # Overridden from base implementation to allow for _only_ BQ partitioning, for now
39
+ def partitioning(self) -> Optional[Dict]:
40
+ # Overriden from base implementation to allow for _only_ BQ partitioning, for now
46
41
  return self.node.collection.partitioning
47
42
 
48
43
  def get_partition_clauses(
49
44
  self,
50
45
  ) -> List[str]:
51
46
  """
52
- Build a list of SQL `WHERE` clause strings for the collection's partitioning
53
- configuration.
47
+ Returns the WHERE clauses specified in the partitioning spec
54
48
 
55
- Supported modes:
56
- 1. `Legacy static` - A list of `where_clauses`.
57
- 2. `Single time-based` - A single time-based partitioning spec
58
- 3. `Multiple time-based` - A list of time-based partitioning specs, with different intervals
49
+ Currently, only where-clause based partitioning is supported.
59
50
 
60
- Any other combination (e.g. mixing modes or missing keys) raises a
61
- `ValueError` so that mis-configurations surface early.
62
- """
51
+ TODO: derive partitions from a start/end/interval specification
63
52
 
64
- partition_spec: Optional[Union[List[TimeBasedPartitioning], Dict[str, Any]]] = (
65
- self.partitioning
66
- )
53
+
54
+ NOTE: when we deprecate `where_clause` partitioning in favor of a more proper partitioning DSL,
55
+ we should be sure to still support the existing `where_clause` partition definition on
56
+ any in-progress DSRs so that they can run through to completion.
57
+ """
58
+ partition_spec = self.partitioning
67
59
  if not partition_spec:
68
- logger.warning(
69
- f"No partitioning specification found for node '{self.node.address}', skipping partition clauses"
60
+ logger.error(
61
+ "Partitioning clauses cannot be retrieved, no partitioning specification found"
70
62
  )
71
63
  return []
72
64
 
73
- # Legacy mode using `where_clauses`
74
- if isinstance(partition_spec, dict) and "where_clauses" in partition_spec:
75
- if any(k in partition_spec for k in TIME_BASED_REQUIRED_KEYS):
76
- # Mixed mode not allowed
77
- raise ValueError(
78
- "Partitioning spec cannot define both `where_clauses` and time-based partitioning."
79
- )
80
- where = partition_spec.get("where_clauses") or []
81
- if not where:
82
- raise ValueError("`where_clauses` must be a non-empty list.")
83
- return where
84
-
85
- # Combine and de-duplicate boundary rows
86
- combined_expressions = combine_partitions(partition_spec) # type: ignore
87
-
88
- dialect = BigQueryDialect()
89
- where_clauses = [
90
- str(expr.compile(dialect=dialect, compile_kwargs={"literal_binds": True}))
91
- for expr in combined_expressions
92
- ]
65
+ if where_clauses := partition_spec.get("where_clauses"):
66
+ return where_clauses
93
67
 
94
- return where_clauses
68
+ # TODO: implement more advanced partitioning support!
69
+
70
+ raise ValueError(
71
+ "`where_clauses` must be specified in partitioning specification!"
72
+ )
95
73
 
96
74
  def _generate_table_name(self) -> str:
97
75
  """
@@ -169,7 +147,7 @@ class BigQueryQueryConfig(QueryStringWithoutTuplesOverrideQueryConfig):
169
147
  nested_result = unflatten_dict(merged_dict)
170
148
 
171
149
  # 5. Replace any arrays containing only None values with empty arrays
172
- nested_result = replace_none_arrays(nested_result)
150
+ nested_result = replace_none_arrays(nested_result) # type: ignore
173
151
 
174
152
  # 6. Only keep top-level keys that are in the update_value_map
175
153
  top_level_keys = {key.split(".")[0] for key in update_value_map}
@@ -1,7 +1,7 @@
1
1
  # pylint: disable=too-many-lines
2
2
  import re
3
3
  from abc import ABC, abstractmethod
4
- from typing import Any, Dict, Generic, List, Optional, Tuple, Type, TypeVar, Union
4
+ from typing import Any, Dict, Generic, List, Optional, Tuple, Type, TypeVar
5
5
 
6
6
  import pydash
7
7
  from loguru import logger
@@ -22,7 +22,6 @@ from fides.api.graph.execution import ExecutionNode
22
22
  from fides.api.models.policy import Policy, Rule
23
23
  from fides.api.models.privacy_request import PrivacyRequest
24
24
  from fides.api.schemas.namespace_meta.namespace_meta import NamespaceMeta
25
- from fides.api.schemas.partitioning.time_based_partitioning import TimeBasedPartitioning
26
25
  from fides.api.schemas.policy import ActionType
27
26
  from fides.api.service.masking.strategy.masking_strategy import MaskingStrategy
28
27
  from fides.api.service.masking.strategy.masking_strategy_nullify import (
@@ -47,9 +46,7 @@ class QueryConfig(Generic[T], ABC):
47
46
  self.node = node
48
47
 
49
48
  @property
50
- def partitioning( # pylint: disable=useless-return
51
- self,
52
- ) -> Optional[Union[List[TimeBasedPartitioning], Dict[str, Any]]]:
49
+ def partitioning(self) -> Optional[Dict]: # pylint: disable=R1711
53
50
  # decided to de-scope partitioning support to only bigquery as this grew more complex,
54
51
  # but keeping more generic support stubbed out feels like a reasonable step.
55
52
  if self.node.collection.partitioning:
@@ -25,11 +25,6 @@ from fides.api.models.connectionconfig import (
25
25
  ConnectionType,
26
26
  )
27
27
  from fides.api.models.datasetconfig import DatasetConfig
28
- from fides.api.models.manual_task import (
29
- ManualTask,
30
- ManualTaskParentEntityType,
31
- ManualTaskType,
32
- )
33
28
  from fides.api.models.manual_webhook import AccessManualWebhook
34
29
  from fides.api.models.privacy_request import PrivacyRequest
35
30
  from fides.api.models.sql_models import Dataset as CtlDataset # type: ignore
@@ -248,9 +243,7 @@ def patch_connection_configs(
248
243
  ).model_dump(mode="json")
249
244
  connection_config.save(db=db)
250
245
  created_or_updated.append(
251
- ConnectionConfigurationResponse.model_validate(
252
- connection_config
253
- )
246
+ ConnectionConfigurationResponse(**connection_config.__dict__)
254
247
  )
255
248
  continue
256
249
 
@@ -275,24 +268,8 @@ def patch_connection_configs(
275
268
  connection_config = ConnectionConfig.create_or_update(
276
269
  db, data=config_dict, check_name=False
277
270
  )
278
-
279
- # Automatically create a ManualTask if this is a connection config of type manual_task
280
- # and it doesn't already have one
281
- if (
282
- connection_config.connection_type == ConnectionType.manual_task
283
- and not connection_config.manual_task
284
- ):
285
- ManualTask.create(
286
- db=db,
287
- data={
288
- "task_type": ManualTaskType.privacy_request,
289
- "parent_entity_id": connection_config.id,
290
- "parent_entity_type": ManualTaskParentEntityType.connection_config,
291
- },
292
- )
293
-
294
271
  created_or_updated.append(
295
- ConnectionConfigurationResponse.model_validate(connection_config)
272
+ ConnectionConfigurationResponse(**connection_config.__dict__)
296
273
  )
297
274
  except KeyOrNameAlreadyExists as exc:
298
275
  logger.warning(
@@ -155,10 +155,6 @@ AUTHORIZE = "/connection/{connection_key}/authorize"
155
155
  ACCESS_MANUAL_WEBHOOKS = "/access_manual_webhook"
156
156
  ACCESS_MANUAL_WEBHOOK = CONNECTION_BY_KEY + "/access_manual_webhook"
157
157
 
158
- # Manual Tasks
159
- MANUAL_TASKS = "/manual-tasks"
160
- MANUAL_TASK = CONNECTION_BY_KEY + "/manual-task"
161
-
162
158
  # Collection URLs
163
159
  DATASETS = "/dataset"
164
160
  DATASET_CONFIG = "/datasetconfig"
File without changes