##// END OF EJS Templates
Summary: Split the readme logic into sub-methods
johbo -
r769:bd21d310 default
parent child Browse files
Show More
@@ -64,30 +64,12 b' class SummaryController(BaseRepoControll'
64 def _generate_readme(cache_key):
64 def _generate_readme(cache_key):
65 readme_data = None
65 readme_data = None
66 readme_file = None
66 readme_file = None
67 try:
67 commit = self._get_landing_commit_or_none(db_repo)
68 # Find the landing commit
68 if commit:
69 commit = db_repo.get_landing_commit()
69 log.debug("Searching for a README file.")
70 if isinstance(commit, EmptyCommit):
71 raise EmptyRepositoryError()
72
73 readme_file = ReadmeFinder(default_renderer).search(commit)
70 readme_file = ReadmeFinder(default_renderer).search(commit)
74
71 if readme_file:
75 # Render the readme if one was found
72 readme_data = self._render_readme_or_none(commit, readme_file)
76 if readme_file:
77 renderer = MarkupRenderer()
78 node = commit.get_node(readme_file)
79 log.debug('Found README file `%s` rendering...',
80 readme_file)
81 readme_data = renderer.render(
82 node.content, filename=readme_file)
83 except CommitError:
84 log.exception(
85 "Problem getting commit when trying to render the README.")
86 except EmptyRepositoryError:
87 log.debug("Repository is empty, no README to render.")
88 except Exception:
89 log.exception("Exception while trying to render the README")
90
91 return readme_data, readme_file
73 return readme_data, readme_file
92
74
93 invalidator_context = CacheKey.repo_context_cache(
75 invalidator_context = CacheKey.repo_context_cache(
@@ -99,6 +81,29 b' class SummaryController(BaseRepoControll'
99
81
100 return computed
82 return computed
101
83
84 def _get_landing_commit_or_none(self, db_repo):
85 log.debug("Getting the landing commit.")
86 try:
87 commit = db_repo.get_landing_commit()
88 if not isinstance(commit, EmptyCommit):
89 return commit
90 else:
91 log.debug("Repository is empty, no README to render.")
92 except CommitError:
93 log.exception(
94 "Problem getting commit when trying to render the README.")
95
96 def _render_readme_or_none(self, commit, readme_file):
97 log.debug(
98 'Found README file `%s` rendering...', readme_file)
99 renderer = MarkupRenderer()
100 node = commit.get_node(readme_file)
101 try:
102 return renderer.render(node.content, filename=readme_file)
103 except Exception:
104 log.exception(
105 "Exception while trying to render the README")
106
102 @LoginRequired()
107 @LoginRequired()
103 @HasRepoPermissionAnyDecorator(
108 @HasRepoPermissionAnyDecorator(
104 'repository.read', 'repository.write', 'repository.admin')
109 'repository.read', 'repository.write', 'repository.admin')
General Comments 0
You need to be logged in to leave comments. Login now