Skip to content

Commit 0eb6d31

Browse files
ref: fix typing for organization_member.requests.invite.details
1 parent 059f863 commit 0eb6d31

File tree

5 files changed

+21
-9
lines changed

5 files changed

+21
-9
lines changed

pyproject.toml

-1
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,6 @@ module = [
122122
"sentry.api.endpoints.organization_events_spans_performance",
123123
"sentry.api.endpoints.organization_member.details",
124124
"sentry.api.endpoints.organization_member.index",
125-
"sentry.api.endpoints.organization_member.requests.invite.details",
126125
"sentry.api.endpoints.organization_projects",
127126
"sentry.api.endpoints.organization_releases",
128127
"sentry.api.endpoints.organization_request_project_creation",

src/sentry/api/bases/organizationmember.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from __future__ import annotations
22

3-
from typing import Any, NotRequired, TypedDict
3+
from typing import Any, Literal, NotRequired, TypedDict
44

55
from rest_framework import serializers
66
from rest_framework.fields import empty
@@ -108,7 +108,7 @@ def _get_member(
108108
self,
109109
request: Request,
110110
organization: Organization,
111-
member_id: int | str,
111+
member_id: int | Literal["me"],
112112
invite_status: InviteStatus | None = None,
113113
) -> OrganizationMember:
114114
kwargs: _FilterKwargs = {"organization": organization}

src/sentry/api/endpoints/organization_member/details.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
from __future__ import annotations
22

3+
from typing import Literal
4+
35
from django.db import router, transaction
46
from django.db.models import Q
57
from drf_spectacular.utils import extend_schema, inline_serializer
@@ -105,7 +107,7 @@ def _get_member(
105107
self,
106108
request: Request,
107109
organization: Organization,
108-
member_id: int | str,
110+
member_id: int | Literal["me"],
109111
invite_status: InviteStatus | None = None,
110112
) -> OrganizationMember:
111113
try:

src/sentry/api/endpoints/organization_member/requests/invite/details.py

+9-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
from __future__ import annotations
22

3+
from typing import Literal
4+
35
from rest_framework import serializers, status
46
from rest_framework.request import Request
57
from rest_framework.response import Response
@@ -57,9 +59,11 @@ def _get_member(
5759
self,
5860
request: Request,
5961
organization: Organization,
60-
member_id: int | str,
62+
member_id: int | Literal["me"],
6163
invite_status: InviteStatus | None = None,
6264
) -> OrganizationMember:
65+
if member_id == "me":
66+
member_id = request.user.id
6367
try:
6468
return OrganizationMember.objects.get_member_invite_query(member_id).get(
6569
organization=organization
@@ -130,7 +134,7 @@ def put(
130134
if "approve" in request.data:
131135
allowed_roles = get_allowed_org_roles(request, organization)
132136

133-
serializer = ApproveInviteRequestSerializer(
137+
approve_serializer = ApproveInviteRequestSerializer(
134138
data=request.data,
135139
context={
136140
"request": request,
@@ -140,10 +144,10 @@ def put(
140144
},
141145
)
142146

143-
if not serializer.is_valid():
144-
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
147+
if not approve_serializer.is_valid():
148+
return Response(approve_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
145149

146-
result = serializer.validated_data
150+
result = approve_serializer.validated_data
147151

148152
if result.get("approve") and not member.invite_approved:
149153
api_key = get_api_key_for_audit_log(request)

tests/sentry/api/endpoints/test_organization_invite_request_details.py

+7
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,13 @@ def test_get_invalid(self):
5858
resp = self.get_response(self.org.slug, "123")
5959
assert resp.status_code == 404
6060

61+
def test_me(self):
62+
self.login_as(user=self.user)
63+
resp = self.get_response(self.org.slug, "me")
64+
65+
assert resp.status_code == 200
66+
assert resp.data["email"] == self.invite_request.email
67+
6168
def test_get_invite_request(self):
6269
self.login_as(user=self.user)
6370
resp = self.get_response(self.org.slug, self.invite_request.id)

0 commit comments

Comments
 (0)