ethyca-fides 2.57.1rc0__py2.py3-none-any.whl → 2.57.2b0__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.1rc0.dist-info → ethyca_fides-2.57.2b0.dist-info}/METADATA +1 -1
- {ethyca_fides-2.57.1rc0.dist-info → ethyca_fides-2.57.2b0.dist-info}/RECORD +243 -228
- fides/_version.py +3 -3
- fides/api/alembic/migrations/versions/1d2f04ac19f2_add_page_column_to_asset_table.py +49 -0
- fides/api/alembic/migrations/versions/7c3fbee90c78_add_user_assigned_data_uses_and_system_.py +54 -0
- fides/api/alembic/migrations/versions/9a1eacd2666b_add_description_column_to_asset.py +25 -0
- fides/api/api/v1/endpoints/config_endpoints.py +4 -2
- fides/api/api/v1/endpoints/generic_overrides.py +48 -6
- fides/api/models/asset.py +37 -18
- fides/api/models/attachment.py +11 -13
- fides/api/models/comment.py +17 -17
- fides/api/models/connectionconfig.py +1 -1
- fides/api/models/detection_discovery.py +12 -0
- fides/api/models/location_regulation_selections.py +1 -0
- fides/api/models/privacy_request/__init__.py +44 -0
- fides/api/models/privacy_request/consent.py +155 -0
- fides/api/models/privacy_request/execution_log.py +108 -0
- fides/api/models/{privacy_request.py → privacy_request/privacy_request.py} +82 -691
- fides/api/models/privacy_request/provided_identity.py +149 -0
- fides/api/models/privacy_request/request_task.py +284 -0
- fides/api/models/privacy_request/webhook.py +94 -0
- fides/api/models/sql_models.py +28 -5
- fides/api/oauth/jwt.py +18 -0
- fides/api/oauth/utils.py +11 -11
- fides/api/schemas/dataset.py +22 -2
- fides/api/schemas/saas/strategy_configuration.py +1 -0
- fides/api/service/pagination/pagination_strategy_cursor.py +15 -1
- fides/api/service/pagination/pagination_strategy_link.py +1 -1
- fides/api/service/storage/s3.py +193 -0
- fides/api/service/storage/util.py +10 -0
- fides/api/tasks/storage.py +12 -111
- fides/config/__init__.py +1 -1
- fides/data/language/languages.yml +2 -0
- fides/data/location/locations.yml +244 -1
- fides/ui-build/static/admin/404.html +1 -1
- fides/ui-build/static/admin/_next/static/chunks/1100-053fc6b76c65a00f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{1150-73440d7b319558e8.js → 1150-035a721a04f4451e.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/1376-5cea5ef9362215e8.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{2397-7177ecf4ebe68feb.js → 2397-ee53235fb21b5e97.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{255-bf1797f78249d090.js → 255-7db55b0e3a0f9dea.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/2fbcc6de-a6c61724c327e9fa.js +8 -0
- fides/ui-build/static/admin/_next/static/chunks/{3086-be6b52546c3efc90.js → 3086-b5054ec2c75700b9.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/3320-5dd62a256ecfc9c3.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/355-8a77c9a1cd027f2e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3615-5e2d062d684b8fa1.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{3855-5c7b11871f59e0e0.js → 3855-b6b7865dedd7bc2a.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{3872-f3d5054bdc584eaa.js → 3872-4e053c20d546f027.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/4060-8d165e1236ea521a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/4481-aab99ff80f707473.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/4723-0a3c5e2ce143a7d0.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{5258-3a650be9142cf914.js → 5258-0658dc2274df6832.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/5277-e8a036319456127f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{5480-f5bec5e881f72f8d.js → 5480-f49696df5e8ae500.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{5487-d96e1abc93f92631.js → 5487-3ad50d21cdbc9209.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/570-c99f07161bd339cd.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{5826-16e497af363a0cbc.js → 5826-e5dcb4e68cfe6289.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/5973-52aee296edc44f7e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/605-e692e9cfea2e2cb8.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6060-cb1ab5be7067bf7b.js +4 -0
- fides/ui-build/static/admin/_next/static/chunks/{6315-dee79f6861c94d2d.js → 6315-fa1519cdf080f42d.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{6372-f1b54f3cb4888660.js → 6372-ca9c12ac8902365b.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/6527-0eed08abe252a918.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/678d4732-50255cc09048e643.js +2 -0
- fides/ui-build/static/admin/_next/static/chunks/{6853-cacea421af3bfc26.js → 6853-8941824350c3c1a8.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/6954-3b887fb444f9228c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{7088.0e7c92a7cbb57562.js → 7088.eb76fca286e5f2e6.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/7434-e6fc02c2dd852991.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{7751-25e0c1307988ffd7.js → 7751-a8f31c062d4cb09d.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{79-ba88d0cf4c65aaa2.js → 79-f9b948ebb186900f.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/7980-4bd08957448dea32.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7c79804f.7a7112aece470725.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{8433-969280d321d1c3a2.js → 8433-b3008ecaf9834e7f.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{8499-07507004e8275df2.js → 8499-43606100edf42fdf.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/8702-d1c8296f9f6afc10.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{5908-532dfbc9d930f635.js → 9014-eeae6f581158e645.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{9046-80f1ea44f89fe32c.js → 9046-04bd7becea207cb1.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/905-8ab919e7b274ed50.js +8 -0
- fides/ui-build/static/admin/_next/static/chunks/9187-851756440f79cd75.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9282-2bfbdca45e84e810.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9327-2cba327d10586683.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{9392.97b2e3327dceb7c9.js → 9392.da35a8e778812d91.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/9676.f297a1347ac09c56.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9767-1a23925d2cb27b51.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{9999-f2e40d5b13343220.js → 9999-637e0e5341f15f4a.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/e3251fe7-5777b5d778e6fffa.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/main-24f422f93845a596.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{main-app-2650f704701c6a7b.js → main-app-94a0711202e08b15.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{404-1087258931760074.js → 404-b202c0d8f6fc75c3.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/_app-fa5f8f8b1d6d8c08.js +923 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{manual-d7f60624cbc12217.js → manual-c2705210ce986109.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{multiple-18b0b521255289a3.js → multiple-ba975134a85588f8.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-d258f0c25fa020bf.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/{ant-poc-b3b4d0a98450ffd1.js → ant-poc-b9932971a479f3a7.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-64f83e9a2b777bf3.js → add-vendors-b34e5324461d0c87.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure-723cc3d4f5740ea6.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{[id]-443e6dd191ce5588.js → [id]-cf51752eb0902233.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{new-36162d5bea29dcc2.js → new-be194737b41ccec9.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-experience-35e9df60b21e21a6.js → privacy-experience-c946b33b0322b8ad.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-2d651499c07d12d9.js → [id]-72251b48e2e03a1e.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-36e57d2f2446be82.js → new-9611dd42856d6062.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-notices-da37afbe5ec81339.js → privacy-notices-ea57f9d6ad17e957.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-c57b209feef7c2da.js → properties-e5748812ba055a56.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{reporting-97fea4ac45093cbd.js → reporting-9d2c1f0c9f270d07.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{consent-24bef021ee71e36c.js → consent-39d65f13cc8f1cf8.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/{[resourceUrn]-6cbd79481199812d.js → [resourceUrn]-ac033a16f043e6f9.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/{[projectUrn]-46b9790da2fec05a.js → [projectUrn]-a29850536c85d4b8.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{projects-1f965b9c496071d1.js → projects-c44ce244122e96d5.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/{[resourceUrn]-e7833c1c606081a9.js → [resourceUrn]-71e26d262afcaea5.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{resources-bed368d048ea6883.js → resources-305555b74c357bf2.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-900004e402c31797.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-5182d356672a3b02.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-7c74373a4d666a3d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-02439d3aeecfb4b9.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{activity-1d7936f05d23097f.js → activity-11b3ce9f61d9bfe9.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/detection/{[resourceUrn]-68122dbf449a11b4.js → [resourceUrn]-054ca46a782e99a5.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{detection-0ceaf3c555e84714.js → detection-b75dd3e4306ac18e.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/{[resourceUrn]-22c27fe0f898ad2a.js → [resourceUrn]-1da20aeb6fc995e4.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{discovery-8f2b102e19b0b8f2.js → discovery-cad50b0cc6d1050c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{datamap-9cd0c40bef77b120.js → datamap-8cb714cdd44ac40e.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-d79551d4c64c398c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]-7e5df4a0de7540bb.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/{[datasetId]-e14c1c07658f8a10.js → [datasetId]-6ba18f92ba561114.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-803c1b577ab17ae3.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset-fa743ddc7f89d76b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{[id]-0616437e1a82d3ed.js → [id]-bbe1ca2793798e6b.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{new-f8218440494e8532.js → new-abc17fef69cd951b.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-a78a73b65929853a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/fides-js-docs-80b241bf6cddb72e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/{index-94e6d589c4edf360.js → index-bfaacdb55a5a6c9f.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-d4329043219fed9b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations-adb6aced3bdb4899.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{[id]-6b032de0a6c2c400.js → [id]-ad02e019b2467958.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{add-template-c0d6ae68ff7979c6.js → add-template-f9693cb6a0b7ded8.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging-1e60754abec1ee6b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{[id]-bbe5854b7d19b7e9.js → [id]-fe765154315782cf.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-f5f7a8069909ef24.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-9f7eaad05e5b9292.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{configure-4bad69cd42c9722c.js → configure-2987edc77388e85a.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-d85c0d16ba09ba35.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-b4c808a8a0287d11.js → [id]-94e2faa73dd6a3e6.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-5a701477b006a63b.js → add-property-630a6a3dd6502ba6.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{properties-9a1899dfe052023e.js → properties-20ca2f963906674b.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-afedc48ef4e7f858.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{about-d073be113e9ca7b0.js → about-a49d0f84cf0cf05e.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-89524101b7279f6e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{custom-fields-744e7bbc200557e7.js → custom-fields-52d030b1db2ca1b9.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domain-records-c5cd5fb578de9515.js → domain-records-fa42d8f18df44927.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-24cba38685dc872c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{email-templates-39c7ae3602ac69b2.js → email-templates-6fd6071e2009b8f2.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-45e33ba111f8f8b0.js → locations-66c757325cb58467.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-a08693d0d1e10bc8.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{regulations-94975aeab348528e.js → regulations-c6c239996cfa6ae8.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-151571cff4e85894.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/{[id]-82d9af34546adaa2.js → [id]-d3ea9034461511cd.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{systems-c320df35d51dc537.js → systems-abd68fc5ddde5482.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{taxonomy-181ea5b0ac975239.js → taxonomy-16b4d75c49276add.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/{[id]-622e16a17a11c096.js → [id]-78eaf933f755bfe8.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{user-management-aa872b21bb835d34.js → user-management-6c9ad62479a7d03e.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{webpack-4df2ba5ee2d40f0a.js → webpack-2c7ccac5843c4d8e.js} +1 -1
- fides/ui-build/static/admin/_next/static/css/113d823fe71f6af0.css +1 -0
- fides/ui-build/static/admin/_next/static/css/ab65b8cc3144bfc8.css +1 -0
- fides/ui-build/static/admin/_next/static/sdQ5v46RH3_stSYmL-sZd/_buildManifest.js +1 -0
- fides/ui-build/static/admin/_next/static/sdQ5v46RH3_stSYmL-sZd/_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/ui-build/static/admin/_next/static/chunks/1995-0e4fc4f7b44ed72b.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/2780-8328de94968d05e4.js +0 -4
- fides/ui-build/static/admin/_next/static/chunks/3005-373de16453ed7eea.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3320-87c75df57a47487e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3627-fb83adac32c128e6.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3662-420d9807c30008ab.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3949-9888699e2ac564c4.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3967-845c902667e47c4f.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3e38ba78-4487e45fd4ed2479.js +0 -2
- fides/ui-build/static/admin/_next/static/chunks/4481-ca8d2c75d634b6bc.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4723-81d28e5be5c7b6d7.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4833-a85bd5d25ebc40c4.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5246-9fc6af1a6499e0a4.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5574-a4047e826a8cd4c3.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5834-bd9ed01c4ab2ef5c.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5960-8895f51b30c35798.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5973-67c7562997f7d5cb.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6277-515c922445b8edc5.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6954-6eb480eb132239c3.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7044-9dc90893067f38ae.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7980-2597c279c30fbcda.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7c79804f.26834f883d5ad770.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/8837-cf26e5ca1ae5aaf5.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9282-1a5a2f6f4d9ed586.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9676.f4d5977a5f148797.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9767-4c591bd478c72650.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/main-ce7f38a12ea8c223.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/_app-9ceff88561dc1250.js +0 -909
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-136bcbd20ac59bf5.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure-e11ace4f273ebb47.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-942d68a88b321067.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-00526324583139ab.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-f0ab51d0d5f995de.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-2220c30c3863b5a5.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-ab9bc1a3640547db.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]-17ec8385bb1fa6d4.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-740824dfa6823e26.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset-5541ecd2f62711a5.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-b8eaa9b9d3832b30.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-a6448ce6ba7f0cf5.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations-1a6965d78bfb26b0.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging-f263e6bacf0f2d19.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-b96ee3fea3920fcf.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-1b0f9469cb65abfc.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-eebd2f4ead19cfd6.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-a3fa3ad77730a03b.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-4769f55b138073f7.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-775f55b3f80cd452.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-14def4ca3cc9cda5.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-21f26c0dc4d09e9f.js +0 -1
- fides/ui-build/static/admin/_next/static/css/957d0e4fea846ff0.css +0 -1
- fides/ui-build/static/admin/_next/static/rOPehh5NMs1hjog7nTw1q/_buildManifest.js +0 -1
- fides/ui-build/static/admin/_next/static/rOPehh5NMs1hjog7nTw1q/_ssgManifest.js +0 -1
- {ethyca_fides-2.57.1rc0.dist-info → ethyca_fides-2.57.2b0.dist-info}/LICENSE +0 -0
- {ethyca_fides-2.57.1rc0.dist-info → ethyca_fides-2.57.2b0.dist-info}/WHEEL +0 -0
- {ethyca_fides-2.57.1rc0.dist-info → ethyca_fides-2.57.2b0.dist-info}/entry_points.txt +0 -0
- {ethyca_fides-2.57.1rc0.dist-info → ethyca_fides-2.57.2b0.dist-info}/top_level.txt +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/user-management/{new-d6717378b42982d5.js → new-be690621a944bfe2.js} +0 -0
fides/_version.py
CHANGED
@@ -8,11 +8,11 @@ import json
|
|
8
8
|
|
9
9
|
version_json = '''
|
10
10
|
{
|
11
|
-
"date": "2025-03-
|
11
|
+
"date": "2025-03-25T14:53:33-0600",
|
12
12
|
"dirty": false,
|
13
13
|
"error": null,
|
14
|
-
"full-revisionid": "
|
15
|
-
"version": "2.57.
|
14
|
+
"full-revisionid": "a5c38571d7f8784361b3b70effecc0a61116196c",
|
15
|
+
"version": "2.57.2b0"
|
16
16
|
}
|
17
17
|
''' # END VERSION_JSON
|
18
18
|
|
@@ -0,0 +1,49 @@
|
|
1
|
+
"""
|
2
|
+
- add page column to asset table and
|
3
|
+
- change `Browser Request` values to `Browser request` StagedResource.resource_type column
|
4
|
+
- change `Browser Request` values to `Browser request` Asset.asset_type column
|
5
|
+
|
6
|
+
Revision ID: 1d2f04ac19f2
|
7
|
+
Revises: 7c3fbee90c78
|
8
|
+
Create Date: 2025-03-17 19:36:43.016383
|
9
|
+
|
10
|
+
"""
|
11
|
+
|
12
|
+
import sqlalchemy as sa
|
13
|
+
from alembic import op
|
14
|
+
from sqlalchemy.dialects import postgresql
|
15
|
+
|
16
|
+
# revision identifiers, used by Alembic.
|
17
|
+
revision = "1d2f04ac19f2"
|
18
|
+
down_revision = "7c3fbee90c78"
|
19
|
+
branch_labels = None
|
20
|
+
depends_on = None
|
21
|
+
|
22
|
+
|
23
|
+
def upgrade():
|
24
|
+
# adds page column to asset table
|
25
|
+
op.add_column(
|
26
|
+
"asset",
|
27
|
+
sa.Column("page", sa.ARRAY(sa.String()), server_default="{}", nullable=False),
|
28
|
+
)
|
29
|
+
|
30
|
+
# changes `Browser Request` values to `Browser request` in the two tables where it shows up`
|
31
|
+
op.execute(
|
32
|
+
"UPDATE stagedresource SET resource_type = 'Browser request' WHERE resource_type = 'Browser Request'"
|
33
|
+
)
|
34
|
+
op.execute(
|
35
|
+
"UPDATE asset SET asset_type = 'Browser request' WHERE asset_type = 'Browser Request'"
|
36
|
+
)
|
37
|
+
|
38
|
+
|
39
|
+
def downgrade():
|
40
|
+
# drops page column from asset table
|
41
|
+
op.drop_column("asset", "page")
|
42
|
+
|
43
|
+
# changes `Browser request` values back to `Browser Request` in the two tables where it shows up
|
44
|
+
op.execute(
|
45
|
+
"UPDATE stagedresource SET resource_type = 'Browser Request' WHERE resource_type = 'Browser request'"
|
46
|
+
)
|
47
|
+
op.execute(
|
48
|
+
"UPDATE asset SET asset_type = 'Browser Request' WHERE asset_type = 'Browser request'"
|
49
|
+
)
|
@@ -0,0 +1,54 @@
|
|
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
|
+
)
|
@@ -0,0 +1,25 @@
|
|
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")
|
@@ -58,8 +58,10 @@ def patch_settings(
|
|
58
58
|
Only keys provided will be updated, others will be unaffected,
|
59
59
|
i.e. true PATCH behavior.
|
60
60
|
"""
|
61
|
-
|
62
|
-
|
61
|
+
# We use exclude_unset=True to ensure that only the provided keys are updated.
|
62
|
+
# This is particularly useful for allowing setting a specific key to None, while
|
63
|
+
# keeping the existing values for other keys that aren't provided in the payload data.
|
64
|
+
pruned_data = data.model_dump(exclude_unset=True)
|
63
65
|
logger.info("PATCHing application settings")
|
64
66
|
update_config: ApplicationConfig = ApplicationConfig.update_api_set(db, pruned_data)
|
65
67
|
|
@@ -9,7 +9,7 @@ from fideslang.models import Dataset as FideslangDataset
|
|
9
9
|
from pydantic import ValidationError as PydanticValidationError
|
10
10
|
from sqlalchemy import not_, select
|
11
11
|
from sqlalchemy.ext.asyncio import AsyncSession
|
12
|
-
from sqlalchemy.orm import Session
|
12
|
+
from sqlalchemy.orm import Session, load_only
|
13
13
|
from starlette import status
|
14
14
|
from starlette.status import (
|
15
15
|
HTTP_200_OK,
|
@@ -22,9 +22,10 @@ from fides.api.common_exceptions import KeyOrNameAlreadyExists, ValidationError
|
|
22
22
|
from fides.api.db.base_class import get_key_from_data
|
23
23
|
from fides.api.db.crud import list_resource_query
|
24
24
|
from fides.api.db.ctl_session import get_async_db
|
25
|
-
from fides.api.models.connectionconfig import ConnectionConfig
|
25
|
+
from fides.api.models.connectionconfig import ConnectionConfig, ConnectionType
|
26
26
|
from fides.api.models.datasetconfig import DatasetConfig
|
27
27
|
from fides.api.oauth.utils import verify_oauth_client
|
28
|
+
from fides.api.schemas.dataset import DatasetResponse
|
28
29
|
from fides.api.schemas.filter_params import FilterParams
|
29
30
|
from fides.api.schemas.taxonomy_extensions import (
|
30
31
|
DataCategory,
|
@@ -98,6 +99,11 @@ async def create_dataset(
|
|
98
99
|
else exc.message
|
99
100
|
),
|
100
101
|
)
|
102
|
+
except KeyOrNameAlreadyExists as exc:
|
103
|
+
raise HTTPException(
|
104
|
+
status_code=HTTP_422_UNPROCESSABLE_ENTITY,
|
105
|
+
detail=str(exc),
|
106
|
+
)
|
101
107
|
|
102
108
|
|
103
109
|
@dataset_router.put(
|
@@ -133,7 +139,7 @@ async def update_dataset(
|
|
133
139
|
@dataset_router.get(
|
134
140
|
"/dataset",
|
135
141
|
dependencies=[Security(verify_oauth_client, scopes=[CTL_DATASET_READ])],
|
136
|
-
response_model=Union[Page[
|
142
|
+
response_model=Union[Page[DatasetResponse], List[DatasetResponse]],
|
137
143
|
name="List datasets (optionally paginated)",
|
138
144
|
)
|
139
145
|
async def list_dataset_paginated(
|
@@ -144,7 +150,9 @@ async def list_dataset_paginated(
|
|
144
150
|
data_categories: Optional[List[str]] = Query(None),
|
145
151
|
exclude_saas_datasets: Optional[bool] = Query(False),
|
146
152
|
only_unlinked_datasets: Optional[bool] = Query(False),
|
147
|
-
|
153
|
+
connection_type: Optional[ConnectionType] = Query(None),
|
154
|
+
minimal: Optional[bool] = Query(False),
|
155
|
+
) -> Union[Page[DatasetResponse], List[DatasetResponse]]:
|
148
156
|
"""
|
149
157
|
Get a list of all of the Datasets.
|
150
158
|
If any pagination parameters (size or page) are provided, then the response will be paginated.
|
@@ -156,6 +164,25 @@ async def list_dataset_paginated(
|
|
156
164
|
|
157
165
|
query = select(CtlDataset)
|
158
166
|
|
167
|
+
if minimal:
|
168
|
+
# .options() allows us to modify how the query loads data by configuring the query's loading behavior
|
169
|
+
# load_only() optimizes the query by only loading the specified columns from the database
|
170
|
+
# This reduces memory usage and query time by not loading unnecessary columns
|
171
|
+
# The columns specified below are the minimal set needed for the DatasetResponse model
|
172
|
+
query = query.options( # type: ignore[attr-defined]
|
173
|
+
load_only(
|
174
|
+
CtlDataset.id,
|
175
|
+
CtlDataset.fides_key,
|
176
|
+
CtlDataset.organization_fides_key,
|
177
|
+
CtlDataset.name,
|
178
|
+
CtlDataset.created_at,
|
179
|
+
CtlDataset.updated_at,
|
180
|
+
CtlDataset.meta,
|
181
|
+
CtlDataset.fides_meta,
|
182
|
+
CtlDataset.description,
|
183
|
+
)
|
184
|
+
)
|
185
|
+
|
159
186
|
# Add filters for search and data categories
|
160
187
|
filter_params = FilterParams(search=search, data_categories=data_categories)
|
161
188
|
filtered_query = apply_filters_to_query(
|
@@ -165,6 +192,13 @@ async def list_dataset_paginated(
|
|
165
192
|
filter_params=filter_params,
|
166
193
|
)
|
167
194
|
|
195
|
+
# If applicable, filter by connection type
|
196
|
+
if connection_type:
|
197
|
+
filtered_query = filtered_query.where(
|
198
|
+
CtlDataset.fides_meta["namespace"]["connection_type"].as_string()
|
199
|
+
== connection_type.value
|
200
|
+
)
|
201
|
+
|
168
202
|
# If applicable, keep only unlinked datasets
|
169
203
|
if only_unlinked_datasets:
|
170
204
|
linked_datasets = select([DatasetConfig.ctl_dataset_id])
|
@@ -182,10 +216,18 @@ async def list_dataset_paginated(
|
|
182
216
|
)
|
183
217
|
|
184
218
|
if not page and not size:
|
185
|
-
|
219
|
+
results = await list_resource_query(db, filtered_query, CtlDataset)
|
220
|
+
response = [
|
221
|
+
DatasetResponse.model_validate(result.__dict__) for result in results
|
222
|
+
]
|
223
|
+
return response
|
186
224
|
|
187
225
|
pagination_params = Params(page=page or 1, size=size or 50)
|
188
|
-
|
226
|
+
results = await async_paginate(db, filtered_query, pagination_params)
|
227
|
+
results.items = [ # type: ignore[attr-defined]
|
228
|
+
DatasetResponse.model_validate(result.__dict__) for result in results.items # type: ignore[attr-defined]
|
229
|
+
]
|
230
|
+
return results
|
189
231
|
|
190
232
|
|
191
233
|
@dataset_router.get(
|
fides/api/models/asset.py
CHANGED
@@ -38,6 +38,8 @@ class Asset(Base):
|
|
38
38
|
locations = Column(ARRAY(String), server_default="{}", nullable=False)
|
39
39
|
with_consent = Column(BOOLEAN, default=False, nullable=False)
|
40
40
|
data_uses = Column(ARRAY(String), server_default="{}", nullable=False)
|
41
|
+
description = Column(String, nullable=True)
|
42
|
+
page = Column(ARRAY(String), server_default="{}", nullable=False)
|
41
43
|
|
42
44
|
# generic object to store additional attributes, specific to asset type
|
43
45
|
meta = Column(
|
@@ -93,9 +95,11 @@ class Asset(Base):
|
|
93
95
|
- asset_type
|
94
96
|
- domain
|
95
97
|
- base_url (if applicable)
|
96
|
-
- system_id
|
98
|
+
- system_id
|
99
|
+
|
100
|
+
If you provide the ID of an existing asset it will be updated with any provided data
|
97
101
|
"""
|
98
|
-
if (
|
102
|
+
if "id" not in data and (
|
99
103
|
"name" not in data
|
100
104
|
or "asset_type" not in data
|
101
105
|
or "domain" not in data
|
@@ -105,25 +109,40 @@ class Asset(Base):
|
|
105
109
|
"name, asset_type, domain, and system_id are required fields on assets"
|
106
110
|
)
|
107
111
|
|
108
|
-
result = await async_session.execute(
|
109
|
-
select(cls).where( # type: ignore[arg-type, call-arg]
|
110
|
-
cls.name == data["name"],
|
111
|
-
cls.asset_type == data["asset_type"],
|
112
|
-
cls.domain == data["domain"],
|
113
|
-
cls.system_id == data["system_id"],
|
114
|
-
cls.base_url == data.get("base_url"),
|
115
|
-
)
|
116
|
-
)
|
117
|
-
existing_record = result.scalars().first()
|
118
112
|
record_id: str
|
119
|
-
|
120
|
-
|
121
|
-
|
113
|
+
|
114
|
+
if "id" in data:
|
115
|
+
result = await async_session.execute(
|
116
|
+
select(cls).where(cls.id == data["id"]) # type: ignore[arg-type]
|
122
117
|
)
|
123
|
-
|
118
|
+
existing_record = result.scalars().first()
|
119
|
+
if existing_record:
|
120
|
+
await async_session.execute(
|
121
|
+
update(cls).where(cls.id == existing_record.id).values(data) # type: ignore[arg-type]
|
122
|
+
)
|
123
|
+
record_id = existing_record.id
|
124
|
+
else:
|
125
|
+
raise ValueError(f"Asset with id {data['id']} does not exist")
|
124
126
|
else:
|
125
|
-
result = await async_session.execute(
|
126
|
-
|
127
|
+
result = await async_session.execute(
|
128
|
+
select(cls).where( # type: ignore[arg-type, call-arg]
|
129
|
+
cls.name == data["name"],
|
130
|
+
cls.asset_type == data["asset_type"],
|
131
|
+
cls.domain == data["domain"],
|
132
|
+
cls.base_url == data.get("base_url"),
|
133
|
+
cls.system_id == data["system_id"],
|
134
|
+
)
|
135
|
+
)
|
136
|
+
|
137
|
+
existing_record = result.scalars().first()
|
138
|
+
if existing_record:
|
139
|
+
await async_session.execute(
|
140
|
+
update(cls).where(cls.id == existing_record.id).values(data) # type: ignore[arg-type]
|
141
|
+
)
|
142
|
+
record_id = existing_record.id
|
143
|
+
else:
|
144
|
+
result = await async_session.execute(insert(cls).values(data)) # type: ignore[arg-type]
|
145
|
+
record_id = result.inserted_primary_key.id
|
127
146
|
|
128
147
|
result = await async_session.execute(select(cls).where(cls.id == record_id)) # type: ignore[arg-type]
|
129
148
|
return result.scalars().first()
|
fides/api/models/attachment.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
import os
|
2
2
|
from enum import Enum as EnumType
|
3
|
-
from typing import Any, Optional
|
3
|
+
from typing import IO, Any, Optional
|
4
4
|
|
5
5
|
from loguru import logger as log
|
6
6
|
from sqlalchemy import Column
|
@@ -13,12 +13,14 @@ from fides.api.db.base_class import Base
|
|
13
13
|
from fides.api.models.fides_user import FidesUser # pylint: disable=unused-import
|
14
14
|
from fides.api.models.storage import StorageConfig # pylint: disable=unused-import
|
15
15
|
from fides.api.schemas.storage.storage import StorageDetails, StorageType
|
16
|
-
from fides.api.
|
17
|
-
LOCAL_FIDES_UPLOAD_DIRECTORY,
|
16
|
+
from fides.api.service.storage.s3 import (
|
18
17
|
generic_delete_from_s3,
|
19
18
|
generic_retrieve_from_s3,
|
19
|
+
generic_upload_to_s3,
|
20
|
+
)
|
21
|
+
from fides.api.service.storage.util import (
|
22
|
+
LOCAL_FIDES_UPLOAD_DIRECTORY,
|
20
23
|
get_local_filename,
|
21
|
-
upload_to_s3,
|
22
24
|
)
|
23
25
|
|
24
26
|
|
@@ -91,7 +93,6 @@ class Attachment(Base):
|
|
91
93
|
|
92
94
|
user = relationship(
|
93
95
|
"FidesUser",
|
94
|
-
backref="attachments",
|
95
96
|
lazy="selectin",
|
96
97
|
uselist=False,
|
97
98
|
)
|
@@ -109,18 +110,15 @@ class Attachment(Base):
|
|
109
110
|
uselist=False,
|
110
111
|
)
|
111
112
|
|
112
|
-
def upload(self, attachment: bytes) -> None:
|
113
|
+
def upload(self, attachment: IO[bytes]) -> None:
|
113
114
|
"""Uploads an attachment to S3 or local storage."""
|
114
115
|
if self.config.type == StorageType.s3:
|
115
116
|
bucket_name = f"{self.config.details[StorageDetails.BUCKET.value]}"
|
116
117
|
auth_method = self.config.details[StorageDetails.AUTH_METHOD.value]
|
117
|
-
|
118
|
+
generic_upload_to_s3(
|
118
119
|
storage_secrets=self.config.secrets,
|
119
|
-
data={},
|
120
120
|
bucket_name=bucket_name,
|
121
121
|
file_key=self.id,
|
122
|
-
resp_format=self.config.format,
|
123
|
-
privacy_request=None,
|
124
122
|
document=attachment,
|
125
123
|
auth_method=auth_method,
|
126
124
|
)
|
@@ -130,7 +128,7 @@ class Attachment(Base):
|
|
130
128
|
if self.config.type == StorageType.local:
|
131
129
|
filename = get_local_filename(self.id)
|
132
130
|
with open(filename, "wb") as file:
|
133
|
-
file.write(attachment)
|
131
|
+
file.write(attachment.read())
|
134
132
|
return
|
135
133
|
|
136
134
|
raise ValueError(f"Unsupported storage type: {self.config.type}")
|
@@ -150,7 +148,7 @@ class Attachment(Base):
|
|
150
148
|
if self.config.type == StorageType.local:
|
151
149
|
filename = f"{LOCAL_FIDES_UPLOAD_DIRECTORY}/{self.id}"
|
152
150
|
with open(filename, "rb") as file:
|
153
|
-
return file.read()
|
151
|
+
return file.read(), filename
|
154
152
|
|
155
153
|
raise ValueError(f"Unsupported storage type: {self.config.type}")
|
156
154
|
|
@@ -180,7 +178,7 @@ class Attachment(Base):
|
|
180
178
|
db: Session,
|
181
179
|
*,
|
182
180
|
data: dict[str, Any],
|
183
|
-
attachment_file: bytes,
|
181
|
+
attachment_file: IO[bytes],
|
184
182
|
check_name: bool = False,
|
185
183
|
) -> "Attachment":
|
186
184
|
"""Creates a new attachment record in the database and uploads the attachment to S3."""
|
fides/api/models/comment.py
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
from enum import Enum as EnumType
|
2
|
-
from typing import Any
|
2
|
+
from typing import TYPE_CHECKING, Any
|
3
3
|
|
4
4
|
from sqlalchemy import Column
|
5
5
|
from sqlalchemy import Enum as EnumColumn
|
@@ -8,8 +8,10 @@ from sqlalchemy.ext.declarative import declared_attr
|
|
8
8
|
from sqlalchemy.orm import Session, relationship
|
9
9
|
|
10
10
|
from fides.api.db.base_class import Base
|
11
|
-
|
12
|
-
|
11
|
+
|
12
|
+
if TYPE_CHECKING:
|
13
|
+
from fides.api.models.attachment import Attachment
|
14
|
+
from fides.api.models.fides_user import FidesUser
|
13
15
|
|
14
16
|
|
15
17
|
class CommentType(str, EnumType):
|
@@ -78,7 +80,6 @@ class Comment(Base):
|
|
78
80
|
|
79
81
|
user = relationship(
|
80
82
|
"FidesUser",
|
81
|
-
backref="comments",
|
82
83
|
lazy="selectin",
|
83
84
|
uselist=False,
|
84
85
|
)
|
@@ -90,20 +91,19 @@ class Comment(Base):
|
|
90
91
|
uselist=True,
|
91
92
|
)
|
92
93
|
|
93
|
-
|
94
|
-
""
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
)
|
102
|
-
return db.execute(stmt).scalars().all()
|
94
|
+
attachments = relationship(
|
95
|
+
"Attachment",
|
96
|
+
secondary="attachment_reference",
|
97
|
+
primaryjoin="Comment.id == AttachmentReference.reference_id",
|
98
|
+
secondaryjoin="Attachment.id == AttachmentReference.attachment_id",
|
99
|
+
order_by="Attachment.created_at",
|
100
|
+
uselist=True,
|
101
|
+
)
|
103
102
|
|
104
103
|
def delete(self, db: Session) -> None:
|
105
104
|
"""Delete the comment and all associated references."""
|
106
|
-
|
107
|
-
for attachment in attachments:
|
108
|
-
attachment.
|
105
|
+
# Delete the comment
|
106
|
+
for attachment in self.attachments:
|
107
|
+
if len(attachment.references) == 1:
|
108
|
+
attachment.delete(db)
|
109
109
|
db.delete(self)
|
@@ -186,7 +186,7 @@ class ConnectionConfig(Base):
|
|
186
186
|
)
|
187
187
|
),
|
188
188
|
nullable=True,
|
189
|
-
) # Type
|
189
|
+
) # Type bytes in the db
|
190
190
|
last_test_timestamp = Column(DateTime(timezone=True))
|
191
191
|
last_test_succeeded = Column(Boolean)
|
192
192
|
disabled = Column(Boolean, server_default="f", default=False)
|
@@ -277,6 +277,18 @@ class StagedResource(Base):
|
|
277
277
|
server_default="{}",
|
278
278
|
default=dict,
|
279
279
|
)
|
280
|
+
user_assigned_data_uses = Column(
|
281
|
+
ARRAY(String),
|
282
|
+
nullable=False,
|
283
|
+
server_default="{}",
|
284
|
+
default=dict,
|
285
|
+
)
|
286
|
+
user_assigned_system_id = Column(
|
287
|
+
String,
|
288
|
+
ForeignKey(System.id_field_path),
|
289
|
+
nullable=True,
|
290
|
+
index=True,
|
291
|
+
)
|
280
292
|
|
281
293
|
# pointers to child and parent URNs
|
282
294
|
children = Column(
|
@@ -0,0 +1,44 @@
|
|
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
|
+
]
|