summaryrefslogtreecommitdiffstats
path: root/src/g2h/log_page.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/g2h/log_page.py')
-rw-r--r--src/g2h/log_page.py47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/g2h/log_page.py b/src/g2h/log_page.py
new file mode 100644
index 0000000..b8df839
--- /dev/null
+++ b/src/g2h/log_page.py
@@ -0,0 +1,47 @@
+import os
+
+from .page import Page
+
+def ref_names_for_commit(refs, commit_sha):
+ ref_names = []
+ if refs is None:
+ return ref_names
+ for ref in refs:
+ if ref.commit.hexsha == commit_sha:
+ ref_names.append(ref.name)
+
+ return ref_names
+
+class LogPage(Page):
+ def __init__(self, out_dir, name, commits, branches, tags, content_subdir, latest_commit):
+ super(LogPage, self).__init__('log.md', out_dir, 'l.md', name, content_subdir)
+ self.commits = commits
+ self.branches = branches
+ self.tags = tags
+ self.latest_commit = latest_commit
+
+ def _commits_with_refs(self):
+ commits_context = []
+ for commit in self.commits:
+ refs = ref_names_for_commit(self.branches, commit.hexsha) + ref_names_for_commit(self.tags, commit.hexsha)
+ commit_context = {
+ 'committed_datetime': commit.committed_datetime,
+ 'hexsha': commit.hexsha,
+ 'refs': refs,
+ 'summary': commit.summary
+ }
+ commits_context.append(commit_context)
+ return commits_context
+
+ def context(self):
+ commits_context = []
+ if self.commits is not None:
+ commits_context = self._commits_with_refs()
+
+ return {
+ 'commits': commits_context,
+ 'content_subdir': self.content_subdir,
+ 'title': self.name + ': Log',
+ 'this_commit': self.latest_commit
+ }
+