ethyca-fides 2.63.3b0__py2.py3-none-any.whl → 2.64.0rc0__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 (271) hide show
  1. {ethyca_fides-2.63.3b0.dist-info → ethyca_fides-2.64.0rc0.dist-info}/METADATA +1 -1
  2. {ethyca_fides-2.63.3b0.dist-info → ethyca_fides-2.64.0rc0.dist-info}/RECORD +228 -225
  3. fides/_version.py +3 -3
  4. fides/api/alembic/migrations/versions/ba414a58ba90_create_manual_task_config_tables.py +121 -0
  5. fides/api/db/base.py +4 -0
  6. fides/api/models/attachment.py +1 -0
  7. fides/api/models/manual_tasks/__init__.py +6 -0
  8. fides/api/models/manual_tasks/manual_task.py +11 -1
  9. fides/api/models/manual_tasks/manual_task_config.py +136 -0
  10. fides/api/models/manual_tasks/manual_task_log.py +13 -9
  11. fides/api/schemas/manual_tasks/manual_task_config.py +311 -0
  12. fides/api/schemas/manual_tasks/manual_task_schemas.py +1 -1
  13. fides/api/schemas/manual_tasks/manual_task_status.py +1 -1
  14. fides/api/schemas/privacy_request.py +2 -0
  15. fides/api/util/cache.py +6 -3
  16. fides/config/redis_settings.py +105 -44
  17. fides/service/manual_tasks/manual_task_config_service.py +370 -0
  18. fides/service/manual_tasks/manual_task_service.py +231 -87
  19. fides/service/manual_tasks/utils.py +185 -0
  20. fides/ui-build/static/admin/404.html +1 -1
  21. fides/ui-build/static/admin/_next/static/chunks/1040-630c7f4284dc6f70.js +1 -0
  22. fides/ui-build/static/admin/_next/static/chunks/1316-6cc72a45ebf7ff81.js +1 -0
  23. fides/ui-build/static/admin/_next/static/chunks/2430-b480401d44c55416.js +1 -0
  24. fides/ui-build/static/admin/_next/static/chunks/2599-6c4d22e75028d8b6.js +1 -0
  25. fides/ui-build/static/admin/_next/static/chunks/3450-bdaeb35442d810b4.js +1 -0
  26. fides/ui-build/static/admin/_next/static/chunks/3855-0dec3e7d9e886550.js +1 -0
  27. fides/ui-build/static/admin/_next/static/chunks/401-fceaae662cfca5a5.js +1 -0
  28. fides/ui-build/static/admin/_next/static/chunks/409-037cfc3f096150f0.js +1 -0
  29. fides/ui-build/static/admin/_next/static/chunks/4230-1cdb7ea1be370ed3.js +1 -0
  30. fides/ui-build/static/admin/_next/static/chunks/431-f72599f01b98f07d.js +1 -0
  31. fides/ui-build/static/admin/_next/static/chunks/5309-4511df9708d5a63c.js +1 -0
  32. fides/ui-build/static/admin/_next/static/chunks/5574-3cd33b3a6c937899.js +1 -0
  33. fides/ui-build/static/admin/_next/static/chunks/6662-cb11881dcaabe5e2.js +1 -0
  34. fides/ui-build/static/admin/_next/static/chunks/6882-3cc73d407a088d7d.js +1 -0
  35. fides/ui-build/static/admin/_next/static/chunks/699-8ca44b0de9fa20f0.js +1 -0
  36. fides/ui-build/static/admin/_next/static/chunks/9046-fdf53cc7e926a8c1.js +1 -0
  37. fides/ui-build/static/admin/_next/static/chunks/{905-5fe5124abfb5c542.js → 905-742074a074be1055.js} +1 -1
  38. fides/ui-build/static/admin/_next/static/chunks/9226-ba6587e46ec7659a.js +1 -0
  39. fides/ui-build/static/admin/_next/static/chunks/9767-e49b065d03ce4e80.js +1 -0
  40. fides/ui-build/static/admin/_next/static/chunks/9951-f9ab5cac7e2c05ab.js +1 -0
  41. fides/ui-build/static/admin/_next/static/chunks/pages/{_app-0e0fdbcc0ec1c76b.js → _app-8ec6e466f3373ac0.js} +6 -6
  42. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{manual-3065022f370ec055.js → manual-0a5f2310ce6b1059.js} +1 -1
  43. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/{[resourceUrn]-18e3faf7963962e4.js → [resourceUrn]-c623d6f1a61c8ea9.js} +1 -1
  44. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects-cfac259a30641e68.js +1 -0
  45. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/{[resourceUrn]-7320524a47104798.js → [resourceUrn]-57bd5cdf784f059f.js} +1 -1
  46. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-7b5aec33da578745.js +1 -0
  47. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-c948f93c833d4358.js +1 -0
  48. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-333f53caab751428.js +1 -0
  49. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{action-center-18c144223277bc2e.js → action-center-27205f8457a1ecb0.js} +1 -1
  50. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-20a1043f6a06198f.js +1 -0
  51. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/detection/{[resourceUrn]-4c526db0c30c488a.js → [resourceUrn]-06edce289876dea1.js} +1 -1
  52. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{detection-6f27dbb7c8edc69d.js → detection-faf326a6200637d0.js} +1 -1
  53. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/{[resourceUrn]-562d2b8ae90dd1f0.js → [resourceUrn]-64acf269256ee74f.js} +1 -1
  54. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{discovery-fe7f51502eda57c9.js → discovery-8c3e4be6d36da66d.js} +1 -1
  55. fides/ui-build/static/admin/_next/static/chunks/pages/{datamap-9af01b6cf4cbe8af.js → datamap-fb50de22f83edd4a.js} +1 -1
  56. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-41ab27c4195cfa93.js +1 -0
  57. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]-6e2caba24b3e78c2.js +1 -0
  58. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]-904d43e31157aa55.js +1 -0
  59. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-d4e31a1c4a58800e.js +1 -0
  60. fides/ui-build/static/admin/_next/static/chunks/pages/dataset-8f7d16bc5e9229c8.js +1 -0
  61. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{[id]-18ff06fc09c22c33.js → [id]-4a33dd0371dbaebc.js} +1 -1
  62. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{new-979eff6888e42b6b.js → new-e88509346b2d2851.js} +1 -1
  63. fides/ui-build/static/admin/_next/static/chunks/pages/{fides-js-docs-80b241bf6cddb72e.js → fides-js-docs-5d8fd1af75f19e2f.js} +1 -1
  64. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-fdc2964fa7d1d8fd.js +1 -0
  65. fides/ui-build/static/admin/_next/static/chunks/pages/integrations-adc286ff254e7f41.js +1 -0
  66. fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-4cdbbb8cd1d8698e.js +1 -0
  67. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-d0e350d2a2667883.js +1 -0
  68. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-7796fbf458f8f159.js +1 -0
  69. fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-6f866bc799a5f67f.js +1 -0
  70. fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-24108f615ff5e1e7.js +1 -0
  71. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-fef247a87baeb080.js +1 -0
  72. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/{[id]-2b540203a2d7b59d.js → [id]-6eb886e7b7e6785b.js} +1 -1
  73. fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-18534d2a79a3850b.js +1 -0
  74. fides/ui-build/static/admin/_next/static/chunks/webpack-0a61b5bd21a41fe6.js +1 -0
  75. fides/ui-build/static/admin/_next/static/css/c693338e3bc8dcc6.css +1 -0
  76. fides/ui-build/static/admin/_next/static/lDN8BtGGiw3b60__SDnAa/_buildManifest.js +1 -0
  77. fides/ui-build/static/admin/add-systems/manual.html +1 -1
  78. fides/ui-build/static/admin/add-systems/multiple.html +1 -1
  79. fides/ui-build/static/admin/add-systems.html +1 -1
  80. fides/ui-build/static/admin/consent/configure/add-vendors.html +1 -1
  81. fides/ui-build/static/admin/consent/configure.html +1 -1
  82. fides/ui-build/static/admin/consent/privacy-experience/[id].html +1 -1
  83. fides/ui-build/static/admin/consent/privacy-experience/new.html +1 -1
  84. fides/ui-build/static/admin/consent/privacy-experience.html +1 -1
  85. fides/ui-build/static/admin/consent/privacy-notices/[id].html +1 -1
  86. fides/ui-build/static/admin/consent/privacy-notices/new.html +1 -1
  87. fides/ui-build/static/admin/consent/privacy-notices.html +1 -1
  88. fides/ui-build/static/admin/consent/properties.html +1 -1
  89. fides/ui-build/static/admin/consent/reporting.html +1 -1
  90. fides/ui-build/static/admin/consent.html +1 -1
  91. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn].html +1 -1
  92. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn].html +1 -1
  93. fides/ui-build/static/admin/data-catalog/[systemId]/projects.html +1 -1
  94. fides/ui-build/static/admin/data-catalog/[systemId]/resources/[resourceUrn].html +1 -1
  95. fides/ui-build/static/admin/data-catalog/[systemId]/resources.html +1 -1
  96. fides/ui-build/static/admin/data-catalog.html +1 -1
  97. fides/ui-build/static/admin/data-discovery/action-center/[monitorId]/[systemId].html +1 -1
  98. fides/ui-build/static/admin/data-discovery/action-center/[monitorId].html +1 -1
  99. fides/ui-build/static/admin/data-discovery/action-center.html +1 -1
  100. fides/ui-build/static/admin/data-discovery/activity.html +1 -1
  101. fides/ui-build/static/admin/data-discovery/detection/[resourceUrn].html +1 -1
  102. fides/ui-build/static/admin/data-discovery/detection.html +1 -1
  103. fides/ui-build/static/admin/data-discovery/discovery/[resourceUrn].html +1 -1
  104. fides/ui-build/static/admin/data-discovery/discovery.html +1 -1
  105. fides/ui-build/static/admin/datamap.html +1 -1
  106. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName]/[...subfieldNames].html +1 -1
  107. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName].html +1 -1
  108. fides/ui-build/static/admin/dataset/[datasetId].html +1 -1
  109. fides/ui-build/static/admin/dataset/new.html +1 -1
  110. fides/ui-build/static/admin/dataset.html +1 -1
  111. fides/ui-build/static/admin/datastore-connection/[id].html +1 -1
  112. fides/ui-build/static/admin/datastore-connection/new.html +1 -1
  113. fides/ui-build/static/admin/datastore-connection.html +1 -1
  114. fides/ui-build/static/admin/index.html +1 -1
  115. fides/ui-build/static/admin/integrations/[id].html +1 -1
  116. fides/ui-build/static/admin/integrations.html +1 -1
  117. fides/ui-build/static/admin/lib/fides-ext-gpp.js +1 -1
  118. fides/ui-build/static/admin/lib/fides-headless.js +1 -1
  119. fides/ui-build/static/admin/lib/fides-preview.js +1 -1
  120. fides/ui-build/static/admin/lib/fides-tcf.js +2 -2
  121. fides/ui-build/static/admin/lib/fides.js +2 -2
  122. fides/ui-build/static/admin/login/[provider].html +1 -1
  123. fides/ui-build/static/admin/login.html +1 -1
  124. fides/ui-build/static/admin/messaging/[id].html +1 -1
  125. fides/ui-build/static/admin/messaging/add-template.html +1 -1
  126. fides/ui-build/static/admin/messaging.html +1 -1
  127. fides/ui-build/static/admin/poc/ant-components.html +1 -1
  128. fides/ui-build/static/admin/poc/form-experiments/AntForm.html +1 -1
  129. fides/ui-build/static/admin/poc/form-experiments/FormikAntFormItem.html +1 -1
  130. fides/ui-build/static/admin/poc/form-experiments/FormikControlled.html +1 -1
  131. fides/ui-build/static/admin/poc/form-experiments/FormikField.html +1 -1
  132. fides/ui-build/static/admin/poc/form-experiments/FormikSpreadField.html +1 -1
  133. fides/ui-build/static/admin/poc/forms.html +1 -1
  134. fides/ui-build/static/admin/poc/table-migration.html +1 -1
  135. fides/ui-build/static/admin/privacy-requests/[id].html +1 -1
  136. fides/ui-build/static/admin/privacy-requests/configure/messaging.html +1 -1
  137. fides/ui-build/static/admin/privacy-requests/configure/storage.html +1 -1
  138. fides/ui-build/static/admin/privacy-requests/configure.html +1 -1
  139. fides/ui-build/static/admin/privacy-requests.html +1 -1
  140. fides/ui-build/static/admin/properties/[id].html +1 -1
  141. fides/ui-build/static/admin/properties/add-property.html +1 -1
  142. fides/ui-build/static/admin/properties.html +1 -1
  143. fides/ui-build/static/admin/reporting/datamap.html +1 -1
  144. fides/ui-build/static/admin/settings/about/alpha.html +1 -1
  145. fides/ui-build/static/admin/settings/about.html +1 -1
  146. fides/ui-build/static/admin/settings/consent/[configuration_id]/[purpose_id].html +1 -1
  147. fides/ui-build/static/admin/settings/consent.html +1 -1
  148. fides/ui-build/static/admin/settings/custom-fields.html +1 -1
  149. fides/ui-build/static/admin/settings/domain-records.html +1 -1
  150. fides/ui-build/static/admin/settings/domains.html +1 -1
  151. fides/ui-build/static/admin/settings/email-templates.html +1 -1
  152. fides/ui-build/static/admin/settings/locations.html +1 -1
  153. fides/ui-build/static/admin/settings/organization.html +1 -1
  154. fides/ui-build/static/admin/settings/regulations.html +1 -1
  155. fides/ui-build/static/admin/systems/configure/[id]/test-datasets.html +1 -1
  156. fides/ui-build/static/admin/systems/configure/[id].html +1 -1
  157. fides/ui-build/static/admin/systems.html +1 -1
  158. fides/ui-build/static/admin/taxonomy.html +1 -1
  159. fides/ui-build/static/admin/user-management/new.html +1 -1
  160. fides/ui-build/static/admin/user-management/profile/[id].html +1 -1
  161. fides/ui-build/static/admin/user-management.html +1 -1
  162. fides/ui-build/static/admin/_next/static/0S8UTwc7FKVdi3Eb4LgFK/_buildManifest.js +0 -1
  163. fides/ui-build/static/admin/_next/static/chunks/1099-f2199d5b88dd98b4.js +0 -1
  164. fides/ui-build/static/admin/_next/static/chunks/155-8ad794121fef6281.js +0 -1
  165. fides/ui-build/static/admin/_next/static/chunks/1904-e33cb75edb93d3d3.js +0 -1
  166. fides/ui-build/static/admin/_next/static/chunks/2310-efaa2a52fc487db4.js +0 -1
  167. fides/ui-build/static/admin/_next/static/chunks/3119-9be74ade1504a7e7.js +0 -1
  168. fides/ui-build/static/admin/_next/static/chunks/401-710009c2a7408818.js +0 -1
  169. fides/ui-build/static/admin/_next/static/chunks/4132-76ca1bcf79bf1d77.js +0 -1
  170. fides/ui-build/static/admin/_next/static/chunks/5258-8a1f7feddee7a960.js +0 -1
  171. fides/ui-build/static/admin/_next/static/chunks/5404-a8a82985736363f4.js +0 -1
  172. fides/ui-build/static/admin/_next/static/chunks/5487-483a111405f678e0.js +0 -1
  173. fides/ui-build/static/admin/_next/static/chunks/5683-7144f557d701406c.js +0 -1
  174. fides/ui-build/static/admin/_next/static/chunks/6202-86a62d94744e2c18.js +0 -1
  175. fides/ui-build/static/admin/_next/static/chunks/641-7e4eef3222cbda70.js +0 -1
  176. fides/ui-build/static/admin/_next/static/chunks/7980-3da0fe6938b0b758.js +0 -1
  177. fides/ui-build/static/admin/_next/static/chunks/8032-4b8bda7166eff954.js +0 -1
  178. fides/ui-build/static/admin/_next/static/chunks/8499-a65187ae77b7307b.js +0 -1
  179. fides/ui-build/static/admin/_next/static/chunks/8702-d1c8296f9f6afc10.js +0 -1
  180. fides/ui-build/static/admin/_next/static/chunks/9187-851756440f79cd75.js +0 -1
  181. fides/ui-build/static/admin/_next/static/chunks/9327-eb3b84680abcc660.js +0 -1
  182. fides/ui-build/static/admin/_next/static/chunks/9494-04a0483ed0ddad7c.js +0 -1
  183. fides/ui-build/static/admin/_next/static/chunks/9767-a3ed98edff04e6ed.js +0 -1
  184. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects-b02050eb3b7113d4.js +0 -1
  185. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-ff211c7a968bda47.js +0 -1
  186. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-7f7435f28861ee78.js +0 -1
  187. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-ec4b981fd9cff542.js +0 -1
  188. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-e18f14b8d598e942.js +0 -1
  189. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-1987ef0d3c687aaa.js +0 -1
  190. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]-979828f48148b37c.js +0 -1
  191. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]-e85c3537d3aade4a.js +0 -1
  192. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-6d44abbe7d454435.js +0 -1
  193. fides/ui-build/static/admin/_next/static/chunks/pages/dataset-42f276660c107e1c.js +0 -1
  194. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-63361d914d70d647.js +0 -1
  195. fides/ui-build/static/admin/_next/static/chunks/pages/integrations-fd73f276dad7a06c.js +0 -1
  196. fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-f85f92726a61a668.js +0 -1
  197. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-e090903a572cba68.js +0 -1
  198. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-f0c8e4eced9f5cc5.js +0 -1
  199. fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-f7a271ee53cb4e51.js +0 -1
  200. fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-dd903f6e03c4ee4e.js +0 -1
  201. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-493dc9b4595c9fb4.js +0 -1
  202. fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-6d790458dd21dde7.js +0 -1
  203. fides/ui-build/static/admin/_next/static/chunks/webpack-abfd03ce7f1e55ac.js +0 -1
  204. fides/ui-build/static/admin/_next/static/css/c3377f99bf988d68.css +0 -1
  205. {ethyca_fides-2.63.3b0.dist-info → ethyca_fides-2.64.0rc0.dist-info}/WHEEL +0 -0
  206. {ethyca_fides-2.63.3b0.dist-info → ethyca_fides-2.64.0rc0.dist-info}/entry_points.txt +0 -0
  207. {ethyca_fides-2.63.3b0.dist-info → ethyca_fides-2.64.0rc0.dist-info}/licenses/LICENSE +0 -0
  208. {ethyca_fides-2.63.3b0.dist-info → ethyca_fides-2.64.0rc0.dist-info}/top_level.txt +0 -0
  209. /fides/ui-build/static/admin/_next/static/chunks/{1100-d617215143d70d3d.js → 1100-d43cb04522a6505c.js} +0 -0
  210. /fides/ui-build/static/admin/_next/static/chunks/{1817-ddfdd6ed9529bba6.js → 1817-b4688ba5042ec687.js} +0 -0
  211. /fides/ui-build/static/admin/_next/static/chunks/{2921-19664dd93e2bf1ea.js → 2921-aabf41bf3d7573f9.js} +0 -0
  212. /fides/ui-build/static/admin/_next/static/chunks/{3505-f6d55694ca5c9816.js → 3505-a79256cd851dfab4.js} +0 -0
  213. /fides/ui-build/static/admin/_next/static/chunks/{3513-656df06b45fedba3.js → 3513-8677ee280eaef0da.js} +0 -0
  214. /fides/ui-build/static/admin/_next/static/chunks/{3872-09df90521f7db611.js → 3872-ffa16c2df7ef0ab6.js} +0 -0
  215. /fides/ui-build/static/admin/_next/static/chunks/{3923-3d80020d02819c33.js → 3923-5d580fbb1dd6ae01.js} +0 -0
  216. /fides/ui-build/static/admin/_next/static/chunks/{4060-4e196835f56cc326.js → 4060-71cd041e5a57ca5a.js} +0 -0
  217. /fides/ui-build/static/admin/_next/static/chunks/{4121-80ac9bcd08f9cd7a.js → 4121-78a76e980acbd539.js} +0 -0
  218. /fides/ui-build/static/admin/_next/static/chunks/{4481-be144b50994f5135.js → 4481-f597a7cf03f8c9e1.js} +0 -0
  219. /fides/ui-build/static/admin/_next/static/chunks/{6277-0b1e3d23e97f5e19.js → 6277-3fb4c7fc790a6d20.js} +0 -0
  220. /fides/ui-build/static/admin/_next/static/chunks/{6853-d9c6c55d8562bc9b.js → 6853-a4097260e402980e.js} +0 -0
  221. /fides/ui-build/static/admin/_next/static/chunks/{69-a4d64cabe750b286.js → 69-6889d6674c95e7b5.js} +0 -0
  222. /fides/ui-build/static/admin/_next/static/chunks/{6954-8ed05ffdbf2ec086.js → 6954-13a25cef3a8fdd76.js} +0 -0
  223. /fides/ui-build/static/admin/_next/static/chunks/{7553-77c9715868d6ad13.js → 7553-a95939c32d54b5b7.js} +0 -0
  224. /fides/ui-build/static/admin/_next/static/chunks/{79-6c977013b6bedc23.js → 79-5670e31eb65d0a53.js} +0 -0
  225. /fides/ui-build/static/admin/_next/static/chunks/{796-1d77aa88b776ee4e.js → 796-9a6b13c838e25538.js} +0 -0
  226. /fides/ui-build/static/admin/_next/static/chunks/{8433-88fd946149dd1f27.js → 8433-adb1fcb29d82f1b7.js} +0 -0
  227. /fides/ui-build/static/admin/_next/static/chunks/pages/{404-c50dccc133b332a9.js → 404-ac2f0844e5c4b4cd.js} +0 -0
  228. /fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{multiple-357ef3b269c576bb.js → multiple-00cb904825aad7e3.js} +0 -0
  229. /fides/ui-build/static/admin/_next/static/chunks/pages/{add-systems-e8ae218a9d124ba7.js → add-systems-587e21d14e0a5196.js} +0 -0
  230. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-488507bb244cce9d.js → add-vendors-fa7305b88c1afd20.js} +0 -0
  231. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{configure-6f0b46ac2b112bfe.js → configure-f140ec9d8e8a0f7a.js} +0 -0
  232. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{[id]-5024b4ab40ba024c.js → [id]-0edb7c92518e7d21.js} +0 -0
  233. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-experience-2b62e5facfc51808.js → privacy-experience-d8d926f0735a2546.js} +0 -0
  234. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-71791459da78e35d.js → [id]-5c949f2e3cef2398.js} +0 -0
  235. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-26a7d52615b1ebb8.js → new-130155cfb4a0bcc7.js} +0 -0
  236. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-notices-25836dd5142f37e8.js → privacy-notices-1135ad8924d32c36.js} +0 -0
  237. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-3a9021850242c78f.js → properties-776855e370414beb.js} +0 -0
  238. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{reporting-9a5d3cc5cbb4ef27.js → reporting-21c23f75ff1135d9.js} +0 -0
  239. /fides/ui-build/static/admin/_next/static/chunks/pages/{consent-9e21184279f8e126.js → consent-4d5ea70a77df1bb8.js} +0 -0
  240. /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/{[projectUrn]-64cea013d41e348a.js → [projectUrn]-030ee304cbe5e530.js} +0 -0
  241. /fides/ui-build/static/admin/_next/static/chunks/pages/{datastore-connection-343a3830b2d4cf22.js → datastore-connection-8f9b8890018e1ea5.js} +0 -0
  242. /fides/ui-build/static/admin/_next/static/chunks/pages/{index-737b0c430bf2f7a0.js → index-1adb6bcb71701ac2.js} +0 -0
  243. /fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{[id]-91e865a65a88d1a4.js → [id]-9b4d1d61c7c97509.js} +0 -0
  244. /fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{add-template-529c7e09b073edd2.js → add-template-f8fd4795e260887c.js} +0 -0
  245. /fides/ui-build/static/admin/_next/static/chunks/pages/{messaging-6226faba9595da71.js → messaging-aa744ae8b61e5ff2.js} +0 -0
  246. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/{ant-components-0f7d4390e01f4ffb.js → ant-components-3407158757fb3627.js} +0 -0
  247. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{AntForm-a4e470f75a5553f8.js → AntForm-47e947c02ae90fd0.js} +0 -0
  248. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikAntFormItem-d814c1c56b4b04d8.js → FormikAntFormItem-24f9a44512ce8827.js} +0 -0
  249. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikControlled-0f68f2be09df2c76.js → FormikControlled-e567a69f8c37fb9a.js} +0 -0
  250. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikField-6b63d5c992466891.js → FormikField-35a33f9c7def2220.js} +0 -0
  251. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/{forms-88eb9b98e8e4b426.js → forms-780e18dde8e38099.js} +0 -0
  252. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/{table-migration-a3da91fd04eec8f5.js → table-migration-7a17dffa515e5560.js} +0 -0
  253. /fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{[id]-b2ea863afce1d7f0.js → [id]-91dd0039cc2b70bc.js} +0 -0
  254. /fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/{messaging-0831dfaa65ce0d50.js → messaging-b01cbbaac34dadbc.js} +0 -0
  255. /fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/{storage-709676f00a491bca.js → storage-a15410de7f1d0f84.js} +0 -0
  256. /fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{configure-0eac9951504b46a7.js → configure-1a1aa83a3f88844c.js} +0 -0
  257. /fides/ui-build/static/admin/_next/static/chunks/pages/{privacy-requests-88e20023c30113df.js → privacy-requests-c4e1b69fb5bab61a.js} +0 -0
  258. /fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-3acc3107e9a21260.js → [id]-19737d4f21aadbee.js} +0 -0
  259. /fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-2bf13ee02d8d5ab9.js → add-property-9ccb295110feee20.js} +0 -0
  260. /fides/ui-build/static/admin/_next/static/chunks/pages/{properties-822eac07220f55f8.js → properties-3a1037a2e036212a.js} +0 -0
  261. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/about/{alpha-88999260f855b448.js → alpha-965cc21889b25e44.js} +0 -0
  262. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{about-928b0b69e05fd430.js → about-0e1c381d488a7ada.js} +0 -0
  263. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domain-records-611980eee1ce9c8a.js → domain-records-0b44b2b224077dcd.js} +0 -0
  264. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domains-382cb6df12684bf8.js → domains-5d00e1155bd11178.js} +0 -0
  265. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{email-templates-5d664f2a0f11b626.js → email-templates-d2cdbe770683e9df.js} +0 -0
  266. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-ba569d22e1e3f6df.js → locations-811dadb489f23d7d.js} +0 -0
  267. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{regulations-fae8ecf7878bad2d.js → regulations-54f142bc3e4c95ba.js} +0 -0
  268. /fides/ui-build/static/admin/_next/static/chunks/pages/{systems-a278608ba0ddc66c.js → systems-7b71274334c559a4.js} +0 -0
  269. /fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/{[id]-eb30c9230a9ce9cc.js → [id]-75d41fde668b9025.js} +0 -0
  270. /fides/ui-build/static/admin/_next/static/chunks/pages/{user-management-381146aa81e3ffea.js → user-management-dd43755b687c09a7.js} +0 -0
  271. /fides/ui-build/static/admin/_next/static/{0S8UTwc7FKVdi3Eb4LgFK → lDN8BtGGiw3b60__SDnAa}/_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-12T18:57:31-0300",
