Skip to content

Commit c752e9f

Browse files
authored
fix(django): Fix complex either url patterns in Django (getsentry#875)
1 parent 62ca43a commit c752e9f

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

sentry_sdk/integrations/django/transactions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def get_regex(resolver_or_pattern):
3737

3838
class RavenResolver(object):
3939
_optional_group_matcher = re.compile(r"\(\?\:([^\)]+)\)")
40-
_named_group_matcher = re.compile(r"\(\?P<(\w+)>[^\)]+\)")
40+
_named_group_matcher = re.compile(r"\(\?P<(\w+)>[^\)]+\)+")
4141
_non_named_group_matcher = re.compile(r"\([^\)]+\)")
4242
# [foo|bar|baz]
4343
_either_option_matcher = re.compile(r"\[([^\]]+)\|([^\]]+)\]")

tests/integrations/django/test_transactions.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
example_url_conf = (
2121
url(r"^api/(?P<project_id>[\w_-]+)/store/$", lambda x: ""),
22+
url(r"^api/(?P<version>(v1|v2))/author/$", lambda x: ""),
2223
url(r"^report/", lambda x: ""),
2324
url(r"^example/", include(included_url_conf)),
2425
)
@@ -36,6 +37,14 @@ def test_legacy_resolver_complex_match():
3637
assert result == "/api/{project_id}/store/"
3738

3839

40+
def test_legacy_resolver_complex_either_match():
41+
resolver = RavenResolver()
42+
result = resolver.resolve("/api/v1/author/", example_url_conf)
43+
assert result == "/api/{version}/author/"
44+
result = resolver.resolve("/api/v2/author/", example_url_conf)
45+
assert result == "/api/{version}/author/"
46+
47+
3948
def test_legacy_resolver_included_match():
4049
resolver = RavenResolver()
4150
result = resolver.resolve("/example/foo/bar/baz", example_url_conf)

0 commit comments

Comments
 (0)