diff options
Diffstat (limited to 'gitosis/group.py')
-rw-r--r-- | gitosis/group.py | 25 |
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() |