def METHOD_NAME(self, request: Request, action_id: int, *args, **kwargs):
    parsed_args, parsed_kwargs = super().METHOD_NAME(request, *args, **kwargs)
    organization = parsed_kwargs["organization"]
    # projects where the user has access
    accessible_projects = self.get_projects(request, organization, project_ids={-1})
    # projects where the user has project membership
    projects = self.get_projects(request, organization)
    # team admins and regular org members don't have project:write on an org level
    if not request.access.has_scope("project:write"):
        # team admins will have project:write scoped to their projects, members will not
        team_admin_has_access = all(
            [request.access.has_project_scope(project, "project:write") for project in projects]
        )
        # all() returns True for empty list, so include a check for it
        if not team_admin_has_access or not projects:
            raise PermissionDenied
    try:
        # It must either have no project affiliation, or be accessible to the user...
        action = (
            NotificationAction.objects.filter(
                Q(projects=None) | Q(projects__in=accessible_projects),
            ).distinct()
            # and must belong to the organization
            .get(
                id=action_id,
                organization_id=organization.id,
            )
        )
    except NotificationAction.DoesNotExist:
        raise ResourceDoesNotExist
    parsed_kwargs["action"] = action
    return (parsed_args, parsed_kwargs)