From e2bd868e0104a28980818b2d237e75ac57a47908 Mon Sep 17 00:00:00 2001 From: Alexander Timmermann <alexander.timmermann@holi.social> Date: Mon, 24 Feb 2025 15:29:21 +0100 Subject: [PATCH] feat(tracking): add tracking consent for ad partners Refs: HOLI-11044 --- .../0035_user_tracking_consent_ad_partners.py | 18 ++++++++++++++++++ openbook_auth/models.py | 4 ++++ openbook_auth/schema/mutations.py | 1 + openbook_auth/schema/types.py | 2 ++ .../authenticated_user_serializers.py | 1 + openbook_common/tracking.py | 2 ++ 6 files changed, 28 insertions(+) create mode 100644 openbook_auth/migrations/0035_user_tracking_consent_ad_partners.py diff --git a/openbook_auth/migrations/0035_user_tracking_consent_ad_partners.py b/openbook_auth/migrations/0035_user_tracking_consent_ad_partners.py new file mode 100644 index 000000000..2852475b9 --- /dev/null +++ b/openbook_auth/migrations/0035_user_tracking_consent_ad_partners.py @@ -0,0 +1,18 @@ +# Generated by Django 5.0.12 on 2025-02-24 14:28 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("openbook_auth", "0034_remove_userprofile_cover_and_more"), + ] + + operations = [ + migrations.AddField( + model_name="user", + name="tracking_consent_ad_partners", + field=models.BooleanField(blank=True, default=None, null=True), + ), + ] diff --git a/openbook_auth/models.py b/openbook_auth/models.py index a912b8777..d124e12b8 100644 --- a/openbook_auth/models.py +++ b/openbook_auth/models.py @@ -287,6 +287,7 @@ class User(ModelWithUUID, AbstractUser): tracking_consent_analytics = models.BooleanField(blank=True, null=True, default=None) tracking_consent_personalization = models.BooleanField(blank=True, null=True, default=None) + tracking_consent_ad_partners = models.BooleanField(blank=True, null=True, default=None) JWT_TOKEN_TYPE_CHANGE_EMAIL = "CE" JWT_TOKEN_TYPE_PASSWORD_RESET = "PR" @@ -800,6 +801,7 @@ class User(ModelWithUUID, AbstractUser): remove_avatar=False, tracking_consent_analytics=None, tracking_consent_personalization=None, + tracking_consent_ad_partners=None, ) -> None: if url is not None: if len(url) == 0: @@ -849,6 +851,8 @@ class User(ModelWithUUID, AbstractUser): self.tracking_consent_analytics = tracking_consent_analytics if tracking_consent_personalization is not None: self.tracking_consent_personalization = tracking_consent_personalization + if tracking_consent_ad_partners is not None: + self.tracking_consent_ad_partners = tracking_consent_ad_partners if pronouns is not None: self.profile.pronouns = pronouns diff --git a/openbook_auth/schema/mutations.py b/openbook_auth/schema/mutations.py index 272889f7c..07d39be9e 100644 --- a/openbook_auth/schema/mutations.py +++ b/openbook_auth/schema/mutations.py @@ -114,6 +114,7 @@ class Mutation: remove_avatar=remove_avatar, tracking_consent_analytics=data.get("tracking_consent_analytics"), tracking_consent_personalization=data.get("tracking_consent_personalization"), + tracking_consent_ad_partners=data.get("tracking_consent_ad_partners"), save=True, ) current_user_fields_after = _capture_user_fields(current_user) diff --git a/openbook_auth/schema/types.py b/openbook_auth/schema/types.py index e4266c0b3..14f4aadca 100644 --- a/openbook_auth/schema/types.py +++ b/openbook_auth/schema/types.py @@ -46,6 +46,7 @@ class UpdateAuthenticatedUserInput: skills_v2: Optional[List[str]] = strawberry.UNSET tracking_consent_analytics: Optional[bool] = strawberry.UNSET tracking_consent_personalization: Optional[bool] = strawberry.UNSET + tracking_consent_ad_partners: Optional[bool] = strawberry.UNSET @strawberry.input @@ -143,6 +144,7 @@ class User: class AuthenticatedUser(User): tracking_consent_analytics: Optional[bool] tracking_consent_personalization: Optional[bool] + tracking_consent_ad_partners: Optional[bool] is_employee: bool is_verified: bool role: Optional[UserRole] diff --git a/openbook_auth/serializers/authenticated_user_serializers.py b/openbook_auth/serializers/authenticated_user_serializers.py index a1613c476..7d7377c47 100644 --- a/openbook_auth/serializers/authenticated_user_serializers.py +++ b/openbook_auth/serializers/authenticated_user_serializers.py @@ -118,3 +118,4 @@ class UpdateAuthenticatedUserSerializer(serializers.Serializer): ) tracking_consent_analytics = serializers.BooleanField(required=False, default=None, allow_null=True) tracking_consent_personalization = serializers.BooleanField(required=False, default=None, allow_null=True) + tracking_consent_ad_partners = serializers.BooleanField(required=False, default=None, allow_null=True) diff --git a/openbook_common/tracking.py b/openbook_common/tracking.py index d39924dc8..2231e54bc 100644 --- a/openbook_common/tracking.py +++ b/openbook_common/tracking.py @@ -37,6 +37,7 @@ class TrackingUser(Protocol): username: str tracking_consent_analytics: bool tracking_consent_personalization: bool + tracking_consent_ad_partners: bool def initialize_tracking(config: PostHogConfig): @@ -68,6 +69,7 @@ def track(user: TrackingUser, event: TrackingEvent): "event_version__patch": event.event_version__patch, "trackingConsentAnalytics": user.tracking_consent_analytics, "trackingConsentPersonalization": user.tracking_consent_personalization, + "trackingConsentAdPartners": user.tracking_consent_ad_partners, }, ) except Exception as e: -- GitLab