ethyca-fides 2.68.1b1__py2.py3-none-any.whl → 2.68.1b3__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of ethyca-fides might be problematic. Click here for more details.
- {ethyca_fides-2.68.1b1.dist-info → ethyca_fides-2.68.1b3.dist-info}/METADATA +3 -1
- {ethyca_fides-2.68.1b1.dist-info → ethyca_fides-2.68.1b3.dist-info}/RECORD +247 -224
- fides/_version.py +3 -3
- fides/api/alembic/migrations/versions/3baf42d251a6_add_generic_taxonomy_models.py +239 -0
- fides/api/alembic/migrations/versions/90502bcda282_update_request_tasks_add_polling_async.py +35 -0
- fides/api/api/v1/endpoints/generic_overrides.py +64 -167
- fides/api/api/v1/endpoints/privacy_request_endpoints.py +1 -1
- fides/api/common_exceptions.py +12 -3
- fides/api/db/base.py +6 -0
- fides/api/models/detection_discovery/core.py +6 -0
- fides/api/models/privacy_request/request_task.py +25 -0
- fides/api/models/taxonomy.py +275 -0
- fides/api/schemas/privacy_center_config.py +48 -19
- fides/api/schemas/storage/storage.py +2 -0
- fides/api/service/async_dsr/__init__.py +0 -0
- fides/api/service/async_dsr/async_dsr_service.py +75 -0
- fides/api/service/connectors/saas_connector.py +5 -6
- fides/api/service/deps.py +5 -0
- fides/api/service/privacy_request/dsr_package/dsr_report_builder.py +6 -4
- fides/api/service/privacy_request/request_service.py +56 -3
- fides/api/service/storage/storage_uploader_service.py +80 -5
- fides/api/service/storage/streaming/__init__.py +42 -0
- fides/api/service/storage/streaming/base_storage_client.py +61 -0
- fides/api/service/storage/streaming/dsr_storage.py +98 -0
- fides/api/service/storage/streaming/retry.py +282 -0
- fides/api/service/storage/streaming/s3/__init__.py +5 -0
- fides/api/service/storage/streaming/s3/s3_storage_client.py +113 -0
- fides/api/service/storage/streaming/s3/streaming_s3.py +196 -0
- fides/api/service/storage/streaming/schemas.py +173 -0
- fides/api/service/storage/streaming/smart_open_client.py +265 -0
- fides/api/service/storage/streaming/smart_open_streaming_storage.py +998 -0
- fides/api/service/storage/streaming/storage_client_factory.py +60 -0
- fides/api/task/graph_task.py +4 -4
- fides/api/task/manual/manual_task_graph_task.py +14 -4
- fides/api/util/connection_type.py +68 -33
- fides/config/execution_settings.py +4 -0
- fides/data/sample_project/docker-compose.yml +3 -3
- fides/service/privacy_request/privacy_request_service.py +1 -9
- fides/service/taxonomy/__init__.py +0 -0
- fides/service/taxonomy/handlers/__init__.py +11 -0
- fides/service/taxonomy/handlers/base.py +42 -0
- fides/service/taxonomy/handlers/legacy_handler.py +95 -0
- fides/service/taxonomy/taxonomy_service.py +261 -0
- fides/service/taxonomy/utils.py +160 -0
- fides/ui-build/static/admin/404.html +1 -1
- fides/ui-build/static/admin/_next/static/_BLI2ArqQzY5XnXbrcxa2/_buildManifest.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/1099-7b2085a3931da9e4.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/1138-0d846ffef62c580f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/1345-ab756811e19ff4fc.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{1817-c90365325f8a3d75.js → 1817-fd21f1f5ef0faffa.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{1975.e5cc7a1ccd477671.js → 1975.16126463309143e3.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{2921-46f9465c2852a46b.js → 2921-0e5cc63a82e31830.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/3620-6cceae71bae5b531.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3729-7d2d52400f1f7413.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3855-64541570e2f838fb.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3872-7a18d18a5e287e4e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{3923-a33633feba5e655e.js → 3923-5c87b3d7f1626678.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{401-741bb31b586b7c96.js → 401-3902e3e98790d401.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{4121-94354b50a41f8497.js → 4121-64ef70ef906bbdd0.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/431-86ad2beeb93c95c9.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/4608-70521532195124de.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/4786-53ef1662f2d0d98c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/4808-8713433c84a62efe.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/4844-351f99b6644b654e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5258-c6f96dc740eb5fb1.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5487-338800277d36b8d7.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/549-e6453a3526023e85.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/602-80d113e801d7407d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{6084-02abe12327fc3dbc.js → 6084-da63f20d9416a982.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{6853-270261ef5537a106.js → 6853-1d947b75eb07188c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/6954-24f9a4f27d67b732.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7476-a0dd03bfccf60d0c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7630-9fbe06cfb98266fe.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{787-5ba991cad1f7664a.js → 787-3dd31844cf7fec55.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/79-dcd20e8b09501c17.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/796-8773e04b64ce2260.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/8002-dcd02da6e5649a1c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9046-57eab238570b8bf4.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9676.bf0a8a6ff6dfd2af.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{9826-8c81c97a72510fcf.js → 9826-756c958aecab59a2.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/9951-cdf73904a3adb27b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/{404-9174cdb70126c2c5.js → 404-dd625a559ada46ca.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{_app-65723cd4b8fc36ac.js → _app-b6b09b2878b77b21.js} +136 -135
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{manual-621416493c89ef01.js → manual-92cf5e313be1f9e2.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{multiple-0b9908c3e1dfe49e.js → multiple-d6c525ee731a2993.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-5664a3ea796e5ffb.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-5bb1b31ae8752250.js → add-vendors-78f13de90111fd80.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure-0fc678f3d6d2fcec.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{[id]-4e4d9426743b5cb4.js → [id]-126db59dc25ca326.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-experience-d72460348fadcab8.js → privacy-experience-289605267d6cce7e.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-3e7ddc252da00c98.js → [id]-e9fd9b28ac9705af.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-35a7c305beee9428.js → new-28c003b6043bd16c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-c643eff04525298e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-ab96939421639153.js → properties-3ef5d01779a26455.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-baa4a2f8f08ac224.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/{consent-13240e3ca77acfeb.js → consent-8d4be9e7ec7d2a35.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/{[resourceUrn]-aad6047a4604b945.js → [resourceUrn]-f27ec4578c674181.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/{[projectUrn]-bd37b407c80c6986.js → [projectUrn]-27b6c255bd9e73b6.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects-0f66dac32040519c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/{[resourceUrn]-b6b98cea25dd94fa.js → [resourceUrn]-3b938562df81c4b0.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-ebf5e7fa4e2ffb49.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-b27c660039d951c9.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-8ce5d24af470888e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-8e35e33928abbcdc.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-21c141279e66237a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/detection/{[resourceUrn]-31e6c54794a9883e.js → [resourceUrn]-3bc6a207693fd175.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{detection-2822a423a7ad0550.js → detection-da16e73df395ad1d.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/{[resourceUrn]-f98dd251babb7e28.js → [resourceUrn]-04b242632a114405.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{discovery-56eb4c014f0d96a3.js → discovery-900fe50183a40d72.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{datamap-8f88dc31c5144ea8.js → datamap-4f1f7c3a9531a8f4.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-343294dcb10d9532.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]-1c097a0809fa5b6f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]-b47fa2498b534719.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-a31f881cab25704a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset-858c59c9e67e318d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{[id]-67a7fe58b96ea739.js → [id]-16c28d272225afb6.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{new-90a8df230cb89877.js → new-68f502d8b0b5792c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-1eb9acb17b133fd1.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/{index-876bfd7210040cec.js → index-fec557d99211f577.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations/{[id]-766e57bcf38b5b1e.js → [id]-e613543818d6cbd2.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations-8069f7c33695fd45.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{[id]-6e796c3fe632280b.js → [id]-4a08ca7762a19700.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{add-template-fa0f3841c5bdfdeb.js → add-template-343a965dcdb3d11e.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging-3ade4c54b1c8a11e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/ant-components-9103bfb854f71410.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{AntForm-11503454a62d8d7b.js → AntForm-3b97029bd4d3c3ea.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikAntFormItem-a504941807bdb7f1.js → FormikAntFormItem-9d9beb8f0d8a278c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikControlled-0119403c8ff97f83.js → FormikControlled-84a4d8fc60f839ed.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikField-94f6d57d6c94ddf7.js → FormikField-1fccf542ab2e33bf.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/{forms-ed1a3ae09d72df89.js → forms-aa75263ae1ba67bb.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/table-migration-db334a1cbb102255.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-11c1e4545c8f528c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-192a986f61c23268.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-9216ac993d71387e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure-e55ec84d5380401d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-48f447b31c786b80.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-41976b28503623cd.js → [id]-a74b51b704b80cb2.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-cb438d8f5ec6007a.js → add-property-8d23f0c55ff6510a.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{properties-b6db7036993709b3.js → properties-77acceac4f99e7af.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/reporting/{datamap-4bc3e281409265cc.js → datamap-e60d398e255f4e00.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/about/alpha-6aad3f563ed03b3f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/about-c1b8f3606d160bb1.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-d9f7f78810d58d08.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-ee2c7dde99b1dafb.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-a4dad8ca9de2d07b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domain-records-386368bf7cb31771.js → domain-records-31c270d228e00581.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-996b3f250dd3ea1f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-ee94981326ddcbf4.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-b41fb5ad277088ab.js → locations-0b831c58966782b8.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-94271ba4a224a353.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{regulations-a94dfeea43fbca7d.js → regulations-41b8136e50320fd3.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-52b45569cbc82e60.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/{[id]-18b316e2dad73731.js → [id]-36d74e93e54aabaf.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems-24dfc8e2279ced2e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-d9675cf5e6083b27.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/{[id]-3237881945acc0ee.js → [id]-866826d7959df487.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{user-management-a3a50d9d79066935.js → user-management-e63b61a8f99ccd57.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{webpack-69658aeaf6155d89.js → webpack-6d0a487039bcf30c.js} +1 -1
- fides/ui-build/static/admin/_next/static/css/92441453b27e9c34.css +1 -0
- fides/ui-build/static/admin/add-systems/manual.html +1 -1
- fides/ui-build/static/admin/add-systems/multiple.html +1 -1
- fides/ui-build/static/admin/add-systems.html +1 -1
- fides/ui-build/static/admin/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-preview.js +1 -1
- fides/ui-build/static/admin/lib/fides-tcf.js +2 -2
- fides/ui-build/static/admin/lib/fides.js +1 -1
- fides/ui-build/static/admin/login/[provider].html +1 -1
- fides/ui-build/static/admin/login.html +1 -1
- fides/ui-build/static/admin/messaging/[id].html +1 -1
- fides/ui-build/static/admin/messaging/add-template.html +1 -1
- fides/ui-build/static/admin/messaging.html +1 -1
- fides/ui-build/static/admin/poc/ant-components.html +1 -1
- fides/ui-build/static/admin/poc/form-experiments/AntForm.html +1 -1
- fides/ui-build/static/admin/poc/form-experiments/FormikAntFormItem.html +1 -1
- fides/ui-build/static/admin/poc/form-experiments/FormikControlled.html +1 -1
- fides/ui-build/static/admin/poc/form-experiments/FormikField.html +1 -1
- fides/ui-build/static/admin/poc/form-experiments/FormikSpreadField.html +1 -1
- fides/ui-build/static/admin/poc/forms.html +1 -1
- fides/ui-build/static/admin/poc/table-migration.html +1 -1
- fides/ui-build/static/admin/privacy-requests/[id].html +1 -1
- fides/ui-build/static/admin/privacy-requests/configure/messaging.html +1 -1
- fides/ui-build/static/admin/privacy-requests/configure/storage.html +1 -1
- fides/ui-build/static/admin/privacy-requests/configure.html +1 -1
- fides/ui-build/static/admin/privacy-requests.html +1 -1
- fides/ui-build/static/admin/properties/[id].html +1 -1
- fides/ui-build/static/admin/properties/add-property.html +1 -1
- fides/ui-build/static/admin/properties.html +1 -1
- fides/ui-build/static/admin/reporting/datamap.html +1 -1
- fides/ui-build/static/admin/settings/about/alpha.html +1 -1
- fides/ui-build/static/admin/settings/about.html +1 -1
- fides/ui-build/static/admin/settings/consent/[configuration_id]/[purpose_id].html +1 -1
- fides/ui-build/static/admin/settings/consent.html +1 -1
- fides/ui-build/static/admin/settings/custom-fields.html +1 -1
- fides/ui-build/static/admin/settings/domain-records.html +1 -1
- fides/ui-build/static/admin/settings/domains.html +1 -1
- fides/ui-build/static/admin/settings/email-templates.html +1 -1
- fides/ui-build/static/admin/settings/locations.html +1 -1
- fides/ui-build/static/admin/settings/organization.html +1 -1
- fides/ui-build/static/admin/settings/regulations.html +1 -1
- fides/ui-build/static/admin/systems/configure/[id]/test-datasets.html +1 -1
- fides/ui-build/static/admin/systems/configure/[id].html +1 -1
- fides/ui-build/static/admin/systems.html +1 -1
- fides/ui-build/static/admin/taxonomy.html +1 -1
- fides/ui-build/static/admin/user-management/new.html +1 -1
- fides/ui-build/static/admin/user-management/profile/[id].html +1 -1
- fides/ui-build/static/admin/user-management.html +1 -1
- fides/ui-build/static/admin/_next/static/chunks/203-0c6cadcda98bdd33.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3450-9314e1b15df8a8da.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3855-4267fd8193e7f525.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3872-ac5feefd40b61ae3.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/409-5bc4369b80a8c11d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4230-1ebc8c0ab293a077.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/431-a34d7ceff17c2169.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4608-557fb24665b2e4bf.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5309-ffdec884eec79d29.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5574-831167a8da90e2e6.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6662-499c189f932a35aa.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6780-7d28e030f6516e5d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6882-7cc1d14e27a80c10.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6954-7784e8d5ad6b8110.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7476-4de465016d3433b4.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7630-2a5c57787632693d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7725-c79513b04113112b.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/79-98cfab20bb831137.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/796-0b768155bf20505f.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/8735-f84afcc50885883c.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9046-97a972cc8a8ed24d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9226-318dadf1c050ecda.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9676.9e6828b42ef05e06.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9951-4df2b67e0def5500.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-18e96ce81dab51a4.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure-54d7c7310763c66d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-6bc3b73a21576869.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-fe3d6887fecf0f86.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects-e4770acf7044e2f5.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-0db635c3483c9da8.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-0c0e0a7798345541.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-3c56e5fe072a44c6.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-53a763e49ce34a74.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-6a90131dcecd694c.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-145fe9e4cfcb231d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]-8a1e5d140785c1e9.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]-227b5db4b472a6a7.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-8401f17fe5d9a1dc.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset-7d77b3ad069be268.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-cfb25b02abb8da71.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations-3fdc55d4c129e618.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging-8f9c006b6166f002.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/ant-components-6ba7ae4f26c06cb0.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/table-migration-e8db3ad525e7ddbd.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-c14dd24592369467.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-100d7d03930629a8.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-6f8d1b3ec83cfcf0.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure-3ce15577435d47cb.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-f43a988542813110.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/about/alpha-1ea40fcd6b4268bf.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/about-65c7600fadc6e55a.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-33dab986141b3663.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-1195042727c399ed.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-71b98858ecb4e097.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-cf427e04f862b5d2.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-eabeeec5bf2773c6.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-ee56698ae3a6a78b.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-0e2e98cc38ee5499.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems-c32589c86081b750.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-a8f09bf8f3204ca7.js +0 -1
- fides/ui-build/static/admin/_next/static/css/e1628f15dd5f019b.css +0 -1
- fides/ui-build/static/admin/_next/static/tzF4yti8NslASlGnxnZ8m/_buildManifest.js +0 -1
- {ethyca_fides-2.68.1b1.dist-info → ethyca_fides-2.68.1b3.dist-info}/WHEEL +0 -0
- {ethyca_fides-2.68.1b1.dist-info → ethyca_fides-2.68.1b3.dist-info}/entry_points.txt +0 -0
- {ethyca_fides-2.68.1b1.dist-info → ethyca_fides-2.68.1b3.dist-info}/licenses/LICENSE +0 -0
- {ethyca_fides-2.68.1b1.dist-info → ethyca_fides-2.68.1b3.dist-info}/top_level.txt +0 -0
- /fides/ui-build/static/admin/_next/static/{tzF4yti8NslASlGnxnZ8m → _BLI2ArqQzY5XnXbrcxa2}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Service layer for taxonomy management (data_categories, data_uses, data_subjects).
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from typing import Any, Dict, List, Literal, Optional, Union, overload
|
|
6
|
+
|
|
7
|
+
from sqlalchemy import or_
|
|
8
|
+
from sqlalchemy.orm import Session
|
|
9
|
+
|
|
10
|
+
from fides.api.models.sql_models import ( # type:ignore[attr-defined]
|
|
11
|
+
DataCategory,
|
|
12
|
+
DataSubject,
|
|
13
|
+
DataUse,
|
|
14
|
+
)
|
|
15
|
+
from fides.api.models.taxonomy import TaxonomyUsage
|
|
16
|
+
|
|
17
|
+
from .handlers import LegacyTaxonomyHandler, TaxonomyHandler
|
|
18
|
+
from .utils import (
|
|
19
|
+
activate_taxonomy_parents,
|
|
20
|
+
check_for_taxonomy_reactivation,
|
|
21
|
+
deactivate_taxonomy_node_and_descendants,
|
|
22
|
+
generate_taxonomy_fides_key,
|
|
23
|
+
handle_taxonomy_reactivation,
|
|
24
|
+
validate_default_taxonomy_restrictions,
|
|
25
|
+
validate_parent_key_exists,
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class TaxonomyService:
|
|
30
|
+
"""
|
|
31
|
+
Taxonomy service for managing Fides taxonomy elements.
|
|
32
|
+
Provides CRUD operations for data_categories, data_uses, and data_subjects.
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
# Most of the main methods in this service have a type-specific overload to help with type hints
|
|
36
|
+
|
|
37
|
+
def __init__(self, db: Session):
|
|
38
|
+
self.db = db
|
|
39
|
+
|
|
40
|
+
@overload
|
|
41
|
+
def get_elements(
|
|
42
|
+
self,
|
|
43
|
+
taxonomy_type: Literal["data_categories"],
|
|
44
|
+
active_only: bool = True,
|
|
45
|
+
parent_key: Optional[str] = None,
|
|
46
|
+
) -> List[DataCategory]: ...
|
|
47
|
+
|
|
48
|
+
@overload
|
|
49
|
+
def get_elements(
|
|
50
|
+
self,
|
|
51
|
+
taxonomy_type: Literal["data_uses"],
|
|
52
|
+
active_only: bool = True,
|
|
53
|
+
parent_key: Optional[str] = None,
|
|
54
|
+
) -> List[DataUse]: ...
|
|
55
|
+
|
|
56
|
+
@overload
|
|
57
|
+
def get_elements(
|
|
58
|
+
self,
|
|
59
|
+
taxonomy_type: Literal["data_subjects"],
|
|
60
|
+
active_only: bool = True,
|
|
61
|
+
parent_key: Optional[str] = None,
|
|
62
|
+
) -> List[DataSubject]: ...
|
|
63
|
+
|
|
64
|
+
def get_elements(
|
|
65
|
+
self,
|
|
66
|
+
taxonomy_type: str,
|
|
67
|
+
active_only: bool = True,
|
|
68
|
+
parent_key: Optional[str] = None,
|
|
69
|
+
) -> List[Union[DataCategory, DataUse, DataSubject]]:
|
|
70
|
+
"""Get elements for a taxonomy type."""
|
|
71
|
+
return self._get_handler(taxonomy_type).get_elements(active_only, parent_key)
|
|
72
|
+
|
|
73
|
+
@overload
|
|
74
|
+
def get_element(
|
|
75
|
+
self, taxonomy_type: Literal["data_categories"], fides_key: str
|
|
76
|
+
) -> Optional[DataCategory]: ...
|
|
77
|
+
|
|
78
|
+
@overload
|
|
79
|
+
def get_element(
|
|
80
|
+
self, taxonomy_type: Literal["data_uses"], fides_key: str
|
|
81
|
+
) -> Optional[DataUse]: ...
|
|
82
|
+
|
|
83
|
+
@overload
|
|
84
|
+
def get_element(
|
|
85
|
+
self, taxonomy_type: Literal["data_subjects"], fides_key: str
|
|
86
|
+
) -> Optional[DataSubject]: ...
|
|
87
|
+
|
|
88
|
+
def get_element(self, taxonomy_type: str, fides_key: str) -> Optional[Any]:
|
|
89
|
+
"""Get a single element by fides_key."""
|
|
90
|
+
return self._get_handler(taxonomy_type).get_element(fides_key)
|
|
91
|
+
|
|
92
|
+
@overload
|
|
93
|
+
def create_element(
|
|
94
|
+
self, taxonomy_type: Literal["data_categories"], element_data: Dict
|
|
95
|
+
) -> DataCategory: ...
|
|
96
|
+
|
|
97
|
+
@overload
|
|
98
|
+
def create_element(
|
|
99
|
+
self, taxonomy_type: Literal["data_uses"], element_data: Dict
|
|
100
|
+
) -> DataUse: ...
|
|
101
|
+
|
|
102
|
+
@overload
|
|
103
|
+
def create_element(
|
|
104
|
+
self, taxonomy_type: Literal["data_subjects"], element_data: Dict
|
|
105
|
+
) -> DataSubject: ...
|
|
106
|
+
|
|
107
|
+
def create_element(
|
|
108
|
+
self, taxonomy_type: str, element_data: Dict
|
|
109
|
+
) -> Union[DataCategory, DataUse, DataSubject]:
|
|
110
|
+
"""Create a new taxonomy element."""
|
|
111
|
+
# Generate fides_key if not provided
|
|
112
|
+
processed_data = element_data.copy()
|
|
113
|
+
if not processed_data.get("fides_key") and processed_data.get("name"):
|
|
114
|
+
handler = self._get_handler(taxonomy_type)
|
|
115
|
+
processed_data["fides_key"] = generate_taxonomy_fides_key(
|
|
116
|
+
taxonomy_type,
|
|
117
|
+
processed_data["name"],
|
|
118
|
+
processed_data.get("parent_key"),
|
|
119
|
+
handler,
|
|
120
|
+
)
|
|
121
|
+
|
|
122
|
+
# Centralized validation before delegation
|
|
123
|
+
self._validate_element_data(processed_data, taxonomy_type, action="create")
|
|
124
|
+
return self._get_handler(taxonomy_type).create_element(processed_data)
|
|
125
|
+
|
|
126
|
+
@overload
|
|
127
|
+
def update_element(
|
|
128
|
+
self,
|
|
129
|
+
taxonomy_type: Literal["data_categories"],
|
|
130
|
+
fides_key: str,
|
|
131
|
+
element_data: Dict,
|
|
132
|
+
) -> Optional[DataCategory]: ...
|
|
133
|
+
|
|
134
|
+
@overload
|
|
135
|
+
def update_element(
|
|
136
|
+
self, taxonomy_type: Literal["data_uses"], fides_key: str, element_data: Dict
|
|
137
|
+
) -> Optional[DataUse]: ...
|
|
138
|
+
|
|
139
|
+
@overload
|
|
140
|
+
def update_element(
|
|
141
|
+
self,
|
|
142
|
+
taxonomy_type: Literal["data_subjects"],
|
|
143
|
+
fides_key: str,
|
|
144
|
+
element_data: Dict,
|
|
145
|
+
) -> Optional[DataSubject]: ...
|
|
146
|
+
|
|
147
|
+
def update_element(
|
|
148
|
+
self, taxonomy_type: str, fides_key: str, element_data: Dict
|
|
149
|
+
) -> Optional[Any]:
|
|
150
|
+
"""Update an existing taxonomy element."""
|
|
151
|
+
# Get the existing element for validation
|
|
152
|
+
handler = self._get_handler(taxonomy_type)
|
|
153
|
+
existing_element = handler.get_element(fides_key)
|
|
154
|
+
|
|
155
|
+
self._validate_element_data(
|
|
156
|
+
element_data,
|
|
157
|
+
taxonomy_type,
|
|
158
|
+
existing_element=existing_element,
|
|
159
|
+
action="update",
|
|
160
|
+
)
|
|
161
|
+
|
|
162
|
+
# Update the element via handler
|
|
163
|
+
updated_element = handler.update_element(fides_key, element_data)
|
|
164
|
+
|
|
165
|
+
# Handle hierarchical activation/deactivation logic at service level
|
|
166
|
+
if updated_element and "active" in element_data:
|
|
167
|
+
if element_data["active"]:
|
|
168
|
+
activate_taxonomy_parents(updated_element, self.db)
|
|
169
|
+
else:
|
|
170
|
+
# Cascade down - deactivate current node and children
|
|
171
|
+
deactivate_taxonomy_node_and_descendants(updated_element, self.db)
|
|
172
|
+
|
|
173
|
+
# Ensure hierarchical updates are visible across sessions
|
|
174
|
+
# The model's own update() commits, but parent/child mutations above
|
|
175
|
+
# only flush by design. Commit here so other sessions (e.g., API tests)
|
|
176
|
+
# can observe the propagated changes immediately.
|
|
177
|
+
self.db.commit()
|
|
178
|
+
# Refresh the updated element to return the latest state
|
|
179
|
+
self.db.refresh(updated_element)
|
|
180
|
+
|
|
181
|
+
return updated_element
|
|
182
|
+
|
|
183
|
+
def delete_element(self, taxonomy_type: str, fides_key: str) -> None:
|
|
184
|
+
"""Delete a taxonomy element."""
|
|
185
|
+
# First, remove any TaxonomyUsage rows that reference this element
|
|
186
|
+
# as either the source or the target element. There is no DB cascade
|
|
187
|
+
# for these relationships by design, so this cleanup is handled here.
|
|
188
|
+
self.db.query(TaxonomyUsage).filter(
|
|
189
|
+
or_(
|
|
190
|
+
TaxonomyUsage.source_element_key == fides_key,
|
|
191
|
+
TaxonomyUsage.target_element_key == fides_key,
|
|
192
|
+
)
|
|
193
|
+
).delete(synchronize_session=False)
|
|
194
|
+
|
|
195
|
+
# Then delete the element itself via the appropriate handler
|
|
196
|
+
self._get_handler(taxonomy_type).delete_element(fides_key)
|
|
197
|
+
self.db.commit()
|
|
198
|
+
|
|
199
|
+
@overload
|
|
200
|
+
def create_or_update_element(
|
|
201
|
+
self, taxonomy_type: Literal["data_categories"], element_data: Dict
|
|
202
|
+
) -> DataCategory: ...
|
|
203
|
+
|
|
204
|
+
@overload
|
|
205
|
+
def create_or_update_element(
|
|
206
|
+
self, taxonomy_type: Literal["data_uses"], element_data: Dict
|
|
207
|
+
) -> DataUse: ...
|
|
208
|
+
|
|
209
|
+
@overload
|
|
210
|
+
def create_or_update_element(
|
|
211
|
+
self, taxonomy_type: Literal["data_subjects"], element_data: Dict
|
|
212
|
+
) -> DataSubject: ...
|
|
213
|
+
|
|
214
|
+
def create_or_update_element(self, taxonomy_type: str, element_data: Dict) -> Any:
|
|
215
|
+
"""
|
|
216
|
+
Create or update a taxonomy element.
|
|
217
|
+
If the element is deactivated, it will be updated and re-activated, along with its parents.
|
|
218
|
+
This method provides compatibility with the existing generic_overrides endpoint pattern.
|
|
219
|
+
"""
|
|
220
|
+
# Check for reactivation case centrally
|
|
221
|
+
handler = self._get_handler(taxonomy_type)
|
|
222
|
+
reactivation_element = check_for_taxonomy_reactivation(
|
|
223
|
+
self.db, taxonomy_type, element_data, handler
|
|
224
|
+
)
|
|
225
|
+
|
|
226
|
+
if reactivation_element:
|
|
227
|
+
return handle_taxonomy_reactivation(
|
|
228
|
+
self.db, taxonomy_type, reactivation_element, element_data, handler
|
|
229
|
+
)
|
|
230
|
+
|
|
231
|
+
return self.create_element(taxonomy_type, element_data) # type: ignore[call-overload]
|
|
232
|
+
|
|
233
|
+
def _get_handler(self, taxonomy_type: str) -> TaxonomyHandler:
|
|
234
|
+
"""Get the handler for taxonomy operations."""
|
|
235
|
+
return LegacyTaxonomyHandler(self.db, taxonomy_type)
|
|
236
|
+
|
|
237
|
+
def _validate_element_data(
|
|
238
|
+
self,
|
|
239
|
+
element_data: Dict,
|
|
240
|
+
taxonomy_type: str,
|
|
241
|
+
existing_element: Optional[Union[DataCategory, DataUse, DataSubject]] = None,
|
|
242
|
+
action: str = "create",
|
|
243
|
+
) -> None:
|
|
244
|
+
"""
|
|
245
|
+
Centralized validation for taxonomy elements.
|
|
246
|
+
This runs before delegation to ensure consistent validation across all handlers.
|
|
247
|
+
"""
|
|
248
|
+
# Validate default taxonomy restrictions for taxonomy elements
|
|
249
|
+
if action == "create":
|
|
250
|
+
validate_default_taxonomy_restrictions(element_data, action="create")
|
|
251
|
+
elif action == "update" and existing_element:
|
|
252
|
+
validate_default_taxonomy_restrictions(
|
|
253
|
+
element_data, resource=existing_element, action="update"
|
|
254
|
+
)
|
|
255
|
+
|
|
256
|
+
# Validate parent_key exists if provided
|
|
257
|
+
if "parent_key" in element_data and element_data["parent_key"]:
|
|
258
|
+
handler = self._get_handler(taxonomy_type)
|
|
259
|
+
validate_parent_key_exists(
|
|
260
|
+
taxonomy_type, element_data["parent_key"], handler
|
|
261
|
+
)
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
from typing import Any, Dict, Optional, Union
|
|
2
|
+
|
|
3
|
+
from sqlalchemy.orm import Session
|
|
4
|
+
|
|
5
|
+
from fides.api.common_exceptions import ValidationError
|
|
6
|
+
from fides.api.db.base_class import get_key_from_data
|
|
7
|
+
from fides.api.models.sql_models import ( # type:ignore[attr-defined]
|
|
8
|
+
DataCategory,
|
|
9
|
+
DataSubject,
|
|
10
|
+
DataUse,
|
|
11
|
+
)
|
|
12
|
+
from fides.api.util.errors import ForbiddenIsDefaultTaxonomyError
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
# Core validation functions for taxonomy operations
|
|
16
|
+
def activate_taxonomy_parents(
|
|
17
|
+
resource: Union[DataCategory, DataUse, DataSubject],
|
|
18
|
+
db: Session,
|
|
19
|
+
) -> None:
|
|
20
|
+
"""
|
|
21
|
+
Activates parents to match newly-active taxonomy node.
|
|
22
|
+
"""
|
|
23
|
+
parent = resource.parent
|
|
24
|
+
if parent:
|
|
25
|
+
parent.active = True
|
|
26
|
+
db.flush()
|
|
27
|
+
activate_taxonomy_parents(parent, db)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def deactivate_taxonomy_node_and_descendants(
|
|
31
|
+
resource: Union[DataCategory, DataUse, DataSubject],
|
|
32
|
+
db: Session,
|
|
33
|
+
) -> None:
|
|
34
|
+
"""
|
|
35
|
+
Recursively de-activates all descendants of a given taxonomy node.
|
|
36
|
+
"""
|
|
37
|
+
resource.active = False
|
|
38
|
+
db.flush()
|
|
39
|
+
children = resource.children
|
|
40
|
+
|
|
41
|
+
for child in children:
|
|
42
|
+
# Deactivate current child
|
|
43
|
+
child.active = False
|
|
44
|
+
db.flush()
|
|
45
|
+
# Recursively deactivate all descendants of this child
|
|
46
|
+
deactivate_taxonomy_node_and_descendants(child, db)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def validate_default_taxonomy_restrictions(
|
|
50
|
+
data: Dict,
|
|
51
|
+
resource: Optional[Union[DataCategory, DataUse, DataSubject]] = None,
|
|
52
|
+
action: str = "create",
|
|
53
|
+
) -> None:
|
|
54
|
+
"""
|
|
55
|
+
Validate restrictions on default taxonomy elements.
|
|
56
|
+
"""
|
|
57
|
+
# For creation, check if trying to create with is_default=True
|
|
58
|
+
if action == "create" and data.get("is_default"):
|
|
59
|
+
raise ForbiddenIsDefaultTaxonomyError(
|
|
60
|
+
"taxonomy", data.get("fides_key", "unknown"), action="create"
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
# For updates, check if trying to modify is_default field
|
|
64
|
+
if action == "update" and resource:
|
|
65
|
+
# Only check if is_default is explicitly present in the data and is being changed
|
|
66
|
+
if "is_default" in data and hasattr(resource, "is_default"):
|
|
67
|
+
if data["is_default"] != resource.is_default:
|
|
68
|
+
raise ForbiddenIsDefaultTaxonomyError(
|
|
69
|
+
"resource",
|
|
70
|
+
data.get("fides_key", resource.fides_key),
|
|
71
|
+
action="modify",
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def validate_parent_key_exists(
|
|
76
|
+
taxonomy_type: str, parent_key: str, handler: Any
|
|
77
|
+
) -> None:
|
|
78
|
+
"""
|
|
79
|
+
Validate that the parent_key exists in the same taxonomy type.
|
|
80
|
+
This prevents IntegrityError at the database level by validating at application level.
|
|
81
|
+
"""
|
|
82
|
+
if not parent_key:
|
|
83
|
+
return
|
|
84
|
+
|
|
85
|
+
parent_element = handler.get_element(parent_key)
|
|
86
|
+
|
|
87
|
+
if not parent_element:
|
|
88
|
+
raise ValidationError(
|
|
89
|
+
f"Parent with key '{parent_key}' not found in taxonomy '{taxonomy_type}'"
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
def generate_taxonomy_fides_key(
|
|
94
|
+
taxonomy_type: str,
|
|
95
|
+
name: str,
|
|
96
|
+
parent_key: Optional[str] = None,
|
|
97
|
+
handler: Optional[Any] = None,
|
|
98
|
+
) -> str:
|
|
99
|
+
"""
|
|
100
|
+
Generate a fides_key from a name for taxonomy elements.
|
|
101
|
+
"""
|
|
102
|
+
# Get the actual model class name for key generation
|
|
103
|
+
if handler and hasattr(handler, "get_model"):
|
|
104
|
+
model_class = handler.get_model()
|
|
105
|
+
fides_key = get_key_from_data({"name": name}, model_class.__name__)
|
|
106
|
+
else:
|
|
107
|
+
# Fallback to using taxonomy_type
|
|
108
|
+
fides_key = get_key_from_data({"name": name}, taxonomy_type)
|
|
109
|
+
|
|
110
|
+
# Add parent prefix if this is not a root level taxonomy node
|
|
111
|
+
if parent_key:
|
|
112
|
+
fides_key = f"{parent_key}.{fides_key}"
|
|
113
|
+
|
|
114
|
+
return fides_key
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
def check_for_taxonomy_reactivation(
|
|
118
|
+
db: Session, taxonomy_type: str, element_data: Dict, handler: Any
|
|
119
|
+
) -> Optional[Any]:
|
|
120
|
+
"""
|
|
121
|
+
Check if this is a reactivation case for existing disabled elements.
|
|
122
|
+
Returns the disabled element if it exists and should be reactivated.
|
|
123
|
+
"""
|
|
124
|
+
# Only check for reactivation if no fides_key is provided but name is
|
|
125
|
+
if element_data.get("fides_key") or not element_data.get("name"):
|
|
126
|
+
return None
|
|
127
|
+
|
|
128
|
+
# Check the specific model table for disabled elements
|
|
129
|
+
model_class = handler.get_model()
|
|
130
|
+
disabled_element = (
|
|
131
|
+
db.query(model_class)
|
|
132
|
+
.filter(
|
|
133
|
+
model_class.active.is_(False),
|
|
134
|
+
model_class.name == element_data["name"],
|
|
135
|
+
)
|
|
136
|
+
.first()
|
|
137
|
+
)
|
|
138
|
+
return disabled_element
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
def handle_taxonomy_reactivation(
|
|
142
|
+
db: Session, taxonomy_type: str, element: Any, element_data: Dict, handler: Any
|
|
143
|
+
) -> Any:
|
|
144
|
+
"""
|
|
145
|
+
Handle reactivation of a disabled taxonomy element.
|
|
146
|
+
"""
|
|
147
|
+
# Generate fides_key if not provided (needed for reactivation)
|
|
148
|
+
updated_data = element_data.copy()
|
|
149
|
+
if not updated_data.get("fides_key") and updated_data.get("name"):
|
|
150
|
+
updated_data["fides_key"] = generate_taxonomy_fides_key(
|
|
151
|
+
taxonomy_type, updated_data["name"], updated_data.get("parent_key"), handler
|
|
152
|
+
)
|
|
153
|
+
|
|
154
|
+
# Ensure it's marked as active and activate parents accordingly
|
|
155
|
+
updated_data["active"] = True
|
|
156
|
+
activate_taxonomy_parents(element, db)
|
|
157
|
+
|
|
158
|
+
# Update the element with new data
|
|
159
|
+
element.update(db, data=updated_data)
|
|
160
|
+
return element
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link data-next-font="" rel="preconnect" href="/" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/
|
|
1
|
+
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link data-next-font="" rel="preconnect" href="/" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/92441453b27e9c34.css" as="style"/><link rel="stylesheet" href="/_next/static/css/92441453b27e9c34.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-6d0a487039bcf30c.js" defer=""></script><script src="/_next/static/chunks/framework-c92fc3344e6fd165.js" defer=""></script><script src="/_next/static/chunks/main-090643377c8254e6.js" defer=""></script><script src="/_next/static/chunks/pages/_app-b6b09b2878b77b21.js" defer=""></script><script src="/_next/static/chunks/pages/404-dd625a559ada46ca.js" defer=""></script><script src="/_next/static/_BLI2ArqQzY5XnXbrcxa2/_buildManifest.js" defer=""></script><script src="/_next/static/_BLI2ArqQzY5XnXbrcxa2/_ssgManifest.js" defer=""></script><style>.data-ant-cssinjs-cache-path{content:"";}</style></head><body><div id="__next"><div style="height:100%;display:flex"></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/404","query":{},"buildId":"_BLI2ArqQzY5XnXbrcxa2","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
self.__BUILD_MANIFEST=function(s,e,t,a,c,n,i,d,o,r,p,u,g,f,m,j,k,b,h,y,l,v,I,F,x,_,U,w,q,N,A,S,B,C,z,D,E,L,M,T,P,G,H,J,K,O,Q,R){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":[F,"static/chunks/pages/index-fec557d99211f577.js"],"/404":["static/chunks/pages/404-dd625a559ada46ca.js"],"/_error":["static/chunks/pages/_error-bede3a8288930dcf.js"],"/add-systems":[e,t,F,"static/chunks/pages/add-systems-5664a3ea796e5ffb.js"],"/add-systems/manual":[s,e,a,c,n,g,t,d,f,m,h,x,_,"static/chunks/pages/add-systems/manual-92cf5e313be1f9e2.js"],"/add-systems/multiple":[d,j,U,"static/chunks/pages/add-systems/multiple-d6c525ee731a2993.js"],"/consent":["static/chunks/pages/consent-8d4be9e7ec7d2a35.js"],"/consent/configure":[d,j,"static/chunks/pages/consent/configure-0fc678f3d6d2fcec.js"],"/consent/configure/add-vendors":[d,j,U,"static/chunks/pages/consent/configure/add-vendors-78f13de90111fd80.js"],"/consent/privacy-experience":[g,w,"static/chunks/pages/consent/privacy-experience-289605267d6cce7e.js"],"/consent/privacy-experience/new":[s,o,k,b,q,"static/chunks/pages/consent/privacy-experience/new-e74cb5ea87f15b40.js"],"/consent/privacy-experience/[id]":[s,o,k,b,q,"static/chunks/pages/consent/privacy-experience/[id]-126db59dc25ca326.js"],"/consent/privacy-notices":[w,"static/chunks/pages/consent/privacy-notices-c643eff04525298e.js"],"/consent/privacy-notices/new":[s,o,k,b,N,"static/chunks/pages/consent/privacy-notices/new-28c003b6043bd16c.js"],"/consent/privacy-notices/[id]":[s,o,k,b,N,"static/chunks/pages/consent/privacy-notices/[id]-e9fd9b28ac9705af.js"],"/consent/properties":[A,"static/chunks/pages/consent/properties-3ef5d01779a26455.js"],"/consent/reporting":["static/chunks/2150-930ffaf2c4718edc.js","static/chunks/pages/consent/reporting-baa4a2f8f08ac224.js"],"/data-catalog":[s,a,c,"static/css/95ac327e5d70148d.css","static/chunks/pages/data-catalog-ebf5e7fa4e2ffb49.js"],"/data-catalog/[systemId]/projects":[s,a,c,p,y,i,"static/chunks/pages/data-catalog/[systemId]/projects-0f66dac32040519c.js"],"/data-catalog/[systemId]/projects/[projectUrn]":[S,"static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]-27b6c255bd9e73b6.js"],"/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]":[s,e,a,c,t,p,y,B,i,"static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]-f27ec4578c674181.js"],"/data-catalog/[systemId]/resources":[S,"static/chunks/pages/data-catalog/[systemId]/resources-6c3714ee97a718c1.js"],"/data-catalog/[systemId]/resources/[resourceUrn]":[s,e,a,c,t,p,y,B,i,"static/chunks/pages/data-catalog/[systemId]/resources/[resourceUrn]-3b938562df81c4b0.js"],"/data-discovery/action-center":["static/chunks/pages/data-discovery/action-center-8e35e33928abbcdc.js"],"/data-discovery/action-center/[monitorId]":[s,a,c,C,l,"static/chunks/pages/data-discovery/action-center/[monitorId]-8ce5d24af470888e.js"],"/data-discovery/action-center/[monitorId]/[systemId]":[s,e,a,c,t,d,h,C,"static/css/23cf870196941c9a.css","static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-b27c660039d951c9.js"],"/data-discovery/activity":[e,t,u,"static/chunks/pages/data-discovery/activity-21c141279e66237a.js"],"/data-discovery/detection":[e,t,u,z,"static/chunks/pages/data-discovery/detection-da16e73df395ad1d.js"],"/data-discovery/detection/[resourceUrn]":[e,t,u,z,"static/chunks/pages/data-discovery/detection/[resourceUrn]-3bc6a207693fd175.js"],"/data-discovery/discovery":[s,e,a,c,t,u,p,D,i,"static/chunks/pages/data-discovery/discovery-900fe50183a40d72.js"],"/data-discovery/discovery/[resourceUrn]":[s,e,a,c,t,u,p,D,i,"static/chunks/pages/data-discovery/discovery/[resourceUrn]-04b242632a114405.js"],"/datamap":[e,c,"static/chunks/255-1bc0cbef7a59cdc6.js",t,f,E,"static/chunks/pages/datamap-4f1f7c3a9531a8f4.js"],"/dataset":[r,"static/chunks/pages/dataset-858c59c9e67e318d.js"],"/dataset/new":[e,r,t,"static/chunks/pages/dataset/new-a31f881cab25704a.js"],"/dataset/[datasetId]":["static/chunks/9729-fcf6ff4e3534e4a8.js",v,"static/chunks/pages/dataset/[datasetId]-b47fa2498b534719.js"],"/dataset/[datasetId]/[collectionName]":[s,a,c,n,v,L,i,"static/chunks/pages/dataset/[datasetId]/[collectionName]-1c097a0809fa5b6f.js"],"/dataset/[datasetId]/[collectionName]/[...subfieldNames]":[s,a,c,n,v,L,i,"static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-343294dcb10d9532.js"],"/datastore-connection":["static/css/5f393dea1c0d031c.css","static/chunks/pages/datastore-connection-1eb9acb17b133fd1.js"],"/datastore-connection/new":[s,e,n,r,g,M,t,T,"static/chunks/pages/datastore-connection/new-68f502d8b0b5792c.js"],"/datastore-connection/[id]":[s,e,n,r,M,t,T,"static/chunks/pages/datastore-connection/[id]-16c28d272225afb6.js"],"/fides-js-docs":["static/chunks/2fbcc6de-a6c61724c327e9fa.js","static/chunks/e3251fe7-5777b5d778e6fffa.js",s,a,c,n,r,"static/chunks/5619-9b50cec521203989.js",P,"static/css/0b4b1b65cc874774.css","static/chunks/5596-bb601cbf40e47a0f.js","static/chunks/pages/fides-js-docs-1f4335dca5c09860.js"],"/integrations":[s,e,a,c,n,o,G,t,m,H,i,"static/chunks/pages/integrations-8069f7c33695fd45.js"],"/integrations/[id]":[s,e,a,c,n,o,G,t,m,H,i,"static/chunks/pages/integrations/[id]-e613543818d6cbd2.js"],"/login":["static/chunks/pages/login-0cb0eb44bf2dd24c.js"],"/login/[provider]":["static/chunks/pages/login/[provider]-c58beef131c3a82d.js"],"/messaging":[s,a,"static/chunks/346-aa3b88efb85f2e28.js","static/chunks/pages/messaging-3ade4c54b1c8a11e.js"],"/messaging/add-template":[J,"static/chunks/pages/messaging/add-template-343a965dcdb3d11e.js"],"/messaging/[id]":[J,"static/chunks/pages/messaging/[id]-4a08ca7762a19700.js"],"/poc/ant-components":["static/chunks/pages/poc/ant-components-9103bfb854f71410.js"],"/poc/form-experiments/AntForm":["static/chunks/pages/poc/form-experiments/AntForm-3b97029bd4d3c3ea.js"],"/poc/form-experiments/FormikAntFormItem":["static/chunks/pages/poc/form-experiments/FormikAntFormItem-9d9beb8f0d8a278c.js"],"/poc/form-experiments/FormikControlled":["static/chunks/pages/poc/form-experiments/FormikControlled-84a4d8fc60f839ed.js"],"/poc/form-experiments/FormikField":["static/chunks/pages/poc/form-experiments/FormikField-1fccf542ab2e33bf.js"],"/poc/form-experiments/FormikSpreadField":[K,"static/chunks/pages/poc/form-experiments/FormikSpreadField-af097d661f6abcf4.js"],"/poc/forms":[K,"static/chunks/pages/poc/forms-aa75263ae1ba67bb.js"],"/poc/table-migration":[d,j,"static/chunks/pages/poc/table-migration-db334a1cbb102255.js"],"/privacy-requests":[s,e,"static/chunks/3550-d04125c828d591a1.js",t,"static/chunks/pages/privacy-requests-48f447b31c786b80.js"],"/privacy-requests/configure":["static/chunks/pages/privacy-requests/configure-e55ec84d5380401d.js"],"/privacy-requests/configure/messaging":[e,t,"static/chunks/pages/privacy-requests/configure/messaging-192a986f61c23268.js"],"/privacy-requests/configure/storage":[e,t,"static/chunks/pages/privacy-requests/configure/storage-9216ac993d71387e.js"],"/privacy-requests/[id]":[e,t,"static/css/073713cd1eddda79.css","static/chunks/pages/privacy-requests/[id]-11c1e4545c8f528c.js"],"/properties":[A,"static/chunks/pages/properties-77acceac4f99e7af.js"],"/properties/add-property":[O,"static/chunks/pages/properties/add-property-8d23f0c55ff6510a.js"],"/properties/[id]":[O,"static/chunks/pages/properties/[id]-a74b51b704b80cb2.js"],"/reporting/datamap":[s,e,a,c,P,t,f,E,"static/chunks/pages/reporting/datamap-e60d398e255f4e00.js"],"/settings/about":["static/chunks/pages/settings/about-c1b8f3606d160bb1.js"],"/settings/about/alpha":["static/chunks/pages/settings/about/alpha-6aad3f563ed03b3f.js"],"/settings/consent":["static/chunks/pages/settings/consent-ee2c7dde99b1dafb.js"],"/settings/consent/[configuration_id]/[purpose_id]":["static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-d9f7f78810d58d08.js"],"/settings/custom-fields":[e,t,"static/chunks/pages/settings/custom-fields-a4dad8ca9de2d07b.js"],"/settings/domain-records":["static/chunks/pages/settings/domain-records-31c270d228e00581.js"],"/settings/domains":["static/chunks/pages/settings/domains-996b3f250dd3ea1f.js"],"/settings/email-templates":["static/chunks/pages/settings/email-templates-ee94981326ddcbf4.js"],"/settings/locations":[Q,l,"static/chunks/pages/settings/locations-0b831c58966782b8.js"],"/settings/organization":["static/chunks/pages/settings/organization-94271ba4a224a353.js"],"/settings/regulations":[Q,l,"static/chunks/pages/settings/regulations-41b8136e50320fd3.js"],"/systems":["static/chunks/pages/systems-24dfc8e2279ced2e.js"],"/systems/configure/[id]":[s,e,a,c,n,g,t,d,f,m,h,x,_,"static/chunks/pages/systems/configure/[id]-36d74e93e54aabaf.js"],"/systems/configure/[id]/test-datasets":[r,"static/chunks/pages/systems/configure/[id]/test-datasets-52b45569cbc82e60.js"],"/taxonomy":["static/chunks/678d4732-50255cc09048e643.js",s,e,a,o,"static/chunks/6148-59a59d5c5925344f.js",t,"static/css/34a7eb08b86ddb57.css","static/chunks/pages/taxonomy-d9675cf5e6083b27.js"],"/user-management":[I,"static/chunks/pages/user-management-e63b61a8f99ccd57.js"],"/user-management/new":[I,R,"static/chunks/pages/user-management/new-de8cb3739ab99c09.js"],"/user-management/profile/[id]":[I,R,"static/chunks/pages/user-management/profile/[id]-866826d7959df487.js"],sortedPages:["/","/404","/_app","/_error","/add-systems","/add-systems/manual","/add-systems/multiple","/consent","/consent/configure","/consent/configure/add-vendors","/consent/privacy-experience","/consent/privacy-experience/new","/consent/privacy-experience/[id]","/consent/privacy-notices","/consent/privacy-notices/new","/consent/privacy-notices/[id]","/consent/properties","/consent/reporting","/data-catalog","/data-catalog/[systemId]/projects","/data-catalog/[systemId]/projects/[projectUrn]","/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]","/data-catalog/[systemId]/resources","/data-catalog/[systemId]/resources/[resourceUrn]","/data-discovery/action-center","/data-discovery/action-center/[monitorId]","/data-discovery/action-center/[monitorId]/[systemId]","/data-discovery/activity","/data-discovery/detection","/data-discovery/detection/[resourceUrn]","/data-discovery/discovery","/data-discovery/discovery/[resourceUrn]","/datamap","/dataset","/dataset/new","/dataset/[datasetId]","/dataset/[datasetId]/[collectionName]","/dataset/[datasetId]/[collectionName]/[...subfieldNames]","/datastore-connection","/datastore-connection/new","/datastore-connection/[id]","/fides-js-docs","/integrations","/integrations/[id]","/login","/login/[provider]","/messaging","/messaging/add-template","/messaging/[id]","/poc/ant-components","/poc/form-experiments/AntForm","/poc/form-experiments/FormikAntFormItem","/poc/form-experiments/FormikControlled","/poc/form-experiments/FormikField","/poc/form-experiments/FormikSpreadField","/poc/forms","/poc/table-migration","/privacy-requests","/privacy-requests/configure","/privacy-requests/configure/messaging","/privacy-requests/configure/storage","/privacy-requests/[id]","/properties","/properties/add-property","/properties/[id]","/reporting/datamap","/settings/about","/settings/about/alpha","/settings/consent","/settings/consent/[configuration_id]/[purpose_id]","/settings/custom-fields","/settings/domain-records","/settings/domains","/settings/email-templates","/settings/locations","/settings/organization","/settings/regulations","/systems","/systems/configure/[id]","/systems/configure/[id]/test-datasets","/taxonomy","/user-management","/user-management/new","/user-management/profile/[id]"]}}("static/chunks/8765-f622a35b40a7ec63.js","static/chunks/431-86ad2beeb93c95c9.js","static/chunks/602-80d113e801d7407d.js","static/chunks/9278-08cc704317fe535e.js","static/chunks/5163-e682273cd76a7d07.js","static/chunks/699-8ca44b0de9fa20f0.js","static/css/d2d4e9a6923e6730.css","static/chunks/401-3902e3e98790d401.js","static/chunks/3662-f6a1ddca5ee42076.js","static/chunks/6527-0eed08abe252a918.js","static/chunks/1099-7b2085a3931da9e4.js","static/chunks/8002-dcd02da6e5649a1c.js","static/chunks/5277-e8a036319456127f.js","static/chunks/9951-cdf73904a3adb27b.js","static/chunks/4808-8713433c84a62efe.js","static/chunks/3923-5c87b3d7f1626678.js","static/chunks/6419-d0c00d661b01f8fa.js","static/chunks/6084-da63f20d9416a982.js","static/chunks/4844-351f99b6644b654e.js","static/chunks/3620-6cceae71bae5b531.js","static/css/10994e916bc9a00a.css","static/chunks/5487-338800277d36b8d7.js","static/chunks/7476-a0dd03bfccf60d0c.js","static/css/972dc7eef106ee7c.css","static/chunks/4786-53ef1662f2d0d98c.js","static/css/304c6f148886a8d4.css","static/chunks/796-8773e04b64ce2260.js","static/chunks/6853-1d947b75eb07188c.js","static/chunks/1817-fd21f1f5ef0faffa.js","static/chunks/6954-24f9a4f27d67b732.js","static/chunks/79-dcd20e8b09501c17.js","static/chunks/3872-7a18d18a5e287e4e.js","static/chunks/3855-64541570e2f838fb.js","static/chunks/1138-0d846ffef62c580f.js","static/chunks/1345-ab756811e19ff4fc.js","static/chunks/9046-57eab238570b8bf4.js","static/chunks/5258-c6f96dc740eb5fb1.js","static/chunks/549-e6453a3526023e85.js","static/chunks/1467-8808ec8836e033f9.js","static/chunks/4608-70521532195124de.js","static/chunks/9187-7438242f0d380bb0.js","static/chunks/1316-2606e19807c08aa5.js","static/chunks/3729-7d2d52400f1f7413.js","static/chunks/7630-9fbe06cfb98266fe.js","static/chunks/2921-0e5cc63a82e31830.js","static/chunks/787-3dd31844cf7fec55.js","static/chunks/9826-756c958aecab59a2.js","static/chunks/4121-64ef70ef906bbdd0.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1099],{56632:function(e,t,n){var a=n(89278),i=n(80068),o=n(50098);e.exports=function(e){return function(t,n,r){var s=Object(t);if(!i(t)){var l=a(n,3);t=o(t),n=function(e){return l(s[e],e,s)}}var c=e(t,n,r);return c>-1?s[l?t[c]:c]:void 0}}},64925:function(e,t,n){var a=n(56632)(n(66259));e.exports=a},66259:function(e,t,n){var a=n(95372),i=n(89278),o=n(47991),r=Math.max;e.exports=function(e,t,n){var s=null==e?0:e.length;if(!s)return -1;var l=null==n?0:o(n);return l<0&&(l=r(s+l,0)),a(e,i(t,3),l)}},94919:function(e,t,n){var a=n(91936),i=1/0;e.exports=function(e){return e?(e=a(e))===i||e===-i?(e<0?-1:1)*17976931348623157e292:e==e?e:0:0===e?e:0}},47991:function(e,t,n){var a=n(94919);e.exports=function(e){var t=a(e),n=t%1;return t==t?n?t-n:t:0}},12627:function(e,t,n){"use strict";var a=n(24246),i=n(79283),o=n(34929);t.Z=e=>{let{selectedTaxonomies:t,showDisabled:n=!1,...r}=e,{getDataCategoryDisplayNameProps:s,getDataCategories:l}=(0,o.Z)(),c=(n?l():l().filter(e=>e.active)).filter(e=>!t.includes(e.fides_key)).map(e=>{let{name:t,primaryName:n}=s(e.fides_key);return{value:e.fides_key,name:t,primaryName:n,description:e.description||""}});return(0,a.jsx)(i.l,{options:c,...r})}},79283:function(e,t,n){"use strict";n.d(t,{l:function(){return l}});var a=n(24246),i=n(39941),o=n(72707),r=n.n(o);let s=e=>{let{data:{formattedTitle:t,description:n,name:o,primaryName:r}}=e;return(0,a.jsxs)(i.jqI,{gap:12,title:"".concat(t," - ").concat(n),children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("strong",{children:r||o}),r&&": ".concat(o)]}),(0,a.jsx)("em",{children:n})]})},l=e=>{let{options:t,...n}=e,o=null==t?void 0:t.map(e=>({...e,className:r().option,formattedTitle:[e.primaryName,e.name].filter(e=>e).join(": ")}));return(0,a.jsx)(i.WPr,{options:o,filterOption:(e,t)=>(null==t?void 0:t.formattedTitle.toLowerCase().includes(e.toLowerCase()))||(null==t?void 0:t.value.toLowerCase().includes(e.toLowerCase()))||!1,optionFilterProp:"label",autoFocus:!0,variant:"borderless",optionRender:s,dropdownStyle:{minWidth:"500px"},className:"w-full p-0","data-testid":"taxonomy-select",...n})}},34929:function(e,t,n){"use strict";var a=n(24246),i=n(64925),o=n.n(i),r=n(27378),s=n(16134),l=n(30002),c=n(28079),d=n(57072);let u=()=>{let{isLoading:e}=(0,c.fd)(),t=(0,s.C)(c.U3),{isLoading:n}=(0,d.MO)(),a=(0,s.C)(d.qb),{isLoading:i}=(0,l.te)();return{dataUses:t,dataSubjects:(0,s.C)(l.ZL),dataCategories:a,isLoading:e||n||i}};t.Z=()=>{let{dataUses:e,dataCategories:t,dataSubjects:n,isLoading:i}=u(),s=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return e.split(".").slice(0,t).join(".")},l=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,a=t(e);if(!a)return{};let i=t(s(e,n)),o=!!a.parent_key;return{name:a.name||void 0,primaryName:o&&(null==i?void 0:i.name)!==a.name&&(null==i?void 0:i.name)||void 0}},c=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,{name:i,primaryName:o}=l(e,t,n);return i?o?(0,a.jsxs)(r.Fragment,{children:[(0,a.jsxs)("strong",{children:[o,":"]})," ",i]},e):(0,a.jsx)("strong",{children:i},e):e},d=t=>o()(e,{fides_key:t}),f=e=>o()(t,{fides_key:e}),g=e=>o()(n,{fides_key:e});return{getDataUses:()=>e,getDataUseByKey:d,getDataUseDisplayName:e=>c(e,d,1),getDataUseDisplayNameProps:e=>l(e,d,1),getDataCategories:()=>t,getDataCategoryByKey:f,getDataCategoryDisplayName:e=>c(e,f,2),getDataCategoryDisplayNameProps:e=>l(e,f,2),getDataSubjects:()=>n,getDataSubjectByKey:g,getDataSubjectDisplayName:e=>{let t=g(e);return t?t.name:e},getPrimaryKey:s,isLoading:i}}},61099:function(e,t,n){"use strict";var a=n(24246),i=n(39941),o=n(27378),r=n(12627),s=n(34929),l=n(26183),c=n(70675);t.Z=e=>{var t,n,d;let{resource:u}=e,[f,g]=(0,o.useState)(!1),{getDataCategoryDisplayName:v}=(0,s.Z)(),[p]=(0,c.NA)(),m=(null===(t=u.classifications)||void 0===t?void 0:t.length)?u.classifications[0].label:null,x=null!==(d=u.user_assigned_data_categories)&&void 0!==d?d:[],h=!m&&!(null==x?void 0:x.length),_=null===(n=u.sub_field_urns)||void 0===n?void 0:n.length,j=e=>{p({staged_resource_urn:u.urn,monitor_config_id:u.monitor_config_id,user_assigned_data_categories:[...x,e]})},y=e=>{var t;p({staged_resource_urn:u.urn,monitor_config_id:u.monitor_config_id,user_assigned_data_categories:null!==(t=null==x?void 0:x.filter(t=>t!==e))&&void 0!==t?t:[]})},b=!f&&!!x.length,w=!f&&!!m&&!x.length;return(0,a.jsxs)(l.Z,{"data-testid":"edit-category-cell",children:[h&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(i.j8w,{"data-testid":"no-classifications",color:"white",children:"None"}),!_&&(0,a.jsx)(i.j8w,{onClick:()=>g(!0),addable:!0,"data-testid":"taxonomy-add-btn","aria-label":"Add category"})]}),b&&(0,a.jsxs)(a.Fragment,{children:[x.map(e=>(0,a.jsx)(i.j8w,{"data-testid":"user-classification-".concat(e),color:"white",closable:!0,onClose:()=>y(e),closeButtonLabel:"Remove category",children:v(e)},e)),(0,a.jsx)(i.j8w,{onClick:()=>g(!0),addable:!0,"data-testid":"taxonomy-add-btn","aria-label":"Add category"})]}),w&&(0,a.jsxs)(i.j8w,{onClick:()=>g(!0),color:"white","data-testid":"classification-".concat(m),hasSparkle:!0,children:[v(m),(0,a.jsx)(i.PJP.I8b,{size:10})]}),f&&(0,a.jsx)(i.xuv,{className:"select-wrapper",position:"absolute",zIndex:10,top:"0",left:"0",width:"100%",height:"max",bgColor:"#fff",children:(0,a.jsx)(r.Z,{selectedTaxonomies:x,onChange:e=>{g(!1),j(e)},onBlur:()=>g(!1),open:!0})})]})}},26183:function(e,t,n){"use strict";var a=n(24246);n(27378),t.Z=e=>{let{children:t,className:n,...i}=e;return(0,a.jsx)("div",{className:"relative flex w-full flex-wrap items-center gap-2 overflow-x-auto py-2 ".concat(n||""),...i,children:t})}},72707:function(e){e.exports={option:"TaxonomySelect_option__vY6v2"}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1138],{35287:function(e,t,s){var n=s(24246),r=s(39941),a=s(88038),i=s.n(a);s(27378),t.Z=e=>{let{children:t,title:s,mainProps:a}=e;return(0,n.jsxs)(r.kCb,{"data-testid":s,direction:"column",height:"calc(100vh - 48px)",width:"calc(100vw - 240px)",children:[(0,n.jsxs)(i(),{children:[(0,n.jsxs)("title",{children:["Fides Admin UI - ",s]}),(0,n.jsx)("meta",{name:"description",content:"Privacy Engineering Platform"}),(0,n.jsx)("link",{rel:"icon",href:"/favicon.ico"})]}),(0,n.jsx)(r.kCb,{px:10,py:6,as:"main",overflow:"auto",direction:"column",flex:1,minWidth:0,...a,children:t})]})}},34929:function(e,t,s){var n=s(24246),r=s(64925),a=s.n(r),i=s(27378),o=s(16134),l=s(30002),u=s(28079),c=s(57072);let d=()=>{let{isLoading:e}=(0,u.fd)(),t=(0,o.C)(u.U3),{isLoading:s}=(0,c.MO)(),n=(0,o.C)(c.qb),{isLoading:r}=(0,l.te)();return{dataUses:t,dataSubjects:(0,o.C)(l.ZL),dataCategories:n,isLoading:e||s||r}};t.Z=()=>{let{dataUses:e,dataCategories:t,dataSubjects:s,isLoading:r}=d(),o=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return e.split(".").slice(0,t).join(".")},l=function(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,n=t(e);if(!n)return{};let r=t(o(e,s)),a=!!n.parent_key;return{name:n.name||void 0,primaryName:a&&(null==r?void 0:r.name)!==n.name&&(null==r?void 0:r.name)||void 0}},u=function(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,{name:r,primaryName:a}=l(e,t,s);return r?a?(0,n.jsxs)(i.Fragment,{children:[(0,n.jsxs)("strong",{children:[a,":"]})," ",r]},e):(0,n.jsx)("strong",{children:r},e):e},c=t=>a()(e,{fides_key:t}),m=e=>a()(t,{fides_key:e}),p=e=>a()(s,{fides_key:e});return{getDataUses:()=>e,getDataUseByKey:c,getDataUseDisplayName:e=>u(e,c,1),getDataUseDisplayNameProps:e=>l(e,c,1),getDataCategories:()=>t,getDataCategoryByKey:m,getDataCategoryDisplayName:e=>u(e,m,2),getDataCategoryDisplayNameProps:e=>l(e,m,2),getDataSubjects:()=>s,getDataSubjectByKey:p,getDataSubjectDisplayName:e=>{let t=p(e);return t?t.name:e},getPrimaryKey:o,isLoading:r}}},25415:function(e,t,s){s.d(t,{a:function(){return a}});var n=s(24246);let{Text:r}=s(39941).AntTypography,a=e=>{let{count:t}=e;return(0,n.jsx)(r,{size:"sm",strong:!0,"data-testid":"selected-count",children:"".concat(t," selected")})}},2525:function(e,t,s){s.d(t,{Q:function(){return o}});var n=s(24246),r=s(39941),a=s(27378),i=s(3110);let o=e=>{let{values:t,columnState:s,...o}=e,{isExpanded:l,isWrapped:u,version:c}=s||{},[d,m]=(0,a.useState)(!l),[p,y]=(0,a.useState)(!!u),[g,v]=(0,a.useState)(l?t:null==t?void 0:t.slice(0,2));(0,a.useEffect)(()=>{m(!l)},[l,c]),(0,a.useEffect)(()=>{y(!!u)},[u]),(0,a.useEffect)(()=>{(null==t?void 0:t.length)&&v(d?t.slice(0,2):t)},[d,t]);let f=(0,a.useCallback)(()=>{v(null==t?void 0:t.slice(0,2)),m(!0)},[t]),h=(0,a.useCallback)(()=>{m(!1)},[]),T=(0,a.useCallback)(()=>{d?h():f()},[d,h,f]);return(0,a.useMemo)(()=>(null==g?void 0:g.length)?(0,n.jsxs)(r.jqI,{align:"center",wrap:p?"wrap":"nowrap",gap:"small","data-testid":"tag-expandable-cell",children:[g.map(e=>(0,n.jsx)(r.j8w,{color:"white","data-testid":e.key,...o,children:e.label},e.key)),t&&t.length>2&&(0,n.jsx)(r.wpx,{type:"link",size:"small",onClick:e=>{e.stopPropagation(),T()},className:"h-auto p-0",style:{fontSize:"var(--ant-font-size)"},children:d?"+".concat(t.length-2," more"):i.T})]}):(0,n.jsx)("span",{"data-testid":"tag-expandable-cell-empty"}),[g,d,p,t,T,o])}},3110:function(e,t,s){s.d(t,{D:function(){return i},T:function(){return a}});var n=s(24246),r=s(39941);let a="show less",i=[{key:"expand-all",label:"Expand all",icon:(0,n.jsx)(r.PJP.jbG,{})},{key:"collapse-all",label:"Collapse all",icon:(0,n.jsx)(r.PJP.MVB,{})}]},26070:function(e,t,s){s.d(t,{v:function(){return l},Q:function(){return u.Q}});var n=s(24246),r=s(39941),a=s(27378),i=s(3110);let{Text:o}=r.AntTypography,l=e=>{let{values:t,valueSuffix:s,columnState:l}=e,{isExpanded:u,version:c}=l||{},[d,m]=(0,a.useState)(!u);(0,a.useEffect)(()=>{m(!u)},[u,c]);let p=(0,a.useCallback)(()=>{m(!0)},[]),y=(0,a.useCallback)(()=>{m(!1)},[]),g=(0,a.useCallback)(()=>{d?y():p()},[d,y,p]);return(0,a.useMemo)(()=>(null==t?void 0:t.length)?1===t.length?(0,n.jsx)(o,{ellipsis:!0,"data-testid":"list-expandable-cell-single",children:t[0]}):(0,n.jsxs)(r.jqI,{align:d?"center":"flex-start",vertical:!d,gap:d?"small":"none","data-testid":"list-expandable-cell",children:[d?(0,n.jsxs)(o,{ellipsis:!0,children:[t.length," ",s]}):(0,n.jsx)(r.krs,{dataSource:t,renderItem:e=>(0,n.jsx)("li",{children:e})}),(0,n.jsx)(r.wpx,{type:"link",size:"small",onClick:e=>{e.stopPropagation(),g()},className:"h-auto p-0",style:{fontSize:"var(--ant-font-size)"},children:d?"view":i.T})]}):null,[d,t,s,g])};var u=s(2525)},54762:function(e,t,s){s.d(t,{l:function(){return o}});var n=s(24246),r=s(39941),a=s(62165),i=s(54682);let o=e=>{let{consentStatus:t}=e,{flags:s}=(0,a.hz)(),{assetConsentStatusLabels:o}=s;return o&&(null==t?void 0:t.status)===i.pF.ALERT?(0,n.jsx)(r.esZ,{title:null==t?void 0:t.message,"data-testid":"discovery-status-icon-alert-tooltip",children:(0,n.jsx)("div",{className:"mb-px","data-testid":"discovery-status-icon-alert",children:(0,n.jsx)(r.PJP.OdJ,{style:{color:"var(--fidesui-error)"}})})}):null}},9320:function(e,t,s){s.d(t,{_:function(){return a}});var n=s(24246),r=s(26089);let a=(e,t)=>(0,n.jsxs)(n.Fragment,{children:[e," ",t&&(0,n.jsx)(r.Z,{onClick:t,children:"View"})]})},37059:function(e,t,s){s.d(t,{Ak:function(){return v},EY:function(){return m},Tj:function(){return y},Ud:function(){return o},Vr:function(){return f},WJ:function(){return u},mi:function(){return h},nP:function(){return d},nS:function(){return p},rs:function(){return c},sX:function(){return g},ut:function(){return T},wi:function(){return l}});var n=s(78780),r=s(16394),a=s(54682),i=s(98145);let{useGetAggregateMonitorResultsQuery:o,useGetDiscoveredSystemAggregateQuery:l,useGetDiscoveredAssetsQuery:u,useAddMonitorResultSystemsMutation:c,useIgnoreMonitorResultSystemsMutation:d,useAddMonitorResultAssetsMutation:m,useIgnoreMonitorResultAssetsMutation:p,useRestoreMonitorResultAssetsMutation:y,useUpdateAssetsSystemMutation:g,useUpdateAssetsDataUseMutation:v,useUpdateAssetsMutation:f,useGetConsentBreakdownQuery:h,useGetWebsiteMonitorResourceFiltersQuery:T}=n.u.injectEndpoints({endpoints:e=>({getAggregateMonitorResults:e.query({query:e=>{let{page:t=1,size:s=20,search:n}=e;return{url:"/plus/discovery-monitor/aggregate-results",params:{page:t,size:s,search:n,diff_status:"addition"}}},providesTags:["Discovery Monitor Results"]}),getDiscoveredSystemAggregate:e.query({query:e=>{let{key:t,page:s=1,size:n=20,search:r,diff_status:a}=e;return{url:"/plus/discovery-monitor/system-aggregate-results",params:{monitor_config_id:t,page:s,size:n,search:r,diff_status:a}}},providesTags:["Discovery Monitor Results"]}),getDiscoveredAssets:e.query({query:e=>{let{key:t,system:s,page:n=1,size:o=20,search:l,diff_status:u=[a.LL.ADDITION],sort_by:c=[i.r.CONSENT_AGGREGATED,"urn"],sort_asc:d=!0,resource_type:m,data_uses:p,locations:y,consent_aggregated:g}=e,v=Array.isArray(c)?c:[c],f=(0,r.$J)({sort_by:v,resource_type:m,data_uses:p,locations:y,consent_aggregated:g});return{url:"/plus/discovery-monitor/".concat(t,"/results?").concat(f.toString()),params:{resolved_system_id:s,page:n,size:o,search:l,diff_status:u,sort_asc:d}}},providesTags:()=>["Discovery Monitor Results"]}),addMonitorResultSystems:e.mutation({query:e=>{let{monitor_config_key:t,resolved_system_ids:s}=e,n=(0,r.du)(s,"resolved_system_ids");return{url:"/plus/discovery-monitor/".concat(t,"/promote"),method:"POST",params:n?new URLSearchParams(n):new URLSearchParams}},invalidatesTags:["Discovery Monitor Results"]}),ignoreMonitorResultSystems:e.mutation({query:e=>{let{monitor_config_key:t,resolved_system_ids:s}=e,n=(0,r.du)(s,"resolved_system_ids");return{method:"POST",url:"/plus/discovery-monitor/".concat(t,"/mute?").concat(n)}},invalidatesTags:["Discovery Monitor Results"]}),addMonitorResultAssets:e.mutation({query:e=>{var t;let s=new URLSearchParams;return null===(t=e.urnList)||void 0===t||t.forEach(e=>s.append("staged_resource_urns",e)),{method:"POST",url:"/plus/discovery-monitor/promote?".concat(s)}},invalidatesTags:["Discovery Monitor Results"]}),ignoreMonitorResultAssets:e.mutation({query:e=>{var t;let s=new URLSearchParams;return null===(t=e.urnList)||void 0===t||t.forEach(e=>s.append("staged_resource_urns",e)),{method:"POST",url:"/plus/discovery-monitor/mute?".concat(s)}},invalidatesTags:["Discovery Monitor Results"]}),restoreMonitorResultAssets:e.mutation({query:e=>{var t;let s=new URLSearchParams({status_to_set:a.LL.ADDITION});return null===(t=e.urnList)||void 0===t||t.forEach(e=>s.append("staged_resource_urns",e)),{method:"POST",url:"/plus/discovery-monitor/un-mute?".concat(s)}},invalidatesTags:["Discovery Monitor Results"]}),updateAssetsSystem:e.mutation({query:e=>({method:"PATCH",url:"/plus/discovery-monitor/".concat(e.monitorId,"/results"),body:e.urnList.map(t=>({urn:t,user_assigned_system_key:e.systemKey}))}),invalidatesTags:["Discovery Monitor Results","System Assets"]}),updateAssetsDataUse:e.mutation({query:e=>({method:"PATCH",url:"/plus/discovery-monitor/".concat(e.monitorId,"/results"),body:e.urnList.map(t=>({urn:t,user_assigned_data_uses:e.dataUses}))}),invalidatesTags:["Discovery Monitor Results"]}),updateAssets:e.mutation({query:e=>({method:"PATCH",url:"/plus/discovery-monitor/".concat(e.monitorId,"/results"),body:e.assets}),invalidatesTags:["Discovery Monitor Results"]}),getConsentBreakdown:e.query({query:e=>{let{stagedResourceUrn:t,status:s,page:n=1,size:r=20}=e;return{url:"/plus/discovery-monitor/staged_resource/".concat(encodeURIComponent(t),"/consent"),params:{status:s,page:n,size:r}}}}),getWebsiteMonitorResourceFilters:e.query({query:e=>{let{monitor_config_id:t,resolved_system_id:s,diff_status:n=[a.LL.ADDITION],search:i,resource_type:o,data_uses:l,locations:u,consent_aggregated:c}=e,d={monitor_config_id:t,resolved_system_id:s,diff_status:n};i&&(d.search=i);let m=(0,r.$J)({resource_type:o,data_uses:l,locations:u,consent_aggregated:c}).toString();return{url:m?"/plus/filters/website_monitor_resources?".concat(m):"/plus/filters/website_monitor_resources",params:d}},providesTags:["Discovery Monitor Results"]})})})},98145:function(e,t,s){var n,r,a,i;s.d(t,{X:function(){return n},r:function(){return r}}),(a=n||(n={})).WITH_CONSENT="With consent",a.WITHOUT_CONSENT="Without consent",a.EXEMPT="Exempt",a.UNKNOWN="Unknown",(i=r||(r={})).NAME="name",i.RESOURCE_TYPE="resource_type",i.SYSTEM="system",i.DATA_USES="data_uses",i.LOCATIONS="locations",i.DOMAIN="domain",i.PAGE="page",i.CONSENT_AGGREGATED="consent_aggregated",i.ACTIONS="actions"},88708:function(e,t,s){s.d(t,{A:function(){return r}});var n,r,a=s(27378),i=s(14908),o=s(54682);(n=r||(r={})).ATTENTION_REQUIRED="attention-required",n.RECENT_ACTIVITY="recent-activity",n.IGNORED="ignored",t.Z=e=>{let{activeTab:t,onTabChange:s}=(0,i.Z)({tabKeys:Object.values(r)}),n=(0,a.useMemo)(()=>[{label:"Attention required",params:{diff_status:[o.LL.ADDITION],system:e},hash:"attention-required"},{label:"Recent activity",params:{diff_status:[o.LL.MONITORED]},hash:"recent-activity"},{label:"Ignored",params:{diff_status:[o.LL.MUTED],system:e},hash:"ignored"}],[e]),{diff_status:l,system:u}=(0,a.useMemo)(()=>{var e;return null!==(e=n.find(e=>e.hash===t))&&void 0!==e?e:n[0]},[n,t]).params,c=(0,a.useMemo)(()=>l.includes(o.LL.MONITORED),[l]);return{filterTabs:n,activeTab:t,onTabChange:s,activeParams:(0,a.useMemo)(()=>e?{diff_status:l,system:u}:{diff_status:l},[e,l,u]),actionsDisabled:c}}},78238:function(e,t,s){s.d(t,{g:function(){return n}});let n=["essential","functional.service.improve","personalize","analytics","marketing.advertising.first_party.targeted","marketing.advertising.third_party.targeted"];t.Z=e=>n.includes(e)},31883:function(e,t,s){s.d(t,{Bw:function(){return n.Bw},D4:function(){return n.D4}});var n=s(19043)}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1345],{11611:function(e){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},55193:function(e,t,i){var a=i(99736),r=i(92360);e.exports=function(e){return"symbol"==typeof e||r(e)&&"[object Symbol]"==a(e)}},14908:function(e,t,i){"use strict";var a=i(86677),r=i(27378);let s=e=>e.startsWith("#")?e.slice(1):e;t.Z=e=>{let{tabKeys:t,initialTab:i}=e,l=(0,a.useRouter)(),o=l.asPath.split("#")[1]||t[0],[n,c]=(0,r.useState)(o);return(0,r.useEffect)(()=>{i&&t.includes(i)&&c(i)},[i,t,l.isReady]),{activeTab:n,onTabChange:(0,r.useCallback)(async e=>{if(!t.includes(e)){await l.replace({pathname:l.pathname,query:l.query,hash:void 0}),c(t[0]);return}l.isReady&&(await l.replace({pathname:l.pathname,query:l.query,hash:s(e)},void 0,{shallow:!0}),c(e))},[l,t])}}},69828:function(e,t,i){"use strict";i.d(t,{Y:function(){return l}});var a=i(24246),r=i(39941),s=i(70788);let l=[(0,a.jsx)(r.PJP.S9g,{},"layers"),(0,a.jsx)(r.PJP.ehp,{},"dataset"),(0,a.jsx)(r.PJP.iA_,{},"table"),(0,a.jsx)(r.PJP.$4y,{style:{transform:"rotate(-90deg)"}},"field")];t.Z=e=>{let{resourceUrn:t,parentLink:i,onPathClick:r=()=>{}}=e,o=[];if(t||o.push({title:"All activity"}),t){o.push({title:"All activity",href:i});let e=t.split(".");e.forEach((t,i)=>{0!==i&&o.push({title:t,icon:l[i-1],onClick:t=>{t.preventDefault(),r(e.slice(0,i+1).join("."))}})})}return(0,a.jsx)(s.m,{"data-testid":"results-breadcrumb",items:o})}},1039:function(e,t,i){"use strict";i.d(t,{Z:function(){return I}});var a,r,s=i(24246),l=i(59003),o=i(92222),n=i(39941),c=i(27378),d=i(47935),u=i(70675),h=i(72625),m=i(54409),g=i(79947),x=i(87667),j=i(50169),v=i(28278),L=i(54682),p=i(74241),f=e=>{let{resourceType:t,changeTypeOverride:i}=e,a=(0,o.Cl)(),r=[];return t?t===L.D$.SCHEMA?{columns:[a.accessor(e=>e.name,{id:"name",cell:e=>(0,s.jsx)(x.Z,{changeTypeOverride:i,result:e.row.original}),header:e=>(0,s.jsx)(d.Rr,{value:"Name",...e}),size:300}),a.accessor(e=>e.urn,{id:"project",cell:e=>(0,s.jsx)(d.G3,{value:(0,p.Z)(e.getValue())}),header:e=>(0,s.jsx)(d.Rr,{value:"Project",...e})}),a.display({id:"status",cell:e=>(0,s.jsx)(j.Z,{changeTypeOverride:i,result:e.row.original}),header:e=>(0,s.jsx)(d.Rr,{value:"Status",...e})}),a.accessor(e=>e.system,{id:"system",cell:e=>(0,s.jsx)(d.G3,{value:e.getValue()}),header:e=>(0,s.jsx)(d.Rr,{value:"System",...e})}),a.accessor(e=>e.monitor_config_id,{id:"monitor",cell:e=>(0,s.jsx)(d.G3,{value:e.getValue()}),header:e=>(0,s.jsx)(d.Rr,{value:"Detected by",...e})}),a.accessor(e=>e.updated_at,{id:"time",cell:e=>(0,s.jsx)(h.Cy,{time:e.getValue()}),header:e=>(0,s.jsx)(d.Rr,{value:"When",...e})}),a.display({id:"actions",cell:e=>(0,s.jsx)(m.Z,{ignoreChildActions:i===v.E.MONITORED||i===v.E.MUTED,resource:e.row.original}),header:"Actions",size:200,meta:{disableRowClick:!0}})]}:t===L.D$.TABLE?{columns:[a.accessor(e=>e.name,{id:"name",cell:e=>(0,s.jsx)(x.Z,{changeTypeOverride:i,result:e.row.original}),header:e=>(0,s.jsx)(d.Rr,{value:"Table name",...e}),size:300}),a.accessor(e=>e.description,{id:"description",cell:e=>(0,s.jsx)(d.G3,{value:e.getValue(),cellProps:e}),header:e=>(0,s.jsx)(d.Rr,{value:"Description",...e}),meta:{showHeaderMenu:!0}}),a.display({id:"status",cell:e=>(0,s.jsx)(j.Z,{changeTypeOverride:i,result:e.row.original}),header:e=>(0,s.jsx)(d.Rr,{value:"Status",...e})}),a.accessor(e=>e.monitor_config_id,{id:"monitor",cell:e=>(0,s.jsx)(d.G3,{value:e.getValue()}),header:e=>(0,s.jsx)(d.Rr,{value:"Detected by",...e})}),a.accessor(e=>e.updated_at,{id:"time",cell:e=>(0,s.jsx)(h.Cy,{time:e.getValue()}),header:e=>(0,s.jsx)(d.Rr,{value:"When",...e})}),a.display({id:"actions",cell:e=>(0,s.jsx)(m.Z,{resource:e.row.original}),header:"Actions",size:200,meta:{disableRowClick:!0}})]}:t===L.D$.FIELD?{columns:[a.accessor(e=>e.name,{id:"name",cell:e=>(0,s.jsx)(x.Z,{changeTypeOverride:i,result:e.row.original}),header:e=>(0,s.jsx)(d.Rr,{value:"Field name",...e}),size:300}),a.accessor(e=>e.source_data_type,{id:"data-type",cell:e=>(0,s.jsx)(g.Z,{type:e.getValue()}),header:e=>(0,s.jsx)(d.Rr,{value:"Data type",...e})}),a.accessor(e=>e.description,{id:"description",cell:e=>(0,s.jsx)(d.G3,{value:e.getValue(),cellProps:e}),header:e=>(0,s.jsx)(d.Rr,{value:"Description",...e}),meta:{showHeaderMenu:!0}}),a.display({id:"status",cell:e=>(0,s.jsx)(j.Z,{changeTypeOverride:i,result:e.row.original}),header:e=>(0,s.jsx)(d.Rr,{value:"Status",...e})}),a.accessor(e=>e.monitor_config_id,{id:"monitor",cell:e=>(0,s.jsx)(d.G3,{value:e.getValue()}),header:e=>(0,s.jsx)(d.Rr,{value:"Detected by",...e})}),a.accessor(e=>e.updated_at,{id:"time",cell:e=>(0,s.jsx)(h.Cy,{time:e.getValue()}),header:e=>(0,s.jsx)(d.Rr,{value:"When",...e})}),a.display({id:"actions",cell:e=>(0,s.jsx)(m.Z,{resource:e.row.original}),header:"Actions",size:200,meta:{disableRowClick:!0}})]}:t===L.D$.ENDPOINT?{columns:[a.accessor(e=>e.name,{id:"name",cell:e=>(0,s.jsx)(x.Z,{changeTypeOverride:i,result:e.row.original}),header:e=>(0,s.jsx)(d.Rr,{value:"Object",...e}),size:300}),a.accessor(e=>e.description,{id:"description",cell:e=>(0,s.jsx)(d.G3,{value:e.getValue(),cellProps:e}),header:e=>(0,s.jsx)(d.Rr,{value:"Description",...e}),meta:{showHeaderMenu:!0}}),a.display({id:"status",cell:e=>(0,s.jsx)(j.Z,{changeTypeOverride:i,result:e.row.original}),header:e=>(0,s.jsx)(d.Rr,{value:"Status",...e})}),a.accessor(e=>e.monitor_config_id,{id:"monitor",cell:e=>(0,s.jsx)(d.G3,{value:e.getValue()}),header:e=>(0,s.jsx)(d.Rr,{value:"Detected by",...e})}),a.accessor(e=>e.updated_at,{id:"time",cell:e=>(0,s.jsx)(h.Cy,{time:e.getValue()}),header:e=>(0,s.jsx)(d.Rr,{value:"When",...e})}),a.display({id:"actions",cell:e=>(0,s.jsx)(m.Z,{resource:e.row.original}),header:"Actions",size:200,meta:{disableRowClick:!0}})]}:{columns:r}:{columns:r}},y=i(14908);(a=r||(r={})).ACTION_REQUIRED="action-required",a.MONITORED="monitored",a.UNMONITORED="unmonitored";let D={"action-required":{label:"Action Required",key:"action-required",filters:[L.LL.ADDITION,L.LL.REMOVAL],childFilters:[L.LL.ADDITION,L.LL.REMOVAL]},monitored:{label:"Monitored",key:"monitored",filters:[L.LL.MONITORED],childFilters:[],changeTypeOverride:v.E.MONITORED},unmonitored:{label:"Unmonitored",key:"unmonitored",filters:[L.LL.MUTED],childFilters:[],changeTypeOverride:v.E.MUTED}};var R=()=>{var e,t,i;let{activeTab:a,onTabChange:s}=(0,y.Z)({tabKeys:Object.values(r)});return{filterTabs:Object.values(D),activeTabKey:a,onTabChange:s,activeDiffFilters:null===(e=D[a])||void 0===e?void 0:e.filters,activeChildDiffFilters:null===(t=D[a])||void 0===t?void 0:t.childFilters,activeChangeTypeOverride:null===(i=D[a])||void 0===i?void 0:i.changeTypeOverride}},b=i(47182),_=i(38347),T=i(7940),w=i(80285),C=i(36168),O=i(30952);let H={items:[],total:0,page:1,size:50,pages:1},M=()=>(0,s.jsx)(n.gCW,{mt:6,p:10,spacing:4,borderRadius:"base",maxW:"70%","data-testid":"empty-state",alignSelf:"center",margin:"auto",children:(0,s.jsxs)(n.gCW,{children:[(0,s.jsx)(n.xvT,{fontSize:"md",fontWeight:"600",children:"No activity found"}),(0,s.jsx)(n.xvT,{fontSize:"sm",children:"You're up to date!"})]})});var I=e=>{let{resourceUrn:t}=e,[i,a]=(0,c.useState)(""),{filterTabs:r,activeTabKey:h,onTabChange:m,activeDiffFilters:g,activeChildDiffFilters:x,activeChangeTypeOverride:j}=R(),{PAGE_SIZES:v,pageSize:p,setPageSize:y,onPreviousPageClick:D,isPreviousPageDisabled:I,onNextPageClick:Z,isNextPageDisabled:E,startRange:k,endRange:A,pageIndex:N,setTotalPages:P,resetPageIndexToDefault:V}=(0,d.oi)();(0,c.useEffect)(()=>{V()},[t,i,V,g,x]);let{isFetching:S,isLoading:F,data:z}=(0,u.z8)({staged_resource_urn:t,page:N,size:p,child_diff_status:x,diff_status:g,search:i}),U=(0,T.G)(null==z?void 0:z.items[0]),{columns:$}=f({resourceType:U,changeTypeOverride:j}),{items:G,total:q,pages:W}=(0,c.useMemo)(()=>null!=z?z:H,[z]);(0,c.useEffect)(()=>{P(W)},[W,P]);let B=(0,c.useMemo)(()=>$,[$]),{navigateToDetectionResults:J}=(0,b.Z)(),K=(0,l.b7)({getCoreRowModel:(0,o.sC)(),getGroupedRowModel:(0,o.qe)(),getExpandedRowModel:(0,o.rV)(),getRowId:w.Z,columns:B,manualPagination:!0,data:G,columnResizeMode:"onChange"});return F?(0,s.jsx)(d.I4,{rowHeight:36,numRows:36}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.A5g,{items:r.map(e=>({key:e.key,label:e.label})),activeKey:h,onChange:e=>m(e)}),(0,s.jsx)(d.Q$,{children:(0,s.jsx)(n.kCb,{direction:"row",alignItems:"center",justifyContent:"space-between",width:"full",children:(0,s.jsxs)(n.kCb,{gap:6,align:"center",children:[(0,s.jsx)(n.xuv,{flexShrink:0,children:(0,s.jsx)(O.f,{value:i,onChange:a})}),(0,s.jsx)(_.Z,{})]})})}),(0,s.jsx)(d.ZK,{tableInstance:K,onRowClick:e=>J({resourceUrn:e.urn,filterTab:h}),getRowIsClickable:e=>U!==L.D$.FIELD||(0,C.Z)(e),emptyTableNotice:(0,s.jsx)(M,{})}),(0,s.jsx)(d.s8,{totalRows:q||0,pageSizes:v,setPageSize:y,onPreviousPageClick:D,isPreviousPageDisabled:I||S,onNextPageClick:Z,isNextPageDisabled:E||S,startRange:k,endRange:A})]})}},54409:function(e,t,i){"use strict";i.d(t,{Z:function(){return g}});var a=i(24246),r=i(39941),s=i(812),l=i(25010),o=i(54682),n=i(31883);let c=(0,r.IUT)({displayName:"MonitorOffIcon",viewBox:"0 0 12 12",path:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M5.47125 1H5.85H6.15H6.51188L6.58875 1.36914L7.52062 5.83268L6.42408 4.98635L6.03375 3.11719L5.8038 4.50761L4.99323 3.882L5.40562 1.38867L5.47125 1ZM4.80795 5.0022L4.67675 5.79545L5.48735 6.42109L5.61854 5.62783L4.80795 5.0022ZM6.73856 6.49227L6.96125 7.55866L8.42407 8.6877L8.69498 8.00228L7.94864 7.42624L7.88625 7.58398L7.83501 7.33853L6.73856 6.49227ZM8.33138 6.45844L9.07755 7.03434L9.30188 6.4668H11.55H12V5.5293H11.55H9H8.69812L8.58375 5.82031L8.33138 6.45844ZM7.27551 9.06443L7.35399 9.125H7.28813L7.27551 9.06443ZM4.49147 6.91566L5.30209 7.54131L4.79437 10.6113L4.72875 11H4.35H4.05H3.69563L3.61313 10.6406L2.64563 6.46875H0.45H0V5.53125H0.45H2.69777L3.49646 6.1477L4.15125 8.97266L4.49147 6.91566Z",fill:"currentColor"}),(0,a.jsx)("g",{clipPath:"url(#clip0_341_3102)",children:(0,a.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M10.6755 10.4168L0.164222 2.304L0.775218 1.51237L11.2865 9.62517L10.6755 10.4168Z",fill:"currentColor"})}),(0,a.jsx)("defs",{children:(0,a.jsx)("clipPath",{id:"clip0_341_3102",children:(0,a.jsx)("rect",{width:"11.5",height:"9",fill:"white",transform:"translate(0 1.5)"})})})]})}),d=(0,r.IUT)({displayName:"MonitorOnIcon",viewBox:"0 0 12 10",path:(0,a.jsx)("path",{d:"M5.47125 0H5.85H6.15H6.51188L6.58875 0.369141L7.88625 6.58398L8.58375 4.82031L8.69812 4.5293H9H11.55H12V5.4668H11.55H9.30188L8.36625 7.83398L8.25188 8.125H7.95H7.65H7.28813L7.21125 7.75586L6.03375 2.11719L4.79437 9.61133L4.72875 10H4.35H4.05H3.69563L3.61313 9.64062L2.64563 5.46875H0.45H0V4.53125H0.45H3H3.35438L3.43688 4.89062L4.15125 7.97266L5.40562 0.388672L5.47125 0Z",fill:"currentColor"})});var u=i(79494),h=i(70675),m=i(7940),g=e=>{let{resource:t,ignoreChildActions:i=!1}=e,g=(0,m.G)(t),[x,{isLoading:j}]=(0,h.v8)(),[v,{isLoading:L}]=(0,h.vi)(),[p,{isLoading:f}]=(0,h.Tl)(),{successAlert:y,errorAlert:D}=(0,l.VY)(),R=async()=>{let e=await x({staged_resource_urn:t.urn,monitor_config_id:t.monitor_config_id});(0,n.D4)(e)?D((0,s.e$)(e.error,"Failed to confirm resource")):y("Data discovery has started. The results may take some time to appear in the “Data discovery“ tab.","".concat(t.name||"The resource"," is now being monitored."))},b=async()=>{let e=await p({staged_resource_urn:t.urn});(0,n.D4)(e)?D((0,s.e$)(e.error),"Failed to un-mute resource"):y("".concat(t.name||"The resource"," has been un-muted and is now being monitored."))},_=async()=>{let e=await x({staged_resource_urn:t.urn,monitor_config_id:t.monitor_config_id,unmute_children:!0,classify_monitored_resources:!0});(0,n.D4)(e)?D((0,s.e$)(e.error),"Failed to un-mute resource"):y("Data discovery has started. The results may take some time to appear in the “Data discovery“ tab.","".concat(t.name||"The resource"," is now being monitored."))},T=async()=>{let e=await v({staged_resource_urn:t.urn});(0,n.D4)(e)?D((0,s.e$)(e.error),"Failed to mute resource"):y("Ignored data will not be monitored for changes or added to Fides datasets.","".concat(t.name||"Resource"," ignored"))},w=j||L||f,{diff_status:C,child_diff_statuses:O}=t,H=g===o.D$.SCHEMA,M=g===o.D$.FIELD,I=O&&(O[o.LL.CLASSIFICATION_ADDITION]||O[o.LL.CLASSIFICATION_UPDATE]),Z=H&&void 0===C||!M&&C===o.LL.ADDITION||I,E=C!==o.LL.MUTED,k=C===o.LL.MUTED&&!M,A=C===o.LL.MUTED&&M,N=O&&(O[o.LL.ADDITION]||O[o.LL.REMOVAL]),P=C===o.LL.MONITORED&&!i&&N&&!I;return(0,a.jsxs)(r.Ugi,{children:[(Z||P)&&(0,a.jsx)(u.Z,{title:"Monitor",icon:(0,a.jsx)(d,{}),onClick:R,disabled:w,loading:j}),A&&(0,a.jsx)(u.Z,{title:"Un-Mute",icon:(0,a.jsx)(d,{}),onClick:b,disabled:w,loading:j}),k&&(0,a.jsx)(u.Z,{title:"Monitor",icon:(0,a.jsx)(d,{}),onClick:_,disabled:w,loading:j}),E&&(0,a.jsx)(u.Z,{title:"Ignore",icon:(0,a.jsx)(c,{}),onClick:T,disabled:w,loading:L})]})}},79947:function(e,t,i){"use strict";var a=i(24246),r=i(39941);t.Z=e=>{let{type:t}=e;return(0,a.jsx)(r.kCb,{align:"center",h:"full",children:!!t&&(0,a.jsx)(r.j8w,{children:t})})}},31883:function(e,t,i){"use strict";i.d(t,{Bw:function(){return a.Bw},D4:function(){return a.D4}});var a=i(19043)}}]);
|