ethyca-fides 2.57.1b9__py2.py3-none-any.whl → 2.57.1rc0__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.57.1b9.dist-info → ethyca_fides-2.57.1rc0.dist-info}/METADATA +1 -1
- {ethyca_fides-2.57.1b9.dist-info → ethyca_fides-2.57.1rc0.dist-info}/RECORD +228 -243
- fides/_version.py +3 -3
- fides/api/api/v1/endpoints/config_endpoints.py +2 -4
- fides/api/api/v1/endpoints/generic_overrides.py +6 -48
- fides/api/models/asset.py +18 -37
- fides/api/models/attachment.py +13 -11
- fides/api/models/comment.py +17 -17
- fides/api/models/connectionconfig.py +1 -1
- fides/api/models/detection_discovery.py +0 -12
- fides/api/models/location_regulation_selections.py +0 -1
- fides/api/models/{privacy_request/privacy_request.py → privacy_request.py} +691 -82
- fides/api/models/sql_models.py +5 -28
- fides/api/oauth/jwt.py +0 -18
- fides/api/oauth/utils.py +11 -11
- fides/api/schemas/dataset.py +2 -22
- fides/api/schemas/saas/strategy_configuration.py +0 -1
- fides/api/service/pagination/pagination_strategy_cursor.py +1 -15
- fides/api/service/pagination/pagination_strategy_link.py +1 -1
- fides/api/tasks/storage.py +111 -12
- fides/config/__init__.py +1 -1
- fides/data/language/languages.yml +0 -2
- fides/data/location/locations.yml +1 -244
- fides/ui-build/static/admin/404.html +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{1150-035a721a04f4451e.js → 1150-73440d7b319558e8.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/1995-0e4fc4f7b44ed72b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{2397-ee53235fb21b5e97.js → 2397-7177ecf4ebe68feb.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{255-7db55b0e3a0f9dea.js → 255-bf1797f78249d090.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/2780-8328de94968d05e4.js +4 -0
- fides/ui-build/static/admin/_next/static/chunks/3005-373de16453ed7eea.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{3086-b5054ec2c75700b9.js → 3086-be6b52546c3efc90.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/3320-87c75df57a47487e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3627-fb83adac32c128e6.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3662-420d9807c30008ab.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{3855-b6b7865dedd7bc2a.js → 3855-5c7b11871f59e0e0.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{3872-4e053c20d546f027.js → 3872-f3d5054bdc584eaa.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/3949-9888699e2ac564c4.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3967-845c902667e47c4f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3e38ba78-4487e45fd4ed2479.js +2 -0
- 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/4833-a85bd5d25ebc40c4.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-0658dc2274df6832.js → 5258-3a650be9142cf914.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{5480-f49696df5e8ae500.js → 5480-f5bec5e881f72f8d.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{5487-3ad50d21cdbc9209.js → 5487-d96e1abc93f92631.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/5574-a4047e826a8cd4c3.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{5826-e5dcb4e68cfe6289.js → 5826-16e497af363a0cbc.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/5834-bd9ed01c4ab2ef5c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{9014-eeae6f581158e645.js → 5908-532dfbc9d930f635.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/5960-8895f51b30c35798.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{5973-9c58e4cce2f343a8.js → 5973-67c7562997f7d5cb.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/6277-515c922445b8edc5.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{6315-fa1519cdf080f42d.js → 6315-dee79f6861c94d2d.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{6372-ca9c12ac8902365b.js → 6372-f1b54f3cb4888660.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{6853-8941824350c3c1a8.js → 6853-cacea421af3bfc26.js} +1 -1
- 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/{7088.eb76fca286e5f2e6.js → 7088.0e7c92a7cbb57562.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{7751-a8f31c062d4cb09d.js → 7751-25e0c1307988ffd7.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{79-f9b948ebb186900f.js → 79-ba88d0cf4c65aaa2.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/7980-2597c279c30fbcda.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7c79804f.26834f883d5ad770.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{8433-b3008ecaf9834e7f.js → 8433-969280d321d1c3a2.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{8499-43606100edf42fdf.js → 8499-07507004e8275df2.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/8837-cf26e5ca1ae5aaf5.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{9046-04bd7becea207cb1.js → 9046-80f1ea44f89fe32c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/9282-1a5a2f6f4d9ed586.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{9392.da35a8e778812d91.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/9767-4c591bd478c72650.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{9999-637e0e5341f15f4a.js → 9999-f2e40d5b13343220.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{main-app-94a0711202e08b15.js → main-app-2650f704701c6a7b.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/main-ce7f38a12ea8c223.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/{404-b202c0d8f6fc75c3.js → 404-1087258931760074.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/_app-9ceff88561dc1250.js +909 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{manual-c2705210ce986109.js → manual-d7f60624cbc12217.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{multiple-ba975134a85588f8.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-b9932971a479f3a7.js → ant-poc-b3b4d0a98450ffd1.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-b34e5324461d0c87.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]-cf51752eb0902233.js → [id]-443e6dd191ce5588.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{new-be194737b41ccec9.js → new-36162d5bea29dcc2.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-experience-c946b33b0322b8ad.js → privacy-experience-35e9df60b21e21a6.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-72251b48e2e03a1e.js → [id]-2d651499c07d12d9.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-9611dd42856d6062.js → new-36e57d2f2446be82.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-notices-ea57f9d6ad17e957.js → privacy-notices-da37afbe5ec81339.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-e5748812ba055a56.js → properties-c57b209feef7c2da.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{reporting-ae66e1a7e146a4de.js → reporting-97fea4ac45093cbd.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{consent-39d65f13cc8f1cf8.js → consent-24bef021ee71e36c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/{[resourceUrn]-ac033a16f043e6f9.js → [resourceUrn]-6cbd79481199812d.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/{[projectUrn]-a29850536c85d4b8.js → [projectUrn]-46b9790da2fec05a.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{projects-c44ce244122e96d5.js → projects-1f965b9c496071d1.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/{[resourceUrn]-71e26d262afcaea5.js → [resourceUrn]-e7833c1c606081a9.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{resources-305555b74c357bf2.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]-f0ab51d0d5f995de.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-2220c30c3863b5a5.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{activity-11b3ce9f61d9bfe9.js → activity-1d7936f05d23097f.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/detection/{[resourceUrn]-054ca46a782e99a5.js → [resourceUrn]-68122dbf449a11b4.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{detection-b75dd3e4306ac18e.js → detection-0ceaf3c555e84714.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/{[resourceUrn]-1da20aeb6fc995e4.js → [resourceUrn]-22c27fe0f898ad2a.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{discovery-cad50b0cc6d1050c.js → discovery-8f2b102e19b0b8f2.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{datamap-8cb714cdd44ac40e.js → datamap-9cd0c40bef77b120.js} +1 -1
- 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]-6ba18f92ba561114.js → [datasetId]-e14c1c07658f8a10.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-740824dfa6823e26.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset-5541ecd2f62711a5.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{[id]-bbe1ca2793798e6b.js → [id]-0616437e1a82d3ed.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{new-abc17fef69cd951b.js → new-f8218440494e8532.js} +1 -1
- 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-bfaacdb55a5a6c9f.js → index-94e6d589c4edf360.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-a6448ce6ba7f0cf5.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations-1a6965d78bfb26b0.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{[id]-ad02e019b2467958.js → [id]-6b032de0a6c2c400.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{add-template-f9693cb6a0b7ded8.js → add-template-c0d6ae68ff7979c6.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging-f263e6bacf0f2d19.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{[id]-fe765154315782cf.js → [id]-bbe5854b7d19b7e9.js} +1 -1
- 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-2987edc77388e85a.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]-94e2faa73dd6a3e6.js → [id]-b4c808a8a0287d11.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-630a6a3dd6502ba6.js → add-property-5a701477b006a63b.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{properties-20ca2f963906674b.js → properties-9a1899dfe052023e.js} +1 -1
- 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-a49d0f84cf0cf05e.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-52d030b1db2ca1b9.js → custom-fields-744e7bbc200557e7.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domain-records-fa42d8f18df44927.js → domain-records-c5cd5fb578de9515.js} +1 -1
- 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-6fd6071e2009b8f2.js → email-templates-39c7ae3602ac69b2.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-66c757325cb58467.js → locations-45e33ba111f8f8b0.js} +1 -1
- 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-c6c239996cfa6ae8.js → regulations-94975aeab348528e.js} +1 -1
- 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]-d3ea9034461511cd.js → [id]-82d9af34546adaa2.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{systems-abd68fc5ddde5482.js → systems-c320df35d51dc537.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{taxonomy-16b4d75c49276add.js → taxonomy-181ea5b0ac975239.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/{[id]-78eaf933f755bfe8.js → [id]-622e16a17a11c096.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{user-management-6c9ad62479a7d03e.js → user-management-aa872b21bb835d34.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{webpack-2c7ccac5843c4d8e.js → webpack-4df2ba5ee2d40f0a.js} +1 -1
- fides/ui-build/static/admin/_next/static/css/957d0e4fea846ff0.css +1 -0
- fides/ui-build/static/admin/_next/static/rOPehh5NMs1hjog7nTw1q/_buildManifest.js +1 -0
- fides/ui-build/static/admin/_next/static/rOPehh5NMs1hjog7nTw1q/_ssgManifest.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/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/api/alembic/migrations/versions/1d2f04ac19f2_add_page_column_to_asset_table.py +0 -49
- fides/api/alembic/migrations/versions/7c3fbee90c78_add_user_assigned_data_uses_and_system_.py +0 -54
- fides/api/alembic/migrations/versions/9a1eacd2666b_add_description_column_to_asset.py +0 -25
- fides/api/models/privacy_request/__init__.py +0 -44
- fides/api/models/privacy_request/consent.py +0 -155
- fides/api/models/privacy_request/execution_log.py +0 -108
- fides/api/models/privacy_request/provided_identity.py +0 -149
- fides/api/models/privacy_request/request_task.py +0 -284
- fides/api/models/privacy_request/webhook.py +0 -94
- fides/api/service/storage/s3.py +0 -193
- fides/api/service/storage/util.py +0 -10
- fides/ui-build/static/admin/_next/static/chunks/1100-053fc6b76c65a00f.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/1376-5cea5ef9362215e8.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/2fbcc6de-a6c61724c327e9fa.js +0 -8
- fides/ui-build/static/admin/_next/static/chunks/3320-5dd62a256ecfc9c3.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/355-8a77c9a1cd027f2e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3615-5e2d062d684b8fa1.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4060-8d165e1236ea521a.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4481-142e5a922d5a5548.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4723-0a3c5e2ce143a7d0.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5277-e8a036319456127f.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/570-c99f07161bd339cd.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/605-e692e9cfea2e2cb8.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6060-cb1ab5be7067bf7b.js +0 -4
- fides/ui-build/static/admin/_next/static/chunks/6527-0eed08abe252a918.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/678d4732-50255cc09048e643.js +0 -2
- fides/ui-build/static/admin/_next/static/chunks/6954-3b887fb444f9228c.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7434-e6fc02c2dd852991.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7980-4bd08957448dea32.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7c79804f.7a7112aece470725.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/8702-d1c8296f9f6afc10.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/905-8ab919e7b274ed50.js +0 -8
- fides/ui-build/static/admin/_next/static/chunks/9187-851756440f79cd75.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9282-2bfbdca45e84e810.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9327-2cba327d10586683.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9676.f297a1347ac09c56.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9767-1a23925d2cb27b51.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/e3251fe7-5777b5d778e6fffa.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/main-24f422f93845a596.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/_app-44256886387d7e3e.js +0 -923
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-d258f0c25fa020bf.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure-723cc3d4f5740ea6.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-900004e402c31797.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-5182d356672a3b02.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-7c74373a4d666a3d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-02439d3aeecfb4b9.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-d79551d4c64c398c.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]-7e5df4a0de7540bb.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-803c1b577ab17ae3.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset-fa743ddc7f89d76b.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-a78a73b65929853a.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/fides-js-docs-80b241bf6cddb72e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-d4329043219fed9b.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations-adb6aced3bdb4899.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging-1e60754abec1ee6b.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-f5f7a8069909ef24.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-9f7eaad05e5b9292.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-d85c0d16ba09ba35.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-afedc48ef4e7f858.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-89524101b7279f6e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-24cba38685dc872c.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-a08693d0d1e10bc8.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-151571cff4e85894.js +0 -1
- fides/ui-build/static/admin/_next/static/css/113d823fe71f6af0.css +0 -1
- fides/ui-build/static/admin/_next/static/css/ab65b8cc3144bfc8.css +0 -1
- fides/ui-build/static/admin/_next/static/yhm3LM_VFpK2KeFRFEQyN/_buildManifest.js +0 -1
- fides/ui-build/static/admin/_next/static/yhm3LM_VFpK2KeFRFEQyN/_ssgManifest.js +0 -1
- {ethyca_fides-2.57.1b9.dist-info → ethyca_fides-2.57.1rc0.dist-info}/LICENSE +0 -0
- {ethyca_fides-2.57.1b9.dist-info → ethyca_fides-2.57.1rc0.dist-info}/WHEEL +0 -0
- {ethyca_fides-2.57.1b9.dist-info → ethyca_fides-2.57.1rc0.dist-info}/entry_points.txt +0 -0
- {ethyca_fides-2.57.1b9.dist-info → ethyca_fides-2.57.1rc0.dist-info}/top_level.txt +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/user-management/{new-be690621a944bfe2.js → new-d6717378b42982d5.js} +0 -0
fides/api/alembic/migrations/versions/7c3fbee90c78_add_user_assigned_data_uses_and_system_.py
DELETED
@@ -1,54 +0,0 @@
|
|
1
|
-
"""add user assigned data_uses and system_id columns to stagedresource
|
2
|
-
|
3
|
-
Revision ID: 7c3fbee90c78
|
4
|
-
Revises: 9a1eacd2666b
|
5
|
-
Create Date: 2025-03-04 15:00:23.874270
|
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 = "7c3fbee90c78"
|
15
|
-
down_revision = "9a1eacd2666b"
|
16
|
-
branch_labels = None
|
17
|
-
depends_on = None
|
18
|
-
|
19
|
-
|
20
|
-
def upgrade():
|
21
|
-
# ### commands auto generated by Alembic - please adjust! ###
|
22
|
-
op.add_column(
|
23
|
-
"stagedresource",
|
24
|
-
sa.Column(
|
25
|
-
"user_assigned_system_id", sa.VARCHAR(), autoincrement=False, nullable=True
|
26
|
-
),
|
27
|
-
)
|
28
|
-
op.add_column(
|
29
|
-
"stagedresource",
|
30
|
-
sa.Column(
|
31
|
-
"user_assigned_data_uses",
|
32
|
-
postgresql.ARRAY(sa.VARCHAR()),
|
33
|
-
server_default=sa.text("'{}'::character varying[]"),
|
34
|
-
autoincrement=False,
|
35
|
-
nullable=False,
|
36
|
-
),
|
37
|
-
)
|
38
|
-
# ### end Alembic commands ###
|
39
|
-
op.create_index(
|
40
|
-
"ix_stagedresource_user_assigned_system_id",
|
41
|
-
"stagedresource",
|
42
|
-
["user_assigned_system_id"],
|
43
|
-
unique=False,
|
44
|
-
)
|
45
|
-
|
46
|
-
|
47
|
-
def downgrade():
|
48
|
-
# ### commands auto generated by Alembic - please adjust! ###
|
49
|
-
op.drop_column("stagedresource", "user_assigned_data_uses")
|
50
|
-
op.drop_column("stagedresource", "user_assigned_system_id")
|
51
|
-
# ### end Alembic commands ###
|
52
|
-
op.drop_index(
|
53
|
-
"ix_stagedresource_user_assigned_system_id", table_name="stagedresource"
|
54
|
-
)
|
@@ -1,25 +0,0 @@
|
|
1
|
-
"""add description column to asset
|
2
|
-
|
3
|
-
Revision ID: 9a1eacd2666b
|
4
|
-
Revises: 69ad6d844e21
|
5
|
-
Create Date: 2025-02-28 13:59:26.022822
|
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 = "9a1eacd2666b"
|
15
|
-
down_revision = "69ad6d844e21"
|
16
|
-
branch_labels = None
|
17
|
-
depends_on = None
|
18
|
-
|
19
|
-
|
20
|
-
def upgrade():
|
21
|
-
op.add_column("asset", sa.Column("description", sa.String(), nullable=True))
|
22
|
-
|
23
|
-
|
24
|
-
def downgrade():
|
25
|
-
op.drop_column("asset", "description")
|
@@ -1,44 +0,0 @@
|
|
1
|
-
from .consent import Consent, ConsentRequest
|
2
|
-
from .execution_log import (
|
3
|
-
COMPLETED_EXECUTION_LOG_STATUSES,
|
4
|
-
EXITED_EXECUTION_LOG_STATUSES,
|
5
|
-
ExecutionLog,
|
6
|
-
can_run_checkpoint,
|
7
|
-
)
|
8
|
-
from .privacy_request import (
|
9
|
-
CustomPrivacyRequestField,
|
10
|
-
PrivacyRequest,
|
11
|
-
PrivacyRequestError,
|
12
|
-
PrivacyRequestNotifications,
|
13
|
-
)
|
14
|
-
from .provided_identity import ProvidedIdentity, ProvidedIdentityType
|
15
|
-
from .request_task import RequestTask, TraversalDetails
|
16
|
-
from .webhook import (
|
17
|
-
CallbackType,
|
18
|
-
SecondPartyRequestFormat,
|
19
|
-
generate_request_callback_pre_approval_jwe,
|
20
|
-
generate_request_callback_resume_jwe,
|
21
|
-
generate_request_task_callback_jwe,
|
22
|
-
)
|
23
|
-
|
24
|
-
__all__ = [
|
25
|
-
"CallbackType",
|
26
|
-
"Consent",
|
27
|
-
"ConsentRequest",
|
28
|
-
"COMPLETED_EXECUTION_LOG_STATUSES",
|
29
|
-
"EXITED_EXECUTION_LOG_STATUSES",
|
30
|
-
"CustomPrivacyRequestField",
|
31
|
-
"ExecutionLog",
|
32
|
-
"PrivacyRequest",
|
33
|
-
"PrivacyRequestError",
|
34
|
-
"PrivacyRequestNotifications",
|
35
|
-
"ProvidedIdentity",
|
36
|
-
"ProvidedIdentityType",
|
37
|
-
"RequestTask",
|
38
|
-
"SecondPartyRequestFormat",
|
39
|
-
"TraversalDetails",
|
40
|
-
"can_run_checkpoint",
|
41
|
-
"generate_request_callback_pre_approval_jwe",
|
42
|
-
"generate_request_callback_resume_jwe",
|
43
|
-
"generate_request_task_callback_jwe",
|
44
|
-
]
|
@@ -1,155 +0,0 @@
|
|
1
|
-
# pylint: disable=R0401, C0302
|
2
|
-
|
3
|
-
from __future__ import annotations
|
4
|
-
|
5
|
-
from datetime import datetime
|
6
|
-
from typing import TYPE_CHECKING, Any, Dict, Optional
|
7
|
-
|
8
|
-
from loguru import logger
|
9
|
-
from sqlalchemy import Boolean, Column, DateTime, ForeignKey, String, UniqueConstraint
|
10
|
-
from sqlalchemy.dialects.postgresql import JSONB
|
11
|
-
from sqlalchemy.ext.mutable import MutableList
|
12
|
-
from sqlalchemy.orm import Session, relationship
|
13
|
-
|
14
|
-
from fides.api.db.base_class import Base # type: ignore[attr-defined]
|
15
|
-
from fides.api.db.util import EnumColumn
|
16
|
-
from fides.api.models.privacy_request.privacy_request import CustomPrivacyRequestField
|
17
|
-
from fides.api.models.privacy_request.provided_identity import ProvidedIdentity
|
18
|
-
from fides.api.schemas.privacy_request import PrivacyRequestSource
|
19
|
-
from fides.api.schemas.redis_cache import (
|
20
|
-
CustomPrivacyRequestField as CustomPrivacyRequestFieldSchema,
|
21
|
-
)
|
22
|
-
from fides.api.schemas.redis_cache import IdentityBase
|
23
|
-
from fides.api.util.cache import FidesopsRedis, get_cache
|
24
|
-
from fides.api.util.identity_verification import IdentityVerificationMixin
|
25
|
-
from fides.config import CONFIG
|
26
|
-
|
27
|
-
if TYPE_CHECKING:
|
28
|
-
from fides.api.models.privacy_request.privacy_request import (
|
29
|
-
PrivacyRequest, # type: ignore[attr-defined]
|
30
|
-
)
|
31
|
-
|
32
|
-
|
33
|
-
class Consent(Base):
|
34
|
-
"""The DB ORM model for Consent."""
|
35
|
-
|
36
|
-
provided_identity_id = Column(
|
37
|
-
String,
|
38
|
-
ForeignKey(ProvidedIdentity.id),
|
39
|
-
nullable=False,
|
40
|
-
)
|
41
|
-
data_use = Column(String, nullable=False)
|
42
|
-
data_use_description = Column(String)
|
43
|
-
opt_in = Column(Boolean, nullable=False)
|
44
|
-
has_gpc_flag = Column(
|
45
|
-
Boolean,
|
46
|
-
server_default="f",
|
47
|
-
default=False,
|
48
|
-
nullable=False,
|
49
|
-
)
|
50
|
-
conflicts_with_gpc = Column(
|
51
|
-
Boolean,
|
52
|
-
server_default="f",
|
53
|
-
default=False,
|
54
|
-
nullable=False,
|
55
|
-
)
|
56
|
-
|
57
|
-
provided_identity = relationship(ProvidedIdentity, back_populates="consent")
|
58
|
-
|
59
|
-
UniqueConstraint(provided_identity_id, data_use, name="uix_identity_data_use")
|
60
|
-
|
61
|
-
identity: Optional[IdentityBase] = None
|
62
|
-
|
63
|
-
|
64
|
-
class ConsentRequest(IdentityVerificationMixin, Base):
|
65
|
-
"""Tracks consent requests."""
|
66
|
-
|
67
|
-
property_id = Column(
|
68
|
-
String,
|
69
|
-
nullable=True,
|
70
|
-
)
|
71
|
-
provided_identity_id = Column(
|
72
|
-
String, ForeignKey(ProvidedIdentity.id), nullable=False
|
73
|
-
)
|
74
|
-
provided_identity = relationship(
|
75
|
-
ProvidedIdentity,
|
76
|
-
back_populates="consent_request",
|
77
|
-
)
|
78
|
-
|
79
|
-
custom_fields = relationship(
|
80
|
-
"CustomPrivacyRequestField", back_populates="consent_request"
|
81
|
-
)
|
82
|
-
|
83
|
-
preferences = Column(
|
84
|
-
MutableList.as_mutable(JSONB),
|
85
|
-
nullable=True,
|
86
|
-
)
|
87
|
-
|
88
|
-
identity_verified_at = Column(
|
89
|
-
DateTime(timezone=True),
|
90
|
-
nullable=True,
|
91
|
-
)
|
92
|
-
|
93
|
-
source = Column(EnumColumn(PrivacyRequestSource), nullable=True)
|
94
|
-
|
95
|
-
privacy_request_id = Column(String, ForeignKey("privacyrequest.id"), nullable=True)
|
96
|
-
privacy_request = relationship("PrivacyRequest")
|
97
|
-
|
98
|
-
def get_cached_identity_data(self) -> Dict[str, Any]:
|
99
|
-
"""Retrieves any identity data pertaining to this request from the cache."""
|
100
|
-
prefix = f"id-{self.id}-identity-*"
|
101
|
-
cache: FidesopsRedis = get_cache()
|
102
|
-
keys = cache.keys(prefix)
|
103
|
-
return {key.split("-")[-1]: cache.get(key) for key in keys}
|
104
|
-
|
105
|
-
def verify_identity(
|
106
|
-
self,
|
107
|
-
db: Session,
|
108
|
-
provided_code: Optional[str] = None,
|
109
|
-
) -> None:
|
110
|
-
"""
|
111
|
-
A method to call the internal identity verification method provided by the
|
112
|
-
`IdentityVerificationMixin`.
|
113
|
-
"""
|
114
|
-
self._verify_identity(provided_code=provided_code)
|
115
|
-
self.identity_verified_at = datetime.utcnow()
|
116
|
-
self.save(db)
|
117
|
-
|
118
|
-
def persist_custom_privacy_request_fields(
|
119
|
-
self,
|
120
|
-
db: Session,
|
121
|
-
custom_privacy_request_fields: Optional[
|
122
|
-
Dict[str, CustomPrivacyRequestFieldSchema]
|
123
|
-
],
|
124
|
-
) -> None:
|
125
|
-
if not custom_privacy_request_fields:
|
126
|
-
return
|
127
|
-
|
128
|
-
if CONFIG.execution.allow_custom_privacy_request_field_collection:
|
129
|
-
for key, item in custom_privacy_request_fields.items():
|
130
|
-
if item.value:
|
131
|
-
hashed_value = CustomPrivacyRequestField.hash_value(item.value)
|
132
|
-
CustomPrivacyRequestField.create(
|
133
|
-
db=db,
|
134
|
-
data={
|
135
|
-
"consent_request_id": self.id,
|
136
|
-
"field_name": key,
|
137
|
-
"field_label": item.label,
|
138
|
-
"encrypted_value": {"value": item.value},
|
139
|
-
"hashed_value": hashed_value,
|
140
|
-
},
|
141
|
-
)
|
142
|
-
else:
|
143
|
-
logger.info(
|
144
|
-
"Custom fields provided in consent request {}, but config setting 'CONFIG.execution.allow_custom_privacy_request_field_collection' prevents their storage.",
|
145
|
-
self.id,
|
146
|
-
)
|
147
|
-
|
148
|
-
def get_persisted_custom_privacy_request_fields(self) -> Dict[str, Any]:
|
149
|
-
return {
|
150
|
-
field.field_name: {
|
151
|
-
"label": field.field_label,
|
152
|
-
"value": field.encrypted_value["value"],
|
153
|
-
}
|
154
|
-
for field in self.custom_fields # type: ignore[attr-defined]
|
155
|
-
}
|
@@ -1,108 +0,0 @@
|
|
1
|
-
# pylint: disable=R0401, C0302
|
2
|
-
|
3
|
-
from __future__ import annotations
|
4
|
-
|
5
|
-
from typing import Optional
|
6
|
-
|
7
|
-
from sqlalchemy import Column, DateTime, String
|
8
|
-
from sqlalchemy.dialects.postgresql import JSONB
|
9
|
-
from sqlalchemy.ext.mutable import MutableList
|
10
|
-
from sqlalchemy.sql import text
|
11
|
-
|
12
|
-
from fides.api.db.base_class import Base # type: ignore[attr-defined]
|
13
|
-
from fides.api.db.util import EnumColumn
|
14
|
-
from fides.api.schemas.policy import ActionType, CurrentStep
|
15
|
-
from fides.api.schemas.privacy_request import ExecutionLogStatus
|
16
|
-
|
17
|
-
# Locations from which privacy request execution can be resumed, in order.
|
18
|
-
EXECUTION_CHECKPOINTS = [
|
19
|
-
CurrentStep.pre_webhooks,
|
20
|
-
CurrentStep.access,
|
21
|
-
CurrentStep.upload_access,
|
22
|
-
CurrentStep.erasure,
|
23
|
-
CurrentStep.finalize_erasure,
|
24
|
-
CurrentStep.consent,
|
25
|
-
CurrentStep.finalize_consent,
|
26
|
-
CurrentStep.email_post_send,
|
27
|
-
CurrentStep.post_webhooks,
|
28
|
-
]
|
29
|
-
|
30
|
-
COMPLETED_EXECUTION_LOG_STATUSES = [
|
31
|
-
ExecutionLogStatus.complete,
|
32
|
-
ExecutionLogStatus.skipped,
|
33
|
-
]
|
34
|
-
|
35
|
-
EXITED_EXECUTION_LOG_STATUSES = [
|
36
|
-
ExecutionLogStatus.complete,
|
37
|
-
ExecutionLogStatus.error,
|
38
|
-
ExecutionLogStatus.skipped,
|
39
|
-
]
|
40
|
-
|
41
|
-
|
42
|
-
def can_run_checkpoint(
|
43
|
-
request_checkpoint: CurrentStep, from_checkpoint: Optional[CurrentStep] = None
|
44
|
-
) -> bool:
|
45
|
-
"""Determine whether we should run a specific checkpoint in privacy request execution
|
46
|
-
|
47
|
-
If there's no from_checkpoint specified we should always run the current checkpoint.
|
48
|
-
"""
|
49
|
-
if not from_checkpoint:
|
50
|
-
return True
|
51
|
-
return EXECUTION_CHECKPOINTS.index(
|
52
|
-
request_checkpoint
|
53
|
-
) >= EXECUTION_CHECKPOINTS.index(from_checkpoint)
|
54
|
-
|
55
|
-
|
56
|
-
class ExecutionLog(Base):
|
57
|
-
"""
|
58
|
-
Stores the individual execution logs associated with a PrivacyRequest.
|
59
|
-
|
60
|
-
Execution logs contain information about the individual queries as they progress through the workflow
|
61
|
-
generated by the query builder.
|
62
|
-
"""
|
63
|
-
|
64
|
-
connection_key = Column(String, index=True)
|
65
|
-
# Name of the fides-annotated dataset, for example: my-mongo-db
|
66
|
-
dataset_name = Column(String, index=True)
|
67
|
-
# Name of the particular collection or table affected
|
68
|
-
collection_name = Column(String, index=True)
|
69
|
-
# A JSON Array describing affected fields along with their data categories and paths
|
70
|
-
fields_affected = Column(MutableList.as_mutable(JSONB), nullable=True)
|
71
|
-
# Contains info, warning, or error messages
|
72
|
-
message = Column(String)
|
73
|
-
action_type = Column(
|
74
|
-
EnumColumn(ActionType),
|
75
|
-
index=True,
|
76
|
-
nullable=False,
|
77
|
-
)
|
78
|
-
status = Column(
|
79
|
-
EnumColumn(
|
80
|
-
ExecutionLogStatus,
|
81
|
-
native_enum=True,
|
82
|
-
values_callable=lambda x: [
|
83
|
-
i.value for i in x
|
84
|
-
], # Using ExecutionLogStatus values in database, even though app is using the names.
|
85
|
-
),
|
86
|
-
index=True,
|
87
|
-
nullable=False,
|
88
|
-
)
|
89
|
-
|
90
|
-
privacy_request_id = Column(
|
91
|
-
String,
|
92
|
-
nullable=False,
|
93
|
-
index=True,
|
94
|
-
)
|
95
|
-
|
96
|
-
# Use clock_timestamp() instead of NOW() to get the actual current time at row creation,
|
97
|
-
# regardless of transaction state. This prevents timestamp caching within transactions
|
98
|
-
# and ensures more accurate creation times.
|
99
|
-
# https://www.postgresql.org/docs/current/functions-datetime.html#FUNCTIONS-DATETIME-CURRENT
|
100
|
-
|
101
|
-
created_at = Column(
|
102
|
-
DateTime(timezone=True), server_default=text("clock_timestamp()")
|
103
|
-
)
|
104
|
-
updated_at = Column(
|
105
|
-
DateTime(timezone=True),
|
106
|
-
server_default=text("clock_timestamp()"),
|
107
|
-
onupdate=text("clock_timestamp()"),
|
108
|
-
)
|
@@ -1,149 +0,0 @@
|
|
1
|
-
# pylint: disable=R0401, C0302
|
2
|
-
|
3
|
-
from __future__ import annotations
|
4
|
-
|
5
|
-
from enum import Enum as EnumType
|
6
|
-
from typing import TYPE_CHECKING
|
7
|
-
|
8
|
-
from sqlalchemy import Column, ForeignKey, String
|
9
|
-
from sqlalchemy.ext.mutable import MutableDict
|
10
|
-
from sqlalchemy.orm import relationship
|
11
|
-
from sqlalchemy_utils.types.encrypted.encrypted_type import (
|
12
|
-
AesGcmEngine,
|
13
|
-
StringEncryptedType,
|
14
|
-
)
|
15
|
-
|
16
|
-
from fides.api.cryptography.cryptographic_util import (
|
17
|
-
hash_credential_with_salt,
|
18
|
-
hash_value_with_salt,
|
19
|
-
)
|
20
|
-
from fides.api.cryptography.identity_salt import get_identity_salt
|
21
|
-
from fides.api.db.base_class import Base # type: ignore[attr-defined]
|
22
|
-
from fides.api.db.base_class import JSONTypeOverride
|
23
|
-
from fides.api.migrations.hash_migration_mixin import HashMigrationMixin
|
24
|
-
from fides.api.schemas.redis_cache import Identity, LabeledIdentity, MultiValue
|
25
|
-
from fides.config import CONFIG
|
26
|
-
|
27
|
-
if TYPE_CHECKING:
|
28
|
-
from fides.api.models.privacy_request.consent import Consent, ConsentRequest
|
29
|
-
from fides.api.models.privacy_request.privacy_request import PrivacyRequest
|
30
|
-
|
31
|
-
|
32
|
-
class ProvidedIdentityType(EnumType):
|
33
|
-
"""Enum for privacy request identity types"""
|
34
|
-
|
35
|
-
email = "email"
|
36
|
-
phone_number = "phone_number"
|
37
|
-
ga_client_id = "ga_client_id"
|
38
|
-
ljt_readerID = "ljt_readerID"
|
39
|
-
fides_user_device_id = "fides_user_device_id"
|
40
|
-
external_id = "external_id"
|
41
|
-
|
42
|
-
|
43
|
-
class ProvidedIdentity(HashMigrationMixin, Base): # pylint: disable=R0904
|
44
|
-
"""
|
45
|
-
A table for storing identity fields and values provided at privacy request
|
46
|
-
creation time.
|
47
|
-
"""
|
48
|
-
|
49
|
-
privacy_request_id = Column(
|
50
|
-
String,
|
51
|
-
ForeignKey("privacyrequest.id", ondelete="CASCADE", onupdate="CASCADE"),
|
52
|
-
)
|
53
|
-
privacy_request = relationship(
|
54
|
-
"PrivacyRequest",
|
55
|
-
backref="provided_identities",
|
56
|
-
) # Which privacy request this identity belongs to
|
57
|
-
|
58
|
-
field_name = Column(
|
59
|
-
String,
|
60
|
-
index=False,
|
61
|
-
nullable=False,
|
62
|
-
)
|
63
|
-
field_label = Column(
|
64
|
-
String,
|
65
|
-
index=False,
|
66
|
-
nullable=True,
|
67
|
-
)
|
68
|
-
hashed_value = Column(
|
69
|
-
String,
|
70
|
-
index=True,
|
71
|
-
unique=False,
|
72
|
-
nullable=True,
|
73
|
-
) # This field is used as a blind index for exact match searches
|
74
|
-
encrypted_value = Column(
|
75
|
-
MutableDict.as_mutable(
|
76
|
-
StringEncryptedType(
|
77
|
-
JSONTypeOverride,
|
78
|
-
CONFIG.security.app_encryption_key,
|
79
|
-
AesGcmEngine,
|
80
|
-
"pkcs5",
|
81
|
-
)
|
82
|
-
),
|
83
|
-
nullable=True,
|
84
|
-
) # Type bytea in the db
|
85
|
-
consent = relationship(
|
86
|
-
"Consent", back_populates="provided_identity", cascade="delete, delete-orphan"
|
87
|
-
)
|
88
|
-
consent_request = relationship(
|
89
|
-
"ConsentRequest",
|
90
|
-
back_populates="provided_identity",
|
91
|
-
cascade="delete, delete-orphan",
|
92
|
-
)
|
93
|
-
|
94
|
-
@classmethod
|
95
|
-
def bcrypt_hash_value(
|
96
|
-
cls,
|
97
|
-
value: MultiValue,
|
98
|
-
encoding: str = "UTF-8",
|
99
|
-
) -> str:
|
100
|
-
"""
|
101
|
-
Temporary function used to hash values to the previously used bcrypt hashes.
|
102
|
-
This can be removed once the bcrypt to SHA-256 migration is complete.
|
103
|
-
"""
|
104
|
-
|
105
|
-
SALT = "$2b$12$UErimNtlsE6qgYf2BrI1Du"
|
106
|
-
value_str = str(value)
|
107
|
-
hashed_value = hash_credential_with_salt(
|
108
|
-
value_str.encode(encoding),
|
109
|
-
SALT.encode(encoding),
|
110
|
-
)
|
111
|
-
return hashed_value
|
112
|
-
|
113
|
-
@classmethod
|
114
|
-
def hash_value(
|
115
|
-
cls,
|
116
|
-
value: MultiValue,
|
117
|
-
encoding: str = "UTF-8",
|
118
|
-
) -> str:
|
119
|
-
"""Utility function to hash the value with a generated salt"""
|
120
|
-
SALT = get_identity_salt()
|
121
|
-
value_str = str(value)
|
122
|
-
hashed_value = hash_value_with_salt(
|
123
|
-
value_str.encode(encoding),
|
124
|
-
SALT.encode(encoding),
|
125
|
-
)
|
126
|
-
return hashed_value
|
127
|
-
|
128
|
-
def migrate_hashed_fields(self) -> None:
|
129
|
-
if value := self.encrypted_value.get("value"):
|
130
|
-
self.hashed_value = self.hash_value(value)
|
131
|
-
self.is_hash_migrated = True
|
132
|
-
|
133
|
-
def as_identity_schema(self) -> Identity:
|
134
|
-
"""Creates an Identity schema from a ProvidedIdentity record in the application DB."""
|
135
|
-
|
136
|
-
identity_dict = {}
|
137
|
-
if any(
|
138
|
-
[
|
139
|
-
not self.field_name,
|
140
|
-
not self.encrypted_value,
|
141
|
-
]
|
142
|
-
):
|
143
|
-
return Identity()
|
144
|
-
|
145
|
-
value = self.encrypted_value.get("value") # type:ignore
|
146
|
-
if self.field_label:
|
147
|
-
value = LabeledIdentity(label=self.field_label, value=value)
|
148
|
-
identity_dict[self.field_name] = value
|
149
|
-
return Identity(**identity_dict)
|