ethyca-fides 2.58.0rc0__py2.py3-none-any.whl → 2.58.1b0__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.58.0rc0.dist-info → ethyca_fides-2.58.1b0.dist-info}/METADATA +1 -1
- {ethyca_fides-2.58.0rc0.dist-info → ethyca_fides-2.58.1b0.dist-info}/RECORD +86 -86
- fides/_version.py +3 -3
- fides/api/models/attachment.py +80 -11
- fides/api/models/comment.py +45 -15
- fides/api/models/privacy_request/privacy_request.py +23 -6
- fides/api/service/storage/s3.py +14 -1
- fides/ui-build/static/admin/404.html +1 -1
- 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/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
- {ethyca_fides-2.58.0rc0.dist-info → ethyca_fides-2.58.1b0.dist-info}/LICENSE +0 -0
- {ethyca_fides-2.58.0rc0.dist-info → ethyca_fides-2.58.1b0.dist-info}/WHEEL +0 -0
- {ethyca_fides-2.58.0rc0.dist-info → ethyca_fides-2.58.1b0.dist-info}/entry_points.txt +0 -0
- {ethyca_fides-2.58.0rc0.dist-info → ethyca_fides-2.58.1b0.dist-info}/top_level.txt +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/{_app-99e5e46de68a1e37.js → _app-be7a8cdf3b56b1ec.js} +0 -0
- /fides/ui-build/static/admin/_next/static/{ynWf-N1tY5b4O-l9uuHAq → kYmFOkrlCZdjq5U5byh89}/_buildManifest.js +0 -0
- /fides/ui-build/static/admin/_next/static/{ynWf-N1tY5b4O-l9uuHAq → kYmFOkrlCZdjq5U5byh89}/_ssgManifest.js +0 -0
@@ -1,5 +1,5 @@
|
|
1
1
|
fides/__init__.py,sha256=tE3qqipY9eynYXYpQeksYGHP5NfeXyq-L9mBtpFIxl8,139
|
2
|
-
fides/_version.py,sha256=
|
2
|
+
fides/_version.py,sha256=hgABc_H7ecRP9wBVZvL_NjEya4pD1o5yhoVFINgSzYQ,500
|
3
3
|
fides/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
4
|
fides/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
5
|
fides/api/analytics.py,sha256=vgwja9DB7gPsQSE3KQi0F3r6yWmnW66wBRC9FpawfRI,1910
|
@@ -356,11 +356,11 @@ fides/api/migrations/hash_migration_tracker.py,sha256=d7-7gCSTAhx5mmvrLsAM8QunKn
|
|
356
356
|
fides/api/models/__init__.py,sha256=2bRCL2hY-a2APbUK2NnXCM6R-HukTZzd4AMiUQjY3Po,1987
|
357
357
|
fides/api/models/application_config.py,sha256=BTRtVWFUHuos5ixoJxKKSdqxMRyPvGtVi05sv9xq4D4,8813
|
358
358
|
fides/api/models/asset.py,sha256=Frdx8w1lKpA8g3PgFG3UgYXqCuejfdXBgaVDvkYQhCE,6178
|
359
|
-
fides/api/models/attachment.py,sha256=
|
359
|
+
fides/api/models/attachment.py,sha256=B0jcGEkwQUuI38BQoWDHZHqzSI8R7mRhu9yOFIFiGZ0,9882
|
360
360
|
fides/api/models/audit_log.py,sha256=o8Qm57PaA3pNTqDRXbr-7bLorzmZUCaywNAe90St4uk,948
|
361
361
|
fides/api/models/authentication_request.py,sha256=aZuO38BiZWGriSVGleVnPP9vVhRSD1jjb1bEul5Ge48,1230
|
362
362
|
fides/api/models/client.py,sha256=Qv21ftOeJrm8Ty3vbOhRhUjQqOxKMWNWZPOMrg0Xqfc,6073
|
363
|
-
fides/api/models/comment.py,sha256=
|
363
|
+
fides/api/models/comment.py,sha256=5FTgq51LjgCEeE9SU2v4zpGZ-DW3LVejtvoaCb-v2kA,4309
|
364
364
|
fides/api/models/connectionconfig.py,sha256=qZ4lymTFq1HMWQBJjUh5UDIqmHfeyT9hb-fJXVcCPds,14471
|
365
365
|
fides/api/models/consent_automation.py,sha256=iHGOlz_DSfrAJpI09p7TnZZEFQI4Ga3QvuyGYuQtr_E,5574
|
366
366
|
fides/api/models/custom_asset.py,sha256=uDb4WyO0cQiIg1nR6SProY_dzZrUgLrdVS4rhPKuvPc,546
|
@@ -397,7 +397,7 @@ fides/api/models/tcf_purpose_overrides.py,sha256=_7RcctuoPnKT8o70S2_4AArVGXz_xx9
|
|
397
397
|
fides/api/models/privacy_request/__init__.py,sha256=AavNswo44z-vHKqYy98sjSozH_XH9vpBFMOv1qt4Ty4,1237
|
398
398
|
fides/api/models/privacy_request/consent.py,sha256=JTt9rQ5xxv31b62wqItHRy5Nl3iSzk1ZnIdn1P1lpis,5220
|
399
399
|
fides/api/models/privacy_request/execution_log.py,sha256=fVKP0jyiavvGPm_aiD3oJf4jUAg2R-nZ65cZrbTZvpQ,3510
|
400
|
-
fides/api/models/privacy_request/privacy_request.py,sha256=
|
400
|
+
fides/api/models/privacy_request/privacy_request.py,sha256=1U5FwhaBAD_XT7h7GX5QzXDrSbhSqc6vFe2pQI4Hj_c,60123
|
401
401
|
fides/api/models/privacy_request/provided_identity.py,sha256=csGc-wUl31zTAVEoukcpEQ9nSNql7f4T82L7SAM5mXg,4547
|
402
402
|
fides/api/models/privacy_request/request_task.py,sha256=X4WLwQYYTsf0y1mxjOa8mDuCx1Nbe9uWMpPilTwAC4M,11223
|
403
403
|
fides/api/models/privacy_request/webhook.py,sha256=x4DpkU1Yc_LO5-V75wuxwXdJD-V6myxoK-QDAJlpE8o,3005
|
@@ -615,7 +615,7 @@ fides/api/service/saas_request/saas_request_override_factory.py,sha256=SoHfxApKF
|
|
615
615
|
fides/api/service/saas_request/override_implementations/__init__.py,sha256=Hvr-Mc2bLucm8RfwoU5OUOfvZBx5IaQk1G6AI5gdNlI,438
|
616
616
|
fides/api/service/saas_request/override_implementations/interruptible_request.py,sha256=QYRgQ2H9pOI8nIisU2cbI18IiHYCCXruUq61gGIZjMM,1027
|
617
617
|
fides/api/service/storage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
618
|
-
fides/api/service/storage/s3.py,sha256=
|
618
|
+
fides/api/service/storage/s3.py,sha256=o9OmxEsIxGGEoK7A2Wd1Hm99TjinrVkz-e9cdWJE5VY,7230
|
619
619
|
fides/api/service/storage/storage_authenticator_service.py,sha256=DRc9mPXUIXcpyrxmxGFiGjvurbQHj7sg2kqJP2pyFpM,1416
|
620
620
|
fides/api/service/storage/storage_uploader_service.py,sha256=8VPKZY8APaoY2zMqabGXh72vGLoZJZPGl8CFJmaTlkQ,3823
|
621
621
|
fides/api/service/storage/util.py,sha256=oxCkp-Kt8gHr6Ynh0i_Jirbx21vKEI5gHBaiyp6O_V8,328
|
@@ -767,27 +767,27 @@ fides/service/messaging/aws_ses_service.py,sha256=7yZe4wuhWzdZl6soddHrUhExJvIXeq
|
|
767
767
|
fides/service/messaging/messaging_service.py,sha256=_3iObiVslfJzuzCukCDw2gbQXrOPpMZs3LqG1Dbmirw,11710
|
768
768
|
fides/service/privacy_request/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
769
769
|
fides/service/privacy_request/privacy_request_service.py,sha256=n751XgEPW4PN7HnodgZCzV6cQ9Jt_5h5Who6TFr7BSo,26854
|
770
|
-
fides/ui-build/static/admin/404.html,sha256=
|
771
|
-
fides/ui-build/static/admin/add-systems.html,sha256=
|
772
|
-
fides/ui-build/static/admin/ant-poc.html,sha256=
|
773
|
-
fides/ui-build/static/admin/consent.html,sha256=
|
774
|
-
fides/ui-build/static/admin/data-catalog.html,sha256=
|
775
|
-
fides/ui-build/static/admin/datamap.html,sha256=
|
776
|
-
fides/ui-build/static/admin/dataset.html,sha256
|
777
|
-
fides/ui-build/static/admin/datastore-connection.html,sha256=
|
770
|
+
fides/ui-build/static/admin/404.html,sha256=eOHTB3EJSr5Z2r1NGa6bgmk6fj--WiBjgjnUVDcTcck,1466
|
771
|
+
fides/ui-build/static/admin/add-systems.html,sha256=nPu2iXbWOQNt6R8I5vVqcxo29RuTOuDCwyUsNqC6SDo,1642
|
772
|
+
fides/ui-build/static/admin/ant-poc.html,sha256=WZNiK3TW_7SKdQ4hqXccz8AOt_4G6RggyrUwiKivnMc,1474
|
773
|
+
fides/ui-build/static/admin/consent.html,sha256=34l3FBeqAeMiOuhQ_BMAWLNO0Wz9NZH5PJEQ0UL1o9s,1474
|
774
|
+
fides/ui-build/static/admin/data-catalog.html,sha256=OzFZFXbpACZEe4gB1O_jrkCOMFkteJukZvBBjRDQztI,2116
|
775
|
+
fides/ui-build/static/admin/datamap.html,sha256=S8Gcu-s31SMOjs2kbAcYmlYZvvYZFCNxxUhRnA-vOBk,2023
|
776
|
+
fides/ui-build/static/admin/dataset.html,sha256=-n1FMWJUTKz-LySXVRByBoraQUhZpX2VFha2E0CkICQ,1868
|
777
|
+
fides/ui-build/static/admin/datastore-connection.html,sha256=ngStN0Js6OSkpLNh2ZyS2V-oxx6hL7LzLwBpKk-gKbs,1660
|
778
778
|
fides/ui-build/static/admin/favicon.ico,sha256=xxtarycoqCOznVZCG0z5Wej6EfYvMYwyz6EUwaVwhEw,4286
|
779
|
-
fides/ui-build/static/admin/index.html,sha256=
|
780
|
-
fides/ui-build/static/admin/integrations.html,sha256=
|
781
|
-
fides/ui-build/static/admin/login.html,sha256=
|
779
|
+
fides/ui-build/static/admin/index.html,sha256=BUQNNvOsAF1VlZZo2mSIKwwNlxIcFSP-N3VKeaYZx0U,1625
|
780
|
+
fides/ui-build/static/admin/integrations.html,sha256=mzwdofk7qXDYGHO1MuG6MzMgmrOghMSvTEDFOOmw3ds,1874
|
781
|
+
fides/ui-build/static/admin/login.html,sha256=zUoLzxgAXOfvgKzk_UjNNLwnQUCSDi73OVWyeeknlj0,1470
|
782
782
|
fides/ui-build/static/admin/logo-icon.svg,sha256=LTpApcJnb73kye_gPF3KG8qNe6S3HJJKeebdl6aJ8fI,147
|
783
783
|
fides/ui-build/static/admin/logo-white.svg,sha256=u12SVA-WPW0GAhJ1wXM4oi2aqKXKmteo6yEvGDgz5jM,2101
|
784
784
|
fides/ui-build/static/admin/logo.svg,sha256=bCostWyEaAVHBbKwGhzAAGJ0ZNgxBGgzhwKsAXS47bg,2100
|
785
|
-
fides/ui-build/static/admin/messaging.html,sha256=
|
786
|
-
fides/ui-build/static/admin/privacy-requests.html,sha256=
|
787
|
-
fides/ui-build/static/admin/properties.html,sha256=
|
788
|
-
fides/ui-build/static/admin/systems.html,sha256=
|
789
|
-
fides/ui-build/static/admin/taxonomy.html,sha256=
|
790
|
-
fides/ui-build/static/admin/user-management.html,sha256=
|
785
|
+
fides/ui-build/static/admin/messaging.html,sha256=1cZEd5lTvgRpUBwjvowPeHimS2gCiRUbjLVv6anB4nk,1950
|
786
|
+
fides/ui-build/static/admin/privacy-requests.html,sha256=drODIY4kDwWUSPhv_rGHRZiqf3leQYbnlTecyMReK94,1808
|
787
|
+
fides/ui-build/static/admin/properties.html,sha256=oJRQ-Ec3_xz0EWj_p7WaGHBbY-dp-byw5e9v9c6ZVeA,1794
|
788
|
+
fides/ui-build/static/admin/systems.html,sha256=5HXo3mir3yYpA2jAYxWxrZuGtcupKOENFDEwwBaKvGk,1712
|
789
|
+
fides/ui-build/static/admin/taxonomy.html,sha256=GVsEhMgFXvKrCaTcBX3qQlz9hkOcoaANnhWcwat1waE,2185
|
790
|
+
fides/ui-build/static/admin/user-management.html,sha256=BLapIpus19_DZ47Wu_HEQjnrb8_09lTG4vKjofkrXko,1568
|
791
791
|
fides/ui-build/static/admin/_next/static/chunks/1100-053fc6b76c65a00f.js,sha256=tifn0uKU6UnB0II0u8ouqRspoUDmDqQhdkvXHyiiIOg,11046
|
792
792
|
fides/ui-build/static/admin/_next/static/chunks/1150-035a721a04f4451e.js,sha256=4VV8VbDnojajTmekZfRVUZIXkctwXFcFk2nSFOjgqpM,17592
|
793
793
|
fides/ui-build/static/admin/_next/static/chunks/1376-5cea5ef9362215e8.js,sha256=ODtT0FdBzBgzueKcAJ3Lgxkbb0_JthTK3b1yjgOLzu0,29873
|
@@ -855,7 +855,7 @@ fides/ui-build/static/admin/_next/static/chunks/main-app-94a0711202e08b15.js,sha
|
|
855
855
|
fides/ui-build/static/admin/_next/static/chunks/polyfills-42372ed130431b0a.js,sha256=CXPB1kyIrcjjyVBBDLWLKI9yEY1ZZbeASUON648vloM,112594
|
856
856
|
fides/ui-build/static/admin/_next/static/chunks/webpack-2c7ccac5843c4d8e.js,sha256=c5jepWos0YXZcq6UaNC-qS8GBHLGVBepVuHNxwLcKIw,4047
|
857
857
|
fides/ui-build/static/admin/_next/static/chunks/pages/404-b202c0d8f6fc75c3.js,sha256=WmMh52gEBXjLSRQYdkffAyjrhGDaTHFlN49o5KRthX8,1459
|
858
|
-
fides/ui-build/static/admin/_next/static/chunks/pages/_app-
|
858
|
+
fides/ui-build/static/admin/_next/static/chunks/pages/_app-be7a8cdf3b56b1ec.js,sha256=hHc6kODsAjSqht3DDTsvLz5tge_hnpUGOOdJgsCS8fg,3970339
|
859
859
|
fides/ui-build/static/admin/_next/static/chunks/pages/_error-bede3a8288930dcf.js,sha256=rxhLqELBfGD0nm4gM2w43siC06FJgXtETSBEjmAOSOo,253
|
860
860
|
fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-d258f0c25fa020bf.js,sha256=Zu2l0HULImfvv1uSJJUqoYcC3oIdNVqB1fP3-YAc6Do,35062
|
861
861
|
fides/ui-build/static/admin/_next/static/chunks/pages/ant-poc-b9932971a479f3a7.js,sha256=8zL5pG9dw2EWscaYadyTrgNL7Xze8IYqA2Nuw7s-sZU,8625
|
@@ -937,6 +937,8 @@ fides/ui-build/static/admin/_next/static/css/95ac327e5d70148d.css,sha256=-LoR2lJ
|
|
937
937
|
fides/ui-build/static/admin/_next/static/css/972dc7eef106ee7c.css,sha256=5ClA0R-DXctWvHGU5ZRIe488JLjKyVpCxk5yOKr9hrc,342
|
938
938
|
fides/ui-build/static/admin/_next/static/css/ab65b8cc3144bfc8.css,sha256=j408i0-BRbSKBZJPFp2EJFYR6D0XhX6b3pqY0Jc0pEs,154835
|
939
939
|
fides/ui-build/static/admin/_next/static/css/d2d4e9a6923e6730.css,sha256=OdhQ-4KEwBzOslEnnl_MXdGuTan6ZAKKJ_YUuGFWUxY,221
|
940
|
+
fides/ui-build/static/admin/_next/static/kYmFOkrlCZdjq5U5byh89/_buildManifest.js,sha256=rOl0S-Br-8SH3rVdz49n3bglkRN3ytssrr4RbUBQdTM,12159
|
941
|
+
fides/ui-build/static/admin/_next/static/kYmFOkrlCZdjq5U5byh89/_ssgManifest.js,sha256=-D2RVaEwulH2ck-9Y_5QwX6x5lnaSkDOhosw4jeAt-M,101
|
940
942
|
fides/ui-build/static/admin/_next/static/media/inter-all-400-normal.2ae8ed37.woff,sha256=-CQCm8S8JXgvY4e9UwL-yfaPYT67i37QnBGzcP6PdKo,129252
|
941
943
|
fides/ui-build/static/admin/_next/static/media/inter-all-500-normal.56c3d87b.woff,sha256=lOCK2G05xJDgb6tdtbbGtg9w869HcqMzCM1u3luUlh8,138892
|
942
944
|
fides/ui-build/static/admin/_next/static/media/inter-all-600-normal.d9666969.woff,sha256=uinAVzvh4KrOFkgOiHIp-M6g_mTxcZZv9ilgyUz8HgE,140048
|
@@ -970,39 +972,37 @@ fides/ui-build/static/admin/_next/static/media/inter-vietnamese-500-normal.7b524
|
|
970
972
|
fides/ui-build/static/admin/_next/static/media/inter-vietnamese-600-normal.eb82de1d.woff2,sha256=ZKjcMjaLlHAKJJyTcujqJwFDooKWcq8qQSuKZVfXZRA,3876
|
971
973
|
fides/ui-build/static/admin/_next/static/media/inter-vietnamese-700-normal.00e401a9.woff2,sha256=92gZYPHyPg3OZ_u0f78u6ZZNdc53OvVkqhoTelycCqw,3888
|
972
974
|
fides/ui-build/static/admin/_next/static/media/logo-white.c9bf4196.svg,sha256=u12SVA-WPW0GAhJ1wXM4oi2aqKXKmteo6yEvGDgz5jM,2101
|
973
|
-
fides/ui-build/static/admin/
|
974
|
-
fides/ui-build/static/admin/
|
975
|
-
fides/ui-build/static/admin/
|
976
|
-
fides/ui-build/static/admin/
|
977
|
-
fides/ui-build/static/admin/consent/
|
978
|
-
fides/ui-build/static/admin/consent/
|
979
|
-
fides/ui-build/static/admin/consent/
|
980
|
-
fides/ui-build/static/admin/consent/
|
981
|
-
fides/ui-build/static/admin/consent/
|
982
|
-
fides/ui-build/static/admin/consent/
|
983
|
-
fides/ui-build/static/admin/consent/privacy-
|
984
|
-
fides/ui-build/static/admin/consent/privacy-
|
985
|
-
fides/ui-build/static/admin/
|
986
|
-
fides/ui-build/static/admin/
|
987
|
-
fides/ui-build/static/admin/data-catalog/[systemId]/projects.html,sha256=
|
988
|
-
fides/ui-build/static/admin/data-catalog/[systemId]/
|
989
|
-
fides/ui-build/static/admin/data-catalog/[systemId]/
|
990
|
-
fides/ui-build/static/admin/data-
|
991
|
-
fides/ui-build/static/admin/data-
|
992
|
-
fides/ui-build/static/admin/data-discovery/
|
993
|
-
fides/ui-build/static/admin/data-discovery/
|
994
|
-
fides/ui-build/static/admin/data-discovery/
|
995
|
-
fides/ui-build/static/admin/data-discovery/
|
996
|
-
fides/ui-build/static/admin/data-discovery/
|
997
|
-
fides/ui-build/static/admin/data-discovery/
|
998
|
-
fides/ui-build/static/admin/
|
999
|
-
fides/ui-build/static/admin/
|
1000
|
-
fides/ui-build/static/admin/dataset/[datasetId].html,sha256=
|
1001
|
-
fides/ui-build/static/admin/dataset/
|
1002
|
-
fides/ui-build/static/admin/
|
1003
|
-
fides/ui-build/static/admin/
|
1004
|
-
fides/ui-build/static/admin/datastore-connection/[id].html,sha256=Ij_6KavqnCHJgZ2sWV-0LzeCYEhCVB1F5WCKgIc4_Qk,1748
|
1005
|
-
fides/ui-build/static/admin/datastore-connection/new.html,sha256=QlraCZDAfo7JB91R25m1HJxQq8E4LCMul1x5A3Ia3tk,1820
|
975
|
+
fides/ui-build/static/admin/add-systems/manual.html,sha256=7_sad2JDNDXxHh5ivNLyxM5rnw1Sk1eKSMyKIaScCrs,2595
|
976
|
+
fides/ui-build/static/admin/add-systems/multiple.html,sha256=5fQch5gtr1SBsGV3mraEMPfJO7ASMw2rQV_vP8OdWsQ,1971
|
977
|
+
fides/ui-build/static/admin/consent/configure.html,sha256=XAv5MmlKS0sjWLbXTB-ljX3VtbdmJc0TxsicF6r060Y,1887
|
978
|
+
fides/ui-build/static/admin/consent/privacy-experience.html,sha256=ja5heoO5-WR539Crq7-THf3mgcJrKwm0KrYoumDJ7To,1906
|
979
|
+
fides/ui-build/static/admin/consent/privacy-notices.html,sha256=fZ97ScEBG4r8khq9_BOX4n0xFqNET_1sdXtBWibDifQ,1822
|
980
|
+
fides/ui-build/static/admin/consent/properties.html,sha256=vOOoyrG0nh401-f7biphERsqVJXSy1-VEdXNzRxZTcg,1810
|
981
|
+
fides/ui-build/static/admin/consent/reporting.html,sha256=OjuaE_2lXRZHBffQheQcpvMfm3BGVjQd1jzvyuSmlPE,1810
|
982
|
+
fides/ui-build/static/admin/consent/configure/add-vendors.html,sha256=udxvJBfGzlIr9B40ovhKy6k61Zw6lipvCRGB2emiJh0,1989
|
983
|
+
fides/ui-build/static/admin/consent/privacy-experience/[id].html,sha256=-_2i2Lmem8OnCQA-QVh7KMkZrbR-zP2S49Iku8ixxwE,2072
|
984
|
+
fides/ui-build/static/admin/consent/privacy-experience/new.html,sha256=aHO1_54GUD3HVlfxvXWdWZUOp98WuCVc8gYzWXPds4w,2066
|
985
|
+
fides/ui-build/static/admin/consent/privacy-notices/[id].html,sha256=eo212u4zw-gly1hnUZXDBsZPU7lM_xKpRTVZdkCULPU,2066
|
986
|
+
fides/ui-build/static/admin/consent/privacy-notices/new.html,sha256=uXJV7TUmi3Qyv6bkb9H3EsBIuS3as3e_ixM4zPbFyg4,2060
|
987
|
+
fides/ui-build/static/admin/data-catalog/[systemId]/projects.html,sha256=pdsJNzPRUOfee-ctaPypo6K_ewHt1X683sj85zSvszY,2316
|
988
|
+
fides/ui-build/static/admin/data-catalog/[systemId]/resources.html,sha256=d6lqncxVusjhZKt8ayMDi1ma4Fgr1sAhqHW2JVXPJMU,1846
|
989
|
+
fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn].html,sha256=4M0QEaFwCHEfvc7J-p_SIXClnro6cML38fXIULqoh08,1874
|
990
|
+
fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn].html,sha256=UrC6mtjZOZrkAe1OL7P9oTjkX8Y3LL0ZaHKTcFUexY8,2456
|
991
|
+
fides/ui-build/static/admin/data-catalog/[systemId]/resources/[resourceUrn].html,sha256=tXf2GWkEoA-sZhymqWfMgKDkF0CDPZhjs1ZD-ibdb_Q,2428
|
992
|
+
fides/ui-build/static/admin/data-discovery/action-center.html,sha256=k5g9aEiBdeexZTZqj1X82sw5gKyFnSVLNaynVm1_CFg,1754
|
993
|
+
fides/ui-build/static/admin/data-discovery/activity.html,sha256=1AxAImly4AqZ2f0yndi69Q-c3nJB8i1zyuaxkL7T9Pc,1900
|
994
|
+
fides/ui-build/static/admin/data-discovery/detection.html,sha256=8bFv2I8krSHXgvk0HI7RyIB3Gb-IwPBEh1qw9sNG358,1980
|
995
|
+
fides/ui-build/static/admin/data-discovery/discovery.html,sha256=k83magEL69XG4eykDJ-ZQkqLlWraJ7xthuJRsJYEC1Q,2374
|
996
|
+
fides/ui-build/static/admin/data-discovery/action-center/[monitorId].html,sha256=J3538usMSl1J6CgZaemsG2iwsk2NOxiVMLREmTQERno,2094
|
997
|
+
fides/ui-build/static/admin/data-discovery/action-center/[monitorId]/[systemId].html,sha256=j4GP9yU6ixdlze-vYwoT8xdQcbadOiEqKWbp_y5HWzg,2280
|
998
|
+
fides/ui-build/static/admin/data-discovery/detection/[resourceUrn].html,sha256=GVIiXLpmDKJcXcoTuRXi5NQ5_fEOl7_iDxJtq07Gjfw,2012
|
999
|
+
fides/ui-build/static/admin/data-discovery/discovery/[resourceUrn].html,sha256=J2xjpHzFsEU4RxUdzjBzbzsXCmzGABS3LC83PiP43FU,2406
|
1000
|
+
fides/ui-build/static/admin/dataset/[datasetId].html,sha256=rIQSUuV51HgOR4i80-Bl6rVOzMNWP2x0D7es_RvB9ek,1896
|
1001
|
+
fides/ui-build/static/admin/dataset/new.html,sha256=pyCyqlGaqnvNtdmDu9p6ETnETG7bShg-spFCWoA5_aQ,1638
|
1002
|
+
fides/ui-build/static/admin/dataset/[datasetId]/[collectionName].html,sha256=f1d-3aG-so72TLJK9vfgDw_MWao4MudyWV5gl76BCAU,2328
|
1003
|
+
fides/ui-build/static/admin/dataset/[datasetId]/[collectionName]/[...subfieldNames].html,sha256=4_jr_hCrU6sQ5ky1otjhhRkaBGTQ_zDsVTWtCBMa0vk,2370
|
1004
|
+
fides/ui-build/static/admin/datastore-connection/[id].html,sha256=xy-pvHOlPq8lf2B-kLzZRajB_uq_4n3y-rl0AWJnNTY,1748
|
1005
|
+
fides/ui-build/static/admin/datastore-connection/new.html,sha256=ixGDAtZZ0e94isyoDe0b1_BoT8ga1I7nG8cm5feD2UA,1820
|
1006
1006
|
fides/ui-build/static/admin/images/DatabaseIcon.svg,sha256=gwl8_3APg_6J4ZwWgovOjxgk5AEPyvq3-qGjkF7R4og,8198
|
1007
1007
|
fides/ui-build/static/admin/images/SelectedDatabaseIcon.svg,sha256=L6YBuL-LiKzBXyt9gHZhtqpo2QopXdC7-oEvEWbvSNE,8198
|
1008
1008
|
fides/ui-build/static/admin/images/config_splash.svg,sha256=IH56T1jrG1y4FIKQZXMaePYESYZGot_4jkTaFvmwHl0,176040
|
@@ -1030,37 +1030,37 @@ fides/ui-build/static/admin/images/oauth-login/custom.svg,sha256=SW1i3Mez8XVMVGR
|
|
1030
1030
|
fides/ui-build/static/admin/images/oauth-login/github.svg,sha256=eg3RHjc4MKUaVl3p_tSphXB8Z8zTkPmuSUahUjA-pnY,963
|
1031
1031
|
fides/ui-build/static/admin/images/oauth-login/google.svg,sha256=oRdvveXEbNFZ4_xD6u-DxqNIPJh12o3XU2tITX6ghQU,988
|
1032
1032
|
fides/ui-build/static/admin/images/oauth-login/okta.svg,sha256=ymR7Rqk7syL52284jlure_i06-nVKwZbJwB6JXfdNwo,8076
|
1033
|
-
fides/ui-build/static/admin/integrations/[id].html,sha256=
|
1033
|
+
fides/ui-build/static/admin/integrations/[id].html,sha256=mpnfha0lWiR-4aq1odq5udQ6IoGeOL6B605vyY9BuEU,2126
|
1034
1034
|
fides/ui-build/static/admin/lib/fides-ext-gpp.js,sha256=T0mvBhx6jMjrFIDbvUQBvvxjeG_ZIxHpI0RU-qZfBqE,201101
|
1035
1035
|
fides/ui-build/static/admin/lib/fides-headless.js,sha256=2odJcLgko3Z_hpmcNNnkX8EhIEDM1cQN-MoUm58w-Cc,69898
|
1036
1036
|
fides/ui-build/static/admin/lib/fides-tcf.js,sha256=fVO5EJ5t12CqiSZ--dPLJMO70kq5jHQcYciUDJ5VclM,360692
|
1037
1037
|
fides/ui-build/static/admin/lib/fides.js,sha256=46562BkkIP_CIZ2FhOXaDbi-6GnqJ50wEUBgUYFaZSU,146001
|
1038
|
-
fides/ui-build/static/admin/login/[provider].html,sha256=
|
1039
|
-
fides/ui-build/static/admin/messaging/[id].html,sha256=
|
1040
|
-
fides/ui-build/static/admin/messaging/add-template.html,sha256=
|
1041
|
-
fides/ui-build/static/admin/privacy-requests/[id].html,sha256=
|
1042
|
-
fides/ui-build/static/admin/privacy-requests/configure.html,sha256=
|
1043
|
-
fides/ui-build/static/admin/privacy-requests/configure/messaging.html,sha256=
|
1044
|
-
fides/ui-build/static/admin/privacy-requests/configure/storage.html,sha256=
|
1045
|
-
fides/ui-build/static/admin/properties/[id].html,sha256=
|
1046
|
-
fides/ui-build/static/admin/properties/add-property.html,sha256=
|
1047
|
-
fides/ui-build/static/admin/reporting/datamap.html,sha256=
|
1048
|
-
fides/ui-build/static/admin/settings/about.html,sha256
|
1049
|
-
fides/ui-build/static/admin/settings/consent.html,sha256=
|
1050
|
-
fides/ui-build/static/admin/settings/custom-fields.html,sha256=
|
1051
|
-
fides/ui-build/static/admin/settings/domain-records.html,sha256=
|
1052
|
-
fides/ui-build/static/admin/settings/domains.html,sha256=
|
1053
|
-
fides/ui-build/static/admin/settings/email-templates.html,sha256=
|
1054
|
-
fides/ui-build/static/admin/settings/locations.html,sha256=
|
1055
|
-
fides/ui-build/static/admin/settings/organization.html,sha256
|
1056
|
-
fides/ui-build/static/admin/settings/regulations.html,sha256=
|
1057
|
-
fides/ui-build/static/admin/systems/configure/[id].html,sha256=
|
1058
|
-
fides/ui-build/static/admin/systems/configure/[id]/test-datasets.html,sha256=
|
1059
|
-
fides/ui-build/static/admin/user-management/new.html,sha256=
|
1060
|
-
fides/ui-build/static/admin/user-management/profile/[id].html,sha256=
|
1061
|
-
ethyca_fides-2.58.
|
1062
|
-
ethyca_fides-2.58.
|
1063
|
-
ethyca_fides-2.58.
|
1064
|
-
ethyca_fides-2.58.
|
1065
|
-
ethyca_fides-2.58.
|
1066
|
-
ethyca_fides-2.58.
|
1038
|
+
fides/ui-build/static/admin/login/[provider].html,sha256=viNYpdvBxv55ZLnBbEHDDyu00Jy8MWDRxiyZDLFi7aA,1496
|
1039
|
+
fides/ui-build/static/admin/messaging/[id].html,sha256=xtewcQA8FdCxBPly-KEHMCYOGk412HLTtS2OsId78P0,1648
|
1040
|
+
fides/ui-build/static/admin/messaging/add-template.html,sha256=sY342QagJD41eslX0OmCSnqzDh7qpJ7RqSmzu5fvHog,1660
|
1041
|
+
fides/ui-build/static/admin/privacy-requests/[id].html,sha256=pBUTfK6sQpqRLw7K4D6cKDVLer0uVcEFimarvLH5hF4,1744
|
1042
|
+
fides/ui-build/static/admin/privacy-requests/configure.html,sha256=PwKY8jH5OkkekJcrUQSqmT4nTQZfwE7cKeJ9XlSdF6w,1512
|
1043
|
+
fides/ui-build/static/admin/privacy-requests/configure/messaging.html,sha256=cn6qICaDAnKyngz6ddfQ2I3y8bEffhtzSR91aW5m348,1532
|
1044
|
+
fides/ui-build/static/admin/privacy-requests/configure/storage.html,sha256=Zt5SqvExExuEoBQjhyAjvln6mk1fGFscSqee0ZeUZTM,1528
|
1045
|
+
fides/ui-build/static/admin/properties/[id].html,sha256=HBx953nvAVKmOij-g3JC_9NN-xT3EE8U0-QB_4HE58I,1650
|
1046
|
+
fides/ui-build/static/admin/properties/add-property.html,sha256=LtLd5ofO_fjnZxVVuaTX140-2FxFsVvzYom0poPFGsA,1662
|
1047
|
+
fides/ui-build/static/admin/reporting/datamap.html,sha256=duHUEi_d9LeXnexIcQF3Ja9_pYUEiP3GjKYXMiLf2j0,2278
|
1048
|
+
fides/ui-build/static/admin/settings/about.html,sha256=-EoiH0d96IJuM2Uaw_OQtKSgB5FlvK-ibm-qPLsI24Q,1488
|
1049
|
+
fides/ui-build/static/admin/settings/consent.html,sha256=_3WRqV_jDqBBxNY11Oppu9sgxSsj6Sk0SwxjgvUCbqE,1492
|
1050
|
+
fides/ui-build/static/admin/settings/custom-fields.html,sha256=5jH9Q70rUJ96RrUgmdR3gQOECAhykx0Bq_UWxMWZxxM,1820
|
1051
|
+
fides/ui-build/static/admin/settings/domain-records.html,sha256=LN9NuuE6cG6OMcrCCtFIGTaM58CQbWqnN1ycedhR1Qc,1744
|
1052
|
+
fides/ui-build/static/admin/settings/domains.html,sha256=95MIBUu_aF3QF7C2aAhiR7OzW-gzFidamnh2kajvqo4,1492
|
1053
|
+
fides/ui-build/static/admin/settings/email-templates.html,sha256=OhRSUMcd8fHhzEOlxJ9qQ0kXxns7VV9i7F3pI3PP7t4,1508
|
1054
|
+
fides/ui-build/static/admin/settings/locations.html,sha256=bo8MYbvTJ9evHdIzcnVS2JrX-xySiiq7krxUrkU6Ums,1656
|
1055
|
+
fides/ui-build/static/admin/settings/organization.html,sha256=UfPCrf02l09l2QRmkPWGeeOKSxMk6tWNzzP3hjU2fH4,1502
|
1056
|
+
fides/ui-build/static/admin/settings/regulations.html,sha256=F92UPck2MXbIlTN94HEKSAKTEqQQPAFfciwEu_NReYU,1660
|
1057
|
+
fides/ui-build/static/admin/systems/configure/[id].html,sha256=70g6ungZTCFn3tSCQwYyB8D78uGDuoF5kdosH3qhHIs,2607
|
1058
|
+
fides/ui-build/static/admin/systems/configure/[id]/test-datasets.html,sha256=UFF4vK_HFi6oXAljW6bqIAQerfFXfbcu5xXwTpbdsyo,1692
|
1059
|
+
fides/ui-build/static/admin/user-management/new.html,sha256=k5zDVJkbE57LAuR19KkUS6w2mF9YbKj4iCCftTsLFwU,1654
|
1060
|
+
fides/ui-build/static/admin/user-management/profile/[id].html,sha256=_vSw1SH-wWJML6yWiLX_XYsVO2GmcxOwwRSdsuMCWM0,1676
|
1061
|
+
ethyca_fides-2.58.1b0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
1062
|
+
ethyca_fides-2.58.1b0.dist-info/METADATA,sha256=rA6hnNl21HCXNFXPcn3CSIfEQdN-f6SgigVrPCfUo4s,11361
|
1063
|
+
ethyca_fides-2.58.1b0.dist-info/WHEEL,sha256=Kh9pAotZVRFj97E15yTA4iADqXdQfIVTHcNaZTjxeGM,110
|
1064
|
+
ethyca_fides-2.58.1b0.dist-info/entry_points.txt,sha256=5WeLH-MlYWywYIbMGVrZkPpjTkdHDDf1p-LXFiF9ATo,41
|
1065
|
+
ethyca_fides-2.58.1b0.dist-info/top_level.txt,sha256=vHQkcSYYOh4ECEGL1JSGUAxFWpwO05QGPV0M2aPxqNQ,6
|
1066
|
+
ethyca_fides-2.58.1b0.dist-info/RECORD,,
|
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-26T16:44:40-0600",
|
12
12
|
"dirty": false,
|
13
13
|
"error": null,
|
14
|
-
"full-revisionid": "
|
15
|
-
"version": "2.58.
|
14
|
+
"full-revisionid": "fcd027892d94a59e6e35a005613442f0063c1137",
|
15
|
+
"version": "2.58.1b0"
|
16
16
|
}
|
17
17
|
''' # END VERSION_JSON
|
18
18
|
|
fides/api/models/attachment.py
CHANGED
@@ -1,11 +1,13 @@
|
|
1
1
|
import os
|
2
2
|
from enum import Enum as EnumType
|
3
|
-
from
|
3
|
+
from io import BytesIO
|
4
|
+
from typing import IO, TYPE_CHECKING, Any, Optional, Tuple, Union
|
4
5
|
|
6
|
+
from fideslang.validation import AnyHttpUrlString
|
5
7
|
from loguru import logger as log
|
6
8
|
from sqlalchemy import Column
|
7
9
|
from sqlalchemy import Enum as EnumColumn
|
8
|
-
from sqlalchemy import ForeignKey, String, UniqueConstraint
|
10
|
+
from sqlalchemy import ForeignKey, String, UniqueConstraint, orm
|
9
11
|
from sqlalchemy.ext.declarative import declared_attr
|
10
12
|
from sqlalchemy.orm import Session, relationship
|
11
13
|
|
@@ -23,6 +25,10 @@ from fides.api.service.storage.util import (
|
|
23
25
|
get_local_filename,
|
24
26
|
)
|
25
27
|
|
28
|
+
if TYPE_CHECKING:
|
29
|
+
from fides.api.models.comment import Comment
|
30
|
+
from fides.api.models.privacy_request import PrivacyRequest
|
31
|
+
|
26
32
|
|
27
33
|
class AttachmentType(str, EnumType):
|
28
34
|
"""
|
@@ -53,7 +59,9 @@ class AttachmentReference(Base):
|
|
53
59
|
"""Overriding base class method to set the table name."""
|
54
60
|
return "attachment_reference"
|
55
61
|
|
56
|
-
attachment_id = Column(
|
62
|
+
attachment_id = Column(
|
63
|
+
String, ForeignKey("attachment.id", ondelete="CASCADE"), nullable=False
|
64
|
+
)
|
57
65
|
reference_id = Column(String, nullable=False)
|
58
66
|
reference_type = Column(EnumColumn(AttachmentReferenceType), nullable=False)
|
59
67
|
|
@@ -63,11 +71,8 @@ class AttachmentReference(Base):
|
|
63
71
|
),
|
64
72
|
)
|
65
73
|
|
66
|
-
|
67
|
-
|
68
|
-
back_populates="references",
|
69
|
-
uselist=False,
|
70
|
-
)
|
74
|
+
# Relationships
|
75
|
+
attachment = relationship("Attachment", back_populates="references")
|
71
76
|
|
72
77
|
@classmethod
|
73
78
|
def create(
|
@@ -100,8 +105,11 @@ class Attachment(Base):
|
|
100
105
|
references = relationship(
|
101
106
|
"AttachmentReference",
|
102
107
|
back_populates="attachment",
|
103
|
-
cascade="all, delete",
|
108
|
+
cascade="all, delete-orphan",
|
104
109
|
uselist=True,
|
110
|
+
foreign_keys=[AttachmentReference.attachment_id],
|
111
|
+
primaryjoin=lambda: Attachment.id
|
112
|
+
== orm.foreign(AttachmentReference.attachment_id),
|
105
113
|
)
|
106
114
|
|
107
115
|
config = relationship(
|
@@ -127,13 +135,34 @@ class Attachment(Base):
|
|
127
135
|
|
128
136
|
if self.config.type == StorageType.local:
|
129
137
|
filename = get_local_filename(self.id)
|
138
|
+
|
139
|
+
# Validate that attachment is a file-like object
|
140
|
+
if not hasattr(attachment, "read"):
|
141
|
+
raise TypeError(f"Expected a file-like object, got {type(attachment)}")
|
142
|
+
|
143
|
+
# Reset the file pointer to the beginning
|
144
|
+
try:
|
145
|
+
attachment.seek(0)
|
146
|
+
except Exception as e:
|
147
|
+
raise ValueError(f"Failed to reset file pointer for attachment: {e}")
|
148
|
+
|
149
|
+
# Write the file in chunks to avoid loading the entire content into memory
|
130
150
|
with open(filename, "wb") as file:
|
131
|
-
|
151
|
+
for chunk in iter(
|
152
|
+
lambda: attachment.read(1024 * 1024), b""
|
153
|
+
): # 1 MB chunks
|
154
|
+
if not isinstance(chunk, bytes):
|
155
|
+
raise TypeError(f"Expected bytes, got {type(chunk)}")
|
156
|
+
file.write(chunk)
|
157
|
+
|
158
|
+
log.info(f"Uploaded {self.file_name} to local storage at {filename}")
|
132
159
|
return
|
133
160
|
|
134
161
|
raise ValueError(f"Unsupported storage type: {self.config.type}")
|
135
162
|
|
136
|
-
def retrieve_attachment(
|
163
|
+
def retrieve_attachment(
|
164
|
+
self,
|
165
|
+
) -> Optional[Tuple[BytesIO, Union[AnyHttpUrlString, str]]]:
|
137
166
|
"""Returns the attachment from S3 in bytes form."""
|
138
167
|
if self.config.type == StorageType.s3:
|
139
168
|
bucket_name = f"{self.config.details[StorageDetails.BUCKET.value]}"
|
@@ -208,4 +237,44 @@ class Attachment(Base):
|
|
208
237
|
def delete(self, db: Session) -> None:
|
209
238
|
"""Deletes an attachment record from the database and deletes the attachment from S3."""
|
210
239
|
self.delete_attachment_from_storage()
|
240
|
+
for attachment_reference in self.references:
|
241
|
+
attachment_reference.delete(db)
|
211
242
|
super().delete(db=db)
|
243
|
+
|
244
|
+
@staticmethod
|
245
|
+
def delete_attachments_for_reference_and_type(
|
246
|
+
db: Session, reference_id: str, reference_type: AttachmentReferenceType
|
247
|
+
) -> None:
|
248
|
+
"""
|
249
|
+
Deletes attachments associated with a given reference_id and reference_type.
|
250
|
+
Deletes all references to the attachments.
|
251
|
+
|
252
|
+
Args:
|
253
|
+
db: Database session
|
254
|
+
reference_id: ID of the reference
|
255
|
+
reference_type: Type of the reference
|
256
|
+
|
257
|
+
Examples:
|
258
|
+
|
259
|
+
- Delete all attachments associated with a comment.
|
260
|
+
``Attachment.delete_attachments_for_reference_and_type(
|
261
|
+
db, comment.id, AttachmentReferenceType.comment
|
262
|
+
)``
|
263
|
+
- Delete all attachments associated with a privacy request.
|
264
|
+
``Attachment.delete_attachments_for_reference_and_type(
|
265
|
+
db, privacy_request.id, AttachmentReferenceType.privacy_request
|
266
|
+
)``
|
267
|
+
"""
|
268
|
+
# Query attachments explicitly to avoid lazy loading
|
269
|
+
attachments = (
|
270
|
+
db.query(Attachment)
|
271
|
+
.join(AttachmentReference)
|
272
|
+
.filter(
|
273
|
+
AttachmentReference.reference_id == reference_id,
|
274
|
+
AttachmentReference.reference_type == reference_type,
|
275
|
+
)
|
276
|
+
.all()
|
277
|
+
)
|
278
|
+
|
279
|
+
for attachment in attachments:
|
280
|
+
attachment.delete(db)
|
fides/api/models/comment.py
CHANGED
@@ -3,15 +3,17 @@ from typing import TYPE_CHECKING, Any
|
|
3
3
|
|
4
4
|
from sqlalchemy import Column
|
5
5
|
from sqlalchemy import Enum as EnumColumn
|
6
|
-
from sqlalchemy import ForeignKey, String, UniqueConstraint
|
6
|
+
from sqlalchemy import ForeignKey, String, UniqueConstraint, orm
|
7
7
|
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
|
+
from fides.api.models.attachment import Attachment, AttachmentReferenceType
|
11
12
|
|
12
13
|
if TYPE_CHECKING:
|
13
|
-
from fides.api.models.attachment import
|
14
|
+
from fides.api.models.attachment import AttachmentReference
|
14
15
|
from fides.api.models.fides_user import FidesUser
|
16
|
+
from fides.api.models.privacy_request import PrivacyRequest
|
15
17
|
|
16
18
|
|
17
19
|
class CommentType(str, EnumType):
|
@@ -87,23 +89,51 @@ class Comment(Base):
|
|
87
89
|
references = relationship(
|
88
90
|
"CommentReference",
|
89
91
|
back_populates="comment",
|
90
|
-
cascade="all, delete",
|
91
|
-
uselist=True,
|
92
|
-
)
|
93
|
-
|
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",
|
92
|
+
cascade="all, delete-orphan",
|
100
93
|
uselist=True,
|
94
|
+
foreign_keys=[CommentReference.comment_id],
|
95
|
+
primaryjoin=lambda: Comment.id == orm.foreign(CommentReference.comment_id),
|
101
96
|
)
|
102
97
|
|
103
98
|
def delete(self, db: Session) -> None:
|
104
99
|
"""Delete the comment and all associated references."""
|
105
100
|
# Delete the comment
|
106
|
-
|
107
|
-
|
108
|
-
|
101
|
+
Attachment.delete_attachments_for_reference_and_type(
|
102
|
+
db, self.id, AttachmentReferenceType.comment
|
103
|
+
)
|
104
|
+
for reference in self.references:
|
105
|
+
reference.delete(db)
|
109
106
|
db.delete(self)
|
107
|
+
|
108
|
+
@staticmethod
|
109
|
+
def delete_comments_for_reference_and_type(
|
110
|
+
db: Session, reference_id: str, reference_type: CommentReferenceType
|
111
|
+
) -> None:
|
112
|
+
"""
|
113
|
+
Deletes comments associated with a given reference_id and reference_type.
|
114
|
+
Delete all references to the comments.
|
115
|
+
|
116
|
+
Args:
|
117
|
+
db: Database session.
|
118
|
+
reference_id: The reference id to delete.
|
119
|
+
reference_type: The reference type to delete
|
120
|
+
|
121
|
+
Examples:
|
122
|
+
- Delete all comments associated with a privacy request.
|
123
|
+
``Comment.delete_comments_for_reference_and_type(
|
124
|
+
db, privacy_request.id, CommentReferenceType.privacy_request
|
125
|
+
)``
|
126
|
+
"""
|
127
|
+
# Query comments explicitly to avoid lazy loading
|
128
|
+
comments = (
|
129
|
+
db.query(Comment)
|
130
|
+
.join(CommentReference)
|
131
|
+
.filter(
|
132
|
+
CommentReference.reference_id == reference_id,
|
133
|
+
CommentReference.reference_type == reference_type,
|
134
|
+
)
|
135
|
+
.all()
|
136
|
+
)
|
137
|
+
|
138
|
+
for comment in comments:
|
139
|
+
comment.delete(db)
|
@@ -39,10 +39,14 @@ from fides.api.graph.config import (
|
|
39
39
|
CollectionAddress,
|
40
40
|
)
|
41
41
|
from fides.api.migrations.hash_migration_mixin import HashMigrationMixin
|
42
|
-
from fides.api.models.attachment import
|
42
|
+
from fides.api.models.attachment import (
|
43
|
+
Attachment,
|
44
|
+
AttachmentReference,
|
45
|
+
AttachmentReferenceType,
|
46
|
+
)
|
43
47
|
from fides.api.models.audit_log import AuditLog
|
44
48
|
from fides.api.models.client import ClientDetail
|
45
|
-
from fides.api.models.comment import Comment, CommentReference
|
49
|
+
from fides.api.models.comment import Comment, CommentReference, CommentReferenceType
|
46
50
|
from fides.api.models.fides_user import FidesUser
|
47
51
|
from fides.api.models.manual_webhook import AccessManualWebhook
|
48
52
|
from fides.api.models.policy import (
|
@@ -169,18 +173,25 @@ class PrivacyRequest(
|
|
169
173
|
backref="privacy_requests",
|
170
174
|
)
|
171
175
|
attachments = relationship(
|
172
|
-
Attachment,
|
176
|
+
"Attachment",
|
173
177
|
secondary="attachment_reference",
|
174
|
-
primaryjoin="PrivacyRequest.id == AttachmentReference.reference_id"
|
178
|
+
primaryjoin="and_(PrivacyRequest.id == AttachmentReference.reference_id, "
|
179
|
+
"AttachmentReference.reference_type == 'privacy_request')",
|
175
180
|
secondaryjoin="Attachment.id == AttachmentReference.attachment_id",
|
176
181
|
order_by="Attachment.created_at",
|
182
|
+
viewonly=True,
|
183
|
+
uselist=True,
|
177
184
|
)
|
185
|
+
|
178
186
|
comments = relationship(
|
179
|
-
Comment,
|
187
|
+
"Comment",
|
180
188
|
secondary="comment_reference",
|
181
|
-
primaryjoin="PrivacyRequest.id == CommentReference.reference_id"
|
189
|
+
primaryjoin="and_(PrivacyRequest.id == CommentReference.reference_id, "
|
190
|
+
"CommentReference.reference_type == 'privacy_request')",
|
182
191
|
secondaryjoin="Comment.id == CommentReference.comment_id",
|
183
192
|
order_by="Comment.created_at",
|
193
|
+
viewonly=True,
|
194
|
+
uselist=True,
|
184
195
|
)
|
185
196
|
property_id = Column(String, nullable=True)
|
186
197
|
|
@@ -323,6 +334,12 @@ class PrivacyRequest(
|
|
323
334
|
deleting this object from the database
|
324
335
|
"""
|
325
336
|
self.clear_cached_values()
|
337
|
+
Attachment.delete_attachments_for_reference_and_type(
|
338
|
+
db, self.id, AttachmentReferenceType.privacy_request
|
339
|
+
)
|
340
|
+
Comment.delete_comments_for_reference_and_type(
|
341
|
+
db, self.id, CommentReferenceType.privacy_request
|
342
|
+
)
|
326
343
|
|
327
344
|
for provided_identity in self.provided_identities: # type: ignore[attr-defined]
|
328
345
|
provided_identity.delete(db=db)
|
fides/api/service/storage/s3.py
CHANGED
@@ -64,7 +64,7 @@ def generic_upload_to_s3( # pylint: disable=R0913
|
|
64
64
|
size_threshold: int = LARGE_FILE_THRESHOLD, # 5 MB threshold
|
65
65
|
) -> Optional[AnyHttpUrlString]:
|
66
66
|
"""
|
67
|
-
Uploads
|
67
|
+
Uploads file like objects to S3.
|
68
68
|
Handles both small and large uploads.
|
69
69
|
|
70
70
|
:param storage_secrets: S3 storage secrets
|
@@ -75,6 +75,19 @@ def generic_upload_to_s3( # pylint: disable=R0913
|
|
75
75
|
"""
|
76
76
|
logger.info("Starting S3 Upload of {}", file_key)
|
77
77
|
|
78
|
+
# Validate that the document is a file-like object
|
79
|
+
if not hasattr(document, "read") or not hasattr(document, "seek"):
|
80
|
+
raise TypeError(
|
81
|
+
f"The 'document' parameter must be a file-like object supporting 'read' and 'seek'. "
|
82
|
+
f"Received: {type(document)}"
|
83
|
+
)
|
84
|
+
|
85
|
+
# Ensure the file pointer is at the beginning
|
86
|
+
try:
|
87
|
+
document.seek(0)
|
88
|
+
except Exception as e:
|
89
|
+
raise ValueError(f"Failed to reset file pointer for document: {e}")
|
90
|
+
|
78
91
|
s3_client = maybe_get_s3_client(auth_method, storage_secrets)
|
79
92
|
|
80
93
|
# Define a transfer configuration for multipart uploads
|
@@ -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/113d823fe71f6af0.css" as="style"/><link rel="stylesheet" href="/_next/static/css/113d823fe71f6af0.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-2c7ccac5843c4d8e.js" defer=""></script><script src="/_next/static/chunks/framework-c92fc3344e6fd165.js" defer=""></script><script src="/_next/static/chunks/main-24f422f93845a596.js" defer=""></script><script src="/_next/static/chunks/pages/_app-
|
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/113d823fe71f6af0.css" as="style"/><link rel="stylesheet" href="/_next/static/css/113d823fe71f6af0.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-2c7ccac5843c4d8e.js" defer=""></script><script src="/_next/static/chunks/framework-c92fc3344e6fd165.js" defer=""></script><script src="/_next/static/chunks/main-24f422f93845a596.js" defer=""></script><script src="/_next/static/chunks/pages/_app-be7a8cdf3b56b1ec.js" defer=""></script><script src="/_next/static/chunks/pages/404-b202c0d8f6fc75c3.js" defer=""></script><script src="/_next/static/kYmFOkrlCZdjq5U5byh89/_buildManifest.js" defer=""></script><script src="/_next/static/kYmFOkrlCZdjq5U5byh89/_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":"kYmFOkrlCZdjq5U5byh89","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|