ethyca-fides 2.64.1rc0__py2.py3-none-any.whl → 2.64.2b0__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.
- {ethyca_fides-2.64.1rc0.dist-info → ethyca_fides-2.64.2b0.dist-info}/METADATA +2 -2
- {ethyca_fides-2.64.1rc0.dist-info → ethyca_fides-2.64.2b0.dist-info}/RECORD +235 -235
- fides/_version.py +3 -3
- fides/api/alembic/migrations/versions/6a76a1fa4f3f_add_manual_task_instance_table.py +256 -0
- fides/api/alembic/migrations/versions/aadfe83c5644_add_manual_task_to_connectiontype_enum.py +46 -0
- fides/api/db/base.py +4 -0
- fides/api/db/database.py +27 -2
- fides/api/models/attachment.py +15 -3
- fides/api/models/comment.py +22 -5
- fides/api/models/connectionconfig.py +11 -0
- fides/api/models/db_cache.py +1 -1
- fides/api/models/detection_discovery/core.py +15 -15
- fides/api/models/fides_user_respondent_email_verification.py +27 -2
- fides/api/models/manual_tasks/__init__.py +7 -1
- fides/api/models/manual_tasks/manual_task.py +68 -4
- fides/api/models/manual_tasks/manual_task_config.py +123 -12
- fides/api/models/manual_tasks/manual_task_instance.py +294 -0
- fides/api/models/manual_tasks/manual_task_log.py +48 -10
- fides/api/models/tcf_publisher_restrictions.py +16 -4
- fides/api/schemas/manual_tasks/manual_task_schemas.py +42 -0
- fides/api/schemas/manual_tasks/manual_task_status.py +107 -46
- fides/common/api/v1/urn_registry.py +4 -0
- fides/service/manual_tasks/manual_task_config_service.py +17 -5
- fides/service/manual_tasks/manual_task_instance_service.py +285 -0
- fides/service/manual_tasks/manual_task_service.py +66 -10
- fides/ui-build/static/admin/404.html +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{1040-630c7f4284dc6f70.js → 1040-fa06cd3b94d97493.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/1169-f75d7958fbe6e136.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/1807-3beab149351d5ded.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{1817-b4688ba5042ec687.js → 1817-a3813209d7a6d28d.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{2921-aabf41bf3d7573f9.js → 2921-81a48418f77bc9a7.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{3450-bdaeb35442d810b4.js → 3450-2bb9f1b5a23fb520.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/3615-5e2d062d684b8fa1.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{3855-0dec3e7d9e886550.js → 3855-b85ad4e52433d519.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{3872-ffa16c2df7ef0ab6.js → 3872-09f81435f7905d76.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{3923-5d580fbb1dd6ae01.js → 3923-2565d952c662555c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{401-fceaae662cfca5a5.js → 401-8ea41700c5437d38.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{409-037cfc3f096150f0.js → 409-e0d39af1d9ce8ff2.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/4121-55f5b0bcb5ba41fb.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{4230-1cdb7ea1be370ed3.js → 4230-b3fe52af1035dff5.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{431-f72599f01b98f07d.js → 431-c74dab231c8ac968.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{5309-4511df9708d5a63c.js → 5309-0e44dbd914896514.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{5574-3cd33b3a6c937899.js → 5574-917c5ff63d222308.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/570-c99f07161bd339cd.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6084-57446e3c99078be8.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6662-45b8977f48a219f5.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{6853-a4097260e402980e.js → 6853-8d0a099f61c758d1.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{6882-3cc73d407a088d7d.js → 6882-13d6f8d95b1e404f.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{6954-13a25cef3a8fdd76.js → 6954-4e106b3f7097fe6e.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/7476-b5fb1c0cf4ad8f63.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7630-e3d06546f9dfeb91.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/787-381156db4e81dbe8.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{79-5670e31eb65d0a53.js → 79-3f742fe4efd9893f.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{796-9a6b13c838e25538.js → 796-83a8bbdcdb67f2ba.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/827-c6fe34fb336467ae.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9014-eeae6f581158e645.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{9046-fdf53cc7e926a8c1.js → 9046-6995482a030e323c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{905-742074a074be1055.js → 905-ffdbd0b14167e8bd.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{9226-ba6587e46ec7659a.js → 9226-2be3a6efb127148f.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{9392.25024e070026343d.js → 9392.9a948112de74781b.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{9676.e60a53f1f5890847.js → 9676.cc515c853b8cf578.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/9767-980699a4d0f56acc.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9826-303b14ef4fc7ab4a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{9951-f9ab5cac7e2c05ab.js → 9951-57c0a671463e0ebb.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{404-ac2f0844e5c4b4cd.js → 404-488f8f03fe0ffbc7.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{_app-8ec6e466f3373ac0.js → _app-5e6fbbf17a62ac76.js} +68 -65
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{manual-0a5f2310ce6b1059.js → manual-1e88ac28bc7a41b6.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{multiple-00cb904825aad7e3.js → multiple-f2c9451fffaaa529.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-40a6b572d49c2b68.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-fa7305b88c1afd20.js → add-vendors-b17d160147365cf3.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{configure-f140ec9d8e8a0f7a.js → configure-8e168d78acdf0cfe.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{[id]-0edb7c92518e7d21.js → [id]-5ca2467de7986929.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{new-a0039f216fb3eb93.js → new-06bb3b0bf097fcdb.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-experience-d8d926f0735a2546.js → privacy-experience-3c11fecc2797ab68.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-5c949f2e3cef2398.js → [id]-92bc6c7b82a679b4.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-130155cfb4a0bcc7.js → new-a3da3243526b7ecb.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-notices-1135ad8924d32c36.js → privacy-notices-b7d82386e7521041.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-776855e370414beb.js → properties-20a2029b7e7fc895.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{reporting-21c23f75ff1135d9.js → reporting-0ce299131db4c3e5.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{consent-4d5ea70a77df1bb8.js → consent-9f6a7a231bba17b7.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/{[resourceUrn]-c623d6f1a61c8ea9.js → [resourceUrn]-11d52f1570759c4d.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/{[projectUrn]-030ee304cbe5e530.js → [projectUrn]-fd705968b357e99a.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{projects-cfac259a30641e68.js → projects-45b585deee0b2371.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/{[resourceUrn]-57bd5cdf784f059f.js → [resourceUrn]-b83afa5565d0c84e.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{resources-51d99174c8006eb5.js → resources-d8db234a44a2ddf4.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{data-catalog-7b5aec33da578745.js → data-catalog-4fd60a74c0369e3e.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/{[systemId]-c948f93c833d4358.js → [systemId]-e861699a8866c64b.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/{[monitorId]-333f53caab751428.js → [monitorId]-5dd2fbf33e228f9c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{action-center-27205f8457a1ecb0.js → action-center-806cae6bc128cd38.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{activity-20a1043f6a06198f.js → activity-487285bd5eca2595.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/detection/{[resourceUrn]-06edce289876dea1.js → [resourceUrn]-393e20924c83373e.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{detection-faf326a6200637d0.js → detection-8733807dad4bc96e.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/{[resourceUrn]-64acf269256ee74f.js → [resourceUrn]-14bd7500362ff224.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{discovery-8c3e4be6d36da66d.js → discovery-9e7dfd5a6acc2e8f.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{datamap-fb50de22f83edd4a.js → datamap-c9509d72c538d22b.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/{[...subfieldNames]-41ab27c4195cfa93.js → [...subfieldNames]-4e8a436297a055b2.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/{[collectionName]-6e2caba24b3e78c2.js → [collectionName]-6ce02295bb7f5b6d.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/{[datasetId]-904d43e31157aa55.js → [datasetId]-9eaa907437fde063.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-de5e9ccfecdf31b1.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/{dataset-8f7d16bc5e9229c8.js → dataset-dcdec3644f05188d.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{[id]-4a33dd0371dbaebc.js → [id]-81ab412e337d2888.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{new-e88509346b2d2851.js → new-34dfc172165dbb1c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-cdb77886d7fd4f44.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/{index-1adb6bcb71701ac2.js → index-de954b741cbca022.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations/{[id]-fdc2964fa7d1d8fd.js → [id]-dba625eddca48f69.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations-40a3cd14264796e2.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{[id]-9b4d1d61c7c97509.js → [id]-42edcab11e8b5c3c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{add-template-f8fd4795e260887c.js → add-template-333e54ac8c3ad57a.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{messaging-aa744ae8b61e5ff2.js → messaging-8e1e6f3782983225.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/{ant-components-3407158757fb3627.js → ant-components-25c74d51a49b2403.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{AntForm-47e947c02ae90fd0.js → AntForm-920338760f5a71b5.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikAntFormItem-24f9a44512ce8827.js → FormikAntFormItem-7462fb387a9de3f8.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikControlled-e567a69f8c37fb9a.js → FormikControlled-6148fce7a4e2e9ca.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikField-35a33f9c7def2220.js → FormikField-30efd8c937bf19e4.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/{forms-780e18dde8e38099.js → forms-c44de83e0952d1e0.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/table-migration-7852aa60090c8c9a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-11dd6152bf6607cc.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-83a548813fec4f90.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-a087847d6cbccc65.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{configure-1a1aa83a3f88844c.js → configure-1d981663e1a84166.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-6a5794999a1cc0b6.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-19737d4f21aadbee.js → [id]-b08a69b1c460c7fe.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-9ccb295110feee20.js → add-property-a5d1c65ec21df69d.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{properties-3a1037a2e036212a.js → properties-3a75c6ed8308d126.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/reporting/{datamap-4cdbbb8cd1d8698e.js → datamap-911996819aa16e04.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/about/{alpha-965cc21889b25e44.js → alpha-6773158ba6ccf4b0.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{about-0e1c381d488a7ada.js → about-2e046d177d52465c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/{[purpose_id]-d0e350d2a2667883.js → [purpose_id]-a5420c3ba02fe6a5.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-2a95eb36aa2b47a6.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{custom-fields-6f866bc799a5f67f.js → custom-fields-06075fbf122c98d0.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domain-records-0b44b2b224077dcd.js → domain-records-2c7ecff0a8a74c42.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-afed8ba5498a9f93.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-c1d3f3cb9c6ca463.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-811dadb489f23d7d.js → locations-8d4383584c72eb5a.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-aae79a344a96a367.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{regulations-54f142bc3e4c95ba.js → regulations-29892065d99ff113.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-9669fa6b20545530.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/{[id]-6eb886e7b7e6785b.js → [id]-8fa8a2f238e08791.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{systems-7b71274334c559a4.js → systems-acdbdd3dfd21162f.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-9b4d28f02df3a238.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/user-management/{new-b124cc24b930c9e1.js → new-a2524414e968f862.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/{[id]-75d41fde668b9025.js → [id]-87ed17fa1d9f8f72.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{user-management-dd43755b687c09a7.js → user-management-6b4e0764bb8816b8.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/webpack-da78c536f3d86d06.js +1 -0
- fides/ui-build/static/admin/_next/static/css/{c693338e3bc8dcc6.css → 67ac3d00a5f134a2.css} +1 -1
- fides/ui-build/static/admin/_next/static/jg8bMUMFAG7KlEnEbTRct/_buildManifest.js +1 -0
- fides/ui-build/static/admin/add-systems/manual.html +1 -1
- fides/ui-build/static/admin/add-systems/multiple.html +1 -1
- fides/ui-build/static/admin/add-systems.html +1 -1
- fides/ui-build/static/admin/consent/configure/add-vendors.html +1 -1
- fides/ui-build/static/admin/consent/configure.html +1 -1
- fides/ui-build/static/admin/consent/privacy-experience/[id].html +1 -1
- fides/ui-build/static/admin/consent/privacy-experience/new.html +1 -1
- fides/ui-build/static/admin/consent/privacy-experience.html +1 -1
- fides/ui-build/static/admin/consent/privacy-notices/[id].html +1 -1
- fides/ui-build/static/admin/consent/privacy-notices/new.html +1 -1
- fides/ui-build/static/admin/consent/privacy-notices.html +1 -1
- fides/ui-build/static/admin/consent/properties.html +1 -1
- fides/ui-build/static/admin/consent/reporting.html +1 -1
- fides/ui-build/static/admin/consent.html +1 -1
- fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn].html +1 -1
- fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn].html +1 -1
- fides/ui-build/static/admin/data-catalog/[systemId]/projects.html +1 -1
- fides/ui-build/static/admin/data-catalog/[systemId]/resources/[resourceUrn].html +1 -1
- fides/ui-build/static/admin/data-catalog/[systemId]/resources.html +1 -1
- fides/ui-build/static/admin/data-catalog.html +1 -1
- fides/ui-build/static/admin/data-discovery/action-center/[monitorId]/[systemId].html +1 -1
- fides/ui-build/static/admin/data-discovery/action-center/[monitorId].html +1 -1
- fides/ui-build/static/admin/data-discovery/action-center.html +1 -1
- fides/ui-build/static/admin/data-discovery/activity.html +1 -1
- fides/ui-build/static/admin/data-discovery/detection/[resourceUrn].html +1 -1
- fides/ui-build/static/admin/data-discovery/detection.html +1 -1
- fides/ui-build/static/admin/data-discovery/discovery/[resourceUrn].html +1 -1
- fides/ui-build/static/admin/data-discovery/discovery.html +1 -1
- fides/ui-build/static/admin/datamap.html +1 -1
- fides/ui-build/static/admin/dataset/[datasetId]/[collectionName]/[...subfieldNames].html +1 -1
- fides/ui-build/static/admin/dataset/[datasetId]/[collectionName].html +1 -1
- fides/ui-build/static/admin/dataset/[datasetId].html +1 -1
- fides/ui-build/static/admin/dataset/new.html +1 -1
- fides/ui-build/static/admin/dataset.html +1 -1
- fides/ui-build/static/admin/datastore-connection/[id].html +1 -1
- fides/ui-build/static/admin/datastore-connection/new.html +1 -1
- fides/ui-build/static/admin/datastore-connection.html +1 -1
- fides/ui-build/static/admin/index.html +1 -1
- fides/ui-build/static/admin/integrations/[id].html +1 -1
- fides/ui-build/static/admin/integrations.html +1 -1
- fides/ui-build/static/admin/lib/fides-headless.js +1 -1
- fides/ui-build/static/admin/lib/fides-preview.js +1 -1
- fides/ui-build/static/admin/lib/fides-tcf.js +2 -2
- fides/ui-build/static/admin/lib/fides.js +2 -2
- fides/ui-build/static/admin/login/[provider].html +1 -1
- fides/ui-build/static/admin/login.html +1 -1
- fides/ui-build/static/admin/messaging/[id].html +1 -1
- fides/ui-build/static/admin/messaging/add-template.html +1 -1
- fides/ui-build/static/admin/messaging.html +1 -1
- fides/ui-build/static/admin/poc/ant-components.html +1 -1
- fides/ui-build/static/admin/poc/form-experiments/AntForm.html +1 -1
- fides/ui-build/static/admin/poc/form-experiments/FormikAntFormItem.html +1 -1
- fides/ui-build/static/admin/poc/form-experiments/FormikControlled.html +1 -1
- fides/ui-build/static/admin/poc/form-experiments/FormikField.html +1 -1
- fides/ui-build/static/admin/poc/form-experiments/FormikSpreadField.html +1 -1
- fides/ui-build/static/admin/poc/forms.html +1 -1
- fides/ui-build/static/admin/poc/table-migration.html +1 -1
- fides/ui-build/static/admin/privacy-requests/[id].html +1 -1
- fides/ui-build/static/admin/privacy-requests/configure/messaging.html +1 -1
- fides/ui-build/static/admin/privacy-requests/configure/storage.html +1 -1
- fides/ui-build/static/admin/privacy-requests/configure.html +1 -1
- fides/ui-build/static/admin/privacy-requests.html +1 -1
- fides/ui-build/static/admin/properties/[id].html +1 -1
- fides/ui-build/static/admin/properties/add-property.html +1 -1
- fides/ui-build/static/admin/properties.html +1 -1
- fides/ui-build/static/admin/reporting/datamap.html +1 -1
- fides/ui-build/static/admin/settings/about/alpha.html +1 -1
- fides/ui-build/static/admin/settings/about.html +1 -1
- fides/ui-build/static/admin/settings/consent/[configuration_id]/[purpose_id].html +1 -1
- fides/ui-build/static/admin/settings/consent.html +1 -1
- fides/ui-build/static/admin/settings/custom-fields.html +1 -1
- fides/ui-build/static/admin/settings/domain-records.html +1 -1
- fides/ui-build/static/admin/settings/domains.html +1 -1
- fides/ui-build/static/admin/settings/email-templates.html +1 -1
- fides/ui-build/static/admin/settings/locations.html +1 -1
- fides/ui-build/static/admin/settings/organization.html +1 -1
- fides/ui-build/static/admin/settings/regulations.html +1 -1
- fides/ui-build/static/admin/systems/configure/[id]/test-datasets.html +1 -1
- fides/ui-build/static/admin/systems/configure/[id].html +1 -1
- fides/ui-build/static/admin/systems.html +1 -1
- fides/ui-build/static/admin/taxonomy.html +1 -1
- fides/ui-build/static/admin/user-management/new.html +1 -1
- fides/ui-build/static/admin/user-management/profile/[id].html +1 -1
- fides/ui-build/static/admin/user-management.html +1 -1
- fides/ui-build/static/admin/_next/static/chunks/1100-d43cb04522a6505c.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/2430-b480401d44c55416.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3505-a79256cd851dfab4.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3513-8677ee280eaef0da.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3670-2abd9b2f17770872.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3983-17ae9c232bddc413.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4060-71cd041e5a57ca5a.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4121-78a76e980acbd539.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4481-f597a7cf03f8c9e1.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6060-cb1ab5be7067bf7b.js +0 -4
- fides/ui-build/static/admin/_next/static/chunks/6277-3fb4c7fc790a6d20.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6659-b2088f525bf13c17.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6662-6a6b90fc8f11558f.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/69-6889d6674c95e7b5.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7553-a95939c32d54b5b7.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/8433-adb1fcb29d82f1b7.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9767-e49b065d03ce4e80.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/c78d26b1-88a3e1bacb2a03c2.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-587e21d14e0a5196.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-d4e31a1c4a58800e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-8f9b8890018e1ea5.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations-adc286ff254e7f41.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/table-migration-7a17dffa515e5560.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-91dd0039cc2b70bc.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-b01cbbaac34dadbc.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-a15410de7f1d0f84.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-c4e1b69fb5bab61a.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-7796fbf458f8f159.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-5d00e1155bd11178.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-d2cdbe770683e9df.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-24108f615ff5e1e7.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-fef247a87baeb080.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-18534d2a79a3850b.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/webpack-0a61b5bd21a41fe6.js +0 -1
- fides/ui-build/static/admin/_next/static/hCJxUAFBWobWrps6RkP0K/_buildManifest.js +0 -1
- {ethyca_fides-2.64.1rc0.dist-info → ethyca_fides-2.64.2b0.dist-info}/WHEEL +0 -0
- {ethyca_fides-2.64.1rc0.dist-info → ethyca_fides-2.64.2b0.dist-info}/entry_points.txt +0 -0
- {ethyca_fides-2.64.1rc0.dist-info → ethyca_fides-2.64.2b0.dist-info}/licenses/LICENSE +0 -0
- {ethyca_fides-2.64.1rc0.dist-info → ethyca_fides-2.64.2b0.dist-info}/top_level.txt +0 -0
- /fides/ui-build/static/admin/_next/static/{hCJxUAFBWobWrps6RkP0K → jg8bMUMFAG7KlEnEbTRct}/_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-
|
11
|
+
"date": "2025-06-26T17:32:16+0200",
|
12
12
|
"dirty": false,
|
13
13
|
"error": null,
|
14
|
-
"full-revisionid": "
|
15
|
-
"version": "2.64.
|
14
|
+
"full-revisionid": "a393007f54ae4f6f6660c0eadb35ad167a869be7",
|
15
|
+
"version": "2.64.2b0"
|
16
16
|
}
|
17
17
|
''' # END VERSION_JSON
|
18
18
|
|
@@ -0,0 +1,256 @@
|
|
1
|
+
"""add_manual_task_instance_table
|
2
|
+
|
3
|
+
Revision ID: 6a76a1fa4f3f
|
4
|
+
Revises: ba414a58ba90
|
5
|
+
Create Date: 2025-06-10 22:45:27.591492
|
6
|
+
|
7
|
+
"""
|
8
|
+
|
9
|
+
import sqlalchemy as sa
|
10
|
+
from alembic import op
|
11
|
+
from sqlalchemy.dialects.postgresql import JSONB
|
12
|
+
|
13
|
+
# revision identifiers, used by Alembic.
|
14
|
+
revision = "6a76a1fa4f3f"
|
15
|
+
down_revision = "ba414a58ba90"
|
16
|
+
branch_labels = None
|
17
|
+
depends_on = None
|
18
|
+
|
19
|
+
|
20
|
+
def upgrade():
|
21
|
+
# Add execution_timing column to manual_task_config
|
22
|
+
op.add_column(
|
23
|
+
"manual_task_config",
|
24
|
+
sa.Column(
|
25
|
+
"execution_timing",
|
26
|
+
sa.String(),
|
27
|
+
nullable=False,
|
28
|
+
server_default="pre_execution",
|
29
|
+
),
|
30
|
+
)
|
31
|
+
|
32
|
+
# Remove due_date column from manual_task
|
33
|
+
op.drop_column("manual_task", "due_date")
|
34
|
+
|
35
|
+
# Create manual_task_instance table
|
36
|
+
op.create_table(
|
37
|
+
"manual_task_instance",
|
38
|
+
sa.Column("id", sa.String(), nullable=False),
|
39
|
+
sa.Column(
|
40
|
+
"created_at",
|
41
|
+
sa.DateTime(timezone=True),
|
42
|
+
server_default=sa.text("now()"),
|
43
|
+
nullable=False,
|
44
|
+
),
|
45
|
+
sa.Column(
|
46
|
+
"updated_at",
|
47
|
+
sa.DateTime(timezone=True),
|
48
|
+
server_default=sa.text("now()"),
|
49
|
+
nullable=False,
|
50
|
+
),
|
51
|
+
sa.Column("task_id", sa.String(), nullable=False),
|
52
|
+
sa.Column("config_id", sa.String(), nullable=False),
|
53
|
+
sa.Column("entity_id", sa.String(), nullable=False),
|
54
|
+
sa.Column("entity_type", sa.String(), nullable=False),
|
55
|
+
sa.Column("status", sa.String(), nullable=False, server_default="pending"),
|
56
|
+
sa.Column("due_date", sa.DateTime(timezone=True), nullable=True),
|
57
|
+
sa.Column("completed_at", sa.DateTime(timezone=True), nullable=True),
|
58
|
+
sa.Column("completed_by_id", sa.String(), nullable=True),
|
59
|
+
sa.ForeignKeyConstraint(
|
60
|
+
["config_id"], ["manual_task_config.id"], ondelete="CASCADE"
|
61
|
+
),
|
62
|
+
sa.ForeignKeyConstraint(["task_id"], ["manual_task.id"], ondelete="CASCADE"),
|
63
|
+
sa.PrimaryKeyConstraint("id"),
|
64
|
+
)
|
65
|
+
|
66
|
+
# Create indexes for manual_task_instance
|
67
|
+
op.create_index(
|
68
|
+
"ix_manual_task_instance_task_id", "manual_task_instance", ["task_id"]
|
69
|
+
)
|
70
|
+
op.create_index(
|
71
|
+
"ix_manual_task_instance_config_id", "manual_task_instance", ["config_id"]
|
72
|
+
)
|
73
|
+
op.create_index(
|
74
|
+
"ix_manual_task_instance_entity_id", "manual_task_instance", ["entity_id"]
|
75
|
+
)
|
76
|
+
op.create_index(
|
77
|
+
"ix_manual_task_instance_entity_type", "manual_task_instance", ["entity_type"]
|
78
|
+
)
|
79
|
+
op.create_index(
|
80
|
+
"ix_manual_task_instance_status", "manual_task_instance", ["status"]
|
81
|
+
)
|
82
|
+
op.create_index(
|
83
|
+
"ix_manual_task_instance_completed_at", "manual_task_instance", ["completed_at"]
|
84
|
+
)
|
85
|
+
# Composite index for common query pattern
|
86
|
+
op.create_index(
|
87
|
+
"ix_manual_task_instance_entity",
|
88
|
+
"manual_task_instance",
|
89
|
+
["entity_type", "entity_id"],
|
90
|
+
)
|
91
|
+
|
92
|
+
# Create manual_task_submission table
|
93
|
+
op.create_table(
|
94
|
+
"manual_task_submission",
|
95
|
+
sa.Column("id", sa.String(), nullable=False),
|
96
|
+
sa.Column(
|
97
|
+
"created_at",
|
98
|
+
sa.DateTime(timezone=True),
|
99
|
+
server_default=sa.text("now()"),
|
100
|
+
nullable=False,
|
101
|
+
),
|
102
|
+
sa.Column(
|
103
|
+
"updated_at",
|
104
|
+
sa.DateTime(timezone=True),
|
105
|
+
server_default=sa.text("now()"),
|
106
|
+
nullable=False,
|
107
|
+
),
|
108
|
+
sa.Column("task_id", sa.String(), nullable=False),
|
109
|
+
sa.Column("config_id", sa.String(), nullable=False),
|
110
|
+
sa.Column("field_id", sa.String(), nullable=False),
|
111
|
+
sa.Column("instance_id", sa.String(), nullable=False),
|
112
|
+
sa.Column("submitted_by", sa.String(), nullable=True),
|
113
|
+
sa.Column("submitted_at", sa.DateTime(timezone=True), nullable=False),
|
114
|
+
sa.Column("data", JSONB, nullable=False),
|
115
|
+
sa.ForeignKeyConstraint(
|
116
|
+
["config_id"], ["manual_task_config.id"], ondelete="CASCADE"
|
117
|
+
),
|
118
|
+
sa.ForeignKeyConstraint(
|
119
|
+
["field_id"], ["manual_task_config_field.id"], ondelete="CASCADE"
|
120
|
+
),
|
121
|
+
sa.ForeignKeyConstraint(
|
122
|
+
["instance_id"], ["manual_task_instance.id"], ondelete="CASCADE"
|
123
|
+
),
|
124
|
+
sa.ForeignKeyConstraint(["task_id"], ["manual_task.id"], ondelete="CASCADE"),
|
125
|
+
sa.ForeignKeyConstraint(
|
126
|
+
["submitted_by"], ["fidesuser.id"], ondelete="SET NULL"
|
127
|
+
),
|
128
|
+
sa.PrimaryKeyConstraint("id"),
|
129
|
+
)
|
130
|
+
|
131
|
+
# Create indexes for manual_task_submission
|
132
|
+
op.create_index(
|
133
|
+
"ix_manual_task_submission_task_id", "manual_task_submission", ["task_id"]
|
134
|
+
)
|
135
|
+
op.create_index(
|
136
|
+
"ix_manual_task_submission_config_id", "manual_task_submission", ["config_id"]
|
137
|
+
)
|
138
|
+
op.create_index(
|
139
|
+
"ix_manual_task_submission_field_id", "manual_task_submission", ["field_id"]
|
140
|
+
)
|
141
|
+
op.create_index(
|
142
|
+
"ix_manual_task_submission_instance_id",
|
143
|
+
"manual_task_submission",
|
144
|
+
["instance_id"],
|
145
|
+
)
|
146
|
+
op.create_index(
|
147
|
+
"ix_manual_task_submission_submitted_by",
|
148
|
+
"manual_task_submission",
|
149
|
+
["submitted_by"],
|
150
|
+
)
|
151
|
+
op.create_index(
|
152
|
+
"ix_manual_task_submission_submitted_at",
|
153
|
+
"manual_task_submission",
|
154
|
+
["submitted_at"],
|
155
|
+
)
|
156
|
+
# Composite index for common query pattern
|
157
|
+
op.create_index(
|
158
|
+
"ix_manual_task_submission_instance_field",
|
159
|
+
"manual_task_submission",
|
160
|
+
["instance_id", "field_id"],
|
161
|
+
)
|
162
|
+
|
163
|
+
# Add foreign key constraint to manual_task_log.instance_id
|
164
|
+
op.create_foreign_key(
|
165
|
+
"fk_manual_task_log_instance_id",
|
166
|
+
"manual_task_log",
|
167
|
+
"manual_task_instance",
|
168
|
+
["instance_id"],
|
169
|
+
["id"],
|
170
|
+
ondelete="CASCADE",
|
171
|
+
)
|
172
|
+
|
173
|
+
# Update foreign key constraint for manual_task_log.config_id to use CASCADE
|
174
|
+
op.drop_constraint(
|
175
|
+
"fk_manual_task_log_config_id", "manual_task_log", type_="foreignkey"
|
176
|
+
)
|
177
|
+
op.create_foreign_key(
|
178
|
+
"fk_manual_task_log_config_id",
|
179
|
+
"manual_task_log",
|
180
|
+
"manual_task_config",
|
181
|
+
["config_id"],
|
182
|
+
["id"],
|
183
|
+
ondelete="CASCADE",
|
184
|
+
)
|
185
|
+
|
186
|
+
|
187
|
+
def downgrade():
|
188
|
+
# Drop execution_timing column from manual_task_config
|
189
|
+
op.drop_column("manual_task_config", "execution_timing")
|
190
|
+
|
191
|
+
# Add due_date column to manual_task
|
192
|
+
op.add_column(
|
193
|
+
"manual_task",
|
194
|
+
sa.Column("due_date", sa.DateTime(timezone=True), nullable=True),
|
195
|
+
)
|
196
|
+
|
197
|
+
# Drop foreign key constraint from manual_task_log.instance_id
|
198
|
+
op.drop_constraint(
|
199
|
+
"fk_manual_task_log_instance_id", "manual_task_log", type_="foreignkey"
|
200
|
+
)
|
201
|
+
|
202
|
+
# Revert foreign key constraint for manual_task_log.config_id back to SET NULL
|
203
|
+
op.drop_constraint(
|
204
|
+
"fk_manual_task_log_config_id", "manual_task_log", type_="foreignkey"
|
205
|
+
)
|
206
|
+
op.create_foreign_key(
|
207
|
+
"fk_manual_task_log_config_id",
|
208
|
+
"manual_task_log",
|
209
|
+
"manual_task_config",
|
210
|
+
["config_id"],
|
211
|
+
["id"],
|
212
|
+
ondelete="SET NULL",
|
213
|
+
)
|
214
|
+
|
215
|
+
# Drop indexes first
|
216
|
+
op.drop_index(
|
217
|
+
"ix_manual_task_submission_instance_field", table_name="manual_task_submission"
|
218
|
+
)
|
219
|
+
op.drop_index(
|
220
|
+
"ix_manual_task_submission_submitted_at", table_name="manual_task_submission"
|
221
|
+
)
|
222
|
+
op.drop_index(
|
223
|
+
"ix_manual_task_submission_submitted_by", table_name="manual_task_submission"
|
224
|
+
)
|
225
|
+
op.drop_index(
|
226
|
+
"ix_manual_task_submission_instance_id", table_name="manual_task_submission"
|
227
|
+
)
|
228
|
+
op.drop_index(
|
229
|
+
"ix_manual_task_submission_field_id", table_name="manual_task_submission"
|
230
|
+
)
|
231
|
+
op.drop_index(
|
232
|
+
"ix_manual_task_submission_config_id", table_name="manual_task_submission"
|
233
|
+
)
|
234
|
+
op.drop_index(
|
235
|
+
"ix_manual_task_submission_task_id", table_name="manual_task_submission"
|
236
|
+
)
|
237
|
+
|
238
|
+
op.drop_index("ix_manual_task_instance_entity", table_name="manual_task_instance")
|
239
|
+
op.drop_index(
|
240
|
+
"ix_manual_task_instance_completed_at", table_name="manual_task_instance"
|
241
|
+
)
|
242
|
+
op.drop_index("ix_manual_task_instance_status", table_name="manual_task_instance")
|
243
|
+
op.drop_index(
|
244
|
+
"ix_manual_task_instance_entity_type", table_name="manual_task_instance"
|
245
|
+
)
|
246
|
+
op.drop_index(
|
247
|
+
"ix_manual_task_instance_entity_id", table_name="manual_task_instance"
|
248
|
+
)
|
249
|
+
op.drop_index(
|
250
|
+
"ix_manual_task_instance_config_id", table_name="manual_task_instance"
|
251
|
+
)
|
252
|
+
op.drop_index("ix_manual_task_instance_task_id", table_name="manual_task_instance")
|
253
|
+
|
254
|
+
# Drop tables in reverse order to handle foreign key constraints
|
255
|
+
op.drop_table("manual_task_submission")
|
256
|
+
op.drop_table("manual_task_instance")
|
@@ -0,0 +1,46 @@
|
|
1
|
+
"""add_manual_task_to_connectiontype_enum
|
2
|
+
|
3
|
+
Revision ID: aadfe83c5644
|
4
|
+
Revises: 6a76a1fa4f3f
|
5
|
+
Create Date: 2025-06-19 18:55:08.131278
|
6
|
+
|
7
|
+
"""
|
8
|
+
|
9
|
+
import sqlalchemy as sa
|
10
|
+
from alembic import op
|
11
|
+
|
12
|
+
# revision identifiers, used by Alembic.
|
13
|
+
revision = "aadfe83c5644"
|
14
|
+
down_revision = "6a76a1fa4f3f"
|
15
|
+
branch_labels = None
|
16
|
+
depends_on = None
|
17
|
+
|
18
|
+
|
19
|
+
def upgrade():
|
20
|
+
# Add manual_task to ConnectionType enum
|
21
|
+
op.execute("alter type connectiontype rename to connectiontype_old")
|
22
|
+
op.execute(
|
23
|
+
"create type connectiontype as enum('attentive_email', 'bigquery', 'datahub', 'dynamodb', 'fides', 'generic_consent_email', 'generic_erasure_email', 'dynamic_erasure_email', 'google_cloud_sql_mysql', 'google_cloud_sql_postgres', 'https', 'manual', 'manual_webhook', 'manual_task', 'mariadb', 'mongodb', 'mssql', 'mysql', 'okta', 'postgres', 'rds_mysql', 'rds_postgres', 'redshift', 's3', 'saas', 'scylla', 'snowflake', 'sovrn', 'timescale', 'website')"
|
24
|
+
)
|
25
|
+
op.execute(
|
26
|
+
(
|
27
|
+
"alter table connectionconfig alter column connection_type type connectiontype using "
|
28
|
+
"connection_type::text::connectiontype"
|
29
|
+
)
|
30
|
+
)
|
31
|
+
op.execute("drop type connectiontype_old")
|
32
|
+
|
33
|
+
|
34
|
+
def downgrade():
|
35
|
+
# Remove manual_task from ConnectionType enum
|
36
|
+
op.execute("alter type connectiontype rename to connectiontype_old")
|
37
|
+
op.execute(
|
38
|
+
"create type connectiontype as enum('attentive_email', 'bigquery', 'datahub', 'dynamodb', 'fides', 'generic_consent_email', 'generic_erasure_email', 'dynamic_erasure_email', 'google_cloud_sql_mysql', 'google_cloud_sql_postgres', 'https', 'manual', 'manual_webhook', 'mariadb', 'mongodb', 'mssql', 'mysql', 'okta', 'postgres', 'rds_mysql', 'rds_postgres', 'redshift', 's3', 'saas', 'scylla', 'snowflake', 'sovrn', 'timescale', 'website')"
|
39
|
+
)
|
40
|
+
op.execute(
|
41
|
+
(
|
42
|
+
"alter table connectionconfig alter column connection_type type connectiontype using "
|
43
|
+
"connection_type::text::connectiontype"
|
44
|
+
)
|
45
|
+
)
|
46
|
+
op.execute("drop type connectiontype_old")
|
fides/api/db/base.py
CHANGED
@@ -36,6 +36,10 @@ from fides.api.models.manual_tasks.manual_task_config import (
|
|
36
36
|
ManualTaskConfig,
|
37
37
|
ManualTaskConfigField,
|
38
38
|
)
|
39
|
+
from fides.api.models.manual_tasks.manual_task_instance import (
|
40
|
+
ManualTaskInstance,
|
41
|
+
ManualTaskSubmission,
|
42
|
+
)
|
39
43
|
from fides.api.models.manual_tasks.manual_task_log import ManualTaskLog
|
40
44
|
from fides.api.models.manual_webhook import AccessManualWebhook
|
41
45
|
from fides.api.models.messaging import MessagingConfig
|
fides/api/db/database.py
CHANGED
@@ -15,8 +15,8 @@ from sqlalchemy_utils.types.encrypted.encrypted_type import InvalidCiphertextErr
|
|
15
15
|
|
16
16
|
from fides.api.db.base import Base # type: ignore[attr-defined]
|
17
17
|
from fides.api.db.seed import load_default_resources
|
18
|
+
from fides.api.db.session import get_db_engine
|
18
19
|
from fides.api.util.errors import get_full_exception_name
|
19
|
-
from fides.core.utils import get_db_engine
|
20
20
|
|
21
21
|
DatabaseHealth = Literal["healthy", "unhealthy", "needs migration"]
|
22
22
|
|
@@ -41,6 +41,14 @@ def upgrade_db(alembic_config: Config, revision: str = "head") -> None:
|
|
41
41
|
command.upgrade(alembic_config, revision)
|
42
42
|
|
43
43
|
|
44
|
+
def init_db(database_url: str) -> None:
|
45
|
+
"""
|
46
|
+
Runs the migrations and creates all of the database objects.
|
47
|
+
"""
|
48
|
+
alembic_config = get_alembic_config(database_url)
|
49
|
+
upgrade_db(alembic_config)
|
50
|
+
|
51
|
+
|
44
52
|
def downgrade_db(alembic_config: Config, revision: str = "head") -> None:
|
45
53
|
"""Downgrade the database to the specified migration revision."""
|
46
54
|
log.info(f"Running database downgrade to revision {revision}")
|
@@ -78,7 +86,7 @@ def reset_db(database_url: str) -> None:
|
|
78
86
|
Drops all tables/metadata from the database.
|
79
87
|
"""
|
80
88
|
log.info("Resetting database...")
|
81
|
-
engine = get_db_engine(database_url)
|
89
|
+
engine = get_db_engine(database_uri=database_url)
|
82
90
|
with engine.connect() as connection:
|
83
91
|
log.info("Dropping tables...")
|
84
92
|
Base.metadata.drop_all(connection)
|
@@ -136,3 +144,20 @@ def configure_db(database_url: str, revision: Optional[str] = "head") -> None:
|
|
136
144
|
log.error("Unable to configure database: {}: {}", error_type, error)
|
137
145
|
log.opt(exception=True).error(error)
|
138
146
|
raise
|
147
|
+
|
148
|
+
|
149
|
+
def check_missing_migrations(database_url: str) -> None:
|
150
|
+
"""
|
151
|
+
Tries to autogenerate migrations, returns True if a migration
|
152
|
+
was generated.
|
153
|
+
"""
|
154
|
+
|
155
|
+
engine = get_db_engine(database_uri=database_url)
|
156
|
+
connection = engine.connect()
|
157
|
+
|
158
|
+
migration_context = migration.MigrationContext.configure(connection)
|
159
|
+
result = command.autogen.compare_metadata(migration_context, Base.metadata) # type: ignore[attr-defined]
|
160
|
+
|
161
|
+
if result:
|
162
|
+
raise SystemExit("Migrations needs to be generated!")
|
163
|
+
print("No migrations need to be generated.")
|
fides/api/models/attachment.py
CHANGED
@@ -5,9 +5,9 @@ from typing import IO, TYPE_CHECKING, Any, Tuple
|
|
5
5
|
|
6
6
|
from fideslang.validation import AnyHttpUrlString
|
7
7
|
from loguru import logger as log
|
8
|
-
from sqlalchemy import Column
|
8
|
+
from sqlalchemy import Column, DateTime
|
9
9
|
from sqlalchemy import Enum as EnumColumn
|
10
|
-
from sqlalchemy import ForeignKey, String, UniqueConstraint, orm
|
10
|
+
from sqlalchemy import ForeignKey, Index, String, UniqueConstraint, func, orm
|
11
11
|
from sqlalchemy.ext.declarative import declared_attr
|
12
12
|
from sqlalchemy.orm import Session, relationship
|
13
13
|
|
@@ -64,8 +64,14 @@ class AttachmentReference(Base):
|
|
64
64
|
"""Overriding base class method to set the table name."""
|
65
65
|
return "attachment_reference"
|
66
66
|
|
67
|
+
created_at = Column(
|
68
|
+
DateTime(timezone=True), server_default=func.now(), nullable=False
|
69
|
+
)
|
70
|
+
|
67
71
|
attachment_id = Column(
|
68
|
-
String,
|
72
|
+
String,
|
73
|
+
ForeignKey("attachment.id", name="attachment_reference_attachment_id_fkey"),
|
74
|
+
nullable=False,
|
69
75
|
)
|
70
76
|
reference_id = Column(String, nullable=False)
|
71
77
|
reference_type = Column(EnumColumn(AttachmentReferenceType), nullable=False)
|
@@ -74,6 +80,8 @@ class AttachmentReference(Base):
|
|
74
80
|
UniqueConstraint(
|
75
81
|
"attachment_id", "reference_id", name="_attachment_reference_uc"
|
76
82
|
),
|
83
|
+
Index("ix_attachment_reference_reference_id", "reference_id"),
|
84
|
+
Index("ix_attachment_reference_reference_type", "reference_type"),
|
77
85
|
)
|
78
86
|
|
79
87
|
# Relationships
|
@@ -92,6 +100,10 @@ class Attachment(Base):
|
|
92
100
|
Stores information about an Attachment.
|
93
101
|
"""
|
94
102
|
|
103
|
+
created_at = Column(
|
104
|
+
DateTime(timezone=True), server_default=func.now(), nullable=False
|
105
|
+
)
|
106
|
+
|
95
107
|
user_id = Column(
|
96
108
|
String, ForeignKey("fidesuser.id", ondelete="SET NULL"), nullable=True
|
97
109
|
)
|
fides/api/models/comment.py
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
from enum import Enum as EnumType
|
2
2
|
from typing import TYPE_CHECKING, Any
|
3
3
|
|
4
|
-
from sqlalchemy import Column
|
4
|
+
from sqlalchemy import Column, DateTime
|
5
5
|
from sqlalchemy import Enum as EnumColumn
|
6
|
-
from sqlalchemy import ForeignKey, String,
|
6
|
+
from sqlalchemy import ForeignKey, Index, String, func, orm
|
7
7
|
from sqlalchemy.ext.declarative import declared_attr
|
8
8
|
from sqlalchemy.orm import Session, relationship
|
9
9
|
|
10
|
-
from fides.api.db.base_class import Base
|
10
|
+
from fides.api.db.base_class import Base, FidesBase
|
11
11
|
from fides.api.models.attachment import Attachment, AttachmentReferenceType
|
12
12
|
|
13
13
|
if TYPE_CHECKING:
|
@@ -48,12 +48,24 @@ class CommentReference(Base):
|
|
48
48
|
"""Overriding base class method to set the table name."""
|
49
49
|
return "comment_reference"
|
50
50
|
|
51
|
-
|
51
|
+
id = Column(String(255), primary_key=True, default=FidesBase.generate_uuid)
|
52
|
+
created_at = Column(
|
53
|
+
DateTime(timezone=True), server_default=func.now(), nullable=False
|
54
|
+
)
|
55
|
+
|
56
|
+
comment_id = Column(
|
57
|
+
String,
|
58
|
+
ForeignKey(
|
59
|
+
"comment.id", name="comment_reference_comment_id_fkey", ondelete="CASCADE"
|
60
|
+
),
|
61
|
+
nullable=False,
|
62
|
+
)
|
52
63
|
reference_id = Column(String, nullable=False)
|
53
64
|
reference_type = Column(EnumColumn(CommentReferenceType), nullable=False)
|
54
65
|
|
55
66
|
__table_args__ = (
|
56
|
-
|
67
|
+
Index("ix_comment_reference_reference_id", "reference_id"),
|
68
|
+
Index("ix_comment_reference_reference_type", "reference_type"),
|
57
69
|
)
|
58
70
|
|
59
71
|
comment = relationship(
|
@@ -75,6 +87,11 @@ class Comment(Base):
|
|
75
87
|
Stores information about a Comment.
|
76
88
|
"""
|
77
89
|
|
90
|
+
id = Column(String(255), primary_key=True, default=FidesBase.generate_uuid)
|
91
|
+
created_at = Column(
|
92
|
+
DateTime(timezone=True), server_default=func.now(), nullable=False
|
93
|
+
)
|
94
|
+
|
78
95
|
user_id = Column(
|
79
96
|
String, ForeignKey("fidesuser.id", ondelete="SET NULL"), nullable=True
|
80
97
|
)
|
@@ -53,6 +53,7 @@ class ConnectionType(enum.Enum):
|
|
53
53
|
https = "https"
|
54
54
|
manual = "manual" # Deprecated - use manual_webhook instead
|
55
55
|
manual_webhook = "manual_webhook" # Runs upfront before the traversal
|
56
|
+
manual_task = "manual_task" # Manual task integration
|
56
57
|
mariadb = "mariadb"
|
57
58
|
mongodb = "mongodb"
|
58
59
|
mssql = "mssql"
|
@@ -88,6 +89,7 @@ class ConnectionType(enum.Enum):
|
|
88
89
|
ConnectionType.google_cloud_sql_postgres.value: "Google Cloud SQL for Postgres",
|
89
90
|
ConnectionType.https.value: "Policy Webhook",
|
90
91
|
ConnectionType.manual_webhook.value: "Manual Process",
|
92
|
+
ConnectionType.manual_task.value: "Manual Task",
|
91
93
|
ConnectionType.manual.value: "Manual Connector",
|
92
94
|
ConnectionType.mariadb.value: "MariaDB",
|
93
95
|
ConnectionType.mongodb.value: "MongoDB",
|
@@ -132,6 +134,7 @@ class ConnectionType(enum.Enum):
|
|
132
134
|
ConnectionType.google_cloud_sql_postgres.value: SystemType.database,
|
133
135
|
ConnectionType.https.value: SystemType.manual,
|
134
136
|
ConnectionType.manual_webhook.value: SystemType.manual,
|
137
|
+
ConnectionType.manual_task.value: SystemType.manual,
|
135
138
|
ConnectionType.manual.value: SystemType.manual,
|
136
139
|
ConnectionType.mariadb.value: SystemType.database,
|
137
140
|
ConnectionType.mongodb.value: SystemType.database,
|
@@ -229,6 +232,14 @@ class ConnectionConfig(Base):
|
|
229
232
|
uselist=False,
|
230
233
|
)
|
231
234
|
|
235
|
+
manual_task = relationship( # type: ignore[misc]
|
236
|
+
"ManualTask",
|
237
|
+
primaryjoin="and_(ConnectionConfig.id == foreign(ManualTask.parent_entity_id), "
|
238
|
+
"ManualTask.parent_entity_type == 'connection_config')",
|
239
|
+
cascade="delete",
|
240
|
+
uselist=False,
|
241
|
+
)
|
242
|
+
|
232
243
|
pre_approval_webhooks = relationship( # type: ignore[misc]
|
233
244
|
"PreApprovalWebhook",
|
234
245
|
back_populates="connection_config",
|
fides/api/models/db_cache.py
CHANGED
@@ -32,7 +32,7 @@ class DBCache(Base):
|
|
32
32
|
cache_value = Column(BYTEA, nullable=False)
|
33
33
|
|
34
34
|
__table_args__ = (
|
35
|
-
Index("ix_dbcache_namespace_cache_key", "namespace", "cache_key"),
|
35
|
+
Index("ix_dbcache_namespace_cache_key", "namespace", "cache_key", unique=True),
|
36
36
|
)
|
37
37
|
|
38
38
|
@classmethod
|
@@ -159,6 +159,8 @@ class MonitorConfig(Base):
|
|
159
159
|
"MonitorExecution",
|
160
160
|
cascade="all, delete-orphan",
|
161
161
|
backref="monitor_config",
|
162
|
+
primaryjoin="MonitorExecution.monitor_config_key == foreign(MonitorConfig.key)",
|
163
|
+
single_parent=True,
|
162
164
|
)
|
163
165
|
|
164
166
|
shared_config_id = Column(
|
@@ -342,16 +344,16 @@ class StagedResourceAncestor(Base):
|
|
342
344
|
Its entries should be deleted when the staged resource is deleted, via cascade.
|
343
345
|
"""
|
344
346
|
|
347
|
+
id = Column(String(255), primary_key=True, default=FidesBase.generate_uuid)
|
348
|
+
|
345
349
|
ancestor_urn = Column(
|
346
350
|
String,
|
347
351
|
ForeignKey("stagedresource.urn", ondelete="CASCADE"),
|
348
|
-
primary_key=True,
|
349
352
|
nullable=False,
|
350
353
|
)
|
351
354
|
descendant_urn = Column(
|
352
355
|
String,
|
353
356
|
ForeignKey("stagedresource.urn", ondelete="CASCADE"),
|
354
|
-
primary_key=True,
|
355
357
|
nullable=False,
|
356
358
|
)
|
357
359
|
|
@@ -372,6 +374,7 @@ class StagedResourceAncestor(Base):
|
|
372
374
|
UniqueConstraint(
|
373
375
|
"ancestor_urn", "descendant_urn", name="uq_staged_resource_ancestor"
|
374
376
|
),
|
377
|
+
Index("ix_staged_resource_ancestor_pkey", "id", unique=True),
|
375
378
|
Index("ix_staged_resource_ancestor_ancestor", "ancestor_urn"),
|
376
379
|
Index("ix_staged_resource_ancestor_descendant", "descendant_urn"),
|
377
380
|
)
|
@@ -470,12 +473,7 @@ class StagedResource(Base):
|
|
470
473
|
server_default="{}",
|
471
474
|
default=dict,
|
472
475
|
)
|
473
|
-
user_assigned_system_id = Column(
|
474
|
-
String,
|
475
|
-
ForeignKey(System.id_field_path),
|
476
|
-
nullable=True,
|
477
|
-
index=True,
|
478
|
-
)
|
476
|
+
user_assigned_system_id = Column(String, nullable=True, index=True)
|
479
477
|
|
480
478
|
# pointers to child and parent URNs
|
481
479
|
children = Column(
|
@@ -527,7 +525,7 @@ class StagedResource(Base):
|
|
527
525
|
|
528
526
|
data_uses = Column(
|
529
527
|
ARRAY(String),
|
530
|
-
nullable=
|
528
|
+
nullable=True,
|
531
529
|
server_default="{}",
|
532
530
|
default=dict,
|
533
531
|
)
|
@@ -588,12 +586,14 @@ class MonitorExecution(Base):
|
|
588
586
|
configuration details used in connecting to the external data store.
|
589
587
|
"""
|
590
588
|
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
)
|
589
|
+
# redefined here because there's a minor, unintended discrepancy between
|
590
|
+
# this `id` field and that of the `Base` class, which explicitly sets `index=True`.
|
591
|
+
# TODO: we likely should _not_ be setting `index=True` on the `id`
|
592
|
+
# attribute of the `Base` class, as `primary_key=True` already specifies a
|
593
|
+
# primary key constraint, which will implicitly create an index for the field.
|
594
|
+
id = Column(String(255), primary_key=True, default=FidesBase.generate_uuid)
|
595
|
+
|
596
|
+
monitor_config_key = Column(String, nullable=False, index=True)
|
597
597
|
status = Column(String, nullable=True)
|
598
598
|
started = Column(
|
599
599
|
DateTime(timezone=True),
|
@@ -3,12 +3,13 @@ from __future__ import annotations
|
|
3
3
|
from datetime import datetime, timedelta, timezone
|
4
4
|
from typing import TYPE_CHECKING, Any, Optional
|
5
5
|
|
6
|
-
from sqlalchemy import Column, DateTime, ForeignKey, String
|
6
|
+
from sqlalchemy import Column, DateTime, ForeignKey, Index, String
|
7
7
|
from sqlalchemy.ext.declarative import declared_attr
|
8
8
|
from sqlalchemy.orm import Session, relationship
|
9
|
+
from sqlalchemy.sql import func
|
9
10
|
|
10
11
|
from fides.api.cryptography.cryptographic_util import generate_secure_random_string
|
11
|
-
from fides.api.db.base_class import Base
|
12
|
+
from fides.api.db.base_class import Base, FidesBase
|
12
13
|
from fides.api.util.identity_verification import IdentityVerificationMixin
|
13
14
|
from fides.config import get_config
|
14
15
|
|
@@ -40,6 +41,22 @@ class FidesUserRespondentEmailVerification(Base, IdentityVerificationMixin):
|
|
40
41
|
def __tablename__(self) -> str:
|
41
42
|
return "fides_user_respondent_email_verification"
|
42
43
|
|
44
|
+
# redefined here because there's a minor, unintended discrepancy between
|
45
|
+
# this `id` field and that of the `Base` class, which explicitly sets `index=True`.
|
46
|
+
# TODO: we likely should _not_ be setting `index=True` on the `id`
|
47
|
+
# attribute of the `Base` class, as `primary_key=True` already specifies a
|
48
|
+
# primary key constraint, which will implicitly create an index for the field.
|
49
|
+
id = Column(String(255), primary_key=True, default=FidesBase.generate_uuid)
|
50
|
+
created_at = Column(
|
51
|
+
DateTime(timezone=True), server_default=func.now(), nullable=False
|
52
|
+
)
|
53
|
+
updated_at = Column(
|
54
|
+
DateTime(timezone=True),
|
55
|
+
server_default=func.now(),
|
56
|
+
onupdate=func.now(),
|
57
|
+
nullable=False,
|
58
|
+
)
|
59
|
+
|
43
60
|
user_id = Column(
|
44
61
|
String,
|
45
62
|
ForeignKey("fidesuser.id", ondelete="CASCADE"),
|
@@ -59,6 +76,14 @@ class FidesUserRespondentEmailVerification(Base, IdentityVerificationMixin):
|
|
59
76
|
foreign_keys=[user_id],
|
60
77
|
)
|
61
78
|
|
79
|
+
__table_args__ = (
|
80
|
+
Index(
|
81
|
+
"ix_fides_user_respondent_email_verification_id",
|
82
|
+
"id",
|
83
|
+
unique=True,
|
84
|
+
),
|
85
|
+
)
|
86
|
+
|
62
87
|
@classmethod
|
63
88
|
def create(
|
64
89
|
cls, db: Session, *, data: dict[str, Any], check_name: bool = False
|