ethyca-fides 2.58.0rc1__py2.py3-none-any.whl → 2.58.1b1__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.0rc1.dist-info → ethyca_fides-2.58.1b1.dist-info}/METADATA +1 -1
- {ethyca_fides-2.58.0rc1.dist-info → ethyca_fides-2.58.1b1.dist-info}/RECORD +90 -89
- fides/_version.py +3 -3
- fides/api/alembic/migrations/versions/67d01c4e124e_add_reject_all_mechanism_to_privacy_.py +56 -0
- fides/api/db/base.py +1 -0
- fides/api/models/attachment.py +80 -11
- fides/api/models/comment.py +45 -15
- fides/api/models/privacy_experience.py +41 -0
- 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/_next/static/chunks/{main-24f422f93845a596.js → main-090643377c8254e6.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{main-app-94a0711202e08b15.js → main-app-59156a9331ac7bce.js} +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.0rc1.dist-info → ethyca_fides-2.58.1b1.dist-info}/LICENSE +0 -0
- {ethyca_fides-2.58.0rc1.dist-info → ethyca_fides-2.58.1b1.dist-info}/WHEEL +0 -0
- {ethyca_fides-2.58.0rc1.dist-info → ethyca_fides-2.58.1b1.dist-info}/entry_points.txt +0 -0
- {ethyca_fides-2.58.0rc1.dist-info → ethyca_fides-2.58.1b1.dist-info}/top_level.txt +0 -0
- /fides/ui-build/static/admin/_next/static/{DpiXCv-bQD-zlO6wF2wgY → RyPMNiUshVruI8xu8t8kI}/_buildManifest.js +0 -0
- /fides/ui-build/static/admin/_next/static/{DpiXCv-bQD-zlO6wF2wgY → RyPMNiUshVruI8xu8t8kI}/_ssgManifest.js +0 -0
@@ -48,6 +48,20 @@ class Layer1ButtonOption(Enum):
|
|
48
48
|
OPT_IN_OPT_OUT = "opt_in_opt_out"
|
49
49
|
|
50
50
|
|
51
|
+
class RejectAllMechanism(Enum):
|
52
|
+
"""
|
53
|
+
Reject all mechanism options - not formalized in the db.
|
54
|
+
Used to configure the behavior of the reject all button in TCF experiences
|
55
|
+
"""
|
56
|
+
|
57
|
+
# Reject both consent and legitimate interest preferences (all purposes, special features, vendors)
|
58
|
+
# This is the default behavior
|
59
|
+
REJECT_ALL = "reject_all"
|
60
|
+
# Reject only consent preferences (all purposes, special features, vendors).
|
61
|
+
# Do not reject any legitimate interest preferences.
|
62
|
+
REJECT_CONSENT_ONLY = "reject_consent_only"
|
63
|
+
|
64
|
+
|
51
65
|
# Fides JS UX Types - there should only be one of these defined per region
|
52
66
|
FidesJSUXTypes: List[ComponentType] = [
|
53
67
|
ComponentType.banner_and_modal,
|
@@ -179,6 +193,10 @@ class PrivacyExperienceConfig(PrivacyExperienceConfigBase, Base):
|
|
179
193
|
The Privacy Experience Configuration model that stores shared configuration for Privacy Experiences.
|
180
194
|
|
181
195
|
- Translations, Notices, and Regions (via Privacy Experiences) are linked to this resource.
|
196
|
+
|
197
|
+
If you're adding a new PrivacyExperienceConfig, make sure to use the `create` method since it has
|
198
|
+
custom logic that ensures other resources are created/updated as needed, as well as setting the
|
199
|
+
expected values for some fields in the experience config itself.
|
182
200
|
"""
|
183
201
|
|
184
202
|
allow_language_selection = Column(
|
@@ -203,6 +221,13 @@ class PrivacyExperienceConfig(PrivacyExperienceConfigBase, Base):
|
|
203
221
|
String, ForeignKey(ExperienceConfigTemplate.id_field_path)
|
204
222
|
) # The template from which this config was created if applicable
|
205
223
|
|
224
|
+
# Mechanism to use when the reject all button is clicked in a TCF experience
|
225
|
+
# Nullable because this is not applicable for other experience types
|
226
|
+
reject_all_mechanism = Column(
|
227
|
+
EnumColumn(RejectAllMechanism),
|
228
|
+
nullable=True,
|
229
|
+
)
|
230
|
+
|
206
231
|
# Relationships
|
207
232
|
experiences = relationship(
|
208
233
|
"PrivacyExperience",
|
@@ -304,6 +329,15 @@ class PrivacyExperienceConfig(PrivacyExperienceConfigBase, Base):
|
|
304
329
|
# Link Properties to this Privacy Experience config via the PrivacyExperienceConfigProperty table
|
305
330
|
link_properties_to_experience_config(db, properties, experience_config)
|
306
331
|
|
332
|
+
# If the reject all mechanism is not set and the experience config is a TCF experience,
|
333
|
+
# set the reject all mechanism to REJECT_ALL
|
334
|
+
if (
|
335
|
+
experience_config.component == ComponentType.tcf_overlay
|
336
|
+
and experience_config.reject_all_mechanism is None
|
337
|
+
):
|
338
|
+
experience_config.reject_all_mechanism = RejectAllMechanism.REJECT_ALL # type: ignore
|
339
|
+
experience_config.save(db)
|
340
|
+
|
307
341
|
return experience_config
|
308
342
|
|
309
343
|
def update(self, db: Session, *, data: dict[str, Any]) -> PrivacyExperienceConfig:
|
@@ -507,6 +541,13 @@ class PrivacyExperienceConfigHistory(
|
|
507
541
|
index=True,
|
508
542
|
) # If a translation is deleted, this is set to null, but the overall record remains in the database for reporting purposes
|
509
543
|
|
544
|
+
# Mechanism to use when the reject all button is clicked in a TCF experience
|
545
|
+
# Nullable because this is not applicable for other experience types
|
546
|
+
reject_all_mechanism = Column(
|
547
|
+
EnumColumn(RejectAllMechanism),
|
548
|
+
nullable=True,
|
549
|
+
)
|
550
|
+
|
510
551
|
version = Column(Float, nullable=False, default=1.0)
|
511
552
|
|
512
553
|
|
@@ -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-
|
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-090643377c8254e6.js" defer=""></script><script src="/_next/static/chunks/pages/_app-073217715167f9a8.js" defer=""></script><script src="/_next/static/chunks/pages/404-b202c0d8f6fc75c3.js" defer=""></script><script src="/_next/static/RyPMNiUshVruI8xu8t8kI/_buildManifest.js" defer=""></script><script src="/_next/static/RyPMNiUshVruI8xu8t8kI/_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":"RyPMNiUshVruI8xu8t8kI","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|