def convert_args(self, request, organization_slug, project_slug, *args, **kwargs): try: project = ( Project.objects.filter(organization__slug=organization_slug, slug=project_slug) .select_related("organization") .prefetch_related("teams") .get() ) except Project.DoesNotExist: try: # Project may have been renamed redirect = ProjectRedirect.objects.select_related("project") redirect = redirect.get( organization__slug=organization_slug, redirect_slug=project_slug ) # Without object permissions don't reveal the rename self.check_object_permissions(request, redirect.project) # get full path so that we keep query strings requested_url = request.get_full_path() new_url = requested_url.replace( f"projects/{organization_slug}/{project_slug}/", f"projects/{organization_slug}/{redirect.project.slug}/", ) # Resource was moved/renamed if the requested url is different than the new url if requested_url != new_url: raise ProjectMoved(new_url, redirect.project.slug) # otherwise project doesn't exist raise ResourceDoesNotExist except ProjectRedirect.DoesNotExist: raise ResourceDoesNotExist if project.status != ProjectStatus.VISIBLE: raise ResourceDoesNotExist self.check_object_permissions(request, project) with configure_scope() as scope: scope.set_tag("project", project.id) bind_organization_context(project.organization) request._request.organization = project.organization kwargs["project"] = project return (args, kwargs)
def convert_args(self, request, organization_slug, project_slug, *args, **kwargs): from sentry.models import Project # Django 1.9 setup issue from sentry.models import ProjectStatus # Django 1.9 setup issue from sentry.models import ProjectRedirect # Django 1.9 setup issue try: project = Project.objects.filter( organization__slug=organization_slug, slug=project_slug, ).select_related('organization').prefetch_related('teams').get() except Project.DoesNotExist: try: # Project may have been renamed redirect = ProjectRedirect.objects.select_related('project') redirect = redirect.get(organization__slug=organization_slug, redirect_slug=project_slug) # get full path so that we keep query strings requested_url = request.get_full_path() new_url = requested_url.replace( 'projects/%s/%s/' % (organization_slug, project_slug), 'projects/%s/%s/' % (organization_slug, redirect.project.slug)) # Resource was moved/renamed if the requested url is different than the new url if requested_url != new_url: raise ProjectMoved(new_url, redirect.project.slug) # otherwise project doesn't exist raise ResourceDoesNotExist except ProjectRedirect.DoesNotExist: raise ResourceDoesNotExist if project.status != ProjectStatus.VISIBLE: raise ResourceDoesNotExist self.check_object_permissions(request, project) with configure_scope() as scope: scope.set_tag("project", project.id) scope.set_tag("organization", project.organization_id) request._request.organization = project.organization kwargs['project'] = project return (args, kwargs)
def convert_args(self, request, organization_slug, project_slug, *args, **kwargs): try: project = Project.objects.filter( organization__slug=organization_slug, slug=project_slug, ).select_related('organization').prefetch_related('teams').get() except Project.DoesNotExist: try: # Project may have been renamed redirect = ProjectRedirect.objects.select_related('project') redirect = redirect.get( organization__slug=organization_slug, redirect_slug=project_slug ) # get full path so that we keep query strings requested_url = request.get_full_path() new_url = requested_url.replace( 'projects/%s/%s/' % (organization_slug, project_slug), 'projects/%s/%s/' % (organization_slug, redirect.project.slug)) # Resource was moved/renamed if the requested url is different than the new url if requested_url != new_url: raise ProjectMoved(new_url, redirect.project.slug) # otherwise project doesn't exist raise ResourceDoesNotExist except ProjectRedirect.DoesNotExist: raise ResourceDoesNotExist if project.status != ProjectStatus.VISIBLE: raise ResourceDoesNotExist self.check_object_permissions(request, project) raven.tags_context({ 'project': project.id, 'organization': project.organization_id, }) request._request.organization = project.organization kwargs['project'] = project return (args, kwargs)