aboutsummaryrefslogtreecommitdiff
path: root/gitosis/group.py
diff options
context:
space:
mode:
Diffstat (limited to 'gitosis/group.py')
-rw-r--r--gitosis/group.py25
1 files changed, 20 insertions, 5 deletions
diff --git a/gitosis/group.py b/gitosis/group.py
index a18a731..5190aef 100644
--- a/gitosis/group.py
+++ b/gitosis/group.py
@@ -1,14 +1,27 @@
+"""
+Gitosis functions to find what groups a given user belongs to.
+"""
import logging
from ConfigParser import NoSectionError, NoOptionError
+
+_GROUP_PREFIX = 'group '
def _getMembership(config, user, seen):
+ """
+ Internal implementation of getMembership.
+ Generate groups ``user`` is member of, according to ``config``.
+ Groups already seen are tracked by ``seen``.
+
+ :type config: RawConfigParser
+ :type user: str
+ :type seen: Set
+ """
log = logging.getLogger('gitosis.group.getMembership')
for section in config.sections():
- GROUP_PREFIX = 'group '
- if not section.startswith(GROUP_PREFIX):
+ if not section.startswith(_GROUP_PREFIX):
continue
- group = section[len(GROUP_PREFIX):]
+ group = section[len(_GROUP_PREFIX):]
if group in seen:
continue
@@ -35,7 +48,10 @@ def _getMembership(config, user, seen):
config, '@%s' % group, seen,
):
yield member_of
-
+ for member_of in _getMembership(
+ config, '@all', seen,
+ ):
+ yield member_of
def getMembership(config, user):
"""
@@ -43,7 +59,6 @@ def getMembership(config, user):
:type config: RawConfigParser
:type user: str
- :param _seen: internal use only
"""
seen = set()