ethyca-fides 2.64.2b0__py2.py3-none-any.whl → 2.64.2rc0__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 (271) hide show
  1. {ethyca_fides-2.64.2b0.dist-info → ethyca_fides-2.64.2rc0.dist-info}/METADATA +2 -2
  2. {ethyca_fides-2.64.2b0.dist-info → ethyca_fides-2.64.2rc0.dist-info}/RECORD +235 -235
  3. fides/_version.py +3 -3
  4. fides/api/db/base.py +0 -4
  5. fides/api/db/database.py +2 -27
  6. fides/api/models/attachment.py +3 -15
  7. fides/api/models/comment.py +5 -22
  8. fides/api/models/connectionconfig.py +0 -11
  9. fides/api/models/db_cache.py +1 -1
  10. fides/api/models/detection_discovery/core.py +15 -15
  11. fides/api/models/fides_user_respondent_email_verification.py +2 -27
  12. fides/api/models/manual_tasks/__init__.py +1 -7
  13. fides/api/models/manual_tasks/manual_task.py +4 -68
  14. fides/api/models/manual_tasks/manual_task_config.py +12 -123
  15. fides/api/models/manual_tasks/manual_task_log.py +10 -48
  16. fides/api/models/tcf_publisher_restrictions.py +4 -16
  17. fides/api/schemas/manual_tasks/manual_task_schemas.py +0 -42
  18. fides/api/schemas/manual_tasks/manual_task_status.py +46 -107
  19. fides/common/api/v1/urn_registry.py +0 -4
  20. fides/service/manual_tasks/manual_task_config_service.py +5 -17
  21. fides/service/manual_tasks/manual_task_service.py +10 -66
  22. fides/ui-build/static/admin/404.html +1 -1
  23. fides/ui-build/static/admin/_next/static/chunks/{1040-fa06cd3b94d97493.js → 1040-af383f535c11eb24.js} +1 -1
  24. fides/ui-build/static/admin/_next/static/chunks/1100-2dfb464ef0359d6d.js +1 -0
  25. fides/ui-build/static/admin/_next/static/chunks/{1817-a3813209d7a6d28d.js → 1817-b4688ba5042ec687.js} +1 -1
  26. fides/ui-build/static/admin/_next/static/chunks/2430-b480401d44c55416.js +1 -0
  27. fides/ui-build/static/admin/_next/static/chunks/{2921-81a48418f77bc9a7.js → 2921-aabf41bf3d7573f9.js} +1 -1
  28. fides/ui-build/static/admin/_next/static/chunks/3450-f6fc4ed04a63935f.js +1 -0
  29. fides/ui-build/static/admin/_next/static/chunks/3505-a79256cd851dfab4.js +1 -0
  30. fides/ui-build/static/admin/_next/static/chunks/3513-24db696153a0778b.js +1 -0
  31. fides/ui-build/static/admin/_next/static/chunks/3670-2abd9b2f17770872.js +1 -0
  32. fides/ui-build/static/admin/_next/static/chunks/{3855-b85ad4e52433d519.js → 3855-0dec3e7d9e886550.js} +1 -1
  33. fides/ui-build/static/admin/_next/static/chunks/{3872-09f81435f7905d76.js → 3872-ffa16c2df7ef0ab6.js} +1 -1
  34. fides/ui-build/static/admin/_next/static/chunks/{3923-2565d952c662555c.js → 3923-b0fb0989671407b7.js} +1 -1
  35. fides/ui-build/static/admin/_next/static/chunks/3983-17ae9c232bddc413.js +1 -0
  36. fides/ui-build/static/admin/_next/static/chunks/{401-8ea41700c5437d38.js → 401-6721f8bcb14a6537.js} +1 -1
  37. fides/ui-build/static/admin/_next/static/chunks/4060-cb74476245af456e.js +1 -0
  38. fides/ui-build/static/admin/_next/static/chunks/{409-e0d39af1d9ce8ff2.js → 409-037cfc3f096150f0.js} +1 -1
  39. fides/ui-build/static/admin/_next/static/chunks/4121-8a791c8cc79d28c4.js +1 -0
  40. fides/ui-build/static/admin/_next/static/chunks/{4230-b3fe52af1035dff5.js → 4230-18f4849f9db58a08.js} +1 -1
  41. fides/ui-build/static/admin/_next/static/chunks/{431-c74dab231c8ac968.js → 431-f72599f01b98f07d.js} +1 -1
  42. fides/ui-build/static/admin/_next/static/chunks/4481-f597a7cf03f8c9e1.js +1 -0
  43. fides/ui-build/static/admin/_next/static/chunks/{5309-0e44dbd914896514.js → 5309-4511df9708d5a63c.js} +1 -1
  44. fides/ui-build/static/admin/_next/static/chunks/{5574-917c5ff63d222308.js → 5574-3cd33b3a6c937899.js} +1 -1
  45. fides/ui-build/static/admin/_next/static/chunks/6060-cb1ab5be7067bf7b.js +4 -0
  46. fides/ui-build/static/admin/_next/static/chunks/6277-32adfa799bfd1616.js +1 -0
  47. fides/ui-build/static/admin/_next/static/chunks/6659-b2088f525bf13c17.js +1 -0
  48. fides/ui-build/static/admin/_next/static/chunks/6662-0ce35f1a7a4d07b0.js +1 -0
  49. fides/ui-build/static/admin/_next/static/chunks/{6853-8d0a099f61c758d1.js → 6853-a4097260e402980e.js} +1 -1
  50. fides/ui-build/static/admin/_next/static/chunks/{6882-13d6f8d95b1e404f.js → 6882-3cc73d407a088d7d.js} +1 -1
  51. fides/ui-build/static/admin/_next/static/chunks/69-9952d261ca57275e.js +1 -0
  52. fides/ui-build/static/admin/_next/static/chunks/{6954-4e106b3f7097fe6e.js → 6954-8bac07b8278ded5c.js} +1 -1
  53. fides/ui-build/static/admin/_next/static/chunks/7553-a95939c32d54b5b7.js +1 -0
  54. fides/ui-build/static/admin/_next/static/chunks/{79-3f742fe4efd9893f.js → 79-5670e31eb65d0a53.js} +1 -1
  55. fides/ui-build/static/admin/_next/static/chunks/{796-83a8bbdcdb67f2ba.js → 796-9a6b13c838e25538.js} +1 -1
  56. fides/ui-build/static/admin/_next/static/chunks/8433-0acacfca722ce475.js +1 -0
  57. fides/ui-build/static/admin/_next/static/chunks/{9046-6995482a030e323c.js → 9046-fdf53cc7e926a8c1.js} +1 -1
  58. fides/ui-build/static/admin/_next/static/chunks/{905-ffdbd0b14167e8bd.js → 905-742074a074be1055.js} +1 -1
  59. fides/ui-build/static/admin/_next/static/chunks/{9226-2be3a6efb127148f.js → 9226-50427ff861ffa8bf.js} +1 -1
  60. fides/ui-build/static/admin/_next/static/chunks/{9392.9a948112de74781b.js → 9392.25024e070026343d.js} +1 -1
  61. fides/ui-build/static/admin/_next/static/chunks/{9676.cc515c853b8cf578.js → 9676.e60a53f1f5890847.js} +1 -1
  62. fides/ui-build/static/admin/_next/static/chunks/9767-118e4abca85bbd97.js +1 -0
  63. fides/ui-build/static/admin/_next/static/chunks/{9951-57c0a671463e0ebb.js → 9951-7de52d41dc1319f7.js} +1 -1
  64. fides/ui-build/static/admin/_next/static/chunks/c78d26b1-88a3e1bacb2a03c2.js +1 -0
  65. fides/ui-build/static/admin/_next/static/chunks/pages/{404-488f8f03fe0ffbc7.js → 404-ac2f0844e5c4b4cd.js} +1 -1
  66. fides/ui-build/static/admin/_next/static/chunks/pages/{_app-5e6fbbf17a62ac76.js → _app-8310662c216e8f04.js} +65 -68
  67. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{manual-1e88ac28bc7a41b6.js → manual-0a5f2310ce6b1059.js} +1 -1
  68. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{multiple-f2c9451fffaaa529.js → multiple-00cb904825aad7e3.js} +1 -1
  69. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-9fee3bc13b393070.js +1 -0
  70. fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-b17d160147365cf3.js → add-vendors-fa7305b88c1afd20.js} +1 -1
  71. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{configure-8e168d78acdf0cfe.js → configure-f140ec9d8e8a0f7a.js} +1 -1
  72. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{[id]-5ca2467de7986929.js → [id]-0edb7c92518e7d21.js} +1 -1
  73. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{new-06bb3b0bf097fcdb.js → new-a0039f216fb3eb93.js} +1 -1
  74. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-experience-3c11fecc2797ab68.js → privacy-experience-d8d926f0735a2546.js} +1 -1
  75. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-92bc6c7b82a679b4.js → [id]-5c949f2e3cef2398.js} +1 -1
  76. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-a3da3243526b7ecb.js → new-130155cfb4a0bcc7.js} +1 -1
  77. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-notices-b7d82386e7521041.js → privacy-notices-1135ad8924d32c36.js} +1 -1
  78. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-20a2029b7e7fc895.js → properties-776855e370414beb.js} +1 -1
  79. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{reporting-0ce299131db4c3e5.js → reporting-21c23f75ff1135d9.js} +1 -1
  80. fides/ui-build/static/admin/_next/static/chunks/pages/{consent-9f6a7a231bba17b7.js → consent-4d5ea70a77df1bb8.js} +1 -1
  81. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/{[resourceUrn]-11d52f1570759c4d.js → [resourceUrn]-c623d6f1a61c8ea9.js} +1 -1
  82. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/{[projectUrn]-fd705968b357e99a.js → [projectUrn]-030ee304cbe5e530.js} +1 -1
  83. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{projects-45b585deee0b2371.js → projects-cfac259a30641e68.js} +1 -1
  84. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/{[resourceUrn]-b83afa5565d0c84e.js → [resourceUrn]-57bd5cdf784f059f.js} +1 -1
  85. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{resources-d8db234a44a2ddf4.js → resources-51d99174c8006eb5.js} +1 -1
  86. fides/ui-build/static/admin/_next/static/chunks/pages/{data-catalog-4fd60a74c0369e3e.js → data-catalog-132e54310cd047af.js} +1 -1
  87. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/{[systemId]-e861699a8866c64b.js → [systemId]-c948f93c833d4358.js} +1 -1
  88. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/{[monitorId]-5dd2fbf33e228f9c.js → [monitorId]-333f53caab751428.js} +1 -1
  89. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{action-center-806cae6bc128cd38.js → action-center-27205f8457a1ecb0.js} +1 -1
  90. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{activity-487285bd5eca2595.js → activity-20a1043f6a06198f.js} +1 -1
  91. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/detection/{[resourceUrn]-393e20924c83373e.js → [resourceUrn]-06edce289876dea1.js} +1 -1
  92. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{detection-8733807dad4bc96e.js → detection-faf326a6200637d0.js} +1 -1
  93. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/{[resourceUrn]-14bd7500362ff224.js → [resourceUrn]-64acf269256ee74f.js} +1 -1
  94. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{discovery-9e7dfd5a6acc2e8f.js → discovery-8c3e4be6d36da66d.js} +1 -1
  95. fides/ui-build/static/admin/_next/static/chunks/pages/{datamap-c9509d72c538d22b.js → datamap-fb50de22f83edd4a.js} +1 -1
  96. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/{[...subfieldNames]-4e8a436297a055b2.js → [...subfieldNames]-41ab27c4195cfa93.js} +1 -1
  97. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/{[collectionName]-6ce02295bb7f5b6d.js → [collectionName]-6e2caba24b3e78c2.js} +1 -1
  98. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/{[datasetId]-9eaa907437fde063.js → [datasetId]-904d43e31157aa55.js} +1 -1
  99. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-3f997c29f6d8cb24.js +1 -0
  100. fides/ui-build/static/admin/_next/static/chunks/pages/{dataset-dcdec3644f05188d.js → dataset-5a24f549246605b2.js} +1 -1
  101. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{[id]-81ab412e337d2888.js → [id]-4a33dd0371dbaebc.js} +1 -1
  102. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{new-34dfc172165dbb1c.js → new-e88509346b2d2851.js} +1 -1
  103. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-8f9b8890018e1ea5.js +1 -0
  104. fides/ui-build/static/admin/_next/static/chunks/pages/{index-de954b741cbca022.js → index-1adb6bcb71701ac2.js} +1 -1
  105. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/{[id]-dba625eddca48f69.js → [id]-41c4f321da3c6169.js} +1 -1
  106. fides/ui-build/static/admin/_next/static/chunks/pages/integrations-adc286ff254e7f41.js +1 -0
  107. fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{[id]-42edcab11e8b5c3c.js → [id]-9b4d1d61c7c97509.js} +1 -1
  108. fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{add-template-333e54ac8c3ad57a.js → add-template-f8fd4795e260887c.js} +1 -1
  109. fides/ui-build/static/admin/_next/static/chunks/pages/{messaging-8e1e6f3782983225.js → messaging-aa744ae8b61e5ff2.js} +1 -1
  110. fides/ui-build/static/admin/_next/static/chunks/pages/poc/{ant-components-25c74d51a49b2403.js → ant-components-3407158757fb3627.js} +1 -1
  111. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{AntForm-920338760f5a71b5.js → AntForm-47e947c02ae90fd0.js} +1 -1
  112. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikAntFormItem-7462fb387a9de3f8.js → FormikAntFormItem-24f9a44512ce8827.js} +1 -1
  113. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikControlled-6148fce7a4e2e9ca.js → FormikControlled-e567a69f8c37fb9a.js} +1 -1
  114. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikField-30efd8c937bf19e4.js → FormikField-35a33f9c7def2220.js} +1 -1
  115. fides/ui-build/static/admin/_next/static/chunks/pages/poc/{forms-c44de83e0952d1e0.js → forms-780e18dde8e38099.js} +1 -1
  116. fides/ui-build/static/admin/_next/static/chunks/pages/poc/table-migration-7a17dffa515e5560.js +1 -0
  117. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-91dd0039cc2b70bc.js +1 -0
  118. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-dda47b868cf8ea27.js +1 -0
  119. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-53acc4a492d160ab.js +1 -0
  120. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{configure-1d981663e1a84166.js → configure-1a1aa83a3f88844c.js} +1 -1
  121. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-138e4697e269d339.js +1 -0
  122. fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-b08a69b1c460c7fe.js → [id]-19737d4f21aadbee.js} +1 -1
  123. fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-a5d1c65ec21df69d.js → add-property-9ccb295110feee20.js} +1 -1
  124. fides/ui-build/static/admin/_next/static/chunks/pages/{properties-3a75c6ed8308d126.js → properties-3a1037a2e036212a.js} +1 -1
  125. fides/ui-build/static/admin/_next/static/chunks/pages/reporting/{datamap-911996819aa16e04.js → datamap-959d2a35ca015976.js} +1 -1
  126. fides/ui-build/static/admin/_next/static/chunks/pages/settings/about/{alpha-6773158ba6ccf4b0.js → alpha-965cc21889b25e44.js} +1 -1
  127. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{about-2e046d177d52465c.js → about-0e1c381d488a7ada.js} +1 -1
  128. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/{[purpose_id]-a5420c3ba02fe6a5.js → [purpose_id]-1ad018d87c79a9d6.js} +1 -1
  129. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-4c56222e847986ff.js +1 -0
  130. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{custom-fields-06075fbf122c98d0.js → custom-fields-9d5310145cbdc8ba.js} +1 -1
  131. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domain-records-2c7ecff0a8a74c42.js → domain-records-0b44b2b224077dcd.js} +1 -1
  132. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-50bdc72e2f34c39e.js +1 -0
  133. fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-983fbf2cf335b945.js +1 -0
  134. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-8d4383584c72eb5a.js → locations-811dadb489f23d7d.js} +1 -1
  135. fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-5ae1bdd93c5bd72a.js +1 -0
  136. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{regulations-29892065d99ff113.js → regulations-54f142bc3e4c95ba.js} +1 -1
  137. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-fef247a87baeb080.js +1 -0
  138. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/{[id]-8fa8a2f238e08791.js → [id]-6eb886e7b7e6785b.js} +1 -1
  139. fides/ui-build/static/admin/_next/static/chunks/pages/{systems-acdbdd3dfd21162f.js → systems-7b71274334c559a4.js} +1 -1
  140. fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-88178d29a15ba479.js +1 -0
  141. fides/ui-build/static/admin/_next/static/chunks/pages/user-management/{new-a2524414e968f862.js → new-b124cc24b930c9e1.js} +1 -1
  142. fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/{[id]-87ed17fa1d9f8f72.js → [id]-75d41fde668b9025.js} +1 -1
  143. fides/ui-build/static/admin/_next/static/chunks/pages/{user-management-6b4e0764bb8816b8.js → user-management-dd43755b687c09a7.js} +1 -1
  144. fides/ui-build/static/admin/_next/static/chunks/webpack-0a61b5bd21a41fe6.js +1 -0
  145. fides/ui-build/static/admin/_next/static/css/{67ac3d00a5f134a2.css → c693338e3bc8dcc6.css} +1 -1
  146. fides/ui-build/static/admin/_next/static/rJbP2kuATyoki-YIQWFdS/_buildManifest.js +1 -0
  147. fides/ui-build/static/admin/add-systems/manual.html +1 -1
  148. fides/ui-build/static/admin/add-systems/multiple.html +1 -1
  149. fides/ui-build/static/admin/add-systems.html +1 -1
  150. fides/ui-build/static/admin/consent/configure/add-vendors.html +1 -1
  151. fides/ui-build/static/admin/consent/configure.html +1 -1
  152. fides/ui-build/static/admin/consent/privacy-experience/[id].html +1 -1
  153. fides/ui-build/static/admin/consent/privacy-experience/new.html +1 -1
  154. fides/ui-build/static/admin/consent/privacy-experience.html +1 -1
  155. fides/ui-build/static/admin/consent/privacy-notices/[id].html +1 -1
  156. fides/ui-build/static/admin/consent/privacy-notices/new.html +1 -1
  157. fides/ui-build/static/admin/consent/privacy-notices.html +1 -1
  158. fides/ui-build/static/admin/consent/properties.html +1 -1
  159. fides/ui-build/static/admin/consent/reporting.html +1 -1
  160. fides/ui-build/static/admin/consent.html +1 -1
  161. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn].html +1 -1
  162. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn].html +1 -1
  163. fides/ui-build/static/admin/data-catalog/[systemId]/projects.html +1 -1
  164. fides/ui-build/static/admin/data-catalog/[systemId]/resources/[resourceUrn].html +1 -1
  165. fides/ui-build/static/admin/data-catalog/[systemId]/resources.html +1 -1
  166. fides/ui-build/static/admin/data-catalog.html +1 -1
  167. fides/ui-build/static/admin/data-discovery/action-center/[monitorId]/[systemId].html +1 -1
  168. fides/ui-build/static/admin/data-discovery/action-center/[monitorId].html +1 -1
  169. fides/ui-build/static/admin/data-discovery/action-center.html +1 -1
  170. fides/ui-build/static/admin/data-discovery/activity.html +1 -1
  171. fides/ui-build/static/admin/data-discovery/detection/[resourceUrn].html +1 -1
  172. fides/ui-build/static/admin/data-discovery/detection.html +1 -1
  173. fides/ui-build/static/admin/data-discovery/discovery/[resourceUrn].html +1 -1
  174. fides/ui-build/static/admin/data-discovery/discovery.html +1 -1
  175. fides/ui-build/static/admin/datamap.html +1 -1
  176. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName]/[...subfieldNames].html +1 -1
  177. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName].html +1 -1
  178. fides/ui-build/static/admin/dataset/[datasetId].html +1 -1
  179. fides/ui-build/static/admin/dataset/new.html +1 -1
  180. fides/ui-build/static/admin/dataset.html +1 -1
  181. fides/ui-build/static/admin/datastore-connection/[id].html +1 -1
  182. fides/ui-build/static/admin/datastore-connection/new.html +1 -1
  183. fides/ui-build/static/admin/datastore-connection.html +1 -1
  184. fides/ui-build/static/admin/index.html +1 -1
  185. fides/ui-build/static/admin/integrations/[id].html +1 -1
  186. fides/ui-build/static/admin/integrations.html +1 -1
  187. fides/ui-build/static/admin/lib/fides-headless.js +1 -1
  188. fides/ui-build/static/admin/lib/fides-preview.js +1 -1
  189. fides/ui-build/static/admin/lib/fides-tcf.js +2 -2
  190. fides/ui-build/static/admin/lib/fides.js +2 -2
  191. fides/ui-build/static/admin/login/[provider].html +1 -1
  192. fides/ui-build/static/admin/login.html +1 -1
  193. fides/ui-build/static/admin/messaging/[id].html +1 -1
  194. fides/ui-build/static/admin/messaging/add-template.html +1 -1
  195. fides/ui-build/static/admin/messaging.html +1 -1
  196. fides/ui-build/static/admin/poc/ant-components.html +1 -1
  197. fides/ui-build/static/admin/poc/form-experiments/AntForm.html +1 -1
  198. fides/ui-build/static/admin/poc/form-experiments/FormikAntFormItem.html +1 -1
  199. fides/ui-build/static/admin/poc/form-experiments/FormikControlled.html +1 -1
  200. fides/ui-build/static/admin/poc/form-experiments/FormikField.html +1 -1
  201. fides/ui-build/static/admin/poc/form-experiments/FormikSpreadField.html +1 -1
  202. fides/ui-build/static/admin/poc/forms.html +1 -1
  203. fides/ui-build/static/admin/poc/table-migration.html +1 -1
  204. fides/ui-build/static/admin/privacy-requests/[id].html +1 -1
  205. fides/ui-build/static/admin/privacy-requests/configure/messaging.html +1 -1
  206. fides/ui-build/static/admin/privacy-requests/configure/storage.html +1 -1
  207. fides/ui-build/static/admin/privacy-requests/configure.html +1 -1
  208. fides/ui-build/static/admin/privacy-requests.html +1 -1
  209. fides/ui-build/static/admin/properties/[id].html +1 -1
  210. fides/ui-build/static/admin/properties/add-property.html +1 -1
  211. fides/ui-build/static/admin/properties.html +1 -1
  212. fides/ui-build/static/admin/reporting/datamap.html +1 -1
  213. fides/ui-build/static/admin/settings/about/alpha.html +1 -1
  214. fides/ui-build/static/admin/settings/about.html +1 -1
  215. fides/ui-build/static/admin/settings/consent/[configuration_id]/[purpose_id].html +1 -1
  216. fides/ui-build/static/admin/settings/consent.html +1 -1
  217. fides/ui-build/static/admin/settings/custom-fields.html +1 -1
  218. fides/ui-build/static/admin/settings/domain-records.html +1 -1
  219. fides/ui-build/static/admin/settings/domains.html +1 -1
  220. fides/ui-build/static/admin/settings/email-templates.html +1 -1
  221. fides/ui-build/static/admin/settings/locations.html +1 -1
  222. fides/ui-build/static/admin/settings/organization.html +1 -1
  223. fides/ui-build/static/admin/settings/regulations.html +1 -1
  224. fides/ui-build/static/admin/systems/configure/[id]/test-datasets.html +1 -1
  225. fides/ui-build/static/admin/systems/configure/[id].html +1 -1
  226. fides/ui-build/static/admin/systems.html +1 -1
  227. fides/ui-build/static/admin/taxonomy.html +1 -1
  228. fides/ui-build/static/admin/user-management/new.html +1 -1
  229. fides/ui-build/static/admin/user-management/profile/[id].html +1 -1
  230. fides/ui-build/static/admin/user-management.html +1 -1
  231. fides/api/alembic/migrations/versions/6a76a1fa4f3f_add_manual_task_instance_table.py +0 -256
  232. fides/api/alembic/migrations/versions/aadfe83c5644_add_manual_task_to_connectiontype_enum.py +0 -46
  233. fides/api/models/manual_tasks/manual_task_instance.py +0 -294
  234. fides/service/manual_tasks/manual_task_instance_service.py +0 -285
  235. fides/ui-build/static/admin/_next/static/chunks/1169-f75d7958fbe6e136.js +0 -1
  236. fides/ui-build/static/admin/_next/static/chunks/1807-3beab149351d5ded.js +0 -1
  237. fides/ui-build/static/admin/_next/static/chunks/3450-2bb9f1b5a23fb520.js +0 -1
  238. fides/ui-build/static/admin/_next/static/chunks/3615-5e2d062d684b8fa1.js +0 -1
  239. fides/ui-build/static/admin/_next/static/chunks/4121-55f5b0bcb5ba41fb.js +0 -1
  240. fides/ui-build/static/admin/_next/static/chunks/570-c99f07161bd339cd.js +0 -1
  241. fides/ui-build/static/admin/_next/static/chunks/6084-57446e3c99078be8.js +0 -1
  242. fides/ui-build/static/admin/_next/static/chunks/6662-45b8977f48a219f5.js +0 -1
  243. fides/ui-build/static/admin/_next/static/chunks/7476-b5fb1c0cf4ad8f63.js +0 -1
  244. fides/ui-build/static/admin/_next/static/chunks/7630-e3d06546f9dfeb91.js +0 -1
  245. fides/ui-build/static/admin/_next/static/chunks/787-381156db4e81dbe8.js +0 -1
  246. fides/ui-build/static/admin/_next/static/chunks/827-c6fe34fb336467ae.js +0 -1
  247. fides/ui-build/static/admin/_next/static/chunks/9014-eeae6f581158e645.js +0 -1
  248. fides/ui-build/static/admin/_next/static/chunks/9767-980699a4d0f56acc.js +0 -1
  249. fides/ui-build/static/admin/_next/static/chunks/9826-303b14ef4fc7ab4a.js +0 -1
  250. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-40a6b572d49c2b68.js +0 -1
  251. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-de5e9ccfecdf31b1.js +0 -1
  252. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-cdb77886d7fd4f44.js +0 -1
  253. fides/ui-build/static/admin/_next/static/chunks/pages/integrations-40a3cd14264796e2.js +0 -1
  254. fides/ui-build/static/admin/_next/static/chunks/pages/poc/table-migration-7852aa60090c8c9a.js +0 -1
  255. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-11dd6152bf6607cc.js +0 -1
  256. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-83a548813fec4f90.js +0 -1
  257. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-a087847d6cbccc65.js +0 -1
  258. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-6a5794999a1cc0b6.js +0 -1
  259. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-2a95eb36aa2b47a6.js +0 -1
  260. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-afed8ba5498a9f93.js +0 -1
  261. fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-c1d3f3cb9c6ca463.js +0 -1
  262. fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-aae79a344a96a367.js +0 -1
  263. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-9669fa6b20545530.js +0 -1
  264. fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-9b4d28f02df3a238.js +0 -1
  265. fides/ui-build/static/admin/_next/static/chunks/webpack-da78c536f3d86d06.js +0 -1
  266. fides/ui-build/static/admin/_next/static/jg8bMUMFAG7KlEnEbTRct/_buildManifest.js +0 -1
  267. {ethyca_fides-2.64.2b0.dist-info → ethyca_fides-2.64.2rc0.dist-info}/WHEEL +0 -0
  268. {ethyca_fides-2.64.2b0.dist-info → ethyca_fides-2.64.2rc0.dist-info}/entry_points.txt +0 -0
  269. {ethyca_fides-2.64.2b0.dist-info → ethyca_fides-2.64.2rc0.dist-info}/licenses/LICENSE +0 -0
  270. {ethyca_fides-2.64.2b0.dist-info → ethyca_fides-2.64.2rc0.dist-info}/top_level.txt +0 -0
  271. /fides/ui-build/static/admin/_next/static/{jg8bMUMFAG7KlEnEbTRct → rJbP2kuATyoki-YIQWFdS}/_ssgManifest.js +0 -0
