ethyca-fides 2.64.3b0__py2.py3-none-any.whl → 2.64.5rc3__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.
- {ethyca_fides-2.64.3b0.dist-info → ethyca_fides-2.64.5rc3.dist-info}/METADATA +3 -3
- {ethyca_fides-2.64.3b0.dist-info → ethyca_fides-2.64.5rc3.dist-info}/RECORD +245 -237
- fides/_version.py +3 -3
- fides/api/api/v1/api.py +0 -2
- fides/api/db/base.py +3 -6
- fides/api/db/database.py +2 -27
- fides/api/graph/config.py +9 -16
- fides/api/models/attachment.py +3 -15
- fides/api/models/comment.py +5 -23
- fides/api/models/connectionconfig.py +0 -11
- 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 +2 -27
- fides/api/models/manual_tasks/__init__.py +14 -0
- fides/api/models/manual_tasks/manual_task.py +120 -0
- fides/api/models/manual_tasks/manual_task_config.py +136 -0
- fides/api/models/manual_tasks/manual_task_log.py +104 -0
- fides/api/models/tcf_publisher_restrictions.py +4 -16
- fides/api/schemas/manual_tasks/__init__.py +0 -0
- fides/api/schemas/manual_tasks/manual_task_config.py +311 -0
- fides/api/schemas/manual_tasks/manual_task_schemas.py +79 -0
- fides/api/schemas/manual_tasks/manual_task_status.py +151 -0
- fides/api/service/connectors/query_configs/bigquery_query_config.py +22 -44
- fides/api/service/connectors/query_configs/query_config.py +2 -5
- fides/api/util/connection_util.py +2 -25
- fides/common/api/v1/urn_registry.py +0 -4
- fides/service/manual_tasks/__init__.py +0 -0
- fides/service/manual_tasks/manual_task_config_service.py +370 -0
- fides/service/manual_tasks/manual_task_service.py +294 -0
- fides/service/manual_tasks/utils.py +185 -0
- fides/ui-build/static/admin/404.html +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{1040-3def3c62138371bb.js → 1040-c1c1372a7f909aef.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/1100-3fdbdf211c3c2a5b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{1817-a3813209d7a6d28d.js → 1817-96182c1558f80b63.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/2430-b480401d44c55416.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{2921-81a48418f77bc9a7.js → 2921-f5608275555bd7d9.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{3450-3a1f0e80ead8d1b0.js → 3450-272f26c102f3510d.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/3505-192986c86dc47869.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3513-a563133845dc990f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3670-2abd9b2f17770872.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{3855-b85ad4e52433d519.js → 3855-beb58821d1ddba89.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{3872-09f81435f7905d76.js → 3872-82482e55e69b5a93.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{3923-565a852f322fdadc.js → 3923-a54c286a2ba0a47a.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/3983-17ae9c232bddc413.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{401-c3f586a23a061526.js → 401-d2ce0a5a9120e056.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/4060-3486b45081151b69.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{409-e0d39af1d9ce8ff2.js → 409-86f4f687105917fb.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/4121-f0aecb2abd384945.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{4230-d80ae2430aca784a.js → 4230-63abbdfb9e9016b9.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{431-c74dab231c8ac968.js → 431-77d59d43e90058ca.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/4481-d181a9db72984adf.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{5309-0e44dbd914896514.js → 5309-10f68cf805817cfb.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{5574-917c5ff63d222308.js → 5574-b6db9d62362e72d9.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/6060-cb1ab5be7067bf7b.js +4 -0
- fides/ui-build/static/admin/_next/static/chunks/6277-ccdb50f676a1b336.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6659-b2088f525bf13c17.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6662-42940a2b00933e79.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{6853-8d0a099f61c758d1.js → 6853-8a1b8e1c8b249f2f.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{6882-13d6f8d95b1e404f.js → 6882-6c94583bffe85ba7.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/69-943b19d39da339d9.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{6954-882b87698c5ed4fb.js → 6954-dc3540389daf94da.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/7553-e7ae268701f3dcfe.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{79-3f742fe4efd9893f.js → 79-26ccd45dfd6653a7.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{796-83a8bbdcdb67f2ba.js → 796-38c0f7e6755ad359.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/8433-1e065c55c8da73b0.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{9046-6995482a030e323c.js → 9046-bbce3c73af16daf9.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{905-ffdbd0b14167e8bd.js → 905-742074a074be1055.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{9226-8a3be36ad1a9c1e7.js → 9226-5e0ce31cfdedd5ee.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{9392.9a948112de74781b.js → 9392.25024e070026343d.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{9676.cc515c853b8cf578.js → 9676.e60a53f1f5890847.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/9767-96ed554a043c3c4d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{9951-b5b77bfcc8efb493.js → 9951-d3d5d0fe4c4edb86.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/c78d26b1-88a3e1bacb2a03c2.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/{404-488f8f03fe0ffbc7.js → 404-d41660858638adee.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{_app-030b20295bb61f96.js → _app-6b3539f8d82ce9ae.js} +89 -92
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{manual-1e88ac28bc7a41b6.js → manual-7c5e1e845372c99b.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{multiple-f2c9451fffaaa529.js → multiple-87e78f52af21c4a9.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-68955d8441e60668.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-b17d160147365cf3.js → add-vendors-6374a3a7747df964.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{configure-8e168d78acdf0cfe.js → configure-0512151e2ed0f4c1.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{[id]-5ca2467de7986929.js → [id]-09435f4ab2deafd2.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{new-06bb3b0bf097fcdb.js → new-a0039f216fb3eb93.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-experience-3c11fecc2797ab68.js → privacy-experience-cd036518b5d4efbe.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-92bc6c7b82a679b4.js → [id]-0e534580abf670be.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-a3da3243526b7ecb.js → new-bb1790eb87b63109.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-notices-b7d82386e7521041.js → privacy-notices-67e9846f877a3f38.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-20a2029b7e7fc895.js → properties-69a92b6ddbc2bae2.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{reporting-0ce299131db4c3e5.js → reporting-d07d05f4b898a5ed.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{consent-9f6a7a231bba17b7.js → consent-23e886d692ab6d1a.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/{[resourceUrn]-11d52f1570759c4d.js → [resourceUrn]-c623d6f1a61c8ea9.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/{[projectUrn]-fd705968b357e99a.js → [projectUrn]-6c766c766dc97c5c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{projects-45b585deee0b2371.js → projects-28937a8da3d73145.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/{[resourceUrn]-b83afa5565d0c84e.js → [resourceUrn]-57bd5cdf784f059f.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{resources-d8db234a44a2ddf4.js → resources-51d99174c8006eb5.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{data-catalog-2810fa2b519a076b.js → data-catalog-627fbf19dce88e81.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/{[systemId]-e861699a8866c64b.js → [systemId]-ed1629b05519a370.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/{[monitorId]-5dd2fbf33e228f9c.js → [monitorId]-ad307bfc5f51fd9d.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{action-center-806cae6bc128cd38.js → action-center-07cbd61ede6e18ac.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{activity-487285bd5eca2595.js → activity-6a2aaed8d0e66d82.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/detection/{[resourceUrn]-393e20924c83373e.js → [resourceUrn]-06edce289876dea1.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{detection-8733807dad4bc96e.js → detection-faf326a6200637d0.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/{[resourceUrn]-14bd7500362ff224.js → [resourceUrn]-64acf269256ee74f.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{discovery-9e7dfd5a6acc2e8f.js → discovery-8c3e4be6d36da66d.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{datamap-c9509d72c538d22b.js → datamap-b576a94b583a7940.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/{[...subfieldNames]-4e8a436297a055b2.js → [...subfieldNames]-4912858ffde4621a.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/{[collectionName]-6ce02295bb7f5b6d.js → [collectionName]-df21dd7ca0f35718.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/{[datasetId]-9eaa907437fde063.js → [datasetId]-5ce28a329e8f667f.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-5287c76ecf600281.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/{dataset-b328595abf20ea5d.js → dataset-c6fab547396df6ac.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{[id]-81ab412e337d2888.js → [id]-d04c9925d324eee1.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{new-34dfc172165dbb1c.js → new-656abd09ea5ee39a.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-23fbec0590c8d192.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/{index-de954b741cbca022.js → index-b66687e8194495a2.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations/{[id]-16dd6eff8f5dcc81.js → [id]-906bc5f05702efb0.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations-024a1facb9be04d0.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{[id]-42edcab11e8b5c3c.js → [id]-b74db8488e2e4b58.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{add-template-333e54ac8c3ad57a.js → add-template-a607018ff097b6c2.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{messaging-8e1e6f3782983225.js → messaging-4a1a04c5179d2053.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/ant-components-1567c9770a5f05aa.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{AntForm-920338760f5a71b5.js → AntForm-4949fe7f1815462b.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikAntFormItem-7462fb387a9de3f8.js → FormikAntFormItem-6085f73850302d55.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikControlled-6148fce7a4e2e9ca.js → FormikControlled-a3158e8217c13850.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikField-30efd8c937bf19e4.js → FormikField-8576f1ef5c67d87d.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/{forms-c44de83e0952d1e0.js → forms-341e67462b5e3352.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/table-migration-6f0e64f0c52bd68f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-6971c7773dbf9b51.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-303bd2182da03088.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-831572cc7f42615f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{configure-1d981663e1a84166.js → configure-d24230b890b13762.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-569ff31eff637034.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-b08a69b1c460c7fe.js → [id]-2bedc5013e13ab52.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-a5d1c65ec21df69d.js → add-property-9d68bd70299dd945.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{properties-3a75c6ed8308d126.js → properties-c3116b6bfe2e695e.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/reporting/{datamap-dda59a7105ee609b.js → datamap-6dfa7091b99d8321.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/about/{alpha-6773158ba6ccf4b0.js → alpha-9751059905bba190.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{about-2e046d177d52465c.js → about-ad29d77012ec9dba.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/{[purpose_id]-91f2ec72f9654cbd.js → [purpose_id]-32e3190c1ad00b40.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-13a17a4ace7293d1.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{custom-fields-94d97e3eb964c494.js → custom-fields-d2c0aac32f5d2930.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domain-records-2c7ecff0a8a74c42.js → domain-records-a10674380f94d014.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-78449b0e02bced88.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-7d299c4cb3199036.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-8d4383584c72eb5a.js → locations-cc7d629433fa6d44.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-a9fa55c40fa570a6.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{regulations-29892065d99ff113.js → regulations-64a813cb2741683b.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-547b0cfe1e49e6d2.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/{[id]-8fa8a2f238e08791.js → [id]-fb3d094e4f4585f6.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{systems-acdbdd3dfd21162f.js → systems-c2df5b7b0596a9cb.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-261deb6fb3e51cb3.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/user-management/{new-a2524414e968f862.js → new-b124cc24b930c9e1.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/{[id]-87ed17fa1d9f8f72.js → [id]-fd2ff6b13052c54e.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{user-management-6b4e0764bb8816b8.js → user-management-fa052b0439920ef6.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{webpack-da78c536f3d86d06.js → webpack-e61d457474e00565.js} +1 -1
- fides/ui-build/static/admin/_next/static/css/{1994066ec907b7df.css → c693338e3bc8dcc6.css} +1 -1
- fides/ui-build/static/admin/_next/static/g740PFm_oIYCWNhoD6-r0/_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-ext-gpp.js +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/api/alembic/migrations/versions/41a634d8c669_manual_task_restrict_deletes.py +0 -257
- fides/api/alembic/migrations/versions/6a76a1fa4f3f_add_manual_task_instance_table.py +0 -256
- fides/api/alembic/migrations/versions/aadfe83c5644_add_manual_task_to_connectiontype_enum.py +0 -46
- fides/api/api/v1/endpoints/partitioning_endpoints.py +0 -108
- fides/api/models/manual_task.py +0 -965
- fides/api/schemas/partitioning/__init__.py +0 -17
- fides/api/schemas/partitioning/bigquery_time_based_partitioning.py +0 -31
- fides/api/schemas/partitioning/time_based_partitioning.py +0 -1376
- fides/ui-build/static/admin/_next/static/chunks/1169-76bbada4f3d16538.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/1807-3beab149351d5ded.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3615-5e2d062d684b8fa1.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4121-de4ca969faf2b9f4.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/570-c99f07161bd339cd.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6084-40d5d94561a6093e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6662-6a915300505fd9c0.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7476-aaf8970dbbbe4864.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7630-c558dc3a199a633d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/787-9c751615f5816094.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/827-c6fe34fb336467ae.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9014-eeae6f581158e645.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9767-1dca308466dce863.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9826-303b14ef4fc7ab4a.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-a8e0bc7b6674f47e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-55243db34cf77b7e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-cdb77886d7fd4f44.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations-40a3cd14264796e2.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/ant-components-3f62dd959a039fe9.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/table-migration-7852aa60090c8c9a.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-11dd6152bf6607cc.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-c50c2ee7d7d2a585.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-282de19599d67aaf.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-3f962ade5df86380.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-0a87f29768425a37.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-b9e77c75c6b77c88.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-bb60c397a03558d8.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-4b835393f5274379.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-9669fa6b20545530.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-c9510a1eb612323d.js +0 -1
- fides/ui-build/static/admin/_next/static/ezJVaZ_Oi_0J2-wPEOvj1/_buildManifest.js +0 -1
- {ethyca_fides-2.64.3b0.dist-info → ethyca_fides-2.64.5rc3.dist-info}/WHEEL +0 -0
- {ethyca_fides-2.64.3b0.dist-info → ethyca_fides-2.64.5rc3.dist-info}/entry_points.txt +0 -0
- {ethyca_fides-2.64.3b0.dist-info → ethyca_fides-2.64.5rc3.dist-info}/licenses/LICENSE +0 -0
- {ethyca_fides-2.64.3b0.dist-info → ethyca_fides-2.64.5rc3.dist-info}/top_level.txt +0 -0
- /fides/ui-build/static/admin/_next/static/{ezJVaZ_Oi_0J2-wPEOvj1 → g740PFm_oIYCWNhoD6-r0}/_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-
|
|
11
|
+
"date": "2025-07-02T10:30:35-0400",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "2.64.
|
|
14
|
+
"full-revisionid": "cd9aa2f5e7ed5c57bff3cff6af259ceae63728b3",
|
|
15
|
+
"version": "2.64.5rc3"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
fides/api/api/v1/api.py
CHANGED
|
@@ -11,7 +11,6 @@ from fides.api.api.v1.endpoints import (
|
|
|
11
11
|
masking_endpoints,
|
|
12
12
|
messaging_endpoints,
|
|
13
13
|
oauth_endpoints,
|
|
14
|
-
partitioning_endpoints,
|
|
15
14
|
policy_endpoints,
|
|
16
15
|
policy_webhook_endpoints,
|
|
17
16
|
pre_approval_webhook_endpoints,
|
|
@@ -43,7 +42,6 @@ api_router.include_router(identity_verification_endpoints.router)
|
|
|
43
42
|
api_router.include_router(storage_endpoints.router)
|
|
44
43
|
api_router.include_router(messaging_endpoints.router)
|
|
45
44
|
api_router.include_router(saas_config_endpoints.router)
|
|
46
|
-
api_router.include_router(partitioning_endpoints.router)
|
|
47
45
|
api_router.include_router(user_endpoints.router)
|
|
48
46
|
api_router.include_router(user_permission_endpoints.router)
|
|
49
47
|
api_router.include_router(manual_webhook_endpoints.router)
|
fides/api/db/base.py
CHANGED
|
@@ -31,15 +31,12 @@ from fides.api.models.fides_user_respondent_email_verification import (
|
|
|
31
31
|
)
|
|
32
32
|
from fides.api.models.identity_salt import IdentitySalt
|
|
33
33
|
from fides.api.models.location_regulation_selections import LocationRegulationSelections
|
|
34
|
-
from fides.api.models.manual_task import
|
|
35
|
-
|
|
34
|
+
from fides.api.models.manual_tasks.manual_task import ManualTask, ManualTaskReference
|
|
35
|
+
from fides.api.models.manual_tasks.manual_task_config import (
|
|
36
36
|
ManualTaskConfig,
|
|
37
37
|
ManualTaskConfigField,
|
|
38
|
-
ManualTaskInstance,
|
|
39
|
-
ManualTaskLog,
|
|
40
|
-
ManualTaskReference,
|
|
41
|
-
ManualTaskSubmission,
|
|
42
38
|
)
|
|
39
|
+
from fides.api.models.manual_tasks.manual_task_log import ManualTaskLog
|
|
43
40
|
from fides.api.models.manual_webhook import AccessManualWebhook
|
|
44
41
|
from fides.api.models.messaging import MessagingConfig
|
|
45
42
|
from fides.api.models.messaging_template import MessagingTemplate
|
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
|
|
19
18
|
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,14 +41,6 @@ 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
|
-
|
|
52
44
|
def downgrade_db(alembic_config: Config, revision: str = "head") -> None:
|
|
53
45
|
"""Downgrade the database to the specified migration revision."""
|
|
54
46
|
log.info(f"Running database downgrade to revision {revision}")
|
|
@@ -86,7 +78,7 @@ def reset_db(database_url: str) -> None:
|
|
|
86
78
|
Drops all tables/metadata from the database.
|
|
87
79
|
"""
|
|
88
80
|
log.info("Resetting database...")
|
|
89
|
-
engine = get_db_engine(
|
|
81
|
+
engine = get_db_engine(database_url)
|
|
90
82
|
with engine.connect() as connection:
|
|
91
83
|
log.info("Dropping tables...")
|
|
92
84
|
Base.metadata.drop_all(connection)
|
|
@@ -144,20 +136,3 @@ def configure_db(database_url: str, revision: Optional[str] = "head") -> None:
|
|
|
144
136
|
log.error("Unable to configure database: {}: {}", error_type, error)
|
|
145
137
|
log.opt(exception=True).error(error)
|
|
146
138
|
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/graph/config.py
CHANGED
|
@@ -95,10 +95,6 @@ from fides.api.graph.data_type import (
|
|
|
95
95
|
DataTypeConverter,
|
|
96
96
|
get_data_type_converter,
|
|
97
97
|
)
|
|
98
|
-
from fides.api.schemas.partitioning import TimeBasedPartitioning
|
|
99
|
-
from fides.api.schemas.partitioning.time_based_partitioning import (
|
|
100
|
-
validate_partitioning_list,
|
|
101
|
-
)
|
|
102
98
|
from fides.api.util.collection_util import merge_dicts
|
|
103
99
|
from fides.api.util.querytoken import QueryToken
|
|
104
100
|
|
|
@@ -463,7 +459,7 @@ class Collection(BaseModel):
|
|
|
463
459
|
grouped_inputs: Set[str] = set()
|
|
464
460
|
data_categories: Set[FidesKey] = set()
|
|
465
461
|
masking_strategy_override: Optional[MaskingStrategyOverride] = None
|
|
466
|
-
partitioning: Optional[
|
|
462
|
+
partitioning: Optional[Dict] = None
|
|
467
463
|
|
|
468
464
|
@property
|
|
469
465
|
def field_dict(self) -> Dict[FieldPath, Field]:
|
|
@@ -659,12 +655,14 @@ class Collection(BaseModel):
|
|
|
659
655
|
@field_validator("partitioning")
|
|
660
656
|
@classmethod
|
|
661
657
|
def validate_partitioning(
|
|
662
|
-
cls, partitioning: Optional[
|
|
663
|
-
) -> Optional[
|
|
658
|
+
cls, partitioning: Optional[Dict[str, Any]]
|
|
659
|
+
) -> Optional[Dict[str, Any]]:
|
|
664
660
|
"""
|
|
665
|
-
Validates the `partitioning` field
|
|
666
|
-
|
|
667
|
-
`
|
|
661
|
+
Validates the `partitioning` dict field.
|
|
662
|
+
|
|
663
|
+
The `partitioning` dict field is untyped in Fideslang, but here we enforce
|
|
664
|
+
that it has the required and expected `where_clauses` key, whose value must be
|
|
665
|
+
a list of strings.
|
|
668
666
|
|
|
669
667
|
The string values are validated to ensure they match the expected syntax, which
|
|
670
668
|
is strictly prescribed. The string values MUST be a valid SQL clause that defines
|
|
@@ -685,12 +683,7 @@ class Collection(BaseModel):
|
|
|
685
683
|
in its conditional
|
|
686
684
|
|
|
687
685
|
"""
|
|
688
|
-
|
|
689
|
-
if partitioning is None:
|
|
690
|
-
return partitioning
|
|
691
|
-
|
|
692
|
-
if isinstance(partitioning, list):
|
|
693
|
-
validate_partitioning_list(partitioning)
|
|
686
|
+
if not partitioning:
|
|
694
687
|
return partitioning
|
|
695
688
|
|
|
696
689
|
# NOTE: when we deprecate `where_clause` partitioning in favor of a more proper partitioning DSL,
|
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
|
|
9
9
|
from sqlalchemy import Enum as EnumColumn
|
|
10
|
-
from sqlalchemy import ForeignKey,
|
|
10
|
+
from sqlalchemy import ForeignKey, String, UniqueConstraint, orm
|
|
11
11
|
from sqlalchemy.ext.declarative import declared_attr
|
|
12
12
|
from sqlalchemy.orm import Session, relationship
|
|
13
13
|
|
|
@@ -64,14 +64,8 @@ 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
|
-
|
|
71
67
|
attachment_id = Column(
|
|
72
|
-
String,
|
|
73
|
-
ForeignKey("attachment.id", name="attachment_reference_attachment_id_fkey"),
|
|
74
|
-
nullable=False,
|
|
68
|
+
String, ForeignKey("attachment.id", ondelete="CASCADE"), nullable=False
|
|
75
69
|
)
|
|
76
70
|
reference_id = Column(String, nullable=False)
|
|
77
71
|
reference_type = Column(EnumColumn(AttachmentReferenceType), nullable=False)
|
|
@@ -80,8 +74,6 @@ class AttachmentReference(Base):
|
|
|
80
74
|
UniqueConstraint(
|
|
81
75
|
"attachment_id", "reference_id", name="_attachment_reference_uc"
|
|
82
76
|
),
|
|
83
|
-
Index("ix_attachment_reference_reference_id", "reference_id"),
|
|
84
|
-
Index("ix_attachment_reference_reference_type", "reference_type"),
|
|
85
77
|
)
|
|
86
78
|
|
|
87
79
|
# Relationships
|
|
@@ -100,10 +92,6 @@ class Attachment(Base):
|
|
|
100
92
|
Stores information about an Attachment.
|
|
101
93
|
"""
|
|
102
94
|
|
|
103
|
-
created_at = Column(
|
|
104
|
-
DateTime(timezone=True), server_default=func.now(), nullable=False
|
|
105
|
-
)
|
|
106
|
-
|
|
107
95
|
user_id = Column(
|
|
108
96
|
String, ForeignKey("fidesuser.id", ondelete="SET NULL"), nullable=True
|
|
109
97
|
)
|
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
|
|
5
5
|
from sqlalchemy import Enum as EnumColumn
|
|
6
|
-
from sqlalchemy import ForeignKey,
|
|
6
|
+
from sqlalchemy import ForeignKey, String, UniqueConstraint, 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
|
|
11
11
|
from fides.api.models.attachment import Attachment, AttachmentReferenceType
|
|
12
12
|
|
|
13
13
|
if TYPE_CHECKING:
|
|
@@ -36,7 +36,6 @@ class CommentReferenceType(str, EnumType):
|
|
|
36
36
|
access_manual_webhook = "access_manual_webhook"
|
|
37
37
|
erasure_manual_webhook = "erasure_manual_webhook"
|
|
38
38
|
privacy_request = "privacy_request"
|
|
39
|
-
manual_task_submission = "manual_task_submission"
|
|
40
39
|
|
|
41
40
|
|
|
42
41
|
class CommentReference(Base):
|
|
@@ -49,24 +48,12 @@ class CommentReference(Base):
|
|
|
49
48
|
"""Overriding base class method to set the table name."""
|
|
50
49
|
return "comment_reference"
|
|
51
50
|
|
|
52
|
-
|
|
53
|
-
created_at = Column(
|
|
54
|
-
DateTime(timezone=True), server_default=func.now(), nullable=False
|
|
55
|
-
)
|
|
56
|
-
|
|
57
|
-
comment_id = Column(
|
|
58
|
-
String,
|
|
59
|
-
ForeignKey(
|
|
60
|
-
"comment.id", name="comment_reference_comment_id_fkey", ondelete="CASCADE"
|
|
61
|
-
),
|
|
62
|
-
nullable=False,
|
|
63
|
-
)
|
|
51
|
+
comment_id = Column(String, ForeignKey("comment.id"), nullable=False)
|
|
64
52
|
reference_id = Column(String, nullable=False)
|
|
65
53
|
reference_type = Column(EnumColumn(CommentReferenceType), nullable=False)
|
|
66
54
|
|
|
67
55
|
__table_args__ = (
|
|
68
|
-
|
|
69
|
-
Index("ix_comment_reference_reference_type", "reference_type"),
|
|
56
|
+
UniqueConstraint("comment_id", "reference_id", name="comment_reference_uc"),
|
|
70
57
|
)
|
|
71
58
|
|
|
72
59
|
comment = relationship(
|
|
@@ -88,11 +75,6 @@ class Comment(Base):
|
|
|
88
75
|
Stores information about a Comment.
|
|
89
76
|
"""
|
|
90
77
|
|
|
91
|
-
id = Column(String(255), primary_key=True, default=FidesBase.generate_uuid)
|
|
92
|
-
created_at = Column(
|
|
93
|
-
DateTime(timezone=True), server_default=func.now(), nullable=False
|
|
94
|
-
)
|
|
95
|
-
|
|
96
78
|
user_id = Column(
|
|
97
79
|
String, ForeignKey("fidesuser.id", ondelete="SET NULL"), nullable=True
|
|
98
80
|
)
|
|
@@ -53,7 +53,6 @@ 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
|
|
57
56
|
mariadb = "mariadb"
|
|
58
57
|
mongodb = "mongodb"
|
|
59
58
|
mssql = "mssql"
|
|
@@ -89,7 +88,6 @@ class ConnectionType(enum.Enum):
|
|
|
89
88
|
ConnectionType.google_cloud_sql_postgres.value: "Google Cloud SQL for Postgres",
|
|
90
89
|
ConnectionType.https.value: "Policy Webhook",
|
|
91
90
|
ConnectionType.manual_webhook.value: "Manual Process",
|
|
92
|
-
ConnectionType.manual_task.value: "Manual Task",
|
|
93
91
|
ConnectionType.manual.value: "Manual Connector",
|
|
94
92
|
ConnectionType.mariadb.value: "MariaDB",
|
|
95
93
|
ConnectionType.mongodb.value: "MongoDB",
|
|
@@ -134,7 +132,6 @@ class ConnectionType(enum.Enum):
|
|
|
134
132
|
ConnectionType.google_cloud_sql_postgres.value: SystemType.database,
|
|
135
133
|
ConnectionType.https.value: SystemType.manual,
|
|
136
134
|
ConnectionType.manual_webhook.value: SystemType.manual,
|
|
137
|
-
ConnectionType.manual_task.value: SystemType.manual,
|
|
138
135
|
ConnectionType.manual.value: SystemType.manual,
|
|
139
136
|
ConnectionType.mariadb.value: SystemType.database,
|
|
140
137
|
ConnectionType.mongodb.value: SystemType.database,
|
|
@@ -232,14 +229,6 @@ class ConnectionConfig(Base):
|
|
|
232
229
|
uselist=False,
|
|
233
230
|
)
|
|
234
231
|
|
|
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
|
-
|
|
243
232
|
pre_approval_webhooks = relationship( # type: ignore[misc]
|
|
244
233
|
"PreApprovalWebhook",
|
|
245
234
|
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"),
|
|
36
36
|
)
|
|
37
37
|
|
|
38
38
|
@classmethod
|
|
@@ -159,8 +159,6 @@ 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,
|
|
164
162
|
)
|
|
165
163
|
|
|
166
164
|
shared_config_id = Column(
|
|
@@ -344,16 +342,16 @@ class StagedResourceAncestor(Base):
|
|
|
344
342
|
Its entries should be deleted when the staged resource is deleted, via cascade.
|
|
345
343
|
"""
|
|
346
344
|
|
|
347
|
-
id = Column(String(255), primary_key=True, default=FidesBase.generate_uuid)
|
|
348
|
-
|
|
349
345
|
ancestor_urn = Column(
|
|
350
346
|
String,
|
|
351
347
|
ForeignKey("stagedresource.urn", ondelete="CASCADE"),
|
|
348
|
+
primary_key=True,
|
|
352
349
|
nullable=False,
|
|
353
350
|
)
|
|
354
351
|
descendant_urn = Column(
|
|
355
352
|
String,
|
|
356
353
|
ForeignKey("stagedresource.urn", ondelete="CASCADE"),
|
|
354
|
+
primary_key=True,
|
|
357
355
|
nullable=False,
|
|
358
356
|
)
|
|
359
357
|
|
|
@@ -374,7 +372,6 @@ class StagedResourceAncestor(Base):
|
|
|
374
372
|
UniqueConstraint(
|
|
375
373
|
"ancestor_urn", "descendant_urn", name="uq_staged_resource_ancestor"
|
|
376
374
|
),
|
|
377
|
-
Index("ix_staged_resource_ancestor_pkey", "id", unique=True),
|
|
378
375
|
Index("ix_staged_resource_ancestor_ancestor", "ancestor_urn"),
|
|
379
376
|
Index("ix_staged_resource_ancestor_descendant", "descendant_urn"),
|
|
380
377
|
)
|
|
@@ -473,7 +470,12 @@ class StagedResource(Base):
|
|
|
473
470
|
server_default="{}",
|
|
474
471
|
default=dict,
|
|
475
472
|
)
|
|
476
|
-
user_assigned_system_id = Column(
|
|
473
|
+
user_assigned_system_id = Column(
|
|
474
|
+
String,
|
|
475
|
+
ForeignKey(System.id_field_path),
|
|
476
|
+
nullable=True,
|
|
477
|
+
index=True,
|
|
478
|
+
)
|
|
477
479
|
|
|
478
480
|
# pointers to child and parent URNs
|
|
479
481
|
children = Column(
|
|
@@ -525,7 +527,7 @@ class StagedResource(Base):
|
|
|
525
527
|
|
|
526
528
|
data_uses = Column(
|
|
527
529
|
ARRAY(String),
|
|
528
|
-
nullable=
|
|
530
|
+
nullable=False,
|
|
529
531
|
server_default="{}",
|
|
530
532
|
default=dict,
|
|
531
533
|
)
|
|
@@ -586,14 +588,12 @@ class MonitorExecution(Base):
|
|
|
586
588
|
configuration details used in connecting to the external data store.
|
|
587
589
|
"""
|
|
588
590
|
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
monitor_config_key = Column(String, nullable=False, index=True)
|
|
591
|
+
monitor_config_key = Column(
|
|
592
|
+
String,
|
|
593
|
+
ForeignKey(MonitorConfig.key),
|
|
594
|
+
nullable=False,
|
|
595
|
+
index=True,
|
|
596
|
+
)
|
|
597
597
|
status = Column(String, nullable=True)
|
|
598
598
|
started = Column(
|
|
599
599
|
DateTime(timezone=True),
|
|
@@ -3,13 +3,12 @@ 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,
|
|
6
|
+
from sqlalchemy import Column, DateTime, ForeignKey, String
|
|
7
7
|
from sqlalchemy.ext.declarative import declared_attr
|
|
8
8
|
from sqlalchemy.orm import Session, relationship
|
|
9
|
-
from sqlalchemy.sql import func
|
|
10
9
|
|
|
11
10
|
from fides.api.cryptography.cryptographic_util import generate_secure_random_string
|
|
12
|
-
from fides.api.db.base_class import Base
|
|
11
|
+
from fides.api.db.base_class import Base
|
|
13
12
|
from fides.api.util.identity_verification import IdentityVerificationMixin
|
|
14
13
|
from fides.config import get_config
|
|
15
14
|
|
|
@@ -41,22 +40,6 @@ class FidesUserRespondentEmailVerification(Base, IdentityVerificationMixin):
|
|
|
41
40
|
def __tablename__(self) -> str:
|
|
42
41
|
return "fides_user_respondent_email_verification"
|
|
43
42
|
|
|
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
|
-
|
|
60
43
|
user_id = Column(
|
|
61
44
|
String,
|
|
62
45
|
ForeignKey("fidesuser.id", ondelete="CASCADE"),
|
|
@@ -76,14 +59,6 @@ class FidesUserRespondentEmailVerification(Base, IdentityVerificationMixin):
|
|
|
76
59
|
foreign_keys=[user_id],
|
|
77
60
|
)
|
|
78
61
|
|
|
79
|
-
__table_args__ = (
|
|
80
|
-
Index(
|
|
81
|
-
"ix_fides_user_respondent_email_verification_id",
|
|
82
|
-
"id",
|
|
83
|
-
unique=True,
|
|
84
|
-
),
|
|
85
|
-
)
|
|
86
|
-
|
|
87
62
|
@classmethod
|
|
88
63
|
def create(
|
|
89
64
|
cls, db: Session, *, data: dict[str, Any], check_name: bool = False
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
from fides.api.models.manual_tasks.manual_task import ManualTask, ManualTaskReference
|
|
2
|
+
from fides.api.models.manual_tasks.manual_task_config import (
|
|
3
|
+
ManualTaskConfig,
|
|
4
|
+
ManualTaskConfigField,
|
|
5
|
+
)
|
|
6
|
+
from fides.api.models.manual_tasks.manual_task_log import ManualTaskLog
|
|
7
|
+
|
|
8
|
+
__all__ = [
|
|
9
|
+
"ManualTask",
|
|
10
|
+
"ManualTaskConfig",
|
|
11
|
+
"ManualTaskConfigField",
|
|
12
|
+
"ManualTaskReference",
|
|
13
|
+
"ManualTaskLog",
|
|
14
|
+
]
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
from typing import TYPE_CHECKING, Any
|
|
2
|
+
|
|
3
|
+
from sqlalchemy import Column, DateTime, ForeignKey, String
|
|
4
|
+
from sqlalchemy.ext.declarative import declared_attr
|
|
5
|
+
from sqlalchemy.orm import Session, relationship
|
|
6
|
+
|
|
7
|
+
from fides.api.db.base_class import Base
|
|
8
|
+
from fides.api.db.util import EnumColumn
|
|
9
|
+
from fides.api.models.manual_tasks.manual_task_log import ManualTaskLog
|
|
10
|
+
from fides.api.schemas.manual_tasks.manual_task_schemas import (
|
|
11
|
+
ManualTaskLogStatus,
|
|
12
|
+
ManualTaskParentEntityType,
|
|
13
|
+
ManualTaskReferenceType,
|
|
14
|
+
ManualTaskType,
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
if TYPE_CHECKING: # pragma: no cover
|
|
18
|
+
from fides.api.models.manual_tasks.manual_task_config import ( # pragma: no cover
|
|
19
|
+
ManualTaskConfig,
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class ManualTask(Base):
|
|
24
|
+
"""Model for storing manual tasks.
|
|
25
|
+
|
|
26
|
+
This model can be used for both privacy request tasks and general tasks.
|
|
27
|
+
For privacy requests, it replaces the functionality of manual webhooks.
|
|
28
|
+
For other use cases, it provides a flexible task management system.
|
|
29
|
+
|
|
30
|
+
There can only be one ManualTask per parent entity.
|
|
31
|
+
You can create multiple Configs for the same ManualTask.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
@declared_attr
|
|
35
|
+
def __tablename__(cls) -> str:
|
|
36
|
+
"""Overriding base class method to set the table name."""
|
|
37
|
+
return "manual_task"
|
|
38
|
+
|
|
39
|
+
# Database columns
|
|
40
|
+
task_type = Column(
|
|
41
|
+
EnumColumn(ManualTaskType),
|
|
42
|
+
nullable=False,
|
|
43
|
+
default=ManualTaskType.privacy_request,
|
|
44
|
+
)
|
|
45
|
+
parent_entity_id = Column(String, nullable=False)
|
|
46
|
+
parent_entity_type = Column(
|
|
47
|
+
EnumColumn(ManualTaskParentEntityType),
|
|
48
|
+
nullable=False,
|
|
49
|
+
default=ManualTaskParentEntityType.connection_config,
|
|
50
|
+
)
|
|
51
|
+
due_date = Column(DateTime, nullable=True)
|
|
52
|
+
|
|
53
|
+
# Relationships
|
|
54
|
+
references = relationship(
|
|
55
|
+
"ManualTaskReference",
|
|
56
|
+
back_populates="task",
|
|
57
|
+
uselist=True,
|
|
58
|
+
cascade="all, delete-orphan",
|
|
59
|
+
)
|
|
60
|
+
logs = relationship(
|
|
61
|
+
"ManualTaskLog",
|
|
62
|
+
back_populates="task",
|
|
63
|
+
primaryjoin="and_(ManualTask.id == ManualTaskLog.task_id)",
|
|
64
|
+
viewonly=True,
|
|
65
|
+
order_by="ManualTaskLog.created_at",
|
|
66
|
+
)
|
|
67
|
+
configs = relationship(
|
|
68
|
+
"ManualTaskConfig",
|
|
69
|
+
back_populates="task",
|
|
70
|
+
cascade="all, delete-orphan",
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
# Properties
|
|
74
|
+
@property
|
|
75
|
+
def assigned_users(self) -> list[str]:
|
|
76
|
+
"""Get all users assigned to this task."""
|
|
77
|
+
if not self.references:
|
|
78
|
+
return []
|
|
79
|
+
return [
|
|
80
|
+
ref.reference_id
|
|
81
|
+
for ref in self.references
|
|
82
|
+
if ref.reference_type == ManualTaskReferenceType.assigned_user
|
|
83
|
+
]
|
|
84
|
+
|
|
85
|
+
# CRUD Operations
|
|
86
|
+
@classmethod
|
|
87
|
+
def create(
|
|
88
|
+
cls, db: Session, *, data: dict[str, Any], check_name: bool = True
|
|
89
|
+
) -> "ManualTask":
|
|
90
|
+
"""Create a new manual task."""
|
|
91
|
+
task = super().create(db=db, data=data, check_name=check_name)
|
|
92
|
+
ManualTaskLog.create_log(
|
|
93
|
+
db=db,
|
|
94
|
+
task_id=task.id,
|
|
95
|
+
status=ManualTaskLogStatus.created,
|
|
96
|
+
message=f"Created manual task for {data['task_type']}",
|
|
97
|
+
)
|
|
98
|
+
return task
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
class ManualTaskReference(Base):
|
|
102
|
+
"""Join table to associate manual tasks with multiple references.
|
|
103
|
+
|
|
104
|
+
A single task may have many references including privacy requests, configurations, and assigned users.
|
|
105
|
+
"""
|
|
106
|
+
|
|
107
|
+
@declared_attr
|
|
108
|
+
def __tablename__(cls) -> str:
|
|
109
|
+
"""Overriding base class method to set the table name."""
|
|
110
|
+
return "manual_task_reference"
|
|
111
|
+
|
|
112
|
+
# Database columns
|
|
113
|
+
task_id = Column(
|
|
114
|
+
String, ForeignKey("manual_task.id", ondelete="CASCADE"), nullable=False
|
|
115
|
+
)
|
|
116
|
+
reference_id = Column(String, nullable=False)
|
|
117
|
+
reference_type = Column(EnumColumn(ManualTaskReferenceType), nullable=False)
|
|
118
|
+
|
|
119
|
+
# Relationships
|
|
120
|
+
task = relationship("ManualTask", back_populates="references")
|