ethyca-fides 2.56.2rc3__py2.py3-none-any.whl → 2.56.3b1__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ethyca_fides-2.56.2rc3.dist-info → ethyca_fides-2.56.3b1.dist-info}/METADATA +1 -3
- {ethyca_fides-2.56.2rc3.dist-info → ethyca_fides-2.56.3b1.dist-info}/RECORD +231 -226
- fides/_version.py +3 -3
- fides/api/alembic/migrations/versions/1152c1717849_fix_monitorexecution_started_default.py +57 -0
- fides/api/alembic/migrations/versions/3c58001ad310_add_messages_to_monitor_execution.py +32 -0
- fides/api/alembic/migrations/versions/bd875a8b5d96_add_attachments_and_.py +96 -0
- fides/api/api/v1/endpoints/privacy_request_endpoints.py +2 -14
- fides/api/custom_types.py +24 -1
- fides/api/db/base.py +1 -0
- fides/api/graph/node_filters.py +112 -5
- fides/api/graph/traversal.py +34 -4
- fides/api/models/attachment.py +153 -0
- fides/api/models/audit_log.py +3 -0
- fides/api/models/detection_discovery.py +11 -2
- fides/api/models/privacy_request.py +26 -3
- fides/api/task/create_request_tasks.py +27 -9
- fides/api/task/deprecated_graph_task.py +28 -10
- fides/api/task/graph_task.py +84 -43
- fides/api/util/consent_util.py +20 -5
- fides/api/util/logger.py +19 -1
- fides/config/execution_settings.py +1 -1
- fides/config/security_settings.py +7 -13
- fides/data/sample_project/sample_connections/sample_connections.yml +29 -29
- fides/service/dataset/dataset_config_service.py +4 -2
- fides/service/privacy_request/privacy_request_service.py +32 -14
- fides/ui-build/static/admin/404.html +1 -1
- fides/ui-build/static/admin/_next/static/LOp6RUpN795nyhXOv95wz/_buildManifest.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/1150-73440d7b319558e8.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/2201-abd6092e6df98c26.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{5728-7be08c654c024baa.js → 2397-7177ecf4ebe68feb.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{255-69ac1bcb5a52b022.js → 255-bf1797f78249d090.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{3005-137ef60b77c71ce1.js → 3005-373de16453ed7eea.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/3086-be6b52546c3efc90.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3320-87c75df57a47487e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{5318-1bfde23609ea3718.js → 3627-fb83adac32c128e6.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/3662-420d9807c30008ab.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3855-5c7b11871f59e0e0.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{4456-67c8d5b2d96dea1d.js → 3872-f3d5054bdc584eaa.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{8141-55187bd207f5ea9e.js → 3949-9888699e2ac564c4.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{4294-3e67d7ef3d390c2f.js → 4294-5b3aa9d605217915.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/4481-ca8d2c75d634b6bc.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/4723-81d28e5be5c7b6d7.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5246-9fc6af1a6499e0a4.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5258-3a650be9142cf914.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5480-f5bec5e881f72f8d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5487-d96e1abc93f92631.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5826-16e497af363a0cbc.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5908-532dfbc9d930f635.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5960-8895f51b30c35798.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{618f8807-5792121b4eda076b.js → 618f8807-d15c33d1d6c8b961.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/6277-b55810d66362f56e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6315-dee79f6861c94d2d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6362-8f79e403fdc2404a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{5632-b98308c17b9cd230.js → 6372-f1b54f3cb4888660.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{6834-5082b5702e80b531.js → 6834-dcda0a8ed484775e.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/6853-cacea421af3bfc26.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6954-6eb480eb132239c3.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7044-9dc90893067f38ae.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7495-a61f0c9fcb458664.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{7548-b3992b0c7fb852c9.js → 7751-25e0c1307988ffd7.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/79-ba88d0cf4c65aaa2.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{5973-c0b74d6cf14833cb.js → 7980-2597c279c30fbcda.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/8433-969280d321d1c3a2.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/8499-07507004e8275df2.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{8837-2b785a4e5bad4813.js → 8837-cf26e5ca1ae5aaf5.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/9046-80f1ea44f89fe32c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{9255-2b1bafefb091a640.js → 9255-336a890ada321f89.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/9282-1a5a2f6f4d9ed586.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{2800.40212c25719a2351.js → 9392.97b2e3327dceb7c9.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/9676.f4d5977a5f148797.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9999-f2e40d5b13343220.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/main-app-2650f704701c6a7b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/main-ce7f38a12ea8c223.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/404-1087258931760074.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/{_app-8021f4b202818ba2.js → _app-3c1a7742661d3a9e.js} +14 -14
- fides/ui-build/static/admin/_next/static/chunks/pages/{_error-c91b5eabd7ac9382.js → _error-bede3a8288930dcf.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/manual-d7f60624cbc12217.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{multiple-17b38b57adc62ed2.js → multiple-18b0b521255289a3.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-136bcbd20ac59bf5.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/ant-poc-b3b4d0a98450ffd1.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-7469901adf64d0e2.js → add-vendors-64f83e9a2b777bf3.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure-e11ace4f273ebb47.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/[id]-fdbafb5a47a6a28c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/new-fc4635c6eea7165f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience-35e9df60b21e21a6.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-a2713f5a7a2c45e5.js → [id]-bdc686761a0d2d60.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-b67c3c8c25e7051b.js → new-8618ab5fa45cd074.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-da37afbe5ec81339.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/properties-c57b209feef7c2da.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-97fea4ac45093cbd.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/{consent-a3233ad24a82465a.js → consent-24bef021ee71e36c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]-6cbd79481199812d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]-46b9790da2fec05a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects-1f965b9c496071d1.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/[resourceUrn]-e7833c1c606081a9.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{resources-6563b9d6f77d0690.js → resources-bed368d048ea6883.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-942d68a88b321067.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-00526324583139ab.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/{[monitorId]-8e6f4b1b5b89aff0.js → [monitorId]-f0ab51d0d5f995de.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{action-center-a6a9bbfac5ca8d0b.js → action-center-2220c30c3863b5a5.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-1d7936f05d23097f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/detection/{[resourceUrn]-c575c057b35b958e.js → [resourceUrn]-68122dbf449a11b4.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{detection-c1d2018f3ab3e39c.js → detection-0ceaf3c555e84714.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/[resourceUrn]-22c27fe0f898ad2a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery-8f2b102e19b0b8f2.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/datamap-9cd0c40bef77b120.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-ab9bc1a3640547db.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]-17ec8385bb1fa6d4.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]-e14c1c07658f8a10.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-fc00dbeb18a7b731.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset-295756e1fd640b59.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/[id]-a6e793e9a8ed00a9.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/new-7d314bb7238af067.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-b8eaa9b9d3832b30.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/index-c9fa68dc0fa42c81.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-20489bceb7b068b8.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations-21c9902e7b098b39.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/login/{[provider]-cac9584cefa85a09.js → [provider]-c58beef131c3a82d.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{login-e55849091751c65a.js → login-0cb0eb44bf2dd24c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging/[id]-6b032de0a6c2c400.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging/add-template-c0d6ae68ff7979c6.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/{messaging-910372bec245ba5d.js → messaging-f263e6bacf0f2d19.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-c685d19a131d6960.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-b96ee3fea3920fcf.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-1b0f9469cb65abfc.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{configure-e0ca944878ef12e8.js → configure-4bad69cd42c9722c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-eebd2f4ead19cfd6.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-e780943ac4ce5bf1.js → [id]-b4c808a8a0287d11.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/properties/add-property-5a701477b006a63b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/properties-9a1899dfe052023e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-a3fa3ad77730a03b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{about-bfe2495fb54933ee.js → about-d073be113e9ca7b0.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-4769f55b138073f7.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-744e7bbc200557e7.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domain-records-c5cd5fb578de9515.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-775f55b3f80cd452.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-39c7ae3602ac69b2.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/locations-45e33ba111f8f8b0.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-14def4ca3cc9cda5.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/regulations-94975aeab348528e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-21f26c0dc4d09e9f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]-c6396feeefca887b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/systems-c320df35d51dc537.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-181ea5b0ac975239.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/user-management/new-d6717378b42982d5.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/[id]-622e16a17a11c096.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/user-management-aa872b21bb835d34.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{webpack-c51aa6524c2716b8.js → webpack-4df2ba5ee2d40f0a.js} +1 -1
- fides/ui-build/static/admin/_next/static/css/15fb7d4837a1de34.css +1 -0
- fides/ui-build/static/admin/_next/static/css/bd5a72c010fa9c14.css +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/ant-poc.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-tcf.js +3 -3
- 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/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.html +1 -1
- fides/ui-build/static/admin/settings/consent.html +1 -1
- fides/ui-build/static/admin/settings/custom-fields.html +1 -1
- fides/ui-build/static/admin/settings/domain-records.html +1 -1
- fides/ui-build/static/admin/settings/domains.html +1 -1
- fides/ui-build/static/admin/settings/email-templates.html +1 -1
- fides/ui-build/static/admin/settings/locations.html +1 -1
- fides/ui-build/static/admin/settings/organization.html +1 -1
- fides/ui-build/static/admin/settings/regulations.html +1 -1
- fides/ui-build/static/admin/systems/configure/[id]/test-datasets.html +1 -1
- fides/ui-build/static/admin/systems/configure/[id].html +1 -1
- fides/ui-build/static/admin/systems.html +1 -1
- fides/ui-build/static/admin/taxonomy.html +1 -1
- fides/ui-build/static/admin/user-management/new.html +1 -1
- fides/ui-build/static/admin/user-management/profile/[id].html +1 -1
- fides/ui-build/static/admin/user-management.html +1 -1
- fides/ui-build/static/admin/_next/static/_A05_bEFykI6pEGrDmq4n/_buildManifest.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/1241-5f9673b3a7fd9469.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/1288-84c330c47e031622.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/1827-db04b6d4756e3a25.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/2017-99f489b3e0279798.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/2025-b6a78063b47b0607.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/2163-9631ae84deb6560b.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/2556-1d0c02e14299bf23.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/2973-2d9d761cc3aeda1d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3163-5fe20dd3d43cef46.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3309-db63287718ef9694.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3528-30fc61a98d99a66b.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3990-146beccde8afea98.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4321-1bf69f1e83baf995.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4981-8d81ec3b6031f0f9.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/53-eb32dc5d8571cb7b.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6182-1949666cc9179015.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/637-3f7f3e47e69e75fe.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6546-aa6826fdd0356505.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7080-051d67719049e77a.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7269-aaa4ad906c8bf8f7.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7528.dff66491009d309b.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7636-b2dadd026c1fe754.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7871-0a9b00bc8760d091.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7996-23e83b8ca562a06c.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/8001-3fdc7b543233f717.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/8540-a7c91bdbe1bb48fb.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/8986-c24a626d90c8be1d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9659-478f2eaaf48a8943.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9822-88b7435d5868e1ef.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/main-6880a3888740c515.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/main-app-de538a24cbd2733c.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/404-5c601b7b9c17b770.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/manual-2bfb79fc5d16caa4.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-4e54aefa8b7f554f.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/ant-poc-6048ddeee842c93b.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure-833ab451ff99ba12.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/[id]-b796be4c70e08aa0.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/new-35bc7b42751bb78a.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience-089a73cd8a34dbec.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-cfe92d1c2e95d917.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/properties-059c82d3b8ccdaf6.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-54c762b6fe38c20e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]-e1bd1bdd2c310ecc.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]-c9032d9e0c1dfe1a.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects-62087de19ac179b3.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/[resourceUrn]-c7614c7742e41151.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-9b33b5875445751e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-c299a8bd5e1c1def.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-a9a864cb621d65c6.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/[resourceUrn]-9ae2adfc68b95d78.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery-a617ddfa3dfdab23.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datamap-6a0e22b9ce8f5332.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-3e506baace396803.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]-6bb9fbe3d41c3127.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]-a358b344095573a9.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-b328f9aab79dd734.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset-3c0b2ccfa442b79d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/[id]-102772521ee4a69a.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/new-754926e02c1e0ab0.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-1e81b412b5837755.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/index-aa7b15f51ccbdf8b.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-2436e6c6406e5f4f.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations-b6c0f9648f6fa298.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging/[id]-d1e96f12c1a12d4d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging/add-template-3ff3a7c3c76a208e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-7b13b42d1b23f93b.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-6971c7e98c00390a.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-71386e3e260a9220.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-be0c167fa1565e38.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/properties/add-property-fc660bc2a3641cd3.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/properties-1a35fd97f2510989.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-b9fe3f3bb16a14eb.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-7eec113882c35c3f.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-aaf29e3dd2c7e955.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domain-records-8b7e71fe1307c5a3.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-0b9e78e671540cef.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-eb04e1584d98edb3.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/locations-195f7ddfc3768ece.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-22cb683d203ea7fb.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/regulations-3eede241c9df1476.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-54d7c6fcc4c79635.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]-8271db0c80e6e154.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems-7d81df09a0b4eb23.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-7abe76200e4519d8.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/user-management/new-a59a02634d672703.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/[id]-269b17114579510b.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/user-management-f7e75911c071a20e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js +0 -1
- fides/ui-build/static/admin/_next/static/css/918de8c66b18ce6b.css +0 -1
- {ethyca_fides-2.56.2rc3.dist-info → ethyca_fides-2.56.3b1.dist-info}/LICENSE +0 -0
- {ethyca_fides-2.56.2rc3.dist-info → ethyca_fides-2.56.3b1.dist-info}/WHEEL +0 -0
- {ethyca_fides-2.56.2rc3.dist-info → ethyca_fides-2.56.3b1.dist-info}/entry_points.txt +0 -0
- {ethyca_fides-2.56.2rc3.dist-info → ethyca_fides-2.56.3b1.dist-info}/top_level.txt +0 -0
- /fides/ui-build/static/admin/_next/static/{_A05_bEFykI6pEGrDmq4n → LOp6RUpN795nyhXOv95wz}/_ssgManifest.js +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from datetime import datetime
|
|
3
|
+
from datetime import datetime
|
|
4
4
|
from enum import Enum
|
|
5
5
|
from typing import Any, Dict, Iterable, List, Optional, Type
|
|
6
6
|
|
|
@@ -388,7 +388,9 @@ class MonitorExecution(Base):
|
|
|
388
388
|
)
|
|
389
389
|
status = Column(String, nullable=True)
|
|
390
390
|
started = Column(
|
|
391
|
-
DateTime(timezone=True),
|
|
391
|
+
DateTime(timezone=True),
|
|
392
|
+
nullable=True,
|
|
393
|
+
server_default=func.now(),
|
|
392
394
|
)
|
|
393
395
|
completed = Column(DateTime(timezone=True), nullable=True)
|
|
394
396
|
classification_instances = Column(
|
|
@@ -398,6 +400,13 @@ class MonitorExecution(Base):
|
|
|
398
400
|
nullable=False,
|
|
399
401
|
default=list,
|
|
400
402
|
)
|
|
403
|
+
# stores additional information from monitor execution failures as an array of strings,
|
|
404
|
+
# e.g. error messages, stack traces, etc.
|
|
405
|
+
messages = Column(
|
|
406
|
+
ARRAY(String),
|
|
407
|
+
nullable=False,
|
|
408
|
+
default=list,
|
|
409
|
+
)
|
|
401
410
|
created_at = Column(DateTime(timezone=True), server_default=func.now())
|
|
402
411
|
updated_at = Column(
|
|
403
412
|
DateTime(timezone=True),
|
|
@@ -1278,6 +1278,28 @@ class PrivacyRequest(
|
|
|
1278
1278
|
},
|
|
1279
1279
|
)
|
|
1280
1280
|
|
|
1281
|
+
def add_skipped_execution_log(
|
|
1282
|
+
self,
|
|
1283
|
+
db: Session,
|
|
1284
|
+
connection_key: Optional[str],
|
|
1285
|
+
dataset_name: Optional[str],
|
|
1286
|
+
collection_name: Optional[str],
|
|
1287
|
+
message: str,
|
|
1288
|
+
action_type: ActionType,
|
|
1289
|
+
) -> ExecutionLog:
|
|
1290
|
+
return ExecutionLog.create(
|
|
1291
|
+
db=db,
|
|
1292
|
+
data={
|
|
1293
|
+
"privacy_request_id": self.id,
|
|
1294
|
+
"connection_key": connection_key,
|
|
1295
|
+
"dataset_name": dataset_name,
|
|
1296
|
+
"collection_name": collection_name,
|
|
1297
|
+
"status": ExecutionLogStatus.skipped,
|
|
1298
|
+
"message": message,
|
|
1299
|
+
"action_type": action_type,
|
|
1300
|
+
},
|
|
1301
|
+
)
|
|
1302
|
+
|
|
1281
1303
|
def add_error_execution_log(
|
|
1282
1304
|
self,
|
|
1283
1305
|
db: Session,
|
|
@@ -1861,6 +1883,7 @@ class TraversalDetails(FidesSchema):
|
|
|
1861
1883
|
incoming_edges: List[Tuple[str, str]]
|
|
1862
1884
|
outgoing_edges: List[Tuple[str, str]]
|
|
1863
1885
|
input_keys: List[str]
|
|
1886
|
+
skipped_nodes: Optional[List[Tuple[str, str]]] = None
|
|
1864
1887
|
|
|
1865
1888
|
# TODO: remove this method once we support custom request fields in DSR graph.
|
|
1866
1889
|
@classmethod
|
|
@@ -1868,15 +1891,15 @@ class TraversalDetails(FidesSchema):
|
|
|
1868
1891
|
"""
|
|
1869
1892
|
Creates an "empty" TraversalDetails object that only has the dataset connection key set.
|
|
1870
1893
|
This is a bit of a hacky workaround needed to implement the Dynamic Erasure Emails feature,
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
a real TraversalNode associated to them.
|
|
1894
|
+
but we should no longer need it once the custom_request_fields are included in our graph
|
|
1895
|
+
traversal
|
|
1874
1896
|
"""
|
|
1875
1897
|
return cls(
|
|
1876
1898
|
dataset_connection_key=connection_key,
|
|
1877
1899
|
incoming_edges=[],
|
|
1878
1900
|
outgoing_edges=[],
|
|
1879
1901
|
input_keys=[],
|
|
1902
|
+
skipped_nodes=[],
|
|
1880
1903
|
)
|
|
1881
1904
|
|
|
1882
1905
|
|
|
@@ -451,7 +451,7 @@ def run_access_request(
|
|
|
451
451
|
)
|
|
452
452
|
else:
|
|
453
453
|
try:
|
|
454
|
-
traversal: Traversal = Traversal(graph, identity, policy)
|
|
454
|
+
traversal: Traversal = Traversal(graph, identity, policy=policy)
|
|
455
455
|
|
|
456
456
|
# Traversal.traverse populates traversal_nodes in place, adding parents and children to each traversal_node.
|
|
457
457
|
traversal_nodes: Dict[CollectionAddress, TraversalNode] = {}
|
|
@@ -485,14 +485,32 @@ def run_access_request(
|
|
|
485
485
|
connection_configs,
|
|
486
486
|
)
|
|
487
487
|
)
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
488
|
+
|
|
489
|
+
# Add execution logs for skipped nodes
|
|
490
|
+
if traversal.skipped_nodes:
|
|
491
|
+
logger.warning(
|
|
492
|
+
"Some nodes were skipped, the identities provided were not sufficient to reach them"
|
|
493
|
+
)
|
|
494
|
+
for node_address, skip_message in traversal.skipped_nodes.items():
|
|
495
|
+
logger.debug(skip_message)
|
|
496
|
+
privacy_request.add_skipped_execution_log(
|
|
497
|
+
session,
|
|
498
|
+
connection_key=None,
|
|
499
|
+
dataset_name="Dataset traversal",
|
|
500
|
+
collection_name=node_address.replace(":", "."),
|
|
501
|
+
message=skip_message,
|
|
502
|
+
action_type=ActionType.access,
|
|
503
|
+
)
|
|
504
|
+
# Or log success if all collections are reachable
|
|
505
|
+
else:
|
|
506
|
+
privacy_request.add_success_execution_log(
|
|
507
|
+
session,
|
|
508
|
+
connection_key=None,
|
|
509
|
+
dataset_name="Dataset traversal",
|
|
510
|
+
collection_name=None,
|
|
511
|
+
message=f"Traversal successful for privacy request: {privacy_request.id}",
|
|
512
|
+
action_type=ActionType.access,
|
|
513
|
+
)
|
|
496
514
|
except TraversalError as err:
|
|
497
515
|
log_traversal_error_and_update_privacy_request(
|
|
498
516
|
privacy_request, session, err
|
|
@@ -115,15 +115,33 @@ def run_access_request_deprecated(
|
|
|
115
115
|
) -> Dict[str, List[Row]]:
|
|
116
116
|
"""Deprecated: Run the access request sequentially in-memory using Dask"""
|
|
117
117
|
try:
|
|
118
|
-
traversal: Traversal = Traversal(graph, identity, policy)
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
118
|
+
traversal: Traversal = Traversal(graph, identity, policy=policy)
|
|
119
|
+
# Add execution logs for skipped nodes
|
|
120
|
+
if traversal.skipped_nodes:
|
|
121
|
+
logger.warning(
|
|
122
|
+
"Some nodes were skipped, the identities provided were not sufficient to reach them"
|
|
123
|
+
)
|
|
124
|
+
|
|
125
|
+
for node_address, skip_message in traversal.skipped_nodes.items():
|
|
126
|
+
logger.debug(skip_message)
|
|
127
|
+
privacy_request.add_skipped_execution_log(
|
|
128
|
+
session,
|
|
129
|
+
connection_key=None,
|
|
130
|
+
dataset_name="Dataset traversal",
|
|
131
|
+
collection_name=node_address.replace(":", "."),
|
|
132
|
+
message=skip_message,
|
|
133
|
+
action_type=ActionType.access,
|
|
134
|
+
)
|
|
135
|
+
# Or log success if all collections are reachable
|
|
136
|
+
else:
|
|
137
|
+
privacy_request.add_success_execution_log(
|
|
138
|
+
session,
|
|
139
|
+
connection_key=None,
|
|
140
|
+
dataset_name="Dataset traversal",
|
|
141
|
+
collection_name=None,
|
|
142
|
+
message=f"Traversal successful for privacy request: {privacy_request.id}",
|
|
143
|
+
action_type=ActionType.access,
|
|
144
|
+
)
|
|
127
145
|
|
|
128
146
|
except TraversalError as err:
|
|
129
147
|
log_traversal_error_and_update_privacy_request(privacy_request, session, err)
|
|
@@ -205,7 +223,7 @@ def run_erasure_request_deprecated( # pylint: disable = too-many-arguments
|
|
|
205
223
|
session: Session,
|
|
206
224
|
) -> Dict[str, int]:
|
|
207
225
|
"""Deprecated: Run an erasure request sequentially in-memory using Dask"""
|
|
208
|
-
traversal: Traversal = Traversal(graph, identity, policy)
|
|
226
|
+
traversal: Traversal = Traversal(graph, identity, policy=policy)
|
|
209
227
|
with TaskResources(
|
|
210
228
|
privacy_request, policy, connection_configs, EMPTY_REQUEST_TASK, session
|
|
211
229
|
) as resources:
|
fides/api/task/graph_task.py
CHANGED
|
@@ -36,7 +36,8 @@ from fides.api.models.connectionconfig import (
|
|
|
36
36
|
ConnectionType,
|
|
37
37
|
)
|
|
38
38
|
from fides.api.models.datasetconfig import DatasetConfig
|
|
39
|
-
from fides.api.models.policy import Policy
|
|
39
|
+
from fides.api.models.policy import Policy, Rule
|
|
40
|
+
from fides.api.models.privacy_preference import PrivacyPreferenceHistory
|
|
40
41
|
from fides.api.models.privacy_request import ExecutionLog, PrivacyRequest, RequestTask
|
|
41
42
|
from fides.api.schemas.policy import ActionType, CurrentStep
|
|
42
43
|
from fides.api.schemas.privacy_request import ExecutionLogStatus
|
|
@@ -54,7 +55,9 @@ from fides.api.util.collection_util import (
|
|
|
54
55
|
make_immutable,
|
|
55
56
|
make_mutable,
|
|
56
57
|
)
|
|
57
|
-
from fides.api.util.consent_util import
|
|
58
|
+
from fides.api.util.consent_util import (
|
|
59
|
+
add_errored_system_status_for_consent_reporting_on_preferences,
|
|
60
|
+
)
|
|
58
61
|
from fides.api.util.logger import Pii
|
|
59
62
|
from fides.api.util.logger_context_utils import LoggerContextKeys
|
|
60
63
|
from fides.api.util.saas_util import FIDESOPS_GROUPED_INPUTS
|
|
@@ -138,13 +141,7 @@ def retry(
|
|
|
138
141
|
self.resources.request.id,
|
|
139
142
|
)
|
|
140
143
|
self.log_skipped(action_type, exc)
|
|
141
|
-
|
|
142
|
-
# For consent reporting, also caching the given system as skipped for all historical privacy preferences.
|
|
143
|
-
pref.cache_system_status(
|
|
144
|
-
self.resources.session,
|
|
145
|
-
self.connector.configuration.system_key,
|
|
146
|
-
ExecutionLogStatus.skipped,
|
|
147
|
-
)
|
|
144
|
+
self.cache_system_status_for_preferences()
|
|
148
145
|
return default_return
|
|
149
146
|
except BaseException as ex: # pylint: disable=W0703
|
|
150
147
|
traceback.print_exc()
|
|
@@ -164,11 +161,7 @@ def retry(
|
|
|
164
161
|
action_type.value
|
|
165
162
|
] # Convert ActionType into a CurrentStep, no longer coerced with Pydantic V2
|
|
166
163
|
)
|
|
167
|
-
|
|
168
|
-
self.resources.session,
|
|
169
|
-
self.resources.request,
|
|
170
|
-
self.connector.configuration,
|
|
171
|
-
)
|
|
164
|
+
self.add_error_status_for_consent_reporting()
|
|
172
165
|
if not self.request_task.id:
|
|
173
166
|
# TODO Remove when we stop support for DSR 2.0
|
|
174
167
|
# Re-raise to stop privacy request execution on failure for
|
|
@@ -730,6 +723,48 @@ class GraphTask(ABC): # pylint: disable=too-many-instance-attributes
|
|
|
730
723
|
self.log_end(ActionType.consent)
|
|
731
724
|
return output
|
|
732
725
|
|
|
726
|
+
def cache_system_status_for_preferences(self) -> None:
|
|
727
|
+
"""
|
|
728
|
+
Calls cache_system_status for all historical privacy preferences for the given request.
|
|
729
|
+
|
|
730
|
+
Purposely uses a new session.
|
|
731
|
+
"""
|
|
732
|
+
|
|
733
|
+
privacy_request_id = self.resources.request.id
|
|
734
|
+
|
|
735
|
+
with get_db() as db:
|
|
736
|
+
|
|
737
|
+
privacy_preferences = db.query(PrivacyPreferenceHistory).filter(
|
|
738
|
+
PrivacyPreferenceHistory.privacy_request_id == privacy_request_id
|
|
739
|
+
)
|
|
740
|
+
for pref in privacy_preferences:
|
|
741
|
+
# For consent reporting, also caching the given system as skipped for all historical privacy preferences.
|
|
742
|
+
pref.cache_system_status(
|
|
743
|
+
db,
|
|
744
|
+
self.connector.configuration.system_key, # type: ignore[arg-type]
|
|
745
|
+
ExecutionLogStatus.skipped,
|
|
746
|
+
)
|
|
747
|
+
|
|
748
|
+
def add_error_status_for_consent_reporting(self) -> None:
|
|
749
|
+
"""
|
|
750
|
+
Adds the errored system status for all historical privacy preferences for the given request that
|
|
751
|
+
are deemed relevant for the connector failure (i.e if they had a "pending" log added to them).
|
|
752
|
+
|
|
753
|
+
Purposely uses a new session.
|
|
754
|
+
"""
|
|
755
|
+
privacy_request_id = self.resources.request.id
|
|
756
|
+
with get_db() as db:
|
|
757
|
+
privacy_preferences = (
|
|
758
|
+
db.query(PrivacyPreferenceHistory)
|
|
759
|
+
.filter(
|
|
760
|
+
PrivacyPreferenceHistory.privacy_request_id == privacy_request_id
|
|
761
|
+
)
|
|
762
|
+
.all()
|
|
763
|
+
)
|
|
764
|
+
add_errored_system_status_for_consent_reporting_on_preferences(
|
|
765
|
+
db, privacy_preferences, self.connector.configuration
|
|
766
|
+
)
|
|
767
|
+
|
|
733
768
|
|
|
734
769
|
def collect_queries(
|
|
735
770
|
traversal: Traversal, resources: TaskResources
|
|
@@ -816,39 +851,45 @@ def build_affected_field_logs(
|
|
|
816
851
|
}]
|
|
817
852
|
"""
|
|
818
853
|
|
|
819
|
-
|
|
854
|
+
policy_id = policy.id
|
|
820
855
|
|
|
821
|
-
|
|
822
|
-
if rule.action_type != action_type:
|
|
823
|
-
continue
|
|
824
|
-
rule_categories: List[str] = rule.get_target_data_categories()
|
|
825
|
-
if not rule_categories:
|
|
826
|
-
continue
|
|
856
|
+
with get_db() as db:
|
|
827
857
|
|
|
828
|
-
|
|
829
|
-
str, List[FieldPath]
|
|
830
|
-
] = node.collection.field_paths_by_category # type: ignore
|
|
831
|
-
for rule_cat in rule_categories:
|
|
832
|
-
for collection_cat, field_paths in collection_categories.items():
|
|
833
|
-
if collection_cat.startswith(rule_cat):
|
|
834
|
-
targeted_field_paths.update(
|
|
835
|
-
{
|
|
836
|
-
node.address.field_address(field_path): collection_cat
|
|
837
|
-
for field_path in field_paths
|
|
838
|
-
}
|
|
839
|
-
)
|
|
858
|
+
rules = db.query(Rule).filter(Rule.policy_id == policy_id)
|
|
840
859
|
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
860
|
+
targeted_field_paths: Dict[FieldAddress, str] = {}
|
|
861
|
+
|
|
862
|
+
for rule in rules: # type: ignore[attr-defined]
|
|
863
|
+
if rule.action_type != action_type:
|
|
864
|
+
continue
|
|
865
|
+
rule_categories: List[str] = rule.get_target_data_categories()
|
|
866
|
+
if not rule_categories:
|
|
867
|
+
continue
|
|
868
|
+
|
|
869
|
+
collection_categories: Dict[
|
|
870
|
+
str, List[FieldPath]
|
|
871
|
+
] = node.collection.field_paths_by_category # type: ignore
|
|
872
|
+
for rule_cat in rule_categories:
|
|
873
|
+
for collection_cat, field_paths in collection_categories.items():
|
|
874
|
+
if collection_cat.startswith(rule_cat):
|
|
875
|
+
targeted_field_paths.update(
|
|
876
|
+
{
|
|
877
|
+
node.address.field_address(field_path): collection_cat
|
|
878
|
+
for field_path in field_paths
|
|
879
|
+
}
|
|
880
|
+
)
|
|
881
|
+
|
|
882
|
+
ret: List[Dict[str, Any]] = []
|
|
883
|
+
for field_address, data_categories in targeted_field_paths.items():
|
|
884
|
+
ret.append(
|
|
885
|
+
{
|
|
886
|
+
"path": field_address.value,
|
|
887
|
+
"field_name": field_address.field_path.string_path,
|
|
888
|
+
"data_categories": [data_categories],
|
|
889
|
+
}
|
|
890
|
+
)
|
|
850
891
|
|
|
851
|
-
|
|
892
|
+
return ret
|
|
852
893
|
|
|
853
894
|
|
|
854
895
|
def build_consent_dataset_graph(datasets: List[DatasetConfig]) -> DatasetGraph:
|
fides/api/util/consent_util.py
CHANGED
|
@@ -214,15 +214,30 @@ def add_errored_system_status_for_consent_reporting(
|
|
|
214
214
|
|
|
215
215
|
Deeming them relevant if they already had a "pending" log added to them.
|
|
216
216
|
"""
|
|
217
|
-
|
|
217
|
+
add_errored_system_status_for_consent_reporting_on_preferences(db, privacy_request.privacy_preferences, connection_config) # type: ignore[attr-defined]
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
def add_errored_system_status_for_consent_reporting_on_preferences(
|
|
221
|
+
db: Session,
|
|
222
|
+
privacy_preferences: List[PrivacyPreferenceHistory],
|
|
223
|
+
connection_config: ConnectionConfig,
|
|
224
|
+
) -> None:
|
|
225
|
+
"""
|
|
226
|
+
Cache an errored system status for consent reporting on just the subset
|
|
227
|
+
of preferences that were deemed relevant for the connector on failure,
|
|
228
|
+
from the provided list of preferences.
|
|
229
|
+
|
|
230
|
+
Deeming them relevant if they already had a "pending" log added to them.
|
|
231
|
+
"""
|
|
232
|
+
for preference in privacy_preferences:
|
|
218
233
|
if (
|
|
219
|
-
|
|
220
|
-
and
|
|
234
|
+
preference.affected_system_status
|
|
235
|
+
and preference.affected_system_status.get(connection_config.system_key)
|
|
221
236
|
== ExecutionLogStatus.pending.value
|
|
222
237
|
):
|
|
223
|
-
|
|
238
|
+
preference.cache_system_status(
|
|
224
239
|
db,
|
|
225
|
-
connection_config.system_key,
|
|
240
|
+
connection_config.system_key, # type: ignore[arg-type]
|
|
226
241
|
ExecutionLogStatus.error,
|
|
227
242
|
)
|
|
228
243
|
|
fides/api/util/logger.py
CHANGED
|
@@ -8,7 +8,8 @@ from __future__ import annotations
|
|
|
8
8
|
|
|
9
9
|
import logging
|
|
10
10
|
import sys
|
|
11
|
-
from
|
|
11
|
+
from contextlib import contextmanager
|
|
12
|
+
from typing import TYPE_CHECKING, Any, Dict, Generator, List, Optional
|
|
12
13
|
|
|
13
14
|
from loguru import logger
|
|
14
15
|
from loguru._handler import Message
|
|
@@ -213,3 +214,20 @@ def obfuscate_message(message: str) -> str:
|
|
|
213
214
|
def format_and_obfuscate(record) -> str: # type: ignore[no-untyped-def]
|
|
214
215
|
record["extra"]["obfuscated_message"] = obfuscate_message(record["message"])
|
|
215
216
|
return "[{level}] {extra[obfuscated_message]}\n{exception}"
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
# pylint: disable=protected-access
|
|
220
|
+
@contextmanager
|
|
221
|
+
def suppress_logging() -> Generator:
|
|
222
|
+
"""
|
|
223
|
+
Temporarily suppress all logging by setting the log level to CRITICAL.
|
|
224
|
+
"""
|
|
225
|
+
|
|
226
|
+
current_level = logger._core.min_level # type: ignore[attr-defined]
|
|
227
|
+
logger._core.min_level = logger.level("CRITICAL").no # type: ignore[attr-defined]
|
|
228
|
+
|
|
229
|
+
try:
|
|
230
|
+
yield
|
|
231
|
+
finally:
|
|
232
|
+
# Restore original configuration
|
|
233
|
+
logger._core.min_level = current_level # type: ignore[attr-defined]
|
|
@@ -21,7 +21,7 @@ class ExecutionSettings(FidesSettings):
|
|
|
21
21
|
)
|
|
22
22
|
require_manual_request_approval: bool = Field(
|
|
23
23
|
default=False,
|
|
24
|
-
description="Whether privacy requests require explicit approval to execute.",
|
|
24
|
+
description="Whether access and erasure privacy requests require explicit approval to execute. Consent privacy requests are always auto-approved.",
|
|
25
25
|
)
|
|
26
26
|
subject_identity_verification_required: bool = Field(
|
|
27
27
|
default=False,
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
# pylint: disable=C0115,C0116, E0213
|
|
4
4
|
from typing import List, Optional, Pattern, Tuple, Union
|
|
5
5
|
|
|
6
|
-
import validators
|
|
7
6
|
from pydantic import Field, SerializeAsAny, ValidationInfo, field_validator
|
|
8
7
|
from pydantic_settings import SettingsConfigDict
|
|
9
8
|
from slowapi.wrappers import parse_many # type: ignore
|
|
@@ -176,22 +175,17 @@ class SecuritySettings(FidesSettings):
|
|
|
176
175
|
@field_validator("cors_origins", mode="before")
|
|
177
176
|
@classmethod
|
|
178
177
|
def assemble_cors_origins(cls, v: Union[str, List[str]]) -> Union[List[str], str]:
|
|
179
|
-
"""
|
|
180
|
-
|
|
181
|
-
def validate(values: List[str]) -> None:
|
|
182
|
-
for value in values:
|
|
183
|
-
if value != "*":
|
|
184
|
-
if not validators.url(value):
|
|
185
|
-
raise ValueError(f"{value} is not a valid url")
|
|
178
|
+
"""
|
|
179
|
+
Return a list of origins for CORS requests.
|
|
186
180
|
|
|
181
|
+
This validator allows us to parse a comma-separated string of origins
|
|
182
|
+
into a list of origins, since the `cors_origins` field can be set
|
|
183
|
+
as a comma-separated string or a list of strings.
|
|
184
|
+
"""
|
|
187
185
|
if isinstance(v, str) and not v.startswith("["):
|
|
188
186
|
values = [i.strip() for i in v.split(",")]
|
|
189
|
-
validate(values)
|
|
190
|
-
|
|
191
187
|
return values
|
|
192
|
-
if isinstance(v,
|
|
193
|
-
validate(v) # type: ignore
|
|
194
|
-
|
|
188
|
+
if isinstance(v, list):
|
|
195
189
|
return v
|
|
196
190
|
raise ValueError(v)
|
|
197
191
|
|
|
@@ -6,12 +6,12 @@ connection:
|
|
|
6
6
|
dataset: postgres_example_test_dataset
|
|
7
7
|
system_key: cookie_house_postgresql_database
|
|
8
8
|
secrets:
|
|
9
|
-
host: $FIDES_DEPLOY__CONNECTORS__POSTGRES__HOST
|
|
10
|
-
port: $FIDES_DEPLOY__CONNECTORS__POSTGRES__PORT
|
|
11
|
-
dbname: $FIDES_DEPLOY__CONNECTORS__POSTGRES__DBNAME
|
|
12
|
-
username: $FIDES_DEPLOY__CONNECTORS__POSTGRES__USERNAME
|
|
13
|
-
password: $FIDES_DEPLOY__CONNECTORS__POSTGRES__PASSWORD
|
|
14
|
-
ssh_required: $FIDES_DEPLOY__CONNECTORS__POSTGRES__SSH_REQUIRED
|
|
9
|
+
host: "$FIDES_DEPLOY__CONNECTORS__POSTGRES__HOST"
|
|
10
|
+
port: "$FIDES_DEPLOY__CONNECTORS__POSTGRES__PORT"
|
|
11
|
+
dbname: "$FIDES_DEPLOY__CONNECTORS__POSTGRES__DBNAME"
|
|
12
|
+
username: "$FIDES_DEPLOY__CONNECTORS__POSTGRES__USERNAME"
|
|
13
|
+
password: "$FIDES_DEPLOY__CONNECTORS__POSTGRES__PASSWORD"
|
|
14
|
+
ssh_required: "$FIDES_DEPLOY__CONNECTORS__POSTGRES__SSH_REQUIRED"
|
|
15
15
|
- key: cookie_house_loyalty_database
|
|
16
16
|
name: Postgres Connector (Loyalty)
|
|
17
17
|
connection_type: postgres
|
|
@@ -19,11 +19,11 @@ connection:
|
|
|
19
19
|
dataset: postgres_example_test_extended_dataset
|
|
20
20
|
system_key: cookie_house_loyalty_database
|
|
21
21
|
secrets:
|
|
22
|
-
host: $FIDES_DEPLOY__CONNECTORS__POSTGRES_LOYALTY__HOST
|
|
23
|
-
port: $FIDES_DEPLOY__CONNECTORS__POSTGRES__PORT
|
|
24
|
-
dbname: $FIDES_DEPLOY__CONNECTORS__POSTGRES__DBNAME
|
|
25
|
-
username: $FIDES_DEPLOY__CONNECTORS__POSTGRES__USERNAME
|
|
26
|
-
password: $FIDES_DEPLOY__CONNECTORS__POSTGRES__PASSWORD
|
|
22
|
+
host: "$FIDES_DEPLOY__CONNECTORS__POSTGRES_LOYALTY__HOST"
|
|
23
|
+
port: "$FIDES_DEPLOY__CONNECTORS__POSTGRES__PORT"
|
|
24
|
+
dbname: "$FIDES_DEPLOY__CONNECTORS__POSTGRES__DBNAME"
|
|
25
|
+
username: "$FIDES_DEPLOY__CONNECTORS__POSTGRES__USERNAME"
|
|
26
|
+
password: "$FIDES_DEPLOY__CONNECTORS__POSTGRES__PASSWORD"
|
|
27
27
|
disabled: True
|
|
28
28
|
- key: cookie_house_customer_database_mongodb
|
|
29
29
|
name: MongoDB Connector
|
|
@@ -32,43 +32,43 @@ connection:
|
|
|
32
32
|
dataset: mongo_test
|
|
33
33
|
system_key: cookie_house_customer_database
|
|
34
34
|
secrets:
|
|
35
|
-
host: $FIDES_DEPLOY__CONNECTORS__MONGO_HOST
|
|
36
|
-
port: $FIDES_DEPLOY__CONNECTORS__MONGO_PORT
|
|
37
|
-
defaultauthdb: $FIDES_DEPLOY__CONNECTORS__MONGO_DEFAULTAUTHDB
|
|
38
|
-
username: $FIDES_DEPLOY__CONNECTORS__MONGO_USERNAME
|
|
39
|
-
password: $FIDES_DEPLOY__CONNECTORS__MONGO_PASSWORD
|
|
35
|
+
host: "$FIDES_DEPLOY__CONNECTORS__MONGO_HOST"
|
|
36
|
+
port: "$FIDES_DEPLOY__CONNECTORS__MONGO_PORT"
|
|
37
|
+
defaultauthdb: "$FIDES_DEPLOY__CONNECTORS__MONGO_DEFAULTAUTHDB"
|
|
38
|
+
username: "$FIDES_DEPLOY__CONNECTORS__MONGO_USERNAME"
|
|
39
|
+
password: "$FIDES_DEPLOY__CONNECTORS__MONGO_PASSWORD"
|
|
40
40
|
- key: mailchimp_connector
|
|
41
41
|
name: Mailchimp Connector
|
|
42
42
|
connection_type: saas
|
|
43
43
|
saas_connector_type: mailchimp
|
|
44
44
|
access: write
|
|
45
45
|
secrets:
|
|
46
|
-
domain: $FIDES_DEPLOY__CONNECTORS__MAILCHIMP__DOMAIN
|
|
47
|
-
username: $FIDES_DEPLOY__CONNECTORS__MAILCHIMP__USERNAME
|
|
48
|
-
api_key: $FIDES_DEPLOY__CONNECTORS__MAILCHIMP__API_KEY
|
|
46
|
+
domain: "$FIDES_DEPLOY__CONNECTORS__MAILCHIMP__DOMAIN"
|
|
47
|
+
username: "$FIDES_DEPLOY__CONNECTORS__MAILCHIMP__USERNAME"
|
|
48
|
+
api_key: "$FIDES_DEPLOY__CONNECTORS__MAILCHIMP__API_KEY"
|
|
49
49
|
- key: stripe_connector
|
|
50
50
|
name: Stripe Connector
|
|
51
51
|
connection_type: saas
|
|
52
52
|
saas_connector_type: stripe
|
|
53
53
|
access: write
|
|
54
54
|
secrets:
|
|
55
|
-
domain: $FIDES_DEPLOY__CONNECTORS__STRIPE__DOMAIN
|
|
56
|
-
api_key: $FIDES_DEPLOY__CONNECTORS__STRIPE__API_KEY
|
|
55
|
+
domain: "$FIDES_DEPLOY__CONNECTORS__STRIPE__DOMAIN"
|
|
56
|
+
api_key: "$FIDES_DEPLOY__CONNECTORS__STRIPE__API_KEY"
|
|
57
57
|
- key: hubspot_connector
|
|
58
58
|
name: Hubspot Connector
|
|
59
59
|
connection_type: saas
|
|
60
60
|
saas_connector_type: hubspot
|
|
61
61
|
access: write
|
|
62
62
|
secrets:
|
|
63
|
-
domain: $FIDES_DEPLOY__CONNECTORS__HUBSPOT__DOMAIN
|
|
64
|
-
private_app_token: $FIDES_DEPLOY__CONNECTORS__HUBSPOT__PRIVATE_APP_TOKEN
|
|
63
|
+
domain: "$FIDES_DEPLOY__CONNECTORS__HUBSPOT__DOMAIN"
|
|
64
|
+
private_app_token: "$FIDES_DEPLOY__CONNECTORS__HUBSPOT__PRIVATE_APP_TOKEN"
|
|
65
65
|
- key: mailchimp_transactional_connector
|
|
66
66
|
name: Mailchimp Transactional Connector
|
|
67
67
|
connection_type: saas
|
|
68
68
|
saas_connector_type: mailchimp_transactional
|
|
69
69
|
access: write
|
|
70
70
|
secrets:
|
|
71
|
-
api_key: $FIDES_DEPLOY__CONNECTORS__MAILCHIMP_TRANSACTIONAL_API_KEY
|
|
71
|
+
api_key: "$FIDES_DEPLOY__CONNECTORS__MAILCHIMP_TRANSACTIONAL_API_KEY"
|
|
72
72
|
- key: cookie_house_custom_request_fields_database
|
|
73
73
|
name: Postgres Connector (Custom Request Fields)
|
|
74
74
|
connection_type: postgres
|
|
@@ -76,8 +76,8 @@ connection:
|
|
|
76
76
|
dataset: postgres_example_custom_request_field_dataset
|
|
77
77
|
system_key: cookie_house_custom_request_fields_database
|
|
78
78
|
secrets:
|
|
79
|
-
host: $FIDES_DEPLOY__CONNECTORS__POSTGRES__HOST
|
|
80
|
-
port: $FIDES_DEPLOY__CONNECTORS__POSTGRES__PORT
|
|
81
|
-
dbname: $FIDES_DEPLOY__CONNECTORS__POSTGRES__DBNAME
|
|
82
|
-
username: $FIDES_DEPLOY__CONNECTORS__POSTGRES__USERNAME
|
|
83
|
-
password: $FIDES_DEPLOY__CONNECTORS__POSTGRES__PASSWORD
|
|
79
|
+
host: "$FIDES_DEPLOY__CONNECTORS__POSTGRES__HOST"
|
|
80
|
+
port: "$FIDES_DEPLOY__CONNECTORS__POSTGRES__PORT"
|
|
81
|
+
dbname: "$FIDES_DEPLOY__CONNECTORS__POSTGRES__DBNAME"
|
|
82
|
+
username: "$FIDES_DEPLOY__CONNECTORS__POSTGRES__USERNAME"
|
|
83
|
+
password: "$FIDES_DEPLOY__CONNECTORS__POSTGRES__PASSWORD"
|
|
@@ -14,6 +14,7 @@ from fides.api.common_exceptions import (
|
|
|
14
14
|
)
|
|
15
15
|
from fides.api.graph.config import GraphDataset
|
|
16
16
|
from fides.api.graph.graph import DatasetGraph
|
|
17
|
+
from fides.api.graph.node_filters import NodeFilter
|
|
17
18
|
from fides.api.graph.traversal import Traversal, TraversalNode
|
|
18
19
|
from fides.api.models.connectionconfig import ConnectionConfig
|
|
19
20
|
from fides.api.models.datasetconfig import DatasetConfig
|
|
@@ -35,13 +36,14 @@ from fides.service.dataset.dataset_validator import DatasetValidator
|
|
|
35
36
|
from fides.service.dataset.validation_steps.traversal import TraversalValidationStep
|
|
36
37
|
|
|
37
38
|
|
|
38
|
-
class DatasetFilter:
|
|
39
|
+
class DatasetFilter(NodeFilter):
|
|
39
40
|
"""
|
|
40
41
|
Filter that excludes nodes that are not part of the specified dataset.
|
|
41
42
|
This ensures that unreachable nodes from other datasets are not treated as errors.
|
|
42
43
|
"""
|
|
43
44
|
|
|
44
45
|
def __init__(self, dataset_name: str):
|
|
46
|
+
super().__init__()
|
|
45
47
|
self.dataset_name = dataset_name
|
|
46
48
|
|
|
47
49
|
def exclude_node(self, node: TraversalNode) -> bool:
|
|
@@ -198,7 +200,7 @@ class DatasetConfigService:
|
|
|
198
200
|
Traversal(
|
|
199
201
|
dataset_graph,
|
|
200
202
|
identity_seed,
|
|
201
|
-
policy,
|
|
203
|
+
policy=policy,
|
|
202
204
|
node_filters=[DatasetFilter(dataset_config.fides_key)],
|
|
203
205
|
)
|
|
204
206
|
except UnreachableNodesError as exc:
|