11
+ "date": "2025-06-18T15:26:50-0400",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "14baaf4b4e688a68ff32098124e78e6bab89dcb5",
15
- "version": "2.63.3b0"
14
+ "full-revisionid": "ea6b775604ef2201b14072255d81f566db14914d",
15
+ "version": "2.64.0rc0"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -0,0 +1,121 @@
1
+ """create manual task config tables
2
+
3
+ Revision ID: ba414a58ba90
4
+ Revises: 29e56fa1fdb3
5
+ Create Date: 2025-06-09 19:56:18.254209
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 = "ba414a58ba90"
15
+ down_revision = "29e56fa1fdb3"
16
+ branch_labels = None
17
+ depends_on = None
18
+
19
+
20
+ def upgrade():
21
+ # Create manual_task_config table
22
+ op.create_table(
23
+ "manual_task_config",
24
+ sa.Column("id", sa.String(), nullable=False),
25
+ sa.Column(
26
+ "created_at",
27
+ sa.DateTime(timezone=True),
28
+ nullable=False,
29
+ server_default=sa.text("now()"),
30
+ ),
31
+ sa.Column(
32
+ "updated_at",
33
+ sa.DateTime(timezone=True),
34
+ nullable=False,
35
+ server_default=sa.text("now()"),
36
+ ),
37
+ sa.Column("task_id", sa.String(), nullable=False),
38
+ sa.Column("config_type", sa.String(), nullable=False),
39
+ sa.Column("version", sa.Integer(), nullable=False, server_default="1"),
40
+ sa.Column("is_current", sa.Boolean(), nullable=False, server_default="true"),
41
+ sa.ForeignKeyConstraint(["task_id"], ["manual_task.id"], ondelete="CASCADE"),
42
+ sa.PrimaryKeyConstraint("id"),
43
+ )
44
+
45
+ # Create manual_task_config_field table
46
+ op.create_table(
47
+ "manual_task_config_field",
48
+ sa.Column("id", sa.String(), nullable=False),
49
+ sa.Column(
50
+ "created_at",
51
+ sa.DateTime(timezone=True),
52
+ nullable=False,
53
+ server_default=sa.text("now()"),
54
+ ),
55
+ sa.Column(
56
+ "updated_at",
57
+ sa.DateTime(timezone=True),
58
+ nullable=False,
59
+ server_default=sa.text("now()"),
60
+ ),
61
+ sa.Column("task_id", sa.String(), nullable=False),
62
+ sa.Column("config_id", sa.String(), nullable=False),
63
+ sa.Column("field_key", sa.String(), nullable=False),
64
+ sa.Column("field_type", sa.String(), nullable=False),
65
+ sa.Column("field_metadata", JSONB, nullable=False, server_default="{}"),
66
+ sa.ForeignKeyConstraint(["task_id"], ["manual_task.id"], ondelete="CASCADE"),
67
+ sa.ForeignKeyConstraint(
68
+ ["config_id"], ["manual_task_config.id"], ondelete="CASCADE"
69
+ ),
70
+ sa.PrimaryKeyConstraint("id"),
71
+ sa.UniqueConstraint(
72
+ "config_id", "field_key", name="unique_field_key_per_config"
73
+ ),
74
+ )
75
+
76
+ # Add foreign key constraint to manual_task_log table
77
+ op.create_foreign_key(
78
+ "fk_manual_task_log_config_id",
79
+ "manual_task_log",
80
+ "manual_task_config",
81
+ ["config_id"],
82
+ ["id"],
83
+ ondelete="SET NULL",
84
+ )
85
+
86
+ # Create indexes
87
+ op.create_index("ix_manual_task_config_task_id", "manual_task_config", ["task_id"])
88
+ op.create_index(
89
+ "ix_manual_task_config_config_type", "manual_task_config", ["config_type"]
90
+ )
91
+ op.create_index(
92
+ "ix_manual_task_config_field_task_id", "manual_task_config_field", ["task_id"]
93
+ )
94
+ op.create_index(
95
+ "ix_manual_task_config_field_config_id",
96
+ "manual_task_config_field",
97
+ ["config_id"],
98
+ )
99
+ op.create_index(
100
+ "ix_manual_task_config_field_field_key",
101
+ "manual_task_config_field",
102
+ ["field_key"],
103
+ )
104
+
105
+
106
+ def downgrade():
107
+ # Drop indexes
108
+ op.drop_index("ix_manual_task_config_field_field_key")
109
+ op.drop_index("ix_manual_task_config_field_config_id")
110
+ op.drop_index("ix_manual_task_config_field_task_id")
111
+ op.drop_index("ix_manual_task_config_config_type")
112
+ op.drop_index("ix_manual_task_config_task_id")
113
+
114
+ # Drop foreign key constraint from manual_task_log
115
+ op.drop_constraint(
116
+ "fk_manual_task_log_config_id", "manual_task_log", type_="foreignkey"
117
+ )
118
+
119
+ # Drop tables
120
+ op.drop_table("manual_task_config_field")
121
+ op.drop_table("manual_task_config")
fides/api/db/base.py CHANGED
@@ -32,6 +32,10 @@ from fides.api.models.fides_user_respondent_email_verification import (
32
32
  from fides.api.models.identity_salt import IdentitySalt
33
33
  from fides.api.models.location_regulation_selections import LocationRegulationSelections
34
34
  from fides.api.models.manual_tasks.manual_task import ManualTask, ManualTaskReference
35
+ from fides.api.models.manual_tasks.manual_task_config import (
36
+ ManualTaskConfig,
37
+ ManualTaskConfigField,
38
+ )
35
39
  from fides.api.models.manual_tasks.manual_task_log import ManualTaskLog
36
40
  from fides.api.models.manual_webhook import AccessManualWebhook
37
41
  from fides.api.models.messaging import MessagingConfig
@@ -51,6 +51,7 @@ class AttachmentReferenceType(str, EnumType):
51
51
  erasure_manual_webhook = "erasure_manual_webhook"
52
52
  privacy_request = "privacy_request"
53
53
  comment = "comment"
54
+ manual_task_submission = "manual_task_submission"
54
55
 
55
56
 
56
57
  class AttachmentReference(Base):
@@ -1,8 +1,14 @@
1
1
  from fides.api.models.manual_tasks.manual_task import ManualTask, ManualTaskReference
2
+ from fides.api.models.manual_tasks.manual_task_config import (
3
+ ManualTaskConfig,
4
+ ManualTaskConfigField,
5
+ )
2
6
  from fides.api.models.manual_tasks.manual_task_log import ManualTaskLog
3
7
 
4
8
  __all__ = [
5
9
  "ManualTask",
10
+ "ManualTaskConfig",
11
+ "ManualTaskConfigField",
6
12
  "ManualTaskReference",
7
13
  "ManualTaskLog",
8
14
  ]
@@ -1,4 +1,4 @@
1
- from typing import Any
1
+ from typing import TYPE_CHECKING, Any
2
2
 
3
3
  from sqlalchemy import Column, DateTime, ForeignKey, String
4
4
  from sqlalchemy.ext.declarative import declared_attr
@@ -14,6 +14,11 @@ from fides.api.schemas.manual_tasks.manual_task_schemas import (
14
14
  ManualTaskType,
15
15
  )
16
16
 
17
+ if TYPE_CHECKING: # pragma: no cover
18
+ from fides.api.models.manual_tasks.manual_task_config import ( # pragma: no cover
19
+ ManualTaskConfig,
20
+ )
21
+
17
22
 
18
23
  class ManualTask(Base):
19
24
  """Model for storing manual tasks.
