diff rhodecode/controllers/files.py @ 1810:203af05539e0 beta

implements #330 api method for listing nodes at particular revision - improved filtering by files in file list
author Marcin Kuzminski <marcin@python-works.com>
date Wed, 28 Dec 2011 04:12:27 +0200
parents ef0066e95be5
children cf51bbfb120e
line wrap: on
line diff
--- a/rhodecode/controllers/files.py	Sat Dec 24 02:21:22 2011 +0200
+++ b/rhodecode/controllers/files.py	Wed Dec 28 04:12:27 2011 +0200
@@ -49,6 +49,7 @@
 from rhodecode.controllers.changeset import anchor_url, _ignorews_url,\
     _context_url, get_line_ctx, get_ignore_ws
 from rhodecode.lib.diffs import wrapped_diff
+from rhodecode.model.scm import ScmModel
 
 log = logging.getLogger(__name__)
 
@@ -107,25 +108,6 @@
 
         return file_node
 
-    def __get_paths(self, changeset, starting_path):
-        """recursive walk in root dir and return a set of all path in that dir
-        based on repository walk function
-        """
-        _files = list()
-        _dirs = list()
-
-        try:
-            tip = changeset
-            for topnode, dirs, files in tip.walk(starting_path):
-                for f in files:
-                    _files.append(f.path)
-                for d in dirs:
-                    _dirs.append(d.path)
-        except RepositoryError, e:
-            log.debug(traceback.format_exc())
-            pass
-        return _dirs, _files
-
     @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
                                    'repository.admin')
     def index(self, repo_name, revision, f_path):
@@ -505,6 +487,7 @@
     def nodelist(self, repo_name, revision, f_path):
         if request.environ.get('HTTP_X_PARTIAL_XHR'):
             cs = self.__get_cs_or_redirect(revision, repo_name)
-            _d, _f = self.__get_paths(cs, f_path)
+            _d, _f = ScmModel().get_nodes(repo_name, cs.raw_id, f_path,
+                                          flat=False)
             return _d + _f