diff --git a/CHANGES.txt b/CHANGES.txt index 28119a94f3..d923a50cce 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -87,6 +87,8 @@ Features Bugfixes -------- +* Fixes behavior for posts not available in default language + (Issues #2956 and #3073) * Always follow ``FEED_LENGTH`` for Atom feeds * Apply filters to all Atom feeds * Read file metadata if compiler metadata exists and prefer it over diff --git a/nikola/plugins/misc/scan_posts.py b/nikola/plugins/misc/scan_posts.py index cb03cbdfe8..d30933d4bd 100644 --- a/nikola/plugins/misc/scan_posts.py +++ b/nikola/plugins/misc/scan_posts.py @@ -83,11 +83,9 @@ def scan(self): if not any([x.startswith('.') for x in p.split(os.sep)])] - for base_path in full_list: + for base_path in sorted(full_list): if base_path in seen: continue - else: - seen.add(base_path) try: post = Post( base_path, @@ -100,6 +98,8 @@ def scan(self): destination_base=destination_translatable, metadata_extractors_by=self.site.metadata_extractors_by ) + for lang in post.translated_to: + seen.add(post.translated_source_path(lang)) timeline.append(post) except Exception: LOGGER.error('Error reading post {}'.format(base_path)) diff --git a/nikola/post.py b/nikola/post.py index c01e391645..5a16db96a9 100644 --- a/nikola/post.py +++ b/nikola/post.py @@ -587,11 +587,10 @@ def _get_dependencies(self, deps_list): def deps(self, lang): """Return a list of file dependencies to build this post's page.""" deps = [] - if self.default_lang in self.translated_to: - deps.append(self.base_path) - deps.append(self.source_path) - if os.path.exists(self.metadata_path): - deps.append(self.metadata_path) + deps.append(self.base_path) + deps.append(self.source_path) + if os.path.exists(self.metadata_path): + deps.append(self.metadata_path) if lang != self.default_lang: cand_1 = get_translation_candidate(self.config, self.source_path, lang) cand_2 = get_translation_candidate(self.config, self.base_path, lang)