@@ -59,6 +64,11 @@ class ManualTask(Base):
59
64
  viewonly=True,
60
65
  order_by="ManualTaskLog.created_at",
61
66
  )
67
+ configs = relationship(
68
+ "ManualTaskConfig",
69
+ back_populates="task",
70
+ cascade="all, delete-orphan",
71
+ )
62
72
 
63
73
  # Properties
64
74
  @property
@@ -0,0 +1,136 @@
1
+ from typing import TYPE_CHECKING, Any, Optional
2
+
3
+ from sqlalchemy import Boolean, Column, ForeignKey, Integer, String
4
+ from sqlalchemy.dialects.postgresql import JSONB
5
+ from sqlalchemy.ext.declarative import declared_attr
6
+ from sqlalchemy.orm import Session, relationship
7
+
8
+ from fides.api.db.base_class import Base
9
+ from fides.api.db.util import EnumColumn
10
+ from fides.api.models.manual_tasks.manual_task_log import ManualTaskLog
11
+ from fides.api.schemas.manual_tasks.manual_task_config import (
12
+ ManualTaskConfigurationType,
13
+ ManualTaskFieldMetadata,
14
+ ManualTaskFieldType,
15
+ )
16
+ from fides.api.schemas.manual_tasks.manual_task_schemas import ManualTaskLogStatus
17
+
18
+ if TYPE_CHECKING: # pragma: no cover
19
+ from fides.api.models.manual_tasks.manual_task import ManualTask # pragma: no cover
20
+
21
+
22
+ class ManualTaskConfig(Base):
23
+ """Model for storing manual task configurations.
24
+ A single configuration may have many fields of different types.
25
+ """
26
+
27
+ @declared_attr
28
+ def __tablename__(cls) -> str:
29
+ return "manual_task_config"
30
+
31
+ task_id = Column(String, ForeignKey("manual_task.id"), nullable=False)
32
+ config_type = Column(EnumColumn(ManualTaskConfigurationType), nullable=False)
33
+ version = Column(Integer, nullable=False, default=1)
34
+ is_current = Column(Boolean, nullable=False, default=True)
35
+
36
+ # Relationships
37
+ task = relationship("ManualTask", back_populates="configs")
38
+ field_definitions = relationship(
39
+ "ManualTaskConfigField",
40
+ back_populates="config",
41
+ cascade="all, delete-orphan",
42
+ uselist=True,
43
+ )
44
+ logs = relationship(
45
+ "ManualTaskLog",
46
+ back_populates="config",
47
+ primaryjoin="ManualTaskConfig.id == ManualTaskLog.config_id",
48
+ viewonly=True,
49
+ )
50
+
51
+ @classmethod
52
+ def create(
53
+ cls, db: Session, *, data: dict[str, Any], check_name: bool = True
54
+ ) -> "ManualTaskConfig":
55
+ """Create a new manual task configuration."""
56
+ # Validate config_type
57
+ try:
58
+ ManualTaskConfigurationType(data["config_type"])
59
+ except ValueError:
60
+ raise ValueError(f"Invalid config type: {data['config_type']}")
61
+
62
+ config = super().create(db=db, data=data, check_name=check_name)
63
+
64
+ # Log the config creation as a task-level log
65
+ ManualTaskLog.create_log(
66
+ db=db,
67
+ task_id=data["task_id"],
68
+ config_id=config.id,
69
+ status=ManualTaskLogStatus.created,
70
+ message=f"Created manual task configuration for {data['config_type']}",
71
+ details={
72
+ "config_type": data["config_type"],
73
+ },
74
+ )
75
+ return config
76
+
77
+ def get_field(self, field_key: str) -> Optional["ManualTaskConfigField"]:
78
+ """Get a field by its key."""
79
+ for field in self.field_definitions:
80
+ if field.field_key == field_key:
81
+ return field
82
+ return None
83
+
84
+
85
+ class ManualTaskConfigField(Base):
86
+ """Model for storing fields associated with each config."""
87
+
88
+ @declared_attr
89
+ def __tablename__(cls) -> str:
90
+ return "manual_task_config_field"
91
+
92
+ task_id = Column(String, ForeignKey("manual_task.id"), nullable=False)
93
+ config_id = Column(String, ForeignKey("manual_task_config.id"), nullable=False)
94
+ field_key = Column(String, nullable=False)
95
+ field_type = Column(
96
+ EnumColumn(ManualTaskFieldType), nullable=False
97
+ ) # Using ManualTaskFieldType
98
+ field_metadata = Column(JSONB, nullable=False, default={})
99
+
100
+ # Relationships
101
+ config = relationship("ManualTaskConfig", back_populates="field_definitions")
102
+
103
+ @property
104
+ def field_metadata_model(self) -> ManualTaskFieldMetadata:
105
+ """Get the field metadata as a Pydantic model."""
106
+ return ManualTaskFieldMetadata.model_validate(self.field_metadata)
107
+
108
+ @classmethod
109
+ def create(
110
+ cls, db: Session, *, data: dict[str, Any], check_name: bool = True
111
+ ) -> "ManualTaskConfigField":
112
+ """Create a new manual task config field."""
113
+ # Get the config to access its task_id and check if it exists
114
+ try:
115
+ config = (
116
+ db.query(ManualTaskConfig)
117
+ .filter(ManualTaskConfig.id == data["config_id"])
118
+ .first()
119
+ )
120
+ if not config:
121
+ raise ValueError(f"Config with id {data['config_id']} not found")
122
+ except Exception as e:
123
+ raise ValueError(f"Config with id {data['config_id']} not found: {e}")
124
+
125
+ # Create the field and let SQLAlchemy complex type validation handled in service.
126
+ field = super().create(db=db, data=data, check_name=check_name)
127
+
128
+ # Create a log entry
129
+ ManualTaskLog.create_log(
130
+ db=db,
131
+ task_id=config.task_id,
132
+ config_id=data["config_id"],
133
+ status=ManualTaskLogStatus.created,
134
+ message=f"Created manual task config field for {data['field_key']}",
135
+ )
136
+ return field
@@ -8,8 +8,11 @@ from sqlalchemy.orm import Session, relationship
8
8
  from fides.api.db.base_class import Base
