diff rhodecode/model/repo.py @ 3163:28571535dd61 beta

API methods create_repo, fork_repo, delete_repo, get_repo, get_repos can be executed by non-admin users ref #539
author Marcin Kuzminski <marcin@python-works.com>
date Mon, 14 Jan 2013 00:38:24 +0100
parents 0226b6d6b2b5
children cd50d1b5f35b 8f3cc21d83e6
line wrap: on
line diff
--- a/rhodecode/model/repo.py	Sun Jan 13 23:11:55 2013 +0100
+++ b/rhodecode/model/repo.py	Mon Jan 14 00:38:24 2013 +0100
@@ -90,6 +90,22 @@
                                           "get_repo_%s" % repo_name))
         return repo.scalar()
 
+    def get_all_user_repos(self, user):
+        """
+        Get's all repositories that user have at least read access
+
+        :param user:
+        :type user:
+        """
+        from rhodecode.lib.auth import AuthUser
+        user = self._get_user(user)
+        repos = AuthUser(user_id=user.user_id).permissions['repositories']
+        access_check = lambda r: r[1] in ['repository.read',
+                                          'repository.write',
+                                          'repository.admin']
+        repos = [x[0] for x in filter(access_check, repos.items())]
+        return Repository.query().filter(Repository.repo_name.in_(repos))
+
     def get_users_js(self):
         users = self.sa.query(User).filter(User.active == True).all()
         return json.dumps([