From 13dbc4dd29d047d289f57f0050a542b52f59d41d Mon Sep 17 00:00:00 2001 From: Klaas van Schelven Date: Mon, 28 Jul 2025 11:12:53 +0200 Subject: [PATCH] Use remote_addr for '{{auto}}' ip_addr tags See #165 --- tags/models.py | 5 +++++ tags/tests.py | 20 +++++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/tags/models.py b/tags/models.py index 37a9754..6f9b655 100644 --- a/tags/models.py +++ b/tags/models.py @@ -162,6 +162,11 @@ def digest_tags(event_data, event, issue): tags = { k: str(v)[:200] for k, v in deduce_tags(event_data).items() } + + for key in "user.ip_address", "user": + if tags.get(key) == "{{auto}}": + tags[key] = event.remote_addr + store_tags(event, issue, tags) diff --git a/tags/tests.py b/tags/tests.py index 318f1af..d6d853d 100644 --- a/tags/tests.py +++ b/tags/tests.py @@ -7,7 +7,7 @@ from issues.factories import get_or_create_issue, denormalized_issue_fields from events.factories import create_event, create_event_data from issues.models import Issue -from .models import store_tags, EventTag, IssueTag, TagValue +from .models import store_tags, EventTag, IssueTag, TagValue, digest_tags from .utils import deduce_tags from .search import search_events, search_issues, parse_query, search_events_optimized from .tasks import vacuum_eventless_issuetags @@ -139,6 +139,24 @@ class StoreTagsTestCase(DjangoTestCase): self.assertEqual(IssueTag.objects.filter(issue=self.issue).count(), 512) +class DigestTagsTestCase(DjangoTestCase): + def test_auto_ip_address(self): + project = Project.objects.create(name="Test Project") + issue, _ = get_or_create_issue(project) + event = create_event(project, issue=issue) + + event_data = { + "user": { + "ip_address": "{{auto}}", + }, + } + event.remote_addr = "123.123.123.123" + event.save() + digest_tags(event_data, event, issue) + + self.assertEqual(["123.123.123.123", "123.123.123.123"], [e.value.value for e in event.get_tags]) + + class SearchParserTestCase(RegularTestCase): def test_parser(self):