@@ -1,294 +0,0 @@
1
- from datetime import datetime, timezone
2
- from typing import TYPE_CHECKING, Optional
3
-
4
- from sqlalchemy import Column, DateTime, ForeignKey, Index, String
5
- from sqlalchemy.dialects.postgresql import JSONB
6
- from sqlalchemy.ext.declarative import declared_attr
7
- from sqlalchemy.orm import relationship
8
- from sqlalchemy.sql import func
9
-
10
- from fides.api.db.base_class import Base, FidesBase
11
- from fides.api.db.util import EnumColumn
12
- from fides.api.models.manual_tasks.manual_task_config import ManualTaskConfigField
13
- from fides.api.schemas.manual_tasks.manual_task_schemas import ManualTaskEntityType
14
- from fides.api.schemas.manual_tasks.manual_task_status import (
15
- StatusTransitionMixin,
16
- StatusType,
17
- )
18
-
19
- if TYPE_CHECKING: # pragma: no cover
20
- from fides.api.models.attachment import Attachment # pragma: no cover
21
- from fides.api.models.fides_user import FidesUser # pragma: no cover
22
- from fides.api.models.manual_tasks.manual_task import ManualTask # pragma: no cover
23
- from fides.api.models.manual_tasks.manual_task_config import (
24
- ManualTaskConfig, # pragma: no cover
25
- )
26
- from fides.api.models.manual_tasks.manual_task_log import (
27
- ManualTaskLog, # pragma: no cover; pragma: no cover
28
- )
29
-
30
-
31
- class ManualTaskInstance(Base, StatusTransitionMixin):
32
- """Model for tracking task status per entity instance.
33
-
34
- This model implements StatusTransitionProtocol through the StatusTransitionMixin.
35
- """
36
-
37
- @declared_attr
38
- def __tablename__(cls) -> str:
39
- """Overriding base class method to set the table name."""
40
- return "manual_task_instance"
41
-
42
- # redefined here because there's a minor, unintended discrepancy between
43
- # this `id` field and that of the `Base` class, which explicitly sets `index=True`.
44
- # TODO: we likely should _not_ be setting `index=True` on the `id`
45
- # attribute of the `Base` class, as `primary_key=True` already specifies a
46
- # primary key constraint, which will implicitly create an index for the field.
47
- id = Column(String(255), primary_key=True, default=FidesBase.generate_uuid)
48
- created_at = Column(
49
- DateTime(timezone=True), server_default=func.now(), nullable=False
50
- )
51
- updated_at = Column(
52
- DateTime(timezone=True),
53
- server_default=func.now(),
54
- onupdate=func.now(),
55
- nullable=False,
56
- )
57
-
58
- # Database columns
59
- task_id: Column[str] = Column(
60
- String,
61
- ForeignKey(
62
- "manual_task.id",
63
- name="manual_task_instance_task_id_fkey",
64
- ondelete="CASCADE",
65
- ),
66
- nullable=False,
67
- )
68
- config_id: Column[str] = Column(
69
- String,
70
- ForeignKey(
71
- "manual_task_config.id",
72
- name="manual_task_instance_config_id_fkey",
73
- ondelete="CASCADE",
74
- ),
75
- nullable=False,
76
- )
77
- # entity id is the entity that the instance relates to
78
- # (e.g. a privacy request is an entity that has its own manual task instance)
79
- entity_id: Column[str] = Column(String, nullable=False)
80
- entity_type: Column[ManualTaskEntityType] = Column(
81
- EnumColumn(ManualTaskEntityType), nullable=False
82
- )
83
- # ingnore[assignment] because the mypy and sqlalchemy types mismatch
84
- # upgrading to 2.0 allows mapping which provides better type safety visibility.
85
- status: Column[StatusType] = Column(EnumColumn(StatusType), nullable=False, default=StatusType.pending) # type: ignore[assignment]
86
- completed_at: Column[Optional[datetime]] = Column(DateTime, nullable=True) # type: ignore[assignment]
87
- completed_by_id: Column[Optional[str]] = Column(String, nullable=True) # type: ignore[assignment]
88
- due_date: Column[Optional[datetime]] = Column(DateTime, nullable=True)
89
-
90
- __table_args__ = (
91
- Index("ix_manual_task_instance_completed_at", "completed_at"),
92
- Index("ix_manual_task_instance_config_id", "config_id"),
93
- Index("ix_manual_task_instance_entity", "entity_type", "entity_id"),
94
- Index("ix_manual_task_instance_entity_id", "entity_id"),
95
- Index("ix_manual_task_instance_entity_type", "entity_type"),
96
- Index("ix_manual_task_instance_status", "status"),
97
- Index("ix_manual_task_instance_task_id", "task_id"),
98
- )
99
-
100
- # Relationships
101
- task = relationship("ManualTask", back_populates="instances")
102
- config = relationship("ManualTaskConfig", back_populates="instances")
103
- submissions = relationship(
104
- "ManualTaskSubmission",
105
- back_populates="instance",
106
- cascade="all, delete-orphan",
107
- uselist=True,
108
- )
109
- logs = relationship(
110
- "ManualTaskLog",
111
- back_populates="instance",
112
- primaryjoin="ManualTaskInstance.id == ManualTaskLog.instance_id",
113
- cascade="all, delete-orphan",
114
- order_by="ManualTaskLog.created_at",
115
- uselist=True,
116
- )
117
- attachments = relationship(
118
- "Attachment",
119
- secondary="attachment_reference",
120
- primaryjoin="and_(ManualTaskInstance.id == ManualTaskSubmission.instance_id, "
121
- "ManualTaskSubmission.id == AttachmentReference.reference_id, "
122
- "AttachmentReference.reference_type == 'manual_task_submission')",
123
- secondaryjoin="Attachment.id == AttachmentReference.attachment_id",
124
- order_by="Attachment.created_at",
125
- viewonly=True,
126
- uselist=True,
127
- )
128
-
129
- @property
130
- def required_fields(self) -> list["ManualTaskConfigField"]:
131
- """Get all required fields."""
132
- return [
133
- field
134
- for field in self.config.field_definitions
135
- if field.field_metadata.get("required", False)
136
- ]
137
-
138
- @property
139
- def incomplete_fields(self) -> list["ManualTaskConfigField"]:
140
- """Get all fields that haven't been completed yet.
141
- A field is considered incomplete if:
142
- 1. It's required and has no submission
143
- Returns:
144
- list[ManualTaskConfigField]: List of incomplete fields
145
- """
146
- return [
147
- field
148
- for field in self.required_fields
149
- if not self.get_submission_for_field(field.id)
150
- ]
151
-
152
- @property
153
- def completed_fields(self) -> list["ManualTaskConfigField"]:
154
- """Get all fields that have been completed."""
155
- return [
156
- field
157
- for field in self.config.field_definitions
158
- if field.field_metadata.get("required", False)
159
- and self.get_submission_for_field(field.id)
160
- ]
161
-
162
- def get_submission_for_field(
163
- self, field_id: str
164
- ) -> Optional["ManualTaskSubmission"]:
165
- """Get the submission for a specific field.
166
-
167
- Args:
168
- field_id: The ID of the field to get the submission for
169
-
170
- Returns:
171
- Optional[ManualTaskSubmission]: The submission for the field, or None if no submission exists
172
- """
173
- return next(
174
- (
175
- submission
176
- for submission in self.submissions
177
- if submission.field_id == field_id
178
- ),
179
- None,
180
- )
181
-
182
-
183
- class ManualTaskSubmission(Base):
184
- """Model for storing user submissions.
185
- Each submission represents data for a single field.
186
- """
187
-
188
- @declared_attr
189
- def __tablename__(cls) -> str:
190
- """Overriding base class method to set the table name."""
191
- return "manual_task_submission"
192
-
193
- # redefined here because there's a minor, unintended discrepancy between
194
- # this `id` field and that of the `Base` class, which explicitly sets `index=True`.
195
- # TODO: we likely should _not_ be setting `index=True` on the `id`
196
- # attribute of the `Base` class, as `primary_key=True` already specifies a
197
- # primary key constraint, which will implicitly create an index for the field.
198
- id = Column(String(255), primary_key=True, default=FidesBase.generate_uuid)
199
- created_at = Column(
200
- DateTime(timezone=True), server_default=func.now(), nullable=False
201
- )
202
- updated_at = Column(
203
- DateTime(timezone=True),
204
- server_default=func.now(),
205
- onupdate=func.now(),
206
- nullable=False,
207
- )
208
-
209
- # Database columns
210
- task_id = Column(
211
- String,
212
- ForeignKey(
213
- "manual_task.id",
214
- name="manual_task_submission_task_id_fkey",
215
- ondelete="CASCADE",
216
- ),
217
- nullable=False,
218
- )
219
- config_id = Column(
220
- String,
221
- ForeignKey(
222
- "manual_task_config.id",
223
- name="manual_task_submission_config_id_fkey",
224
- ondelete="CASCADE",
225
- ),
226
- nullable=False,
227
- )
228
- field_id = Column(
229
- String,
230
- ForeignKey(
231
- "manual_task_config_field.id",
232
- name="manual_task_submission_field_id_fkey",
233
- ondelete="CASCADE",
234
- ),
235
- nullable=False,
236
- )
237
- instance_id = Column(
238
- String,
239
- ForeignKey(
240
- "manual_task_instance.id",
241
- name="manual_task_submission_instance_id_fkey",
242
- ondelete="CASCADE",
243
- ),
244
- nullable=False,
245
- )
246
- submitted_by = Column(
247
- String,
248
- ForeignKey(
249
- "fidesuser.id",
250
- name="manual_task_submission_submitted_by_fkey",
251
- ondelete="SET NULL",
252
- ),
253
- nullable=True,
254
- )
255
- submitted_at = Column(DateTime, default=datetime.now(timezone.utc), nullable=False)
256
- data = Column(JSONB, nullable=False)
257
-
258
- __table_args__ = (
259
- Index("ix_manual_task_submission_config_id", "config_id"),
260
- Index("ix_manual_task_submission_field_id", "field_id"),
261
- Index("ix_manual_task_submission_instance_field", "instance_id", "field_id"),
262
- Index("ix_manual_task_submission_instance_id", "instance_id"),
263
- Index("ix_manual_task_submission_submitted_at", "submitted_at"),
264
- Index("ix_manual_task_submission_submitted_by", "submitted_by"),
265
- Index("ix_manual_task_submission_task_id", "task_id"),
266
- )
267
-
268
- # Relationships
269
- task = relationship("ManualTask", back_populates="submissions", viewonly=True)
270
- config = relationship(
271
- "ManualTaskConfig", back_populates="submissions", viewonly=True
272
- )
273
- field = relationship(
274
- "ManualTaskConfigField", back_populates="submissions", viewonly=True
275
- )
276
- instance = relationship(
277
- "ManualTaskInstance", back_populates="submissions", viewonly=True
278
- )
279
- attachments = relationship(
280
- "Attachment",
281
- secondary="attachment_reference",
282
- primaryjoin="and_(ManualTaskSubmission.id == AttachmentReference.reference_id, "
283
- "AttachmentReference.reference_type == 'manual_task_submission')",
284
- secondaryjoin="Attachment.id == AttachmentReference.attachment_id",
285
- order_by="Attachment.created_at",
286
- viewonly=True,
287
- uselist=True,
288
- )
289
-
290
- user = relationship(
291
- "FidesUser",
292
- primaryjoin="FidesUser.id == ManualTaskSubmission.submitted_by",
293
- viewonly=True,
294
- )
@@ -1,285 +0,0 @@
1
- from typing import Any, Optional
2
-
3
- from loguru import logger
4
- from sqlalchemy.orm import Session
5
-
6
- from fides.api.models.attachment import Attachment
7
- from fides.api.models.manual_tasks.manual_task_config import ManualTaskConfigField
8
- from fides.api.models.manual_tasks.manual_task_instance import (
9
- ManualTaskInstance,
10
- ManualTaskSubmission,
11
- )
12
- from fides.api.schemas.manual_tasks.manual_task_status import (
13
- StatusTransitionNotAllowed,
14
- StatusType,
15
- )
16
- from fides.service.manual_tasks.utils import validate_fields, with_task_logging
17
-
18
-
19
- class ManualTaskInstanceError(Exception):
20
- """Exception raised when a manual task instance error occurs."""
21
-
22
- def __init__(self, message: str):
23
- self.message = message
24
- super().__init__(self.message)
25
-
26
-
27
- class ManualTaskSubmissionError(Exception):
28
- """Exception raised when a manual task submission error occurs."""
29
-
30
- def __init__(self, message: str):
31
- self.message = message
32
- super().__init__(self.message)
33
-
34
-
35
- class ManualTaskInstanceService:
36
- def __init__(self, db: Session):
37
- self.db = db
38
-
39
- def _create_log_data(
40
- self,
41
- task_id: str,
42
- config_id: str,
43
- instance_id: str,
44
- details: dict[str, Any],
45
- ) -> dict[str, Any]:
46
- """Create standard log data structure."""
47
- return {
48
- "task_id": task_id,
49
- "config_id": config_id,
50
- "instance_id": instance_id,
51
- "details": details,
52
- }
53
-
54
- def _get_instance(
55
- self, instance_id: str, allow_completed: bool = False
56
- ) -> ManualTaskInstance:
57
- """Get and validate instance."""
58
- instance = self.db.query(ManualTaskInstance).filter_by(id=instance_id).first()
59
- if not instance:
60
- raise ManualTaskInstanceError(f"Instance with ID {instance_id} not found")
61
-
62
- if not allow_completed and instance.status == StatusType.completed:
63
- raise StatusTransitionNotAllowed(
64
- "Instance is already completed, no further changes allowed"
65
- )
66
-
67
- return instance
68
-
69
- def _get_field(
70
- self, field_id: str, validate_data: Optional[dict[str, Any]] = None
71
- ) -> ManualTaskConfigField:
72
- """Get and validate field."""
73
- field = ManualTaskConfigField.get_by_key_or_id(
74
- db=self.db, data={"id": field_id}
75
- )
76
- if not field:
77
- raise ManualTaskInstanceError(f"Field with ID {field_id} not found")
78
-
79
- if validate_data:
80
- try:
81
- validate_fields([validate_data], is_submission=True)
82
- except ValueError as e:
83
- raise ManualTaskInstanceError(f"Invalid field data: {e}") from e
84
-
85
- return field
86
-
87
- def _update_instance_status(
88
- self,
89
- instance: ManualTaskInstance,
90
- new_status: Optional[StatusType] = None,
91
- user_id: Optional[str] = None,
92
- silent: bool = False,
93
- ) -> None:
94
- """Update instance status with optional error suppression."""
95
- try:
96
- if not new_status:
97
- new_status = (
98
- StatusType.in_progress
99
- if instance.submissions
100
- else StatusType.pending
101
- )
102
- instance.update_status(self.db, new_status, user_id)
103
- except StatusTransitionNotAllowed as e:
104
- if not silent:
105
- raise
106
- logger.info(f"Status not transitioning: {e}")
107
-
108
- @with_task_logging("Created task instance")
109
- def create_instance(
110
- self, task_id: str, config_id: str, entity_id: str, entity_type: str
111
- ) -> tuple[ManualTaskInstance, dict[str, Any]]:
112
- """Create a new instance for an entity."""
113
- instance = ManualTaskInstance.create(
114
- self.db,
115
- data={
116
- "task_id": task_id,
117
- "config_id": config_id,
118
- "entity_id": entity_id,
119
- "entity_type": entity_type,
120
- },
121
- )
122
- return instance, self._create_log_data(
123
- task_id, config_id, instance.id, {"entity_type": entity_type}
124
- )
125
-
126
- def get_submission_for_field(
127
- self, instance_id: str, field_id: str
128
- ) -> Optional[ManualTaskSubmission]:
129
- """Get the submission for a specific field."""
130
- return self._get_instance(instance_id).get_submission_for_field(field_id)
131
-
132
- @with_task_logging("Updated task instance status")
133
- def update_status(
134
- self,
135
- instance_id: str,
136
- new_status: Optional[StatusType] = None,
137
- user_id: Optional[str] = None,
138
- ) -> tuple[ManualTaskInstance, dict[str, Any]]:
139
- """Update instance status with logging."""
140
- instance = self._get_instance(instance_id)
141
- previous_status = instance.status
142
- self._update_instance_status(instance, new_status, user_id)
143
-
144
- return instance, self._create_log_data(
145
- instance.task_id,
146
- instance.config_id,
147
- instance.id,
148
- {
149
- "previous_status": previous_status,
150
- "new_status": instance.status,
151
- "user_id": user_id,
152
- },
153
- )
154
-
155
- @with_task_logging("Created task submission")
156
- def create_submission(
157
- self,
158
- instance_id: str,
159
- field_id: str,
160
- data: dict[str, Any],
161
- ) -> tuple[ManualTaskSubmission, dict[str, Any]]:
162
- """Create a new submission for a field."""
163
- instance = self._get_instance(instance_id)
164
- field = self._get_field(field_id, data)
165
-
166
- if instance.get_submission_for_field(field_id):
167
- raise ManualTaskInstanceError(
168
- f"Submission for field {field.field_key} already exists for instance {instance.id}"
169
- )
170
-
171
- submission = ManualTaskSubmission.create(
172
- self.db,
173
- data={
174
- "task_id": instance.task_id,
175
- "config_id": instance.config_id,
176
- "instance_id": instance.id,
177
- "field_id": field.id,
178
- "data": data,
179
- },
180
- )
181
-
182
- # Update instance status to in_progress
183
- self._update_instance_status(instance, StatusType.in_progress, silent=True)
184
-
185
- return submission, self._create_log_data(
186
- instance.task_id,
187
- instance.config_id,
188
- instance.id,
189
- {
190
- "field_key": field.field_key,
191
- "field_type": field.field_type,
192
- },
193
- )
194
-
195
- @with_task_logging("Updated task submission")
196
- def update_submission(
197
- self,
198
- instance_id: str,
199
- submission_id: str,
200
- data: dict[str, Any],
201
- ) -> tuple[ManualTaskSubmission, dict[str, Any]]:
202
- """Update a submission for a field."""
203
- instance = self._get_instance(instance_id)
204
- submission = next(
205
- (s for s in instance.submissions if s.id == submission_id),
206
- None,
207
- )
208
- if not submission or not submission.field_id:
209
- raise ManualTaskSubmissionError(
210
- f"Valid submission with ID {submission_id} not found"
211
- )
212
-
213
- field = self._get_field(submission.field_id, data)
214
- submission.update(self.db, data={"data": data})
215
- self._update_instance_status(instance, silent=True)
216
-
217
- return submission, self._create_log_data(
218
- instance.task_id,
219
- instance.config_id,
220
- instance.id,
221
- {
222
- "field_key": field.field_key,
223
- "field_type": field.field_type,
224
- },
225
- )
226
-
227
- @with_task_logging("Delete task attachment")
228
- def delete_attachment_by_id(
229
- self,
230
- submission_id: str,
231
- attachment_id: str,
232
- ) -> None:
233
- """Delete an attachment for a field."""
234
- submission = (
235
- self.db.query(ManualTaskSubmission).filter_by(id=submission_id).first()
236
- )
237
- if not submission:
238
- raise ManualTaskSubmissionError(
239
- f"Submission with ID {submission_id} does not exist"
240
- )
241
-
242
- self._get_instance(
243
- submission.instance_id
244
- ) # Validates instance is not completed
245
-
246
- attachment = self.db.query(Attachment).filter_by(id=attachment_id).first()
247
- if not attachment or attachment not in submission.attachments:
248
- raise ManualTaskSubmissionError(
249
- f"Attachment {attachment_id} not found in submission {submission_id}"
250
- )
251
-
252
- # Delete attachment and optionally submission
253
- if (
254
- len(submission.attachments) == 1
255
- and submission.field.field_type == "attachment"
256
- ):
257
- attachment.delete(self.db)
258
- submission.delete(self.db)
259
- else:
260
- attachment.delete(self.db)
261
-
262
- @with_task_logging("Completed task instance")
263
- def complete_task_instance(
264
- self, task_id: str, config_id: str, instance_id: str, user_id: str
265
- ) -> tuple[ManualTaskInstance, dict[str, Any]]:
266
- """Complete a task instance."""
267
- instance = self._get_instance(instance_id)
268
-
269
- missing_fields = [
270
- field.field_key
271
- for field in instance.required_fields
272
- if not instance.get_submission_for_field(field.id)
273
- ]
274
- if missing_fields:
275
- raise StatusTransitionNotAllowed(
276
- f"Cannot complete task instance. Missing required fields: {', '.join(missing_fields)}"
277
- )
278
-
279
- instance.update_status(self.db, StatusType.completed, user_id)
280
- instance.completed_by_id = user_id
281
- instance.save(self.db)
282
-
283
- return instance, self._create_log_data(
284
- task_id, config_id, instance_id, {"completed_by": user_id}
285
- )
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1169],{59969:function(e,t,i){var r=i(24246),n=i(38355);i(27378);var s=i(8557);t.Z=e=>{let{daysLeft:t,includeText:i,status:l}=e;if(!t||l===s.q.COMPLETE||l===s.q.CANCELED||l===s.q.DENIED||l===s.q.IDENTITY_UNVERIFIED)return(0,r.jsx)("span",{children:"-"});let a="";switch(!0){case t>=10:a="success";break;case t<10&&t>4:a="warning";break;case t<5:a="error"}return(0,r.jsx)(n.j8w,{color:a,children:i?"".concat(t," days left"):t})}},18225:function(e,t,i){var r=i(24246),n=i(38355);t.Z=e=>{let{alignment:t="center",...i}=e;return(0,r.jsx)(n.kCb,{boxSize:"full",align:"center",justify:t,children:(0,r.jsx)(n.$jN,{color:"primary",...i})})}},58754:function(e,t,i){var r=i(24246),n=i(38355),s=i(70788);t.Z=e=>{let{heading:t,breadcrumbItems:i,isSticky:l=!0,children:a,rightContent:d,style:o,...c}=e;return(0,r.jsxs)("div",{...c,style:l?{position:"sticky",top:"-24px",paddingTop:"24px",paddingBottom:"24px",paddingLeft:"40px",marginLeft:"-40px",paddingRight:"40px",marginRight:"-40px",marginTop:"-24px",left:0,zIndex:20,backgroundColor:"white",...o}:{paddingBottom:"24px",...o},children:[(0,r.jsxs)(n.jqI,{justify:"space-between",children:["string"==typeof t?(0,r.jsx)(n.lQT,{className:i||a?"pb-4":void 0,level:1,"data-testid":"page-heading",children:t}):t,d&&(0,r.jsx)("div",{"data-testid":"page-header-right-content",children:d})]}),!!i&&(0,r.jsx)(s.m,{className:a?"pb-4":void 0,items:i,"data-testid":"page-breadcrumb"}),a]})}},19904:function(e,t,i){i.d(t,{Tg:function(){return l}});var r=i(24246),n=i(16134),s=i(31793);let l=e=>(0,n.C)(s.uu).filter(t=>e.includes(t)).length>0;t.ZP=e=>{let{scopes:t,children:i}=e;return l(t)?(0,r.jsx)(r.Fragment,{children:i}):null}},14047:function(e,t,i){i.d(t,{H:function(){return s},V:function(){return r.V}});var r=i(84306),n=i(812);let s=()=>{let{errorAlert:e}=(0,r.V)();return{handleError:t=>{let i="An unexpected error occurred. Please try again.";(0,n.Ot)(t)?i=t.data.detail:(0,n.tB)(t)&&(i=t.data.detail[0].msg),e(i)}}}},84306:function(e,t,i){i.d(t,{V:function(){return s}});var r=i(24246),n=i(38355);let s=()=>{let e=(0,n.pmc)();return{errorAlert:(t,i,s)=>{let l={...s,position:(null==s?void 0:s.position)||"top",render:e=>{let{onClose:s}=e;return(0,r.jsxs)(n.bZj,{alignItems:"normal",status:"error","data-testid":"error-alert",children:[(0,r.jsx)(n.zMQ,{}),(0,r.jsxs)(n.xuv,{children:[i&&(0,r.jsx)(n.CdC,{children:i}),(0,r.jsx)(n.XaZ,{children:t})]}),(0,r.jsx)(n.PZ7,{onClick:s,position:"relative",right:0,size:"sm",top:-1})]})}};(null==s?void 0:s.id)&&e.isActive(s.id)?e.update(s.id,l):e(l)},successAlert:(t,i,s)=>{let l={...s,position:(null==s?void 0:s.position)||"top",render:e=>{let{onClose:s}=e;return(0,r.jsxs)(n.bZj,{alignItems:"normal",status:"success",variant:"subtle","data-testid":"success-alert",children:[(0,r.jsx)(n.zMQ,{}),(0,r.jsxs)(n.xuv,{children:[i&&(0,r.jsx)(n.CdC,{children:i}),(0,r.jsx)(n.XaZ,{children:t})]}),(0,r.jsx)(n.PZ7,{onClick:s,position:"relative",right:0,size:"sm",top:-1})]})}};(null==s?void 0:s.id)&&e.isActive(s.id)?e.update(s.id,l):e(l)}}}},70788:function(e,t,i){i.d(t,{m:function(){return o}});var r=i(24246),n=i(38355),s=i(79894),l=i.n(s),a=i(27378);let{Text:d}=n.AntTypography,o=e=>{let{items:t,...i}=e,s=(0,a.useMemo)(()=>null==t?void 0:t.map((e,i)=>{let s=i===t.length-1,a={...e},o=a.onClick&&!a.href;return("string"==typeof a.title&&(a.title=(0,r.jsx)(d,{style:{color:"inherit",maxWidth:s?void 0:400},ellipsis:!s,children:a.title})),o)?a.title=(0,r.jsx)(n.wpx,{type:"text",size:"small",icon:a.icon,onClick:a.onClick,className:"ant-breadcrumb-link -mt-px px-1 text-inherit",children:a.title}):(a.icon&&(a.title=(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("span",{className:"anticon align-text-bottom",children:a.icon}),a.title]})),a.href&&a.title&&(a.title=(0,r.jsx)(l(),{href:a.href,className:"ant-breadcrumb-link",children:a.title}),delete a.href)),a}),[t]);return(0,r.jsx)(n.zrq,{items:s,...i})}},57526:function(e,t,i){var r=i(24246),n=i(38355),s=i(27378);t.Z=e=>{let{isOpen:t,onClose:i,onApproveRequest:l,isLoading:a,subjectRequest:d}=e,{identity:o,identity_verified_at:c,custom_privacy_request_fields:u}=d,x=(0,s.useCallback)(()=>{l().then(()=>{i()})},[l,i]);return(0,r.jsxs)(n.u_l,{isOpen:t,onClose:i,size:"lg",isCentered:!0,children:[(0,r.jsx)(n.ZAr,{}),(0,r.jsxs)(n.hzk,{children:[(0,r.jsx)(n.xBx,{children:"Privacy request approval"}),(0,r.jsxs)(n.fef,{paddingTop:0,paddingBottom:0,children:[(0,r.jsx)(n.xvT,{color:"gray.500",fontSize:"14px",marginBottom:4,children:"Are you sure you want to approve this privacy request?"}),(0,r.jsxs)(n.QI$,{children:[Object.entries(o).filter(e=>{let[,{value:t}]=e;return null!==t}).map(e=>{let[t,{value:i,label:s}]=e;return(0,r.jsx)(n.HCh,{children:(0,r.jsxs)(n.kCb,{alignItems:"flex-start",children:[(0,r.jsxs)(n.xvT,{mr:2,fontSize:"sm",color:"gray.900",fontWeight:"500",children:[s,":"]}),(0,r.jsx)(n.xvT,{color:"gray.600",fontWeight:"500",fontSize:"sm",mr:2,children:i}),"(",c?"Verified":"Unverified",")"]},t)},t)}),u&&Object.entries(u).filter(e=>{let[,t]=e;return t.value}).map(e=>{let[t,i]=e;return(0,r.jsx)(n.HCh,{children:(0,r.jsxs)(n.kCb,{alignItems:"flex-start",children:[(0,r.jsxs)(n.xvT,{mr:2,fontSize:"sm",color:"gray.900",fontWeight:"500",children:[i.label,":"]}),(0,r.jsxs)(n.xvT,{color:"gray.600",fontWeight:"500",fontSize:"sm",mr:2,children:[Array.isArray(i.value)?i.value.join(", "):i.value," "]}),"(Unverified)"]},t)},t)})]})]}),(0,r.jsx)(n.mzw,{children:(0,r.jsxs)(n.MIq,{columns:2,width:"100%",children:[(0,r.jsx)(n.wpx,{onClick:i,className:"mr-3","data-testid":"cancel-btn",children:"Cancel"}),(0,r.jsx)(n.wpx,{type:"primary","data-testid":"continue-btn",onClick:x,loading:a,children:"Confirm"})]})})]})]})}},66548:function(e,t,i){var r=i(24246),n=i(40324),s=i(38355),l=i(34090),a=i(27378),d=i(55484);let o={denialReason:""};t.Z=e=>{let{isOpen:t,onClose:i,onDenyRequest:c}=e,u=(0,a.useCallback)((e,t)=>{let{setSubmitting:r}=t;c(e.denialReason).then(()=>{r(!1),i()})},[c,i]);return(0,r.jsxs)(s.u_l,{isOpen:t,onClose:i,isCentered:!0,returnFocusOnClose:!1,children:[(0,r.jsx)(s.ZAr,{}),(0,r.jsx)(s.hzk,{width:"100%",maxWidth:"456px","data-testid":"deny-privacy-request-modal",children:(0,r.jsx)(l.J9,{initialValues:o,validationSchema:d.Ry({denialReason:d.Z_().required().label("Reason for denial")}),onSubmit:u,children:e=>{let{isSubmitting:t,dirty:a,isValid:d}=e;return(0,r.jsxs)(l.l0,{children:[(0,r.jsx)(s.xBx,{children:"Privacy request denial"}),(0,r.jsx)(s.fef,{color:"gray.500",fontSize:"14px",children:"Please enter a reason for denying this privacy request. Please note: this can be seen by the user in their notification email."}),(0,r.jsx)(s.fef,{children:(0,r.jsx)(n.Ks,{name:"denialReason",textAreaProps:{focusBorderColor:"primary.600",resize:"none"}})}),(0,r.jsxs)(s.mzw,{className:"flex w-full gap-4",children:[(0,r.jsx)(s.wpx,{disabled:t,onClick:i,className:"grow",children:"Cancel"}),(0,r.jsx)(s.wpx,{htmlType:"submit",type:"primary",disabled:!a||!d,loading:t,className:"grow","data-testid":"deny-privacy-request-modal-btn",children:"Confirm"})]})]})}})})]})}},45489:function(e,t,i){i.d(t,{Z:function(){return n}});var r=i(90867);let n=e=>{let{subjectRequest:t}=e,[i,n]=(0,r.RW)({fixedCacheKey:t.id}),[s,l]=(0,r.F1)({fixedCacheKey:t.id}),[a,d]=(0,r.rC)({fixedCacheKey:t.id}),o=l.isLoading||n.isLoading;return{approveRequest:i,approveRequestResult:n,denyRequest:s,denyRequestResult:l,handleApproveRequest:()=>i(t),handleDenyRequest:e=>s({id:t.id,reason:e}),handleDeleteRequest:()=>a(t),softDeleteRequestResult:d,isLoading:o}}}}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1807],{96586:function(t,e,r){var n=r(57753),o=r(82452),i=r(22115),a=r(38256),s=r(67426);function u(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}u.prototype.clear=n,u.prototype.delete=o,u.prototype.get=i,u.prototype.has=a,u.prototype.set=s,t.exports=u},36301:function(t,e,r){var n=r(69417),o=r(72470),i=r(66165),a=r(71873),s=r(52556);function u(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}u.prototype.clear=n,u.prototype.delete=o,u.prototype.get=i,u.prototype.has=a,u.prototype.set=s,t.exports=u},74554:function(t,e,r){var n=r(39448),o=r(7738),i=r(66575),a=r(7238),s=r(38738);function u(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}u.prototype.clear=n,u.prototype.delete=o,u.prototype.get=i,u.prototype.has=a,u.prototype.set=s,t.exports=u},23694:function(t,e,r){var n=r(36301),o=r(7354),i=r(5863),a=r(12367),s=r(90748),u=r(97569);function l(t){var e=this.__data__=new n(t);this.size=e.size}l.prototype.clear=o,l.prototype.delete=i,l.prototype.get=a,l.prototype.has=s,l.prototype.set=u,t.exports=l},59942:function(t,e,r){var n=r(77400).Uint8Array;t.exports=n},10263:function(t){t.exports=function(t,e){for(var r=-1,n=null==t?0:t.length,o=0,i=[];++r<n;){var a=t[r];e(a,r,t)&&(i[o++]=a)}return i}},97141:function(t){t.exports=function(t,e){for(var r=-1,n=e.length,o=t.length;++r<n;)t[o+r]=e[r];return t}},93382:function(t,e,r){var n=r(85638);t.exports=function(t,e){for(var r=t.length;r--;)if(n(t[r][0],e))return r;return -1}},11324:function(t,e,r){var n=r(97141),o=r(19785);t.exports=function(t,e,r){var i=e(t);return o(t)?i:n(i,r(t))}},51385:function(t,e,r){var n=r(11324),o=r(83080),i=r(50098);t.exports=function(t){return n(t,i,o)}},95899:function(t,e,r){var n=r(54479);t.exports=function(t,e){var r=t.__data__;return n(e)?r["string"==typeof e?"string":"hash"]:r.map}},83080:function(t,e,r){var n=r(10263),o=r(15937),i=Object.prototype.propertyIsEnumerable,a=Object.getOwnPropertySymbols,s=a?function(t){return null==t?[]:n(a(t=Object(t)),function(e){return i.call(t,e)})}:o;t.exports=s},57753:function(t,e,r){var n=r(35718);t.exports=function(){this.__data__=n?n(null):{},this.size=0}},82452:function(t){t.exports=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}},22115:function(t,e,r){var n=r(35718),o=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;if(n){var r=e[t];return"__lodash_hash_undefined__"===r?void 0:r}return o.call(e,t)?e[t]:void 0}},38256:function(t,e,r){var n=r(35718),o=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;return n?void 0!==e[t]:o.call(e,t)}},67426:function(t,e,r){var n=r(35718);t.exports=function(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=n&&void 0===e?"__lodash_hash_undefined__":e,this}},54479:function(t){t.exports=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}},69417:function(t){t.exports=function(){this.__data__=[],this.size=0}},72470:function(t,e,r){var n=r(93382),o=Array.prototype.splice;t.exports=function(t){var e=this.__data__,r=n(e,t);return!(r<0)&&(r==e.length-1?e.pop():o.call(e,r,1),--this.size,!0)}},66165:function(t,e,r){var n=r(93382);t.exports=function(t){var e=this.__data__,r=n(e,t);return r<0?void 0:e[r][1]}},71873:function(t,e,r){var n=r(93382);t.exports=function(t){return n(this.__data__,t)>-1}},52556:function(t,e,r){var n=r(93382);t.exports=function(t,e){var r=this.__data__,o=n(r,t);return o<0?(++this.size,r.push([t,e])):r[o][1]=e,this}},39448:function(t,e,r){var n=r(96586),o=r(36301),i=r(44538);t.exports=function(){this.size=0,this.__data__={hash:new n,map:new(i||o),string:new n}}},7738:function(t,e,r){var n=r(95899);t.exports=function(t){var e=n(this,t).delete(t);return this.size-=e?1:0,e}},66575:function(t,e,r){var n=r(95899);t.exports=function(t){return n(this,t).get(t)}},7238:function(t,e,r){var n=r(95899);t.exports=function(t){return n(this,t).has(t)}},38738:function(t,e,r){var n=r(95899);t.exports=function(t,e){var r=n(this,t),o=r.size;return r.set(t,e),this.size+=r.size==o?0:1,this}},35718:function(t,e,r){var n=r(81822)(Object,"create");t.exports=n},7354:function(t,e,r){var n=r(36301);t.exports=function(){this.__data__=new n,this.size=0}},5863:function(t){t.exports=function(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}},12367:function(t){t.exports=function(t){return this.__data__.get(t)}},90748:function(t){t.exports=function(t){return this.__data__.has(t)}},97569:function(t,e,r){var n=r(36301),o=r(44538),i=r(74554);t.exports=function(t,e){var r=this.__data__;if(r instanceof n){var a=r.__data__;if(!o||a.length<199)return a.push([t,e]),this.size=++r.size,this;r=this.__data__=new i(a)}return r.set(t,e),this.size=r.size,this}},30454:function(t,e,r){var n=r(40699);t.exports=function(t){return n(t,5)}},85638:function(t){t.exports=function(t,e){return t===e||t!=t&&e!=e}},15937:function(t){t.exports=function(){return[]}},76737:function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t,e){for(var r in e)Object.defineProperty(t,r,{enumerable:!0,get:e[r]})}(e,{default:function(){return s},noSSR:function(){return a}});let n=r(51538);r(24246),r(27378);let o=n._(r(21887));function i(t){return{default:(null==t?void 0:t.default)||t}}function a(t,e){return delete e.webpack,delete e.modules,t(e)}function s(t,e){let r=o.default,n={loading:t=>{let{error:e,isLoading:r,pastDelay:n}=t;return null}};t instanceof Promise?n.loader=()=>t:"function"==typeof t?n.loader=t:"object"==typeof t&&(n={...n,...t});let s=(n={...n,...e}).loader;return(n.loadableGenerated&&(n={...n,...n.loadableGenerated},delete n.loadableGenerated),"boolean"!=typeof n.ssr||n.ssr)?r({...n,loader:()=>null!=s?s().then(i):Promise.resolve(i(()=>null))}):(delete n.webpack,delete n.modules,a(r,n))}("function"==typeof e.default||"object"==typeof e.default&&null!==e.default)&&void 0===e.default.__esModule&&(Object.defineProperty(e.default,"__esModule",{value:!0}),Object.assign(e.default,e),t.exports=e.default)},28438:function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"LoadableContext",{enumerable:!0,get:function(){return n}});let n=r(51538)._(r(27378)).default.createContext(null)},21887:function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return f}});let n=r(51538)._(r(27378)),o=r(28438),i=[],a=[],s=!1;function u(t){let e=t(),r={loading:!0,loaded:null,error:null};return r.promise=e.then(t=>(r.loading=!1,r.loaded=t,t)).catch(t=>{throw r.loading=!1,r.error=t,t}),r}class l{promise(){return this._res.promise}retry(){this._clearTimeouts(),this._res=this._loadFn(this._opts.loader),this._state={pastDelay:!1,timedOut:!1};let{_res:t,_opts:e}=this;t.loading&&("number"==typeof e.delay&&(0===e.delay?this._state.pastDelay=!0:this._delay=setTimeout(()=>{this._update({pastDelay:!0})},e.delay)),"number"==typeof e.timeout&&(this._timeout=setTimeout(()=>{this._update({timedOut:!0})},e.timeout))),this._res.promise.then(()=>{this._update({}),this._clearTimeouts()}).catch(t=>{this._update({}),this._clearTimeouts()}),this._update({})}_update(t){this._state={...this._state,error:this._res.error,loaded:this._res.loaded,loading:this._res.loading,...t},this._callbacks.forEach(t=>t())}_clearTimeouts(){clearTimeout(this._delay),clearTimeout(this._timeout)}getCurrentValue(){return this._state}subscribe(t){return this._callbacks.add(t),()=>{this._callbacks.delete(t)}}constructor(t,e){this._loadFn=t,this._opts=e,this._callbacks=new Set,this._delay=null,this._timeout=null,this.retry()}}function c(t){return function(t,e){let r=Object.assign({loader:null,loading:null,delay:200,timeout:null,webpack:null,modules:null},e),i=null;function u(){if(!i){let e=new l(t,r);i={getCurrentValue:e.getCurrentValue.bind(e),subscribe:e.subscribe.bind(e),retry:e.retry.bind(e),promise:e.promise.bind(e)}}return i.promise()}if(!s){let t=r.webpack?r.webpack():r.modules;t&&a.push(e=>{for(let r of t)if(e.includes(r))return u()})}function c(t,e){!function(){u();let t=n.default.useContext(o.LoadableContext);t&&Array.isArray(r.modules)&&r.modules.forEach(e=>{t(e)})}();let a=n.default.useSyncExternalStore(i.subscribe,i.getCurrentValue,i.getCurrentValue);return n.default.useImperativeHandle(e,()=>({retry:i.retry}),[]),n.default.useMemo(()=>{var e;return a.loading||a.error?n.default.createElement(r.loading,{isLoading:a.loading,pastDelay:a.pastDelay,timedOut:a.timedOut,error:a.error,retry:i.retry}):a.loaded?n.default.createElement((e=a.loaded)&&e.default?e.default:e,t):null},[t,a])}return c.preload=()=>u(),c.displayName="LoadableComponent",n.default.forwardRef(c)}(u,t)}function d(t,e){let r=[];for(;t.length;){let n=t.pop();r.push(n(e))}return Promise.all(r).then(()=>{if(t.length)return d(t,e)})}c.preloadAll=()=>new Promise((t,e)=>{d(i).then(t,e)}),c.preloadReady=t=>(void 0===t&&(t=[]),new Promise(e=>{let r=()=>(s=!0,e());d(a,t).then(r,r)})),window.__NEXT_PRELOADREADY=c.preloadReady;let f=c},65218:function(t,e,r){t.exports=r(76737)}}]);