Skip to content

Commit ebebae7

Browse files
committedMay 12, 2015
fix #1688
1 parent fa27ee5 commit ebebae7

File tree

2 files changed

+24
-7
lines changed

2 files changed

+24
-7
lines changed
 

Diff for: ‎CHANGES.txt

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ Features
77
Bugfixes
88
--------
99

10+
* Timeline checksum for whole-timeline dependencies (Issue #1688)
1011
* new_post paths are now relative to CWD (Issue #1325)
1112

1213
New in v7.4.1

Diff for: ‎nikola/plugins/task/posts.py

+23-7
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
from nikola import utils
3131

3232

33-
def update_deps(post, lang, task):
33+
def update_deps(post, lang, deps_dict, timeline, task):
3434
"""Updates file dependencies as they might have been updated during compilation.
3535
3636
This is done for example by the ReST page compiler, which writes its
@@ -40,10 +40,6 @@ def update_deps(post, lang, task):
4040
task.file_dep.update([p for p in post.fragment_deps(lang) if not p.startswith("####MAGIC####")])
4141

4242

43-
def dependence_on_timeline(post, lang):
44-
return "####MAGIC####TIMELINE" not in post.fragment_deps(lang)
45-
46-
4743
class RenderPosts(Task):
4844
"""Build HTML fragments from metadata and text."""
4945

@@ -59,13 +55,25 @@ def gen_tasks(self):
5955
"show_untranslated_posts": self.site.config['SHOW_UNTRANSLATED_POSTS'],
6056
"demote_headers": self.site.config['DEMOTE_HEADERS'],
6157
}
58+
self.tl_changed = False
6259

6360
yield self.group_task()
6461

62+
def tl_ch():
63+
self.tl_changed = True
64+
65+
yield {
66+
'basename': self.name,
67+
'name': 'timeline_changes',
68+
'actions': [tl_ch],
69+
'uptodate': [utils.config_changed(str(kw['timeline']))],
70+
}
71+
6572
for lang in kw["translations"]:
6673
deps_dict = copy(kw)
6774
deps_dict.pop('timeline')
6875
for post in kw['timeline']:
76+
6977
dest = post.translated_base_path(lang)
7078
file_dep = [p for p in post.fragment_deps(lang) if not p.startswith("####MAGIC####")]
7179
task = {
@@ -74,12 +82,20 @@ def gen_tasks(self):
7482
'file_dep': file_dep,
7583
'targets': [dest],
7684
'actions': [(post.compile, (lang, )),
77-
(update_deps, (post, lang, )),
85+
(update_deps, (post, lang, deps_dict, kw['timeline'], )),
7886
],
7987
'clean': True,
8088
'uptodate': [
8189
utils.config_changed(deps_dict, 'nikola.plugins.task.posts'),
82-
lambda p=post, l=lang: dependence_on_timeline(p, l)
90+
lambda p=post, l=lang: self.dependence_on_timeline(p, l)
8391
] + post.fragment_deps_uptodate(lang),
92+
'task_dep': ['render_posts:timeline_changes']
8493
}
8594
yield task
95+
96+
def dependence_on_timeline(self, post, lang):
97+
if "####MAGIC####TIMELINE" not in post.fragment_deps(lang):
98+
return True # No dependency on timeline
99+
elif self.tl_changed:
100+
return False # Timeline changed
101+
return True

0 commit comments

Comments
 (0)
Please sign in to comment.