Skip to content

Commit 579bf2d

Browse files
committed
use enums
1 parent 53b8f48 commit 579bf2d

File tree

4 files changed

+19
-8
lines changed

4 files changed

+19
-8
lines changed

src/sentry/interfaces/stacktrace.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,9 @@ def is_newest_frame_first(event):
100100
filter=dict(user_ids=[env.request.user.id], keys=["stacktrace_order"])
101101
)
102102
display = get_option_from_list(options, default=None)
103-
if display == "1":
103+
if display == StacktraceOrder.MOST_RECENT_LAST:
104104
newest_first = False
105-
elif display == "2":
105+
elif display == StacktraceOrder.MOST_RECENT_FIRST:
106106
newest_first = True
107107

108108
return newest_first

src/sentry/users/api/serializers/user.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from sentry.app import env
1717
from sentry.auth.elevated_mode import has_elevated_mode
1818
from sentry.hybridcloud.services.organization_mapping import organization_mapping_service
19+
from sentry.interfaces.stacktrace import StacktraceOrder
1920
from sentry.models.authidentity import AuthIdentity
2021
from sentry.models.organization import OrganizationStatus
2122
from sentry.models.organizationmapping import OrganizationMapping
@@ -67,7 +68,7 @@ class _SerializedStacktraceOrder(int, Enum):
6768
class _UserOptions(TypedDict):
6869
theme: str # TODO: enum/literal for theme options
6970
language: str
70-
stacktraceOrder: int # TODO: enum/literal
71+
stacktraceOrder: _SerializedStacktraceOrder
7172
defaultIssueEvent: str
7273
timezone: str
7374
clock24Hours: bool
@@ -198,7 +199,13 @@ def serialize(
198199
for o in UserOption.objects.filter(user_id=user.id, project_id__isnull=True)
199200
if o.value is not None
200201
}
201-
stacktrace_order = int(options.get("stacktrace_order", -1) or -1)
202+
203+
stacktrace_order = _SerializedStacktraceOrder(
204+
int(
205+
options.get("stacktrace_order", StacktraceOrder.DEFAULT)
206+
or StacktraceOrder.DEFAULT
207+
)
208+
)
202209

203210
d["options"] = {
204211
"theme": options.get("theme") or "light",

src/sentry/users/models/user_option.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ class UserOption(Model):
185185
- self_notifications
186186
- "Notify Me About My Own Activity"
187187
- stacktrace_order
188-
- default, most recent first, most recent last
188+
- default, most recent first, most recent last (see `StacktraceOrder` enum)
189189
- subscribe_by_default
190190
- "Only On Issues I Subscribe To", "Only On Deploys With My Commits"
191191
- subscribe_notes

tests/sentry/users/api/endpoints/test_user_details.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from pytest import fixture
33

44
from sentry.deletions.tasks.hybrid_cloud import schedule_hybrid_cloud_foreign_key_jobs
5+
from sentry.interfaces.stacktrace import StacktraceOrder
56
from sentry.models.deletedorganization import DeletedOrganization
67
from sentry.models.organization import Organization, OrganizationStatus
78
from sentry.models.organizationmember import OrganizationMember
@@ -43,7 +44,7 @@ def test_lookup_self(self) -> None:
4344
assert resp.data["options"]["defaultIssueEvent"] == "recommended"
4445
assert resp.data["options"]["timezone"] == "UTC"
4546
assert resp.data["options"]["language"] == "en"
46-
assert resp.data["options"]["stacktraceOrder"] == -1
47+
assert resp.data["options"]["stacktraceOrder"] == int(StacktraceOrder.DEFAULT)
4748
assert not resp.data["options"]["clock24Hours"]
4849
assert not resp.data["options"]["prefersIssueDetailsStreamlinedUI"]
4950
assert not resp.data["options"]["prefersStackedNavigation"]
@@ -113,7 +114,7 @@ def test_simple(self) -> None:
113114
"theme": "system",
114115
"defaultIssueEvent": "latest",
115116
"timezone": "UTC",
116-
"stacktraceOrder": "2",
117+
"stacktraceOrder": StacktraceOrder.MOST_RECENT_FIRST,
117118
"language": "fr",
118119
"clock24Hours": True,
119120
"extra": True,
@@ -135,7 +136,10 @@ def test_simple(self) -> None:
135136
assert UserOption.objects.get_value(user=self.user, key="theme") == "system"
136137
assert UserOption.objects.get_value(user=self.user, key="default_issue_event") == "latest"
137138
assert UserOption.objects.get_value(user=self.user, key="timezone") == "UTC"
138-
assert UserOption.objects.get_value(user=self.user, key="stacktrace_order") == "2"
139+
assert (
140+
UserOption.objects.get_value(user=self.user, key="stacktrace_order")
141+
== StacktraceOrder.MOST_RECENT_FIRST
142+
)
139143
assert UserOption.objects.get_value(user=self.user, key="language") == "fr"
140144
assert UserOption.objects.get_value(user=self.user, key="clock_24_hours")
141145
assert UserOption.objects.get_value(

0 commit comments

Comments
 (0)