# HG changeset patch # User Marcin Kuzminski # Date 2017-07-17 21:09:33 # Node ID 0c7b3df669f06b219f872811f270773fcceb44b7 # Parent d7d26d760e98d4649a1c251a7d0865b30a1f3679 routing: use a common method to extract the f_path for repo views. The extra slashes can cause odd issues with GIT, the previous pylons code had a fix in routing. This ports this fix into pyramid helper in base app. diff --git a/rhodecode/apps/_base/__init__.py b/rhodecode/apps/_base/__init__.py --- a/rhodecode/apps/_base/__init__.py +++ b/rhodecode/apps/_base/__init__.py @@ -213,6 +213,13 @@ class RepoAppView(BaseAppView): return c + def _get_f_path(self, matchdict, default=None): + f_path = matchdict.get('f_path') + if f_path: + # fix for multiple initial slashes that causes errors for GIT + return f_path.lstrip('/') + + return default class DataGridAppView(object): """ diff --git a/rhodecode/apps/repository/views/repo_files.py b/rhodecode/apps/repository/views/repo_files.py --- a/rhodecode/apps/repository/views/repo_files.py +++ b/rhodecode/apps/repository/views/repo_files.py @@ -108,7 +108,7 @@ class RepoFilesView(RepoAppView): commit_id = self.request.matchdict.get( 'commit_id', default_commit_id) - f_path = self.request.matchdict.get('f_path', default_f_path) + f_path = self._get_f_path(self.request.matchdict, default_f_path) return commit_id, f_path def _get_default_encoding(self, c): @@ -375,9 +375,9 @@ class RepoFilesView(RepoAppView): renderer=None) def repo_files_diff(self): c = self.load_default_context() + f_path = self._get_f_path(self.request.matchdict) diff1 = self.request.GET.get('diff1', '') diff2 = self.request.GET.get('diff2', '') - f_path = self.request.matchdict['f_path'] path1, diff1 = parse_path_ref(diff1, default_path=f_path) @@ -461,9 +461,9 @@ class RepoFilesView(RepoAppView): """ Kept only to make OLD links work """ + f_path = self._get_f_path(self.request.matchdict) diff1 = self.request.GET.get('diff1', '') diff2 = self.request.GET.get('diff2', '') - f_path = self.request.matchdict['f_path'] if not any((diff1, diff2)): h.flash(