From 6dad0acd9891c9f3170ce731353d814b6a9c6bde Mon Sep 17 00:00:00 2001 From: Sergey B Kirpichev Date: Thu, 9 Feb 2017 19:06:00 +0300 Subject: [PATCH 1/2] Show pdf in yml-enabled setup if this format enabled Fixes #2582 --- readthedocs/projects/models.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/readthedocs/projects/models.py b/readthedocs/projects/models.py index 0532cd82d8c..939fcb45b3e 100644 --- a/readthedocs/projects/models.py +++ b/readthedocs/projects/models.py @@ -34,6 +34,8 @@ from readthedocs.vcs_support.backends import backend_cls from readthedocs.vcs_support.utils import Lock, NonBlockingLock +from readthedocs.doc_builder.config import load_yaml_config + if sys.version_info > (3,): # pylint: disable=import-error from urllib.parse import urlparse @@ -570,8 +572,11 @@ def has_aliases(self): return self.aliases.exists() def has_pdf(self, version_slug=LATEST): + version = self.versions.get(slug=version_slug) + config = load_yaml_config(version) if not self.enable_pdf_build: - return False + if 'pdf' not in config.formats: + return False return os.path.exists(self.get_production_media_path( type_='pdf', version_slug=version_slug)) From 8f74dca6d6c4e8b080acd27011f40fe631944a34 Mon Sep 17 00:00:00 2001 From: Sergey B Kirpichev Date: Thu, 16 Feb 2017 14:23:20 +0300 Subject: [PATCH 2/2] "Fix" tests by wrapping exception from load_yaml_config() def load_yaml_config(version): ... > checkout_path = version.project.checkout_path(version.slug) E AttributeError: 'NoneType' object has no attribute 'project' in test_has_pdf and test_has_pdf_with_pdf_build_disabled of the test_project.py. --- readthedocs/projects/models.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/readthedocs/projects/models.py b/readthedocs/projects/models.py index 939fcb45b3e..083da4a7b44 100644 --- a/readthedocs/projects/models.py +++ b/readthedocs/projects/models.py @@ -572,11 +572,15 @@ def has_aliases(self): return self.aliases.exists() def has_pdf(self, version_slug=LATEST): - version = self.versions.get(slug=version_slug) - config = load_yaml_config(version) + version = self.versions.filter(slug=version_slug).first() if not self.enable_pdf_build: - if 'pdf' not in config.formats: + try: + config = load_yaml_config(version) + except AttributeError: return False + else: + if 'pdf' not in config.formats: + return False return os.path.exists(self.get_production_media_path( type_='pdf', version_slug=version_slug))