1
+ from __future__ import annotations
2
+
1
3
from django import forms
2
4
from django .db import IntegrityError , router
3
5
from django .http import HttpRequest , HttpResponse
6
8
from django .utils .translation import gettext_lazy as _
7
9
from django .views .decorators .csrf import csrf_exempt
8
10
from django .views .generic import View
11
+ from django_stubs_ext import StrOrPromise
9
12
10
13
from sentry import eventstore
11
14
from sentry .models .options .project_option import ProjectOption
12
15
from sentry .models .project import Project
13
16
from sentry .models .projectkey import ProjectKey
14
17
from sentry .models .userreport import UserReport
15
18
from sentry .signals import user_feedback_received
19
+ from sentry .types .region import get_local_region
16
20
from sentry .utils import json
17
21
from sentry .utils .db import atomic_transaction
18
- from sentry .utils .http import absolute_uri , is_valid_origin , origin_from_request
22
+ from sentry .utils .http import is_valid_origin , origin_from_request
19
23
from sentry .utils .validators import normalize_event_id
24
+ from sentry .web .frontend .base import region_silo_view
20
25
from sentry .web .helpers import render_to_response , render_to_string
21
26
22
27
GENERIC_ERROR = _ ("An unknown error occurred while submitting your report. Please try again." )
34
39
DEFAULT_CLOSE_LABEL = _ ("Close" )
35
40
DEFAULT_SUBMIT_LABEL = _ ("Submit Crash Report" )
36
41
37
- DEFAULT_OPTIONS = {
42
+ DEFAULT_OPTIONS : dict [ str , StrOrPromise ] = {
38
43
"title" : DEFAULT_TITLE ,
39
44
"subtitle" : DEFAULT_SUBTITLE ,
40
45
"subtitle2" : DEFAULT_SUBTITLE2 ,
@@ -66,6 +71,7 @@ class Meta:
66
71
fields = ("name" , "email" , "comments" )
67
72
68
73
74
+ @region_silo_view
69
75
class ErrorPageEmbedView (View ):
70
76
def _get_project_key (self , request : HttpRequest ):
71
77
try :
@@ -187,6 +193,8 @@ def dispatch(self, request: HttpRequest) -> HttpResponse:
187
193
elif request .method == "POST" :
188
194
return self ._smart_response (request , {"errors" : dict (form .errors )}, status = 400 )
189
195
196
+ region = get_local_region ()
197
+ endpoint = region .to_url (request .get_full_path ())
190
198
show_branding = (
191
199
ProjectOption .objects .get_value (
192
200
project = key .project , key = "feedback:branding" , default = "1"
@@ -211,7 +219,7 @@ def dispatch(self, request: HttpRequest) -> HttpResponse:
211
219
)
212
220
213
221
context = {
214
- "endpoint" : mark_safe ("*/" + json .dumps (absolute_uri ( request . get_full_path ()) ) + ";/*" ),
222
+ "endpoint" : mark_safe ("*/" + json .dumps (endpoint ) + ";/*" ),
215
223
"template" : mark_safe ("*/" + json .dumps (template ) + ";/*" ),
216
224
"strings" : mark_safe (
217
225
"*/"
0 commit comments