ethyca-fides 2.62.1rc0__py2.py3-none-any.whl → 2.63.0__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.62.1rc0.dist-info → ethyca_fides-2.63.0.dist-info}/METADATA +2 -1
- {ethyca_fides-2.62.1rc0.dist-info → ethyca_fides-2.63.0.dist-info}/RECORD +250 -238
- fides/_version.py +3 -3
- fides/api/alembic/migrations/versions/2263583b0e44_add_shared_monitor_config.py +82 -0
- fides/api/alembic/migrations/versions/440a5b9a3493_add_fides_user_respondent_email_.py +80 -0
- fides/api/alembic/migrations/versions/5474a47c77da_create_staged_resource_ancestor_link_table.py +72 -0
- fides/api/alembic/migrations/versions/bf713b5a021d_staged_resource_ancestor_link_data_.py +259 -0
- fides/api/alembic/migrations/versions/c586a56c25e7_remove_child_diff_statuses.py +40 -0
- fides/api/api/v1/endpoints/privacy_request_endpoints.py +2 -2
- fides/api/db/base.py +3 -0
- fides/api/main.py +4 -1
- fides/api/migrations/post_upgrade_index_creation.py +269 -0
- fides/api/models/attachment.py +117 -10
- fides/api/models/audit_log.py +0 -3
- fides/api/models/detection_discovery.py +189 -24
- fides/api/models/fides_user.py +51 -4
- fides/api/models/fides_user_permissions.py +25 -7
- fides/api/models/fides_user_respondent_email_verification.py +112 -0
- fides/api/models/privacy_request/privacy_request.py +40 -1
- fides/api/oauth/roles.py +19 -0
- fides/api/service/connectors/query_configs/saas_query_config.py +3 -8
- fides/api/service/connectors/saas_connector.py +7 -4
- fides/api/service/privacy_request/dsr_package/dsr_report_builder.py +4 -2
- fides/api/service/privacy_request/request_runner_service.py +47 -18
- fides/api/service/privacy_request/request_service.py +4 -15
- fides/api/service/storage/s3.py +40 -15
- fides/api/tasks/storage.py +6 -5
- fides/api/util/lock.py +44 -0
- fides/api/util/storage_util.py +14 -8
- fides/common/api/scope_registry.py +6 -0
- fides/config/config_proxy.py +0 -1
- fides/config/execution_settings.py +0 -4
- fides/ui-build/static/admin/404.html +1 -1
- fides/ui-build/static/admin/_next/static/chunks/1099-667e84655846e78c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/1100-0b01f500b1eaf60d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{1817-721fdeb29c07c6be.js → 1817-951f58ddd5d46081.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{1904-7e5354990377a849.js → 1904-361e37a5811ed7fc.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/2310-744354001d01f366.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/2921-49af55ad7c631c93.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3119-e36ae5071c8f27a5.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3505-113f9c95d34b7aae.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3513-5c2d412a84a78971.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3662-f6a1ddca5ee42076.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3670-2abd9b2f17770872.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3872-45cc725e241211f0.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3923-b4f701ada3ef0ee0.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3983-17ae9c232bddc413.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/401-7e800aed05537126.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/4060-90a52a9afc655bfc.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/4121-66b0e00d5e7ae817.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/4132-9b1731bfec6ee537.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/4481-7f6710c928bb0cb0.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5258-2079138c8cc34f6c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5404-2694509cf5fa96da.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5487-2cbd8d2169eb2a65.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5683-37137111b3e769fb.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6202-081545c7822d09af.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6277-459e054b2702c60e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/641-7e4eef3222cbda70.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6659-b2088f525bf13c17.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{6853-0cee00c9da26a40e.js → 6853-688df0b88fe65fd5.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/69-00cba94689b9e740.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6954-4e313b4599b8763d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7553-08bc3d9f66695111.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/79-fc548561beed136f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/796-d6586308ed44334b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7980-736f9fd1e749ddd2.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/8032-74d94f7bd5b81c89.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/8433-51870336908fb253.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/8499-1fd392d0be9e8ee4.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9033-fdd87182c15b91e2.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9327-6a53461c9764b16f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{9392.bfca299d4f39a9e0.js → 9392.81edc11e3a175275.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/9494-1ffb888b95289891.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9676.61cf5f6d6a083175.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9767-afd674014a1d1152.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/404-ec04f826f3dd79ea.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/{_app-371b155655c83a1e.js → _app-33bc23b79bffe07c.js} +69 -69
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/manual-1bec086d567aacff.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/multiple-f68bf100e4e60e88.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-effde5cfe49de55f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/add-vendors-ec95ed8cb0712828.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure-4cc195e15e0c3cc8.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/[id]-be8972c79fb39705.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{new-7f38473ce267348a.js → new-a0039f216fb3eb93.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience-ccf96207de3b74ea.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/[id]-b9823cc008372cee.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/new-373f5772ab41bc93.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-b9beeee1bde5ca79.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/properties-6ab3a5baafebd199.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-8562790ae07f17c9.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent-42d4d2d6e0253671.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/{[resourceUrn]-7ddf45ffd49533b0.js → [resourceUrn]-18e3faf7963962e4.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]-9d1df6d890671b0c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects-7eb08af333baaa8e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/{[resourceUrn]-ed213bc1b7041aa2.js → [resourceUrn]-7320524a47104798.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{resources-1f033ca5a0702018.js → resources-51d99174c8006eb5.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-bb57eed84f59a932.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-47eb34aef3e31ac6.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-76cefefc53e84c7f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-9d8e84a8b4bf568d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-c3eaadd88a2e6caa.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/detection/{[resourceUrn]-f38b3ef885a29ea6.js → [resourceUrn]-4c526db0c30c488a.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{detection-29fd0d5a73f13a00.js → detection-6f27dbb7c8edc69d.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/{[resourceUrn]-9a80241f1028c470.js → [resourceUrn]-562d2b8ae90dd1f0.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{discovery-c58333981b1522c9.js → discovery-fe7f51502eda57c9.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datamap-db45aa864e9dda8a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-d5cfdebc74654337.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]-618b89228f83435e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]-12fc86f15a4c764e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-c23d18a9b56c2e3c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset-e3b2d8e3980ab093.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/[id]-6e27257eccf65f01.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/new-bbac1f624424282d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-84eb56f5a07bdf4f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/index-773182b5e35d0045.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-eb28c927da5bd653.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations-781808bca01f8048.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging/[id]-b51bee8680d66b20.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging/add-template-1de479533f733fbd.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging-7dc295b3ed3d2224.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/ant-components-f64dac3392f5ded7.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/AntForm-eb020bfac4bee532.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikAntFormItem-0bd62e28b539e114.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikControlled-936877004113c2a6.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikField-6416f01524482af9.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/forms-3f4e1313d1f2969b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/table-migration-1db7a54437db7db0.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-64236fd0141414fd.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-8cab04871908cfeb.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-150d40428245ee0c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure-b6c876dceb16ad1b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-20cdb2c8a03deae1.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/properties/[id]-54bcc875592d1fb9.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/properties/add-property-644dc669b508a79a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/properties-9a88220d03e7e02f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-70dc1081df37ea69.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/about/alpha-3c71b4dbcb6fd6c9.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/about-7cb16e0000dd16c9.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-a18d8f12ee8dcf5d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-dc220e116ad5c09e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-55ddc5f25b86f28e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domain-records-5ca7decded228bc8.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-a6fafa1be2834c40.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-e633750d2b45ddd6.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-4fbab6716326060d.js → locations-3948686cbd372969.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-04ece499c22d23f4.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/regulations-7752305084280cca.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-9e5f9066be6f218d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]-86de9e6d72098e45.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/systems-cac52e6c3abf6a15.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-60d5930b6855679b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/[id]-b0f4c34752d32c73.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/{user-management-c0b2113b44f46112.js → user-management-7dee83dd6d9292aa.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{webpack-abd3efcb23c0bb03.js → webpack-8457bad7859c44f0.js} +1 -1
- fides/ui-build/static/admin/_next/static/css/1fdf5c593349dbc6.css +1 -0
- fides/ui-build/static/admin/_next/static/css/5ded47c57dae5baf.css +1 -0
- fides/ui-build/static/admin/_next/static/css/e458b5f1afdbb7fc.css +1 -0
- fides/ui-build/static/admin/_next/static/lb6RRZ8JumokYwsENumlw/_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 -0
- 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 -0
- 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/service/error_handling/__init__.py +0 -0
- fides/service/error_handling/error_handler.py +0 -202
- fides/ui-build/static/admin/_next/static/K1_4-1GhwfL7h4fYYQBvB/_buildManifest.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/1099-98458e8e9ff67508.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/1100-4106d99f5e1ebd75.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/1327-92a38135ee8d55ec.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/2310-0d63c66c2685e83c.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/2921-ca04a0476e2e56c5.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3119-e441b14cdab4320e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3426-e49cb4766324b2dd.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3505-e58b93f9c1cbdcad.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3513-87b54d931698986f.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/355-e4340980d72b4faa.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3615-5e2d062d684b8fa1.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3872-6b828cb00fb2ce93.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4060-9593a3f98e600487.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4121-5c3af879cdd8b3be.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4294-5b3aa9d605217915.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4481-8398edf74aabb8ea.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4723-4c3c7a375e998c15.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5258-e000d07844eccf7e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5487-62955c11bab63734.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5626-1b636798faad78e1.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5683-44966a05fa5ad566.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/570-c99f07161bd339cd.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5826-ce34f25ac2eeb807.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5973-56d90405c3616068.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6277-c35c8cc806f7571f.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6834-dcda0a8ed484775e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/69-dc52e39d26a4ad14.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6954-d02d474ba30756b2.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/79-e5884e6878fc1bbb.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7980-e17dda2f50ec76b8.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/8433-a77c2cd1c1a6887e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/8499-34a34015c91fc38b.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9014-eeae6f581158e645.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9327-a25347d72bfbe680.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9494-0df032fe6ee531a5.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9676.97fdbec9c2a48c68.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9767-74320abc2e9a4550.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/404-c00773c4c6e930af.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/manual-7d789458fb296270.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/multiple-90320455052466cd.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-a69f8946466471aa.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/add-vendors-bcc515a765c0119d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure-49b9f1b56262dfdc.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/[id]-d4137bb7fdc1ac6e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience-5ef03041a530b0e2.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/[id]-a5a95ac63b1ce206.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/new-946ce1a2aa1500d4.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-12f3ba4609bc2ba5.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/properties-ffa15d7ff64a9f05.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-b959d61c2a3682b3.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent-7797e367dd946a18.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]-ecf23116a845188a.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects-79f8e613827c55c1.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-e950d41b75f86c85.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-84ead584a88ab662.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-90f1975f559fff3e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-4b820a3173f35504.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-beedbc38ee2b0094.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datamap-2d6f95b2769a0936.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-3536ae978741b659.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]-8b5afe14cf42a4ac.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]-b8dca4298b5bb085.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-1e26702b1a7e0e12.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset-1f0c4e2e5d0b5bf6.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/[id]-ebf54ea9874c59ae.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/new-c39e8e2269883796.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-9db81467fa254996.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/index-868b60407eae35da.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-ebc41649161f7fb9.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations-b89b9f68ccc69c1b.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging/[id]-22812f08e81bd4f3.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging/add-template-ca22869201847ccc.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging-5f41afae411cd8a4.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/ant-components-173bd3ad45ea61c6.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/AntForm-4dfe984ad80927cd.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikAntFormItem-f790e1ea5cbc26c0.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikControlled-af9e682ec620e990.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikField-6ce407101daa6000.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/forms-9ee8cf14a93eaa4a.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-928430cd40c35ef2.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-07ef58b04404479d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-595ed9f6ca438020.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure-25a3add8e7982e43.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-b3384299166bcd1e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/properties/[id]-081f13526443e0a6.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/properties/add-property-17fb474e458b63e7.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/properties-f00530710b699afd.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-6a6016708efb5f4f.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/about-177919b4ccf8f660.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-ba15c12c89ee10f8.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-0f2daeec241bd1a2.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-0401208a3128fa4d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domain-records-0daa256958675a23.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-26810d1ffedcd156.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-eb78b645d0c1d4ea.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-9404a6b0b2951992.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/regulations-0a3aa951ef4a44ba.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-48be14ad09ed4133.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]-b03403fed4dd8805.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems-ae591953b24e2fc9.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-913efe5371344de6.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/[id]-dc11ba29dbd4708b.js +0 -1
- fides/ui-build/static/admin/_next/static/css/92c81f666644c594.css +0 -1
- fides/ui-build/static/admin/_next/static/css/b89fc4b36b501cf6.css +0 -1
- fides/ui-build/static/admin/_next/static/css/c0c2eb63ad3e7390.css +0 -1
- {ethyca_fides-2.62.1rc0.dist-info → ethyca_fides-2.63.0.dist-info}/WHEEL +0 -0
- {ethyca_fides-2.62.1rc0.dist-info → ethyca_fides-2.63.0.dist-info}/entry_points.txt +0 -0
- {ethyca_fides-2.62.1rc0.dist-info → ethyca_fides-2.63.0.dist-info}/licenses/LICENSE +0 -0
- {ethyca_fides-2.62.1rc0.dist-info → ethyca_fides-2.63.0.dist-info}/top_level.txt +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/user-management/{new-69176abe09cf9b52.js → new-b124cc24b930c9e1.js} +0 -0
- /fides/ui-build/static/admin/_next/static/{K1_4-1GhwfL7h4fYYQBvB → lb6RRZ8JumokYwsENumlw}/_ssgManifest.js +0 -0
fides/_version.py
CHANGED
@@ -8,11 +8,11 @@ import json
|
|
8
8
|
|
9
9
|
version_json = '''
|
10
10
|
{
|
11
|
-
"date": "2025-06-
|
11
|
+
"date": "2025-06-09T12:29:37-0400",
|
12
12
|
"dirty": false,
|
13
13
|
"error": null,
|
14
|
-
"full-revisionid": "
|
15
|
-
"version": "2.
|
14
|
+
"full-revisionid": "26ed475edc54d4cc56a7060fbec3ed7c16b647d2",
|
15
|
+
"version": "2.63.0"
|
16
16
|
}
|
17
17
|
''' # END VERSION_JSON
|
18
18
|
|
@@ -0,0 +1,82 @@
|
|
1
|
+
"""add shared monitor config
|
2
|
+
|
3
|
+
Revision ID: 2263583b0e44
|
4
|
+
Revises: d0cbfec0b2dd
|
5
|
+
Create Date: 2025-05-12 23:44:11.809581
|
6
|
+
|
7
|
+
"""
|
8
|
+
|
9
|
+
import sqlalchemy as sa
|
10
|
+
from alembic import op
|
11
|
+
from sqlalchemy.dialects import postgresql
|
12
|
+
|
13
|
+
# revision identifiers, used by Alembic.
|
14
|
+
revision = "2263583b0e44"
|
15
|
+
down_revision = "d0cbfec0b2dd"
|
16
|
+
branch_labels = None
|
17
|
+
depends_on = None
|
18
|
+
|
19
|
+
|
20
|
+
def upgrade():
|
21
|
+
op.create_table(
|
22
|
+
"shared_monitor_config",
|
23
|
+
sa.Column("id", sa.String(length=255), nullable=False),
|
24
|
+
sa.Column(
|
25
|
+
"created_at",
|
26
|
+
sa.DateTime(timezone=True),
|
27
|
+
server_default=sa.text("now()"),
|
28
|
+
nullable=True,
|
29
|
+
),
|
30
|
+
sa.Column(
|
31
|
+
"updated_at",
|
32
|
+
sa.DateTime(timezone=True),
|
33
|
+
server_default=sa.text("now()"),
|
34
|
+
nullable=True,
|
35
|
+
),
|
36
|
+
sa.Column("name", sa.String(), nullable=False),
|
37
|
+
sa.Column("key", sa.String(), nullable=False),
|
38
|
+
sa.Column("description", sa.String(), nullable=True),
|
39
|
+
sa.Column(
|
40
|
+
"classify_params",
|
41
|
+
postgresql.JSONB(astext_type=sa.Text()),
|
42
|
+
server_default="{}",
|
43
|
+
nullable=False,
|
44
|
+
),
|
45
|
+
sa.PrimaryKeyConstraint("id"),
|
46
|
+
sa.UniqueConstraint("key"),
|
47
|
+
)
|
48
|
+
op.create_index(
|
49
|
+
op.f("ix_shared_monitor_config_id"),
|
50
|
+
"shared_monitor_config",
|
51
|
+
["id"],
|
52
|
+
unique=False,
|
53
|
+
)
|
54
|
+
op.add_column(
|
55
|
+
"monitorconfig", sa.Column("shared_config_id", sa.String(), nullable=True)
|
56
|
+
)
|
57
|
+
op.create_index(
|
58
|
+
op.f("ix_monitorconfig_shared_config_id"),
|
59
|
+
"monitorconfig",
|
60
|
+
["shared_config_id"],
|
61
|
+
unique=False,
|
62
|
+
)
|
63
|
+
op.create_foreign_key(
|
64
|
+
"fk_monitorconfig_shared_config_id",
|
65
|
+
"monitorconfig",
|
66
|
+
"shared_monitor_config",
|
67
|
+
["shared_config_id"],
|
68
|
+
["id"],
|
69
|
+
ondelete="RESTRICT",
|
70
|
+
)
|
71
|
+
|
72
|
+
|
73
|
+
def downgrade():
|
74
|
+
op.drop_constraint(
|
75
|
+
"fk_monitorconfig_shared_config_id", "monitorconfig", type_="foreignkey"
|
76
|
+
)
|
77
|
+
op.drop_index(op.f("ix_monitorconfig_shared_config_id"), table_name="monitorconfig")
|
78
|
+
op.drop_column("monitorconfig", "shared_config_id")
|
79
|
+
op.drop_index(
|
80
|
+
op.f("ix_shared_monitor_config_id"), table_name="shared_monitor_config"
|
81
|
+
)
|
82
|
+
op.drop_table("shared_monitor_config")
|
@@ -0,0 +1,80 @@
|
|
1
|
+
"""Add fides_user_respondent_email_verification table
|
2
|
+
|
3
|
+
Revision ID: 440a5b9a3493
|
4
|
+
Revises: 2263583b0e44
|
5
|
+
Create Date: 2025-05-29 15:41:59.521940
|
6
|
+
|
7
|
+
"""
|
8
|
+
|
9
|
+
import sqlalchemy as sa
|
10
|
+
from alembic import op
|
11
|
+
|
12
|
+
# revision identifiers, used by Alembic.
|
13
|
+
revision = "440a5b9a3493"
|
14
|
+
down_revision = "2263583b0e44"
|
15
|
+
branch_labels = None
|
16
|
+
depends_on = None
|
17
|
+
|
18
|
+
|
19
|
+
def upgrade():
|
20
|
+
op.create_table(
|
21
|
+
"fides_user_respondent_email_verification",
|
22
|
+
sa.Column("id", sa.String(), nullable=False),
|
23
|
+
sa.Column("user_id", sa.String(), nullable=False),
|
24
|
+
sa.Column("access_token", sa.String(), nullable=False),
|
25
|
+
sa.Column(
|
26
|
+
"access_token_expires_at", sa.DateTime(timezone=True), nullable=False
|
27
|
+
),
|
28
|
+
sa.Column("identity_verified_at", sa.DateTime(timezone=True), nullable=True),
|
29
|
+
sa.Column(
|
30
|
+
"created_at",
|
31
|
+
sa.DateTime(timezone=True),
|
32
|
+
nullable=False,
|
33
|
+
server_default=sa.text("now()"),
|
34
|
+
),
|
35
|
+
sa.Column(
|
36
|
+
"updated_at",
|
37
|
+
sa.DateTime(timezone=True),
|
38
|
+
nullable=False,
|
39
|
+
server_default=sa.text("now()"),
|
40
|
+
),
|
41
|
+
sa.ForeignKeyConstraint(
|
42
|
+
["user_id"],
|
43
|
+
["fidesuser.id"],
|
44
|
+
ondelete="CASCADE",
|
45
|
+
),
|
46
|
+
sa.PrimaryKeyConstraint("id"),
|
47
|
+
)
|
48
|
+
op.create_index(
|
49
|
+
"ix_fides_user_respondent_email_verification_id",
|
50
|
+
"fides_user_respondent_email_verification",
|
51
|
+
["id"],
|
52
|
+
unique=True,
|
53
|
+
)
|
54
|
+
op.create_index(
|
55
|
+
"ix_fides_user_respondent_email_verification_access_token",
|
56
|
+
"fides_user_respondent_email_verification",
|
57
|
+
["access_token"],
|
58
|
+
unique=True,
|
59
|
+
)
|
60
|
+
op.create_index(
|
61
|
+
"ix_fides_user_respondent_email_verification_user_id",
|
62
|
+
"fides_user_respondent_email_verification",
|
63
|
+
["user_id"],
|
64
|
+
)
|
65
|
+
|
66
|
+
|
67
|
+
def downgrade():
|
68
|
+
op.drop_index(
|
69
|
+
"ix_fides_user_respondent_email_verification_user_id",
|
70
|
+
table_name="fides_user_respondent_email_verification",
|
71
|
+
)
|
72
|
+
op.drop_index(
|
73
|
+
"ix_fides_user_respondent_email_verification_access_token",
|
74
|
+
table_name="fides_user_respondent_email_verification",
|
75
|
+
)
|
76
|
+
op.drop_index(
|
77
|
+
"ix_fides_user_respondent_email_verification_id",
|
78
|
+
table_name="fides_user_respondent_email_verification",
|
79
|
+
)
|
80
|
+
op.drop_table("fides_user_respondent_email_verification")
|
fides/api/alembic/migrations/versions/5474a47c77da_create_staged_resource_ancestor_link_table.py
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
"""
|
2
|
+
Creates staged resource ancestor link table.
|
3
|
+
|
4
|
+
Does not populate the table with data, that is handled in a separate data migration.
|
5
|
+
|
6
|
+
Also does not drop the StagedResource.child_diff_statuses column,
|
7
|
+
that is handled in a separate migration, _after_ the data migration
|
8
|
+
that populates the staged resource ancestor link table, to prevent
|
9
|
+
unintended data loss.
|
10
|
+
|
11
|
+
Revision ID: 5474a47c77da
|
12
|
+
Revises: 440a5b9a3493
|
13
|
+
Create Date: 2025-05-27 19:02:43.802783
|
14
|
+
|
15
|
+
"""
|
16
|
+
|
17
|
+
import sqlalchemy as sa
|
18
|
+
from alembic import op
|
19
|
+
from sqlalchemy.dialects import postgresql
|
20
|
+
|
21
|
+
# revision identifiers, used by Alembic.
|
22
|
+
revision = "5474a47c77da"
|
23
|
+
down_revision = "440a5b9a3493"
|
24
|
+
branch_labels = None
|
25
|
+
depends_on = None
|
26
|
+
|
27
|
+
|
28
|
+
def upgrade():
|
29
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
30
|
+
op.create_table(
|
31
|
+
"stagedresourceancestor",
|
32
|
+
sa.Column("id", sa.String(length=255), nullable=False),
|
33
|
+
sa.Column(
|
34
|
+
"created_at",
|
35
|
+
sa.DateTime(timezone=True),
|
36
|
+
server_default=sa.text("now()"),
|
37
|
+
nullable=True,
|
38
|
+
),
|
39
|
+
sa.Column(
|
40
|
+
"updated_at",
|
41
|
+
sa.DateTime(timezone=True),
|
42
|
+
server_default=sa.text("now()"),
|
43
|
+
nullable=True,
|
44
|
+
),
|
45
|
+
sa.Column("ancestor_urn", sa.String(), nullable=False),
|
46
|
+
sa.Column("descendant_urn", sa.String(), nullable=False),
|
47
|
+
# primary key, foreign key and unique constraints are deferred
|
48
|
+
# until after the data migration that populates the table,
|
49
|
+
# to avoid slowing down the data migration
|
50
|
+
)
|
51
|
+
|
52
|
+
# defer creating `stagedresourceancestor` indexes until after the data migration
|
53
|
+
# that populates the table, to avoid slowing down the data migration
|
54
|
+
|
55
|
+
# add an index for StagedResource.diff_status to improve queries against the diff_status field
|
56
|
+
op.create_index(
|
57
|
+
op.f("ix_stagedresource_diff_status"),
|
58
|
+
"stagedresource",
|
59
|
+
["diff_status"],
|
60
|
+
unique=False,
|
61
|
+
)
|
62
|
+
|
63
|
+
|
64
|
+
def downgrade():
|
65
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
66
|
+
|
67
|
+
# drop the StagedResource.diff_status index created in the migration
|
68
|
+
op.drop_index(op.f("ix_stagedresource_diff_status"), table_name="stagedresource")
|
69
|
+
|
70
|
+
# drop the stagedresourceancestor table (and all its indexes and constraints)
|
71
|
+
op.drop_table("stagedresourceancestor")
|
72
|
+
# ### end Alembic commands ###
|
@@ -0,0 +1,259 @@
|
|
1
|
+
"""
|
2
|
+
Staged resource ancestor link data migration.
|
3
|
+
|
4
|
+
Indexes and constraints are created on this table _after_ data is populated.
|
5
|
+
If > 1,000,000 stagedresourceancestor records are created as part
|
6
|
+
of the data migration, the migration will skip creating the indexes
|
7
|
+
and constraints, and will instead log a message
|
8
|
+
indicating that index migration should be performed as part of app runtime.
|
9
|
+
|
10
|
+
The data migration has the following steps:
|
11
|
+
- Query for all staged resources and their children
|
12
|
+
- Build a list in-memory of all ancestor-descendant pairs to insert by recursively
|
13
|
+
processing each resource's children
|
14
|
+
- Write the ancestor links to a CSV string in-memory
|
15
|
+
- Copy the CSV string into the stagedresourceancestor table via a PostgreSQL COPY
|
16
|
+
command
|
17
|
+
- Create the indexes and constraints on the stagedresourceancestor table if
|
18
|
+
< 1,000,000 ancestor links are created
|
19
|
+
|
20
|
+
|
21
|
+
Revision ID: bf713b5a021d
|
22
|
+
Revises: 5474a47c77da
|
23
|
+
Create Date: 2025-06-03 09:44:58.769535
|
24
|
+
|
25
|
+
"""
|
26
|
+
|
27
|
+
import csv
|
28
|
+
import uuid
|
29
|
+
from io import StringIO
|
30
|
+
from pathlib import Path
|
31
|
+
|
32
|
+
import sqlalchemy as sa
|
33
|
+
from alembic import op
|
34
|
+
from loguru import logger
|
35
|
+
|
36
|
+
# revision identifiers, used by Alembic.
|
37
|
+
revision = "bf713b5a021d"
|
38
|
+
down_revision = "5474a47c77da"
|
39
|
+
|
40
|
+
branch_labels = None
|
41
|
+
depends_on = None
|
42
|
+
|
43
|
+
|
44
|
+
def upgrade():
|
45
|
+
logger.info("Populating staged resource ancestor links...")
|
46
|
+
|
47
|
+
conn = op.get_bind()
|
48
|
+
|
49
|
+
# Get all resources and their children in batches
|
50
|
+
BATCH_SIZE = 500000
|
51
|
+
|
52
|
+
# Query resources in batches using yield_per
|
53
|
+
resources_query = sa.text(
|
54
|
+
"""
|
55
|
+
SELECT urn, children
|
56
|
+
FROM stagedresource
|
57
|
+
"""
|
58
|
+
)
|
59
|
+
resource_children = {}
|
60
|
+
|
61
|
+
# process resources and populate resource_children map in batches
|
62
|
+
# to limit memory usage
|
63
|
+
for batch in (
|
64
|
+
conn.execution_options(stream_results=True)
|
65
|
+
.execute(resources_query)
|
66
|
+
.yield_per(BATCH_SIZE)
|
67
|
+
.partitions()
|
68
|
+
):
|
69
|
+
logger.info(f"Processing batch of {BATCH_SIZE} resources")
|
70
|
+
|
71
|
+
# Build resource -> children map for this batch
|
72
|
+
for result in batch:
|
73
|
+
urn = result.urn
|
74
|
+
children = result.children
|
75
|
+
if children:
|
76
|
+
resource_children[urn] = children
|
77
|
+
else:
|
78
|
+
# even if no children, we still add the resource to the map
|
79
|
+
# so that we maintain a record of all resources and can
|
80
|
+
# check for orphaned descendant records later
|
81
|
+
resource_children[urn] = []
|
82
|
+
|
83
|
+
# Build list of ancestor-descendant pairs
|
84
|
+
ancestor_links = []
|
85
|
+
|
86
|
+
def process_children(ancestor_urn, children, visited=None):
|
87
|
+
"""Recursively process children and collect ancestor links"""
|
88
|
+
if visited is None:
|
89
|
+
visited = set()
|
90
|
+
|
91
|
+
for child_urn in children:
|
92
|
+
if child_urn not in visited:
|
93
|
+
visited.add(child_urn)
|
94
|
+
if child_urn not in resource_children:
|
95
|
+
logger.warning(
|
96
|
+
f"Found orphaned descendant URN: {child_urn}, not adding ancestor link"
|
97
|
+
)
|
98
|
+
else:
|
99
|
+
# Add direct ancestor link
|
100
|
+
ancestor_links.append(
|
101
|
+
{
|
102
|
+
"id": f"srl_{uuid.uuid4()}",
|
103
|
+
"ancestor_urn": ancestor_urn,
|
104
|
+
"descendant_urn": child_urn,
|
105
|
+
}
|
106
|
+
)
|
107
|
+
|
108
|
+
# Recursively process this child's children
|
109
|
+
process_children(
|
110
|
+
ancestor_urn, resource_children[child_urn], visited
|
111
|
+
)
|
112
|
+
|
113
|
+
logger.info(
|
114
|
+
f"Recursively processing {len(resource_children)} resources for ancestor links in current batch"
|
115
|
+
)
|
116
|
+
|
117
|
+
# Process each resource's children recursively
|
118
|
+
for ancestor_urn, children in resource_children.items():
|
119
|
+
process_children(ancestor_urn, children)
|
120
|
+
|
121
|
+
# remove the resource_children map from memory
|
122
|
+
del resource_children
|
123
|
+
|
124
|
+
ancestor_links_count = len(ancestor_links)
|
125
|
+
logger.info(f"Found {ancestor_links_count} ancestor links in current batch")
|
126
|
+
|
127
|
+
if ancestor_links_count > 0:
|
128
|
+
# Create temporary CSV file
|
129
|
+
temp_csv_path = Path("staged_resource_ancestors.csv")
|
130
|
+
with open(temp_csv_path, "w", newline="") as csv_file:
|
131
|
+
writer = csv.DictWriter(
|
132
|
+
csv_file, fieldnames=["id", "ancestor_urn", "descendant_urn"]
|
133
|
+
)
|
134
|
+
writer.writeheader()
|
135
|
+
logger.info(f"Writing {ancestor_links_count} ancestor links to CSV file")
|
136
|
+
writer.writerows(ancestor_links)
|
137
|
+
|
138
|
+
del ancestor_links
|
139
|
+
|
140
|
+
# Copy all data from CSV file into table
|
141
|
+
logger.info(
|
142
|
+
f"Copying {ancestor_links_count} ancestor links from CSV file into stagedresourceancestor table..."
|
143
|
+
)
|
144
|
+
with open(temp_csv_path, "r") as csv_file:
|
145
|
+
copy_query = """
|
146
|
+
COPY stagedresourceancestor (id, ancestor_urn, descendant_urn)
|
147
|
+
FROM STDIN
|
148
|
+
WITH (FORMAT CSV, HEADER TRUE)
|
149
|
+
"""
|
150
|
+
conn.connection.cursor().copy_expert(copy_query, csv_file)
|
151
|
+
|
152
|
+
# Clean up temp file
|
153
|
+
temp_csv_path.unlink()
|
154
|
+
|
155
|
+
logger.info(
|
156
|
+
f"Completed copying all ancestor links. Total ancestor links created: {ancestor_links_count}"
|
157
|
+
)
|
158
|
+
|
159
|
+
if ancestor_links_count < 1000000:
|
160
|
+
|
161
|
+
logger.info("Creating primary key index on stagedresourceancestor table...")
|
162
|
+
|
163
|
+
op.create_index(
|
164
|
+
"ix_staged_resource_ancestor_pkey",
|
165
|
+
"stagedresourceancestor",
|
166
|
+
["id"],
|
167
|
+
unique=True,
|
168
|
+
)
|
169
|
+
|
170
|
+
logger.info("Completed creating primary key index")
|
171
|
+
|
172
|
+
logger.info("Creating foreign key constraints stagedresourceancestor table...")
|
173
|
+
|
174
|
+
op.create_foreign_key(
|
175
|
+
"fk_staged_resource_ancestor_ancestor",
|
176
|
+
"stagedresourceancestor",
|
177
|
+
"stagedresource",
|
178
|
+
["ancestor_urn"],
|
179
|
+
["urn"],
|
180
|
+
ondelete="CASCADE",
|
181
|
+
)
|
182
|
+
|
183
|
+
op.create_foreign_key(
|
184
|
+
"fk_staged_resource_ancestor_descendant",
|
185
|
+
"stagedresourceancestor",
|
186
|
+
"stagedresource",
|
187
|
+
["descendant_urn"],
|
188
|
+
["urn"],
|
189
|
+
ondelete="CASCADE",
|
190
|
+
)
|
191
|
+
|
192
|
+
logger.info("Completed creating foreign key constraints")
|
193
|
+
|
194
|
+
logger.info("Creating unique constraint on stagedresourceancestor table...")
|
195
|
+
|
196
|
+
op.create_unique_constraint(
|
197
|
+
"uq_staged_resource_ancestor",
|
198
|
+
"stagedresourceancestor",
|
199
|
+
["ancestor_urn", "descendant_urn"],
|
200
|
+
)
|
201
|
+
|
202
|
+
logger.info("Completed creating unique constraint")
|
203
|
+
|
204
|
+
logger.info("Creating indexes on stagedresourceancestor table...")
|
205
|
+
|
206
|
+
op.create_index(
|
207
|
+
"ix_staged_resource_ancestor_ancestor",
|
208
|
+
"stagedresourceancestor",
|
209
|
+
["ancestor_urn"],
|
210
|
+
unique=False,
|
211
|
+
)
|
212
|
+
op.create_index(
|
213
|
+
"ix_staged_resource_ancestor_descendant",
|
214
|
+
"stagedresourceancestor",
|
215
|
+
["descendant_urn"],
|
216
|
+
unique=False,
|
217
|
+
)
|
218
|
+
|
219
|
+
logger.info("Completed creating indexes on stagedresourceancestor table")
|
220
|
+
else:
|
221
|
+
logger.info(
|
222
|
+
"Skipping creation of primary key index, foreign key constraints, unique constraint, and indexes on stagedresourceancestor table because there are more than 1,000,000 ancestor links. These will be populated as part of the `post_upgrade_index_creation.py` task kicked off during application startup."
|
223
|
+
)
|
224
|
+
|
225
|
+
|
226
|
+
def downgrade():
|
227
|
+
logger.info(
|
228
|
+
"Downgrading staged resource ancestor link data migration, populating child_diff_statuses..."
|
229
|
+
)
|
230
|
+
|
231
|
+
# Get child diff statuses for each ancestor
|
232
|
+
conn = op.get_bind()
|
233
|
+
child_diff_statuses_query = """
|
234
|
+
UPDATE stagedresource
|
235
|
+
SET child_diff_statuses = child_statuses.status_map
|
236
|
+
FROM (
|
237
|
+
SELECT
|
238
|
+
stagedresourceancestor.ancestor_urn,
|
239
|
+
jsonb_object_agg(distinct(stagedresource.diff_status), True) as status_map
|
240
|
+
FROM stagedresourceancestor
|
241
|
+
JOIN stagedresource ON stagedresourceancestor.descendant_urn = stagedresource.urn
|
242
|
+
GROUP BY stagedresourceancestor.ancestor_urn
|
243
|
+
) AS child_statuses
|
244
|
+
WHERE stagedresource.urn = child_statuses.ancestor_urn
|
245
|
+
"""
|
246
|
+
result = conn.execute(child_diff_statuses_query)
|
247
|
+
updated_rows = result.rowcount
|
248
|
+
|
249
|
+
logger.info(
|
250
|
+
f"Downgraded staged resource ancestor link data migration, completed populating child_diff_statuses for {updated_rows} rows"
|
251
|
+
)
|
252
|
+
|
253
|
+
# Intentionally not dropping the stagedresourceancestor indexes here because they
|
254
|
+
# may not have been created as part of the data migration above. If they were not created,
|
255
|
+
# then the downgrade would fail trying to drop the non-existent indexes.
|
256
|
+
|
257
|
+
# The indexes and constraints will be dropped as part of the overall table drop that's done
|
258
|
+
# as part of the downgrade in the `5474a47c77da_create_staged_resource_ancestor_link_table.py`
|
259
|
+
# migration.
|
@@ -0,0 +1,40 @@
|
|
1
|
+
"""
|
2
|
+
Removes the stagedresource.child_diff_statuses column.
|
3
|
+
|
4
|
+
This migration is run _after_ the data migration
|
5
|
+
that populates the staged resource ancestor link table,
|
6
|
+
to prevent unintended data loss.
|
7
|
+
|
8
|
+
Revision ID: c586a56c25e7
|
9
|
+
Revises: bf713b5a021d
|
10
|
+
Create Date: 2025-06-03 09:47:11.389652
|
11
|
+
|
12
|
+
"""
|
13
|
+
|
14
|
+
import sqlalchemy as sa
|
15
|
+
from alembic import op
|
16
|
+
from sqlalchemy.dialects import postgresql
|
17
|
+
|
18
|
+
# revision identifiers, used by Alembic.
|
19
|
+
revision = "c586a56c25e7"
|
20
|
+
down_revision = "bf713b5a021d"
|
21
|
+
branch_labels = None
|
22
|
+
depends_on = None
|
23
|
+
|
24
|
+
|
25
|
+
def upgrade():
|
26
|
+
# remove the StagedResource.child_diff_statuses column as it's no longer needed
|
27
|
+
op.drop_column("stagedresource", "child_diff_statuses")
|
28
|
+
|
29
|
+
|
30
|
+
def downgrade():
|
31
|
+
# re-add the StagedResource.child_diff_statuses column
|
32
|
+
op.add_column(
|
33
|
+
"stagedresource",
|
34
|
+
sa.Column(
|
35
|
+
"child_diff_statuses",
|
36
|
+
postgresql.JSONB(astext_type=sa.Text()),
|
37
|
+
server_default="{}",
|
38
|
+
nullable=False,
|
39
|
+
),
|
40
|
+
)
|
@@ -120,7 +120,7 @@ from fides.api.util.collection_util import Row
|
|
120
120
|
from fides.api.util.endpoint_utils import validate_start_and_end_filters
|
121
121
|
from fides.api.util.enums import ColumnSort
|
122
122
|
from fides.api.util.fuzzy_search_utils import get_decrypted_identities_automaton
|
123
|
-
from fides.api.util.storage_util import
|
123
|
+
from fides.api.util.storage_util import StorageJSONEncoder
|
124
124
|
from fides.common.api.scope_registry import (
|
125
125
|
PRIVACY_REQUEST_CALLBACK_RESUME,
|
126
126
|
PRIVACY_REQUEST_CREATE,
|
@@ -2129,7 +2129,7 @@ def get_test_privacy_request_results(
|
|
2129
2129
|
|
2130
2130
|
# Escape datetime and ObjectId values
|
2131
2131
|
raw_data = privacy_request.get_raw_access_results()
|
2132
|
-
escaped_json = json.dumps(raw_data, indent=2,
|
2132
|
+
escaped_json = json.dumps(raw_data, indent=2, cls=StorageJSONEncoder)
|
2133
2133
|
results = json.loads(escaped_json)
|
2134
2134
|
|
2135
2135
|
filtered_results: Dict[str, Any] = filter_access_results(
|
fides/api/db/base.py
CHANGED
@@ -22,6 +22,9 @@ from fides.api.models.fides_cloud import FidesCloud
|
|
22
22
|
from fides.api.models.fides_user import FidesUser
|
23
23
|
from fides.api.models.fides_user_invite import FidesUserInvite
|
24
24
|
from fides.api.models.fides_user_permissions import FidesUserPermissions
|
25
|
+
from fides.api.models.fides_user_respondent_email_verification import (
|
26
|
+
FidesUserRespondentEmailVerification,
|
27
|
+
)
|
25
28
|
from fides.api.models.identity_salt import IdentitySalt
|
26
29
|
from fides.api.models.location_regulation_selections import LocationRegulationSelections
|
27
30
|
from fides.api.models.manual_webhook import AccessManualWebhook
|
fides/api/main.py
CHANGED
@@ -33,6 +33,9 @@ from fides.api.common_exceptions import MalisciousUrlException
|
|
33
33
|
from fides.api.cryptography.identity_salt import get_identity_salt
|
34
34
|
from fides.api.middleware import handle_audit_log_resource
|
35
35
|
from fides.api.migrations.hash_migration_job import initiate_bcrypt_migration_task
|
36
|
+
from fides.api.migrations.post_upgrade_index_creation import (
|
37
|
+
initiate_post_upgrade_index_creation,
|
38
|
+
)
|
36
39
|
from fides.api.schemas.analytics import Event, ExtraData
|
37
40
|
|
38
41
|
# pylint: disable=wildcard-import, unused-wildcard-import
|
@@ -97,6 +100,7 @@ async def lifespan(wrapped_app: FastAPI) -> AsyncGenerator[None, None]:
|
|
97
100
|
initiate_scheduled_dsr_data_removal()
|
98
101
|
initiate_interrupted_task_requeue_poll()
|
99
102
|
initiate_bcrypt_migration_task()
|
103
|
+
initiate_post_upgrade_index_creation()
|
100
104
|
|
101
105
|
logger.debug("Sending startup analytics events...")
|
102
106
|
# Avoid circular imports
|
@@ -240,7 +244,6 @@ async def log_request(request: Request, call_next: Callable) -> Response:
|
|
240
244
|
status_code=response.status_code,
|
241
245
|
handler_time=f"{total_time}ms",
|
242
246
|
path=request.url.path,
|
243
|
-
fides_client=request.headers.get("Fides-Client", "unknown"),
|
244
247
|
).info("Request received")
|
245
248
|
return response
|
246
249
|
|