aboutsummaryrefslogtreecommitdiff
path: root/gitosis/group.py
diff options
context:
space:
mode:
authorTommi Virtanen <tv@eagain.net>2007-06-04 14:22:48 +0300
committerTommi Virtanen <tv@eagain.net>2007-06-04 14:22:48 +0300
commit65dc130228fe3084a7a29aca8652a04d10379bdf (patch)
treebfc51977cf85d675e923de7bdfbc76eb26dea5b5 /gitosis/group.py
parentwriteAuthorizedKeys now reads old file by name, not by open file. (diff)
downloadgitosis-dakkar-65dc130228fe3084a7a29aca8652a04d10379bdf.tar.gz
gitosis-dakkar-65dc130228fe3084a7a29aca8652a04d10379bdf.tar.bz2
gitosis-dakkar-65dc130228fe3084a7a29aca8652a04d10379bdf.zip
Everyone always belongs to group "all".
Diffstat (limited to 'gitosis/group.py')
-rw-r--r--gitosis/group.py39
1 files changed, 24 insertions, 15 deletions
diff --git a/gitosis/group.py b/gitosis/group.py
index 0ecbb61..975bbc5 100644
--- a/gitosis/group.py
+++ b/gitosis/group.py
@@ -1,25 +1,15 @@
import logging
from ConfigParser import NoSectionError, NoOptionError
-def getMembership(config, user, _seen=None):
- """
- Generate groups ``user`` is member of, according to ``config``
-
- :type config: RawConfigParser
- :type user: str
- :param _seen: internal use only
- """
+def _getMembership(config, user, seen):
log = logging.getLogger('gitosis.group.getMembership')
- if _seen is None:
- _seen = set()
-
for section in config.sections():
GROUP_PREFIX = 'group '
if not section.startswith(GROUP_PREFIX):
continue
group = section[len(GROUP_PREFIX):]
- if group in _seen:
+ if group in seen:
continue
try:
@@ -34,9 +24,28 @@ def getMembership(config, user, _seen=None):
user=user,
group=group,
))
- _seen.add(group)
+ seen.add(group)
yield group
- for member_of in getMembership(config, '@%s' % group,
- _seen=_seen):
+ for member_of in _getMembership(
+ config, '@%s' % group, seen,
+ ):
yield member_of
+
+
+def getMembership(config, user):
+ """
+ Generate groups ``user`` is member of, according to ``config``
+
+ :type config: RawConfigParser
+ :type user: str
+ :param _seen: internal use only
+ """
+
+ seen = set()
+ for member_of in _getMembership(config, user, seen):
+ yield member_of
+
+ # everyone is always a member of group "all"
+ yield 'all'
+