diff --git a/readthedocs/projects/views/public.py b/readthedocs/projects/views/public.py index 331d822acdd..38ada629d57 100644 --- a/readthedocs/projects/views/public.py +++ b/readthedocs/projects/views/public.py @@ -369,7 +369,7 @@ def get( slug=version_slug, ) - if not self.allowed_user(request, project, version.slug): + if not self.allowed_user(request, version): return self.get_unauthed_response(request, project) # All public versions can be cached. diff --git a/readthedocs/proxito/views/mixins.py b/readthedocs/proxito/views/mixins.py index 812f000ce4f..2e98171d2d0 100644 --- a/readthedocs/proxito/views/mixins.py +++ b/readthedocs/proxito/views/mixins.py @@ -280,7 +280,7 @@ def _serve_401(self, request, project): log.debug('Unauthorized access to documentation.', project_slug=project.slug) return res - def allowed_user(self, *args, **kwargs): + def allowed_user(self, request, version): return True def get_version_from_host(self, request, version_slug): diff --git a/readthedocs/proxito/views/serve.py b/readthedocs/proxito/views/serve.py index f5eb81b2b79..eb957015400 100644 --- a/readthedocs/proxito/views/serve.py +++ b/readthedocs/proxito/views/serve.py @@ -265,7 +265,7 @@ def get( pass # Check user permissions and return an unauthed response if needed - if not self.allowed_user(request, final_project, version_slug): + if not version or not self.allowed_user(request, version): return self.get_unauthed_response(request, final_project) return self._serve_docs( @@ -460,7 +460,7 @@ def get_using_unresolver(self, request): pass # Check user permissions and return an unauthed response if needed. - if not self.allowed_user(request, project, version.slug): + if not self.allowed_user(request, version): return self.get_unauthed_response(request, project) return self._serve_docs( @@ -637,22 +637,21 @@ def _get_custom_404_page(self, request, project, version=None): If a 404 page is found, we return a response with the content of that file, `None` otherwise. """ - current_version_slug = version.slug if version else None - versions_slug = [] - if current_version_slug: - versions_slug.append(current_version_slug) - - default_version_slug = project.get_default_version() - if default_version_slug != current_version_slug: - versions_slug.append(default_version_slug) - - for version_slug_404 in versions_slug: - if not self.allowed_user(request, project, version_slug_404): + versions_404 = [version] if version else [] + if not version or version.slug != project.default_version: + default_version = project.versions.filter( + slug=project.default_version + ).first() + if default_version: + versions_404.append(default_version) + + for version_404 in versions_404: + if not self.allowed_user(request, version_404): continue storage_root_path = project.get_storage_path( type_="html", - version_slug=version_slug_404, + version_slug=version_404.slug, include_file=False, version_type=self.version_type, ) @@ -664,7 +663,7 @@ def _get_custom_404_page(self, request, project, version=None): if build_media_storage.exists(storage_filename_path): log.info( "Serving custom 404.html page.", - version_slug_404=version_slug_404, + version_slug_404=version_404.slug, storage_filename_path=storage_filename_path, ) resp = HttpResponse(