From ecac0aaaf33abfbcaabe15f7fcb45e8b4985889e Mon Sep 17 00:00:00 2001 From: Xavier Fiechter Date: Thu, 21 Mar 2024 17:08:23 +0100 Subject: [PATCH] . --- django/labellabor/mysentry.py | 37 +++++++++++-------- django/labellabor/settings.py | 15 +++----- django/labellabor/views.py | 1 - django/templates/_intro.html | 12 +++--- .../0015_alter_profile_use_sentry.py | 18 +++++++++ 5 files changed, 50 insertions(+), 33 deletions(-) create mode 100644 django/userprofile/migrations/0015_alter_profile_use_sentry.py diff --git a/django/labellabor/mysentry.py b/django/labellabor/mysentry.py index e627328..6aaaea0 100644 --- a/django/labellabor/mysentry.py +++ b/django/labellabor/mysentry.py @@ -1,24 +1,29 @@ -from sentry_sdk.scrubber import EventScrubber, DEFAULT_DENYLIST +import logging +logger = logging.getLogger('labelbase') -# https://docs.sentry.io/platforms/python/data-management/sensitive-data/ -# https://docs.sentry.io/platforms/python/configuration/filtering/ -# Define your custom denylist if needed -custom_denylist = DEFAULT_DENYLIST # + ['custom_sensitive_key'] -event_scrubber = EventScrubber(denylist=custom_denylist) +class MyEventScrubber: + def scrub_event(self, event): + # Scrub IP from request environment + if 'request' in event and 'env' in event['request'] and 'REMOTE_ADDR' in event['request']['env']: + event['request']['env']['REMOTE_ADDR'] = '0.0.0.0' + + # Scrub IP from user information + if 'user' in event and 'ip_address' in event['user']: + event['user']['ip_address'] = '0.0.0.0' def before_send(event, hint): try: from django.contrib.auth.models import User # keep import here user_data = event.get('user', {}) - user_id = user_data.get('id', 'No User ID') - user = User.objects.get(id=user_id) - # Check user's preference for error tracking - if user.profile.use_sentry: - event_scrubber.scrub_event(event) - print(event) - print ("return event {}".format(event)) - return event + user_id = user_data.get('id', 0) + if User.objects.filter(id=user_id).exists(): + user = User.objects.get(id=user_id) + if user.profile.use_sentry: + event_scrubber = MyEventScrubber() + event_scrubber.scrub_event(event) + #print(f"return event {event} for {user_id}") + return event + return None except Exception as e: print(e) - pass - return None + return event diff --git a/django/labellabor/settings.py b/django/labellabor/settings.py index 3689047..b4400bd 100644 --- a/django/labellabor/settings.py +++ b/django/labellabor/settings.py @@ -47,17 +47,12 @@ SENTRY_DSN = proj_config.get("internal", "sentry_dsn") sentry_sdk.init( dsn=SENTRY_DSN, + #integrations=[ + # DjangoIntegration(), + #], before_send=before_send, - integrations=[ - DjangoIntegration(), - ], - # Set traces_sample_rate to 1.0 to capture 100% - # of transactions for performance monitoring. - # We recommend adjusting this value in production. traces_sample_rate=1.0, - # If you wish to associate users to errors (assuming you are using - # django.contrib.auth) you may enable sending PII data. - send_default_pii=True, # must be true, for before_send logic + send_default_pii=True, # must be "True" here, will skip or omit in `before_send` callback ) sentry_sdk.set_tag("version", "2.0.0") @@ -87,7 +82,7 @@ LOGGING = { 'level': 'DEBUG', 'propagate': True, }, - }, + } } # Application definition diff --git a/django/labellabor/views.py b/django/labellabor/views.py index 5286f8d..88eb6e2 100644 --- a/django/labellabor/views.py +++ b/django/labellabor/views.py @@ -66,7 +66,6 @@ class LabelDeleteView(DeleteView): error_url = "/#failed" def post(self, request, *args, **kwargs): - 1/0 self.object = self.get_object() if self.object.labelbase.user != self.request.user: return redirect(self.error_url) diff --git a/django/templates/_intro.html b/django/templates/_intro.html index 0326264..9f0deb5 100644 --- a/django/templates/_intro.html +++ b/django/templates/_intro.html @@ -61,11 +61,11 @@