9
9
  from fides.api.schemas.manual_tasks.manual_task_schemas import ManualTaskLogStatus
10
10
 
11
- if TYPE_CHECKING:
12
- from fides.api.models.manual_tasks.manual_task import ManualTask
11
+ if TYPE_CHECKING: # pragma: no cover
12
+ from fides.api.models.manual_tasks.manual_task import ManualTask # pragma: no cover
13
+ from fides.api.models.manual_tasks.manual_task_config import (
14
+ ManualTaskConfig, # pragma: no cover
15
+ )
13
16
 
14
17
 
15
18
  class ManualTaskLog(Base):
@@ -23,28 +26,29 @@ class ManualTaskLog(Base):
23
26
  task_id = Column(
24
27
  String, ForeignKey("manual_task.id", ondelete="CASCADE"), nullable=False
25
28
  )
26
- # TODO: Add foreign key constraints when config and instance are implemented
27
- config_id = Column(String, nullable=True)
29
+ config_id = Column(String, ForeignKey("manual_task_config.id"), nullable=True)
28
30
  instance_id = Column(String, nullable=True)
29
31
  status = Column(String, nullable=False)
30
- message = Column(String, nullable=True)
32
+ message = Column(String, nullable=False)
31
33
  details = Column(JSONB, nullable=True)
32
34
 
33
35
  # Relationships - using string references to avoid circular imports
34
36
  task = relationship("ManualTask", back_populates="logs", foreign_keys=[task_id])
35
- # TODO: Add config and instance relationships when they are implemented
36
- # config = relationship("ManualTaskConfig", back_populates="logs")
37
+ config = relationship(
38
+ "ManualTaskConfig", back_populates="logs", foreign_keys=[config_id]
39
+ )
40
+ # TODO: Add instance relationship when it is implemented
37
41
  # instance = relationship("ManualTaskInstance", back_populates="logs")
38
42
 
39
43
  @classmethod
40
44
  def create_log(
41
45
  cls,
42
46
  db: Session,
43
- status: ManualTaskLogStatus,
44
47
  task_id: str,
48
+ status: ManualTaskLogStatus,
49
+ message: str,
45
50
  config_id: Optional[str] = None,
46
51
  instance_id: Optional[str] = None,
47
- message: Optional[str] = None,
48
52
  details: Optional[dict[str, Any]] = None,
49
53
  ) -> "ManualTaskLog":
50
54
  """Create a new task log entry.