ethyca-fides 2.64.5rc4__py2.py3-none-any.whl → 2.64.6b1__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.5rc4.dist-info → ethyca_fides-2.64.6b1.dist-info}/METADATA +3 -3
- {ethyca_fides-2.64.5rc4.dist-info → ethyca_fides-2.64.6b1.dist-info}/RECORD +252 -257
- fides/_version.py +3 -3
- fides/api/alembic/migrations/versions/41a634d8c669_manual_task_restrict_deletes.py +257 -0
- 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/api/v1/api.py +2 -0
- fides/api/api/v1/endpoints/partitioning_endpoints.py +108 -0
- fides/api/db/base.py +6 -3
- fides/api/db/database.py +27 -2
- fides/api/graph/config.py +16 -9
- fides/api/graph/traversal.py +18 -0
- fides/api/models/attachment.py +15 -3
- fides/api/models/comment.py +23 -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_task.py +965 -0
- fides/api/models/tcf_publisher_restrictions.py +16 -4
- fides/api/schemas/partitioning/__init__.py +17 -0
- fides/api/schemas/partitioning/bigquery_time_based_partitioning.py +31 -0
- fides/api/schemas/partitioning/time_based_partitioning.py +1376 -0
- fides/api/service/connectors/__init__.py +4 -0
- fides/api/service/connectors/manual_task_connector.py +96 -0
- fides/api/service/connectors/query_configs/bigquery_query_config.py +44 -22
- fides/api/service/connectors/query_configs/query_config.py +5 -2
- fides/api/service/privacy_request/dsr_package/templates/collection_index.html +9 -1
- fides/api/service/privacy_request/dsr_package/templates/main.css +6 -2
- fides/api/service/privacy_request/request_runner_service.py +7 -0
- fides/api/task/create_request_tasks.py +16 -0
- fides/api/task/execute_request_tasks.py +10 -1
- fides/api/task/filter_results.py +6 -0
- fides/api/task/graph_task.py +1 -0
- fides/api/task/manual/manual_task_graph_task.py +300 -0
- fides/api/task/manual/manual_task_utils.py +322 -0
- fides/api/task/task_resources.py +3 -0
- fides/api/util/connection_util.py +25 -2
- fides/common/api/v1/urn_registry.py +4 -0
- fides/ui-build/static/admin/404.html +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{1040-c1c1372a7f909aef.js → 1040-d246ed641088a416.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/1169-ae67fde0c6d69abc.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-96182c1558f80b63.js → 1817-60f08a3619b9139c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{2921-f5608275555bd7d9.js → 2921-85515257dd94ef4d.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{3450-272f26c102f3510d.js → 3450-4e472b9e2754fa47.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-beb58821d1ddba89.js → 3855-2d045674fbf72a3c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{3872-82482e55e69b5a93.js → 3872-056ddf3ed9d10b51.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{3923-a54c286a2ba0a47a.js → 3923-257df982a95371b5.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{401-d2ce0a5a9120e056.js → 401-3f2160e3910d075b.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{409-86f4f687105917fb.js → 409-3e2248a63dd60e58.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/4121-10bfa009892586fa.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{4230-63abbdfb9e9016b9.js → 4230-38c6e446801a8729.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{431-77d59d43e90058ca.js → 431-13b0ef67d5a3df2f.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{5309-10f68cf805817cfb.js → 5309-fd8cd5aedd45f7c1.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{5574-b6db9d62362e72d9.js → 5574-028ef28c3cf16995.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-fa1c82d03f6c256a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6662-d8ae12f69d325004.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{6853-8a1b8e1c8b249f2f.js → 6853-2644f28976b46c25.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{6882-6c94583bffe85ba7.js → 6882-ea071425d25dd2b0.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{6954-dc3540389daf94da.js → 6954-bb360fb60aac9440.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/7476-7073ec015f84a3e0.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7630-302a13c63f9bfb45.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/787-b393c03ade9d93dc.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{79-26ccd45dfd6653a7.js → 79-b67ba449b0f2cc9c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{796-38c0f7e6755ad359.js → 796-b7608f09607288b8.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-bbce3c73af16daf9.js → 9046-ece5efe762b810cb.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-5e0ce31cfdedd5ee.js → 9226-c9111590692341b1.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-277a0229aae7662a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9826-82c473dcaf892d00.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{9951-d3d5d0fe4c4edb86.js → 9951-dbd76d7f3a7f1b9a.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{404-d41660858638adee.js → 404-ef01376efb8427e1.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{_app-6b3539f8d82ce9ae.js → _app-7430e1499432b029.js} +92 -89
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{manual-7c5e1e845372c99b.js → manual-4057c399f58d331e.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{multiple-87e78f52af21c4a9.js → multiple-2726ca51f0327347.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-a2457d5da25aa854.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-6374a3a7747df964.js → add-vendors-9fe46ed10a7e7a1a.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{configure-0512151e2ed0f4c1.js → configure-095828301f22cdaa.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{[id]-09435f4ab2deafd2.js → [id]-de60a5b74f6b20ff.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-cd036518b5d4efbe.js → privacy-experience-1ee05fd0bc012ec6.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-0e534580abf670be.js → [id]-5a2e61c7d88bdda1.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-bb1790eb87b63109.js → new-1bc69669215fa55c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-notices-67e9846f877a3f38.js → privacy-notices-fa8394d2e1072aba.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-69a92b6ddbc2bae2.js → properties-213c5405e9e4219c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{reporting-d07d05f4b898a5ed.js → reporting-44aa77149d71a6fe.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{consent-23e886d692ab6d1a.js → consent-23ab7bd613a0ad53.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]-6c766c766dc97c5c.js → [projectUrn]-dae11464a091537f.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{projects-28937a8da3d73145.js → projects-7442023478422295.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-627fbf19dce88e81.js → data-catalog-5597d2e691313bb0.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/{[systemId]-ed1629b05519a370.js → [systemId]-da06d05d255d0cd0.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/{[monitorId]-ad307bfc5f51fd9d.js → [monitorId]-895591fe32af0f4c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{action-center-07cbd61ede6e18ac.js → action-center-a932a39e29ac3489.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{activity-6a2aaed8d0e66d82.js → activity-2cfdf4d55a7594ba.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-b576a94b583a7940.js → datamap-07881d1a5fc03d41.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/{[...subfieldNames]-4912858ffde4621a.js → [...subfieldNames]-57be9d40c67b0acb.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/{[collectionName]-df21dd7ca0f35718.js → [collectionName]-bd78d6c6264e2467.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/{[datasetId]-5ce28a329e8f667f.js → [datasetId]-3c9103487b55e76f.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-e30a546a8cfb6658.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/{dataset-c6fab547396df6ac.js → dataset-500610c0b60f9e7e.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{[id]-d04c9925d324eee1.js → [id]-34958fe8183d9479.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{new-656abd09ea5ee39a.js → new-761294dbaf59bbe1.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-59abd36059863e05.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/{index-b66687e8194495a2.js → index-ae100a873eb66d59.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-8eee4d0314c83e50.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations-bf3b87b0dd702551.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{[id]-b74db8488e2e4b58.js → [id]-2aada2c7b9156053.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{add-template-a607018ff097b6c2.js → add-template-fbb7b0c43dedf072.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{messaging-4a1a04c5179d2053.js → messaging-7230d7ee21368cef.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/{ant-components-1567c9770a5f05aa.js → ant-components-7c234412502f8102.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{AntForm-4949fe7f1815462b.js → AntForm-72791aab60f3a4bf.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikAntFormItem-6085f73850302d55.js → FormikAntFormItem-da7d11d6146fa746.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikControlled-a3158e8217c13850.js → FormikControlled-3045d24344e99017.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikField-8576f1ef5c67d87d.js → FormikField-5b5b165d3f41a1de.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/{forms-341e67462b5e3352.js → forms-3afd8b6ba6234366.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/table-migration-52d50286216bcb8c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-00fb442c4adb7371.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-535b6e5003d892eb.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-7ded688a1e832c63.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{configure-d24230b890b13762.js → configure-08e0863d432b3348.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-c8b02ae92dd7e45b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-2bedc5013e13ab52.js → [id]-b8dcb1f5213521ef.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-9d68bd70299dd945.js → add-property-7d8418bb7cb9e1fd.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{properties-c3116b6bfe2e695e.js → properties-537003822f360ae7.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/reporting/{datamap-6dfa7091b99d8321.js → datamap-ac25749935da453b.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/about/{alpha-9751059905bba190.js → alpha-647d59bb0aa060bf.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{about-ad29d77012ec9dba.js → about-73adc03fe0182e3f.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/{[purpose_id]-32e3190c1ad00b40.js → [purpose_id]-ffa9e9e79ad75828.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-4fb6c8c4bd9cdb3f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{custom-fields-d2c0aac32f5d2930.js → custom-fields-94c1b7bfc6cec4d2.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domain-records-a10674380f94d014.js → domain-records-e9838b8e49e64e57.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-0de16778ad2f8865.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-aac71677024210ad.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-cc7d629433fa6d44.js → locations-f43e238571b21643.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-f5e0a34f6ae473ad.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{regulations-64a813cb2741683b.js → regulations-05d3c86ca3ca4d5d.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-31fcf7b52d8028b0.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/{[id]-fb3d094e4f4585f6.js → [id]-6db01a1afe2f82d5.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{systems-c2df5b7b0596a9cb.js → systems-8ec7472a7032301f.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-84caae0fc02f8ae1.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]-fd2ff6b13052c54e.js → [id]-e452541827698b1f.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{user-management-fa052b0439920ef6.js → user-management-530be849391d2425.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{webpack-e61d457474e00565.js → webpack-e25ccaae1ef867a2.js} +1 -1
- fides/ui-build/static/admin/_next/static/css/23391a3311f80cfe.css +1 -0
- fides/ui-build/static/admin/_next/static/css/399d4757862a3982.css +1 -0
- fides/ui-build/static/admin/_next/static/z7GzAZhoGiO521zm7WPYX/_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/models/manual_tasks/__init__.py +0 -14
- fides/api/models/manual_tasks/manual_task.py +0 -120
- fides/api/models/manual_tasks/manual_task_config.py +0 -136
- fides/api/models/manual_tasks/manual_task_log.py +0 -104
- fides/api/schemas/manual_tasks/manual_task_config.py +0 -311
- fides/api/schemas/manual_tasks/manual_task_schemas.py +0 -79
- fides/api/schemas/manual_tasks/manual_task_status.py +0 -151
- fides/service/manual_tasks/__init__.py +0 -0
- fides/service/manual_tasks/manual_task_config_service.py +0 -370
- fides/service/manual_tasks/manual_task_service.py +0 -294
- fides/service/manual_tasks/utils.py +0 -185
- fides/ui-build/static/admin/_next/static/TUIhCXaasOCEZxPYTqsV5/_buildManifest.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/1100-3fdbdf211c3c2a5b.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-192986c86dc47869.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3513-a563133845dc990f.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-3486b45081151b69.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4121-f0aecb2abd384945.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4481-d181a9db72984adf.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-ccdb50f676a1b336.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-42940a2b00933e79.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/69-943b19d39da339d9.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7553-e7ae268701f3dcfe.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/8433-1e065c55c8da73b0.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9767-96ed554a043c3c4d.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-68955d8441e60668.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-5287c76ecf600281.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-23fbec0590c8d192.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-906bc5f05702efb0.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations-024a1facb9be04d0.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/table-migration-6f0e64f0c52bd68f.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-6971c7773dbf9b51.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-303bd2182da03088.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-831572cc7f42615f.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-569ff31eff637034.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-13a17a4ace7293d1.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-78449b0e02bced88.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-7d299c4cb3199036.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-a9fa55c40fa570a6.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-547b0cfe1e49e6d2.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-261deb6fb3e51cb3.js +0 -1
- fides/ui-build/static/admin/_next/static/css/5ded47c57dae5baf.css +0 -1
- fides/ui-build/static/admin/_next/static/css/c693338e3bc8dcc6.css +0 -1
- fides/ui-build/static/admin/_next/static/css/e458b5f1afdbb7fc.css +0 -1
- {ethyca_fides-2.64.5rc4.dist-info → ethyca_fides-2.64.6b1.dist-info}/WHEEL +0 -0
- {ethyca_fides-2.64.5rc4.dist-info → ethyca_fides-2.64.6b1.dist-info}/entry_points.txt +0 -0
- {ethyca_fides-2.64.5rc4.dist-info → ethyca_fides-2.64.6b1.dist-info}/licenses/LICENSE +0 -0
- {ethyca_fides-2.64.5rc4.dist-info → ethyca_fides-2.64.6b1.dist-info}/top_level.txt +0 -0
- /fides/api/{schemas/manual_tasks → task/manual}/__init__.py +0 -0
- /fides/ui-build/static/admin/_next/static/{TUIhCXaasOCEZxPYTqsV5 → z7GzAZhoGiO521zm7WPYX}/_ssgManifest.js +0 -0
|
@@ -39,6 +39,9 @@ from fides.api.service.connectors.google_cloud_postgres_connector import (
|
|
|
39
39
|
GoogleCloudSQLPostgresConnector as GoogleCloudSQLPostgresConnector,
|
|
40
40
|
)
|
|
41
41
|
from fides.api.service.connectors.http_connector import HTTPSConnector as HTTPSConnector
|
|
42
|
+
from fides.api.service.connectors.manual_task_connector import (
|
|
43
|
+
ManualTaskConnector as ManualTaskConnector,
|
|
44
|
+
)
|
|
42
45
|
from fides.api.service.connectors.manual_webhook_connector import (
|
|
43
46
|
ManualWebhookConnector as ManualWebhookConnector,
|
|
44
47
|
)
|
|
@@ -93,6 +96,7 @@ supported_connectors: Dict[str, Any] = {
|
|
|
93
96
|
ConnectionType.google_cloud_sql_postgres.value: GoogleCloudSQLPostgresConnector,
|
|
94
97
|
ConnectionType.https.value: HTTPSConnector,
|
|
95
98
|
ConnectionType.manual_webhook.value: ManualWebhookConnector,
|
|
99
|
+
ConnectionType.manual_task.value: ManualTaskConnector,
|
|
96
100
|
ConnectionType.mariadb.value: MariaDBConnector,
|
|
97
101
|
ConnectionType.mongodb.value: MongoDBConnector,
|
|
98
102
|
ConnectionType.mssql.value: MicrosoftSQLServerConnector,
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Manual Task Connector - A minimal connector for manual task operations.
|
|
3
|
+
|
|
4
|
+
Since manual tasks don't actually connect to external systems, this connector
|
|
5
|
+
provides no-op implementations of the BaseConnector interface.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from typing import Any, Dict, List, Optional
|
|
9
|
+
|
|
10
|
+
from fides.api.graph.execution import ExecutionNode
|
|
11
|
+
from fides.api.models.connectionconfig import ConnectionTestStatus
|
|
12
|
+
from fides.api.models.policy import Policy
|
|
13
|
+
from fides.api.models.privacy_request import PrivacyRequest, RequestTask
|
|
14
|
+
from fides.api.service.connectors.base_connector import BaseConnector
|
|
15
|
+
from fides.api.service.connectors.query_configs.query_config import QueryConfig
|
|
16
|
+
from fides.api.util.collection_util import Row
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class ManualTaskQueryConfig(QueryConfig):
|
|
20
|
+
"""Minimal query config for manual tasks - not actually used"""
|
|
21
|
+
|
|
22
|
+
def generate_query(
|
|
23
|
+
self, input_data: Dict[str, List[Any]], policy: Optional[Policy]
|
|
24
|
+
) -> str:
|
|
25
|
+
return "Manual task: no query needed"
|
|
26
|
+
|
|
27
|
+
def dry_run_query(self) -> str:
|
|
28
|
+
return "Manual task: no query needed"
|
|
29
|
+
|
|
30
|
+
def query_to_str(self, t: Any, input_data: Dict[str, List[Any]]) -> str:
|
|
31
|
+
"""Convert query to string - not used for manual tasks"""
|
|
32
|
+
return "Manual task: no query needed"
|
|
33
|
+
|
|
34
|
+
def generate_update_stmt(
|
|
35
|
+
self, row: Row, policy: Policy, request: PrivacyRequest
|
|
36
|
+
) -> Any:
|
|
37
|
+
"""Generate update statement - not used for manual tasks"""
|
|
38
|
+
return None
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class ManualTaskConnector(BaseConnector):
|
|
42
|
+
"""
|
|
43
|
+
Minimal connector for manual tasks.
|
|
44
|
+
|
|
45
|
+
This connector provides no-op implementations since manual tasks don't
|
|
46
|
+
actually connect to external systems. The actual manual task logic
|
|
47
|
+
is handled by ManualTaskGraphTask.access_request()
|
|
48
|
+
"""
|
|
49
|
+
|
|
50
|
+
def query_config(self, node: ExecutionNode) -> QueryConfig[Any]:
|
|
51
|
+
"""Return a minimal query config - not actually used for manual tasks"""
|
|
52
|
+
return ManualTaskQueryConfig(node)
|
|
53
|
+
|
|
54
|
+
def test_connection(self) -> Optional[ConnectionTestStatus]:
|
|
55
|
+
"""Manual tasks don't have connections to test"""
|
|
56
|
+
return ConnectionTestStatus.succeeded
|
|
57
|
+
|
|
58
|
+
def create_client(self) -> None:
|
|
59
|
+
"""Manual tasks don't need database clients"""
|
|
60
|
+
return None
|
|
61
|
+
|
|
62
|
+
def retrieve_data(
|
|
63
|
+
self,
|
|
64
|
+
node: ExecutionNode,
|
|
65
|
+
policy: Policy,
|
|
66
|
+
privacy_request: PrivacyRequest,
|
|
67
|
+
request_task: RequestTask,
|
|
68
|
+
input_data: Dict[str, List[Any]],
|
|
69
|
+
) -> List[Row]:
|
|
70
|
+
"""
|
|
71
|
+
This method is not used for manual tasks.
|
|
72
|
+
Manual task data retrieval is handled by ManualTaskGraphTask.access_request()
|
|
73
|
+
"""
|
|
74
|
+
return []
|
|
75
|
+
|
|
76
|
+
def mask_data(
|
|
77
|
+
self,
|
|
78
|
+
node: ExecutionNode,
|
|
79
|
+
policy: Policy,
|
|
80
|
+
privacy_request: PrivacyRequest,
|
|
81
|
+
request_task: RequestTask,
|
|
82
|
+
rows: List[Row],
|
|
83
|
+
) -> int:
|
|
84
|
+
"""
|
|
85
|
+
Manual tasks don't support erasure operations.
|
|
86
|
+
Manual tasks are for data collection, not data modification.
|
|
87
|
+
"""
|
|
88
|
+
return 0
|
|
89
|
+
|
|
90
|
+
def close(self) -> None:
|
|
91
|
+
"""No resources to close for manual tasks"""
|
|
92
|
+
|
|
93
|
+
@property
|
|
94
|
+
def requires_primary_keys(self) -> bool:
|
|
95
|
+
"""Manual tasks don't require primary keys since they don't modify data"""
|
|
96
|
+
return False
|
|
@@ -5,8 +5,9 @@ from fideslang.models import MaskingStrategies
|
|
|
5
5
|
from loguru import logger
|
|
6
6
|
from sqlalchemy import MetaData, Table, text
|
|
7
7
|
from sqlalchemy.engine import Engine
|
|
8
|
-
from sqlalchemy.sql import Delete, Update
|
|
8
|
+
from sqlalchemy.sql import Delete, Update
|
|
9
9
|
from sqlalchemy.sql.elements import ColumnElement, TextClause
|
|
10
|
+
from sqlalchemy_bigquery import BigQueryDialect
|
|
10
11
|
|
|
11
12
|
from fides.api.graph.config import Field, FieldPath
|
|
12
13
|
from fides.api.graph.execution import ExecutionNode
|
|
@@ -15,6 +16,8 @@ from fides.api.models.privacy_request import PrivacyRequest
|
|
|
15
16
|
from fides.api.schemas.namespace_meta.bigquery_namespace_meta import (
|
|
16
17
|
BigQueryNamespaceMeta,
|
|
17
18
|
)
|
|
19
|
+
from fides.api.schemas.partitioning import TIME_BASED_REQUIRED_KEYS, combine_partitions
|
|
20
|
+
from fides.api.schemas.partitioning.time_based_partitioning import TimeBasedPartitioning
|
|
18
21
|
from fides.api.service.connectors.query_configs.query_config import (
|
|
19
22
|
QueryStringWithoutTuplesOverrideQueryConfig,
|
|
20
23
|
)
|
|
@@ -36,40 +39,59 @@ class BigQueryQueryConfig(QueryStringWithoutTuplesOverrideQueryConfig):
|
|
|
36
39
|
namespace_meta_schema = BigQueryNamespaceMeta
|
|
37
40
|
|
|
38
41
|
@property
|
|
39
|
-
def partitioning(
|
|
40
|
-
|
|
42
|
+
def partitioning(
|
|
43
|
+
self,
|
|
44
|
+
) -> Optional[Union[List[TimeBasedPartitioning], Dict[str, Any]]]:
|
|
45
|
+
# Overridden from base implementation to allow for _only_ BQ partitioning, for now
|
|
41
46
|
return self.node.collection.partitioning
|
|
42
47
|
|
|
43
48
|
def get_partition_clauses(
|
|
44
49
|
self,
|
|
45
50
|
) -> List[str]:
|
|
46
51
|
"""
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
Currently, only where-clause based partitioning is supported.
|
|
50
|
-
|
|
51
|
-
TODO: derive partitions from a start/end/interval specification
|
|
52
|
+
Build a list of SQL `WHERE` clause strings for the collection's partitioning
|
|
53
|
+
configuration.
|
|
52
54
|
|
|
55
|
+
Supported modes:
|
|
56
|
+
1. `Legacy static` - A list of `where_clauses`.
|
|
57
|
+
2. `Single time-based` - A single time-based partitioning spec
|
|
58
|
+
3. `Multiple time-based` - A list of time-based partitioning specs, with different intervals
|
|
53
59
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
any in-progress DSRs so that they can run through to completion.
|
|
60
|
+
Any other combination (e.g. mixing modes or missing keys) raises a
|
|
61
|
+
`ValueError` so that mis-configurations surface early.
|
|
57
62
|
"""
|
|
58
|
-
|
|
63
|
+
|
|
64
|
+
partition_spec: Optional[Union[List[TimeBasedPartitioning], Dict[str, Any]]] = (
|
|
65
|
+
self.partitioning
|
|
66
|
+
)
|
|
59
67
|
if not partition_spec:
|
|
60
|
-
logger.
|
|
61
|
-
"
|
|
68
|
+
logger.warning(
|
|
69
|
+
f"No partitioning specification found for node '{self.node.address}', skipping partition clauses"
|
|
62
70
|
)
|
|
63
71
|
return []
|
|
64
72
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
73
|
+
# Legacy mode using `where_clauses`
|
|
74
|
+
if isinstance(partition_spec, dict) and "where_clauses" in partition_spec:
|
|
75
|
+
if any(k in partition_spec for k in TIME_BASED_REQUIRED_KEYS):
|
|
76
|
+
# Mixed mode not allowed
|
|
77
|
+
raise ValueError(
|
|
78
|
+
"Partitioning spec cannot define both `where_clauses` and time-based partitioning."
|
|
79
|
+
)
|
|
80
|
+
where = partition_spec.get("where_clauses") or []
|
|
81
|
+
if not where:
|
|
82
|
+
raise ValueError("`where_clauses` must be a non-empty list.")
|
|
83
|
+
return where
|
|
84
|
+
|
|
85
|
+
# Combine and de-duplicate boundary rows
|
|
86
|
+
combined_expressions = combine_partitions(partition_spec) # type: ignore
|
|
87
|
+
|
|
88
|
+
dialect = BigQueryDialect()
|
|
89
|
+
where_clauses = [
|
|
90
|
+
str(expr.compile(dialect=dialect, compile_kwargs={"literal_binds": True}))
|
|
91
|
+
for expr in combined_expressions
|
|
92
|
+
]
|
|
69
93
|
|
|
70
|
-
|
|
71
|
-
"`where_clauses` must be specified in partitioning specification!"
|
|
72
|
-
)
|
|
94
|
+
return where_clauses
|
|
73
95
|
|
|
74
96
|
def _generate_table_name(self) -> str:
|
|
75
97
|
"""
|
|
@@ -147,7 +169,7 @@ class BigQueryQueryConfig(QueryStringWithoutTuplesOverrideQueryConfig):
|
|
|
147
169
|
nested_result = unflatten_dict(merged_dict)
|
|
148
170
|
|
|
149
171
|
# 5. Replace any arrays containing only None values with empty arrays
|
|
150
|
-
nested_result = replace_none_arrays(nested_result)
|
|
172
|
+
nested_result = replace_none_arrays(nested_result)
|
|
151
173
|
|
|
152
174
|
# 6. Only keep top-level keys that are in the update_value_map
|
|
153
175
|
top_level_keys = {key.split(".")[0] for key in update_value_map}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# pylint: disable=too-many-lines
|
|
2
2
|
import re
|
|
3
3
|
from abc import ABC, abstractmethod
|
|
4
|
-
from typing import Any, Dict, Generic, List, Optional, Tuple, Type, TypeVar
|
|
4
|
+
from typing import Any, Dict, Generic, List, Optional, Tuple, Type, TypeVar, Union
|
|
5
5
|
|
|
6
6
|
import pydash
|
|
7
7
|
from loguru import logger
|
|
@@ -22,6 +22,7 @@ from fides.api.graph.execution import ExecutionNode
|
|
|
22
22
|
from fides.api.models.policy import Policy, Rule
|
|
23
23
|
from fides.api.models.privacy_request import PrivacyRequest
|
|
24
24
|
from fides.api.schemas.namespace_meta.namespace_meta import NamespaceMeta
|
|
25
|
+
from fides.api.schemas.partitioning.time_based_partitioning import TimeBasedPartitioning
|
|
25
26
|
from fides.api.schemas.policy import ActionType
|
|
26
27
|
from fides.api.service.masking.strategy.masking_strategy import MaskingStrategy
|
|
27
28
|
from fides.api.service.masking.strategy.masking_strategy_nullify import (
|
|
@@ -46,7 +47,9 @@ class QueryConfig(Generic[T], ABC):
|
|
|
46
47
|
self.node = node
|
|
47
48
|
|
|
48
49
|
@property
|
|
49
|
-
def partitioning(
|
|
50
|
+
def partitioning( # pylint: disable=useless-return
|
|
51
|
+
self,
|
|
52
|
+
) -> Optional[Union[List[TimeBasedPartitioning], Dict[str, Any]]]:
|
|
50
53
|
# decided to de-scope partitioning support to only bigquery as this grew more complex,
|
|
51
54
|
# but keeping more generic support stubbed out feels like a reasonable step.
|
|
52
55
|
if self.node.collection.partitioning:
|
|
@@ -26,7 +26,15 @@
|
|
|
26
26
|
<div class="table-row">
|
|
27
27
|
<div class="table-cell">{{ field }}</div>
|
|
28
28
|
<div class="table-cell">
|
|
29
|
-
{%
|
|
29
|
+
{% set _is_attachment_block = false %}
|
|
30
|
+
{% if value is mapping and value|length > 0 %}
|
|
31
|
+
{% set _first_key = (value.keys() | list)[0] %}
|
|
32
|
+
{% if value[_first_key] is mapping and ('url' in value[_first_key]) %}
|
|
33
|
+
{% set _is_attachment_block = true %}
|
|
34
|
+
{% endif %}
|
|
35
|
+
{% endif %}
|
|
36
|
+
|
|
37
|
+
{% if _is_attachment_block %}
|
|
30
38
|
<p class="expiration-notice">Note: All download links will expire in 7 days.</p>
|
|
31
39
|
<div class="table table-hover">
|
|
32
40
|
<div class="table-row">
|
|
@@ -23,6 +23,10 @@ h1 {
|
|
|
23
23
|
color: var(--text-color);
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
+
h2 {
|
|
27
|
+
margin-bottom: 12px;
|
|
28
|
+
}
|
|
29
|
+
|
|
26
30
|
.container {
|
|
27
31
|
display: flex;
|
|
28
32
|
flex-direction: column;
|
|
@@ -109,8 +113,8 @@ h1 {
|
|
|
109
113
|
width: 100%;
|
|
110
114
|
border-collapse: separate;
|
|
111
115
|
border-spacing: 0;
|
|
112
|
-
padding-top:
|
|
113
|
-
padding-bottom:
|
|
116
|
+
padding-top: 0;
|
|
117
|
+
padding-bottom: 14px;
|
|
114
118
|
font-size: 14px;
|
|
115
119
|
}
|
|
116
120
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# pylint: disable=too-many-lines
|
|
1
2
|
import time
|
|
2
3
|
from copy import deepcopy
|
|
3
4
|
from datetime import datetime, timedelta
|
|
@@ -71,6 +72,7 @@ from fides.api.task.graph_task import (
|
|
|
71
72
|
filter_by_enabled_actions,
|
|
72
73
|
get_cached_data_for_erasures,
|
|
73
74
|
)
|
|
75
|
+
from fides.api.task.manual.manual_task_utils import create_manual_task_artificial_graphs
|
|
74
76
|
from fides.api.tasks import DatabaseTask, celery_app
|
|
75
77
|
from fides.api.tasks.scheduled.scheduler import scheduler
|
|
76
78
|
from fides.api.util.collection_util import Row
|
|
@@ -450,6 +452,11 @@ def run_privacy_request(
|
|
|
450
452
|
for dataset_config in datasets
|
|
451
453
|
if not dataset_config.connection_config.disabled
|
|
452
454
|
]
|
|
455
|
+
|
|
456
|
+
# Add manual task artificial graphs to dataset graphs
|
|
457
|
+
manual_task_graphs = create_manual_task_artificial_graphs(session)
|
|
458
|
+
dataset_graphs.extend(manual_task_graphs)
|
|
459
|
+
|
|
453
460
|
dataset_graph = DatasetGraph(*dataset_graphs)
|
|
454
461
|
|
|
455
462
|
# Add success log for dataset configuration
|
|
@@ -33,6 +33,10 @@ from fides.api.models.worker_task import ExecutionLogStatus
|
|
|
33
33
|
from fides.api.schemas.policy import ActionType
|
|
34
34
|
from fides.api.task.deprecated_graph_task import format_data_use_map_for_caching
|
|
35
35
|
from fides.api.task.execute_request_tasks import log_task_queued, queue_request_task
|
|
36
|
+
from fides.api.task.manual.manual_task_utils import (
|
|
37
|
+
ManualTaskAddress,
|
|
38
|
+
create_manual_task_instances_for_privacy_request,
|
|
39
|
+
)
|
|
36
40
|
from fides.api.util.logger_context_utils import log_context
|
|
37
41
|
|
|
38
42
|
|
|
@@ -85,6 +89,14 @@ def build_access_networkx_digraph(
|
|
|
85
89
|
# Connect the end nodes, those that have no downstream dependencies, to the terminator node
|
|
86
90
|
networkx_graph.add_edge(node, TERMINATOR_ADDRESS)
|
|
87
91
|
|
|
92
|
+
manual_nodes = [
|
|
93
|
+
addr
|
|
94
|
+
for addr in traversal_nodes.keys()
|
|
95
|
+
if addr.collection == ManualTaskAddress.MANUAL_DATA_COLLECTION
|
|
96
|
+
]
|
|
97
|
+
for manual_node in manual_nodes:
|
|
98
|
+
networkx_graph.add_edge(ROOT_COLLECTION_ADDRESS, manual_node)
|
|
99
|
+
|
|
88
100
|
_add_edge_if_no_nodes(traversal_nodes, networkx_graph)
|
|
89
101
|
return networkx_graph
|
|
90
102
|
|
|
@@ -458,6 +470,10 @@ def run_access_request(
|
|
|
458
470
|
end_nodes: List[CollectionAddress] = traversal.traverse(
|
|
459
471
|
traversal_nodes, collect_tasks_fn
|
|
460
472
|
)
|
|
473
|
+
|
|
474
|
+
# Snapshot manual task field instances for this privacy request
|
|
475
|
+
create_manual_task_instances_for_privacy_request(session, privacy_request)
|
|
476
|
+
|
|
461
477
|
# Save Access Request Tasks to the database
|
|
462
478
|
ready_tasks = persist_new_access_request_tasks(
|
|
463
479
|
session, privacy_request, traversal, traversal_nodes, end_nodes, graph
|
|
@@ -29,6 +29,8 @@ from fides.api.task.graph_task import (
|
|
|
29
29
|
GraphTask,
|
|
30
30
|
mark_current_and_downstream_nodes_as_failed,
|
|
31
31
|
)
|
|
32
|
+
from fides.api.task.manual.manual_task_graph_task import ManualTaskGraphTask
|
|
33
|
+
from fides.api.task.manual.manual_task_utils import ManualTaskAddress
|
|
32
34
|
from fides.api.task.task_resources import TaskResources
|
|
33
35
|
from fides.api.tasks import DSR_QUEUE_NAME, DatabaseTask, celery_app
|
|
34
36
|
from fides.api.util.cache import cache_task_tracking_key
|
|
@@ -108,7 +110,14 @@ def create_graph_task(
|
|
|
108
110
|
to begin with - this may be unrecoverable and a new Privacy Request should be created.
|
|
109
111
|
"""
|
|
110
112
|
try:
|
|
111
|
-
|
|
113
|
+
collection_address = request_task.request_task_address
|
|
114
|
+
|
|
115
|
+
# Check if this is a manual task address
|
|
116
|
+
graph_task: GraphTask
|
|
117
|
+
if ManualTaskAddress.is_manual_task_address(collection_address):
|
|
118
|
+
graph_task = ManualTaskGraphTask(resources)
|
|
119
|
+
else:
|
|
120
|
+
graph_task = GraphTask(resources)
|
|
112
121
|
|
|
113
122
|
except Exception as exc:
|
|
114
123
|
logger.debug(
|
fides/api/task/filter_results.py
CHANGED
|
@@ -6,6 +6,7 @@ from loguru import logger
|
|
|
6
6
|
|
|
7
7
|
from fides.api.graph.config import CollectionAddress, FieldPath
|
|
8
8
|
from fides.api.graph.graph import DatasetGraph
|
|
9
|
+
from fides.api.task.manual.manual_task_utils import ManualTaskAddress
|
|
9
10
|
from fides.api.util.collection_util import Row
|
|
10
11
|
|
|
11
12
|
|
|
@@ -37,6 +38,11 @@ def filter_data_categories(
|
|
|
37
38
|
if not results:
|
|
38
39
|
continue
|
|
39
40
|
|
|
41
|
+
# Skip manual task data - it doesn't need filtering since it's controlled by field definitions
|
|
42
|
+
if f":{ManualTaskAddress.MANUAL_DATA_COLLECTION}" in node_address:
|
|
43
|
+
filtered_access_results[node_address].extend(results)
|
|
44
|
+
continue
|
|
45
|
+
|
|
40
46
|
# Results from fides connectors are a special case:
|
|
41
47
|
# they've already been filtered and stored in a dict keyed by rule key.
|
|
42
48
|
# So here, we simply find the results corresponding to our current rule
|
fides/api/task/graph_task.py
CHANGED
|
@@ -109,6 +109,7 @@ def retry(
|
|
|
109
109
|
method_name,
|
|
110
110
|
self.execution_node.address,
|
|
111
111
|
)
|
|
112
|
+
# Log the awaiting processing status and exit without retrying.
|
|
112
113
|
self.log_awaiting_processing(action_type, ex)
|
|
113
114
|
# Request Task put in "awaiting_processing" status and exited, awaiting Async Callback
|
|
114
115
|
return None
|