project_user_details.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. from rest_framework import status
  2. from rest_framework.request import Request
  3. from rest_framework.response import Response
  4. from sentry import analytics
  5. from sentry.api.api_publish_status import ApiPublishStatus
  6. from sentry.api.base import region_silo_endpoint
  7. from sentry.api.bases.project import ProjectEndpoint
  8. from sentry.api.serializers import serialize
  9. from sentry.auth.superuser import is_active_superuser
  10. from sentry.models.eventuser import EventUser
  11. @region_silo_endpoint
  12. class ProjectUserDetailsEndpoint(ProjectEndpoint):
  13. publish_status = {
  14. "DELETE": ApiPublishStatus.UNKNOWN,
  15. "GET": ApiPublishStatus.UNKNOWN,
  16. }
  17. def get(self, request: Request, project, user_hash) -> Response:
  18. analytics.record(
  19. "eventuser_endpoint.request",
  20. project_id=project.id,
  21. endpoint="sentry.api.endpoints.project_user_details.get",
  22. )
  23. euser = EventUser.objects.get(project_id=project.id, hash=user_hash)
  24. return Response(serialize(euser, request.user))
  25. def delete(self, request: Request, project, user_hash) -> Response:
  26. """
  27. Delete an Event User
  28. ````````````````````````````````
  29. Delete an event's user.
  30. :pparam string organization_slug: the slug of the organization.
  31. :pparam string project_slug: the slug of the project.
  32. :pparam string user_hash: the user hash.
  33. """
  34. analytics.record(
  35. "eventuser_endpoint.request",
  36. project_id=project.id,
  37. endpoint="sentry.api.endpoints.project_user_details.delete",
  38. )
  39. if is_active_superuser(request):
  40. try:
  41. euser = EventUser.objects.get(project_id=project.id, hash=user_hash)
  42. except EventUser.DoesNotExist:
  43. return Response(status=status.HTTP_404_NOT_FOUND)
  44. euser.delete()
  45. return Response(status=status.HTTP_200_OK)
  46. else:
  47. return Response(status=status.HTTP_403_FORBIDDEN)