def listUserGroups(self, req, u): member_of_names = list(u.member_of()) session_user = req.session['user'] if session_user['is_admin']: asking_user = user.User(session_user['name']) nonmember_of = [] groupnames = group.list(asking_user) for groupname in groupnames: if groupname not in member_of_names: nonmember_of.append(groupname) return XMLTemplateResponse( "ajax/usermemberof.xml", { "memberof": member_of_names, "nonmemberof": nonmember_of, "user": u.name }) if session_user['name'] != u.name: return XMLStatusResponse( 'listUserGroups', False, "You do not have permission to " "view this user.") return XMLTemplateResponse("ajax/usermemberof.xml", { "memberof": member_of_names, "nonmemberof": [], "user": u.name })
def testRemoveGroup(self): group.add("foo") foo = group.Group("foo") fake_admin = Mock() fake_admin.is_admin = True foo.remove() self.assert_("foo" not in [x.name for x in group.list(fake_admin)])
def getpermissions(self, req, repos): session_user = req.session['user'] asking_user = user.User(session_user['name']) path = req.post.get('getPermissions') branch_or_path = Path(path) if not repos.has_path_permissions: branch_or_path = branch_or_path.lstrip('/') perms = permissions.list_by_path(repos.name, repos.vcs_type, path) usernames = [] if 'userlist' in req.post: usernames = user.list(asking_user) groupnames = [] if 'grouplist' in req.post: groupnames = group.list(asking_user) templatevars = { 'perms': perms, 'repository': repos.name, 'path': branch_or_path, 'usernames': usernames, 'groupnames': groupnames } return XMLTemplateResponse('ajax/repositoryperms.xml', templatevars)
def export_authz(**kwargs): """Export authorization/authentication info""" # XXX the import here is to prevent a circular import :( design problem! from .repository import list as list_repos authz_filename = options.env_path("svn_authz_file") authz = codecs.open(str(authz_filename), "w+", "utf-8") # Write all groups authz.write("[groups]\n") for groupname in group.list(FakeAdminUser()): g = group.Group(groupname) authz.write("%s = %s\n" % (groupname, ', '.join(g.members()))) authz.write("\n") # Write all repositories and their permissions for repository in list_repos(): if repository["status"] != "ok": continue for path in permissions.list_paths(repository["name"], "svn"): authz.write("[%s:%s]\n" % (repository["name"], path)) for perm in permissions.list_by_path(repository["name"], "svn", path): if perm["type"] == "group": authz.write("@") authz.write("%s = %s\n" % (perm["name"], perm["permission"])) authz.write("\n") authz.close()
def listGroups(self, req): try: groupnames = group.list(user.User(req.session['user']['name'])) return XMLTemplateResponse("ajax/listgroups.xml", {'groupnames': groupnames}) except Exception as e: raise return XMLStatusResponse('listGroups', False, 'Failed to get a list: %s' % e)
def listUserGroups(self, req, u): member_of_names = list(u.member_of()) session_user = req.session['user'] if session_user['is_admin']: asking_user = user.User(session_user['name']) nonmember_of = [] groupnames = group.list(asking_user) for groupname in groupnames: if groupname not in member_of_names: nonmember_of.append(groupname) return XMLTemplateResponse("ajax/usermemberof.xml", {"memberof": member_of_names, "nonmemberof": nonmember_of, "user": u.name}) if session_user['name'] != u.name: return XMLStatusResponse('listUserGroups', False, "You do not have permission to " "view this user.") return XMLTemplateResponse("ajax/usermemberof.xml", {"memberof": member_of_names, "nonmemberof": [], "user": u.name})
def getpermissions(self, req, repos): session_user = req.session['user'] asking_user = user.User(session_user['name']) path = req.post.get('getPermissions') branch_or_path = Path(path) if not repos.has_path_permissions: branch_or_path = branch_or_path.lstrip('/') perms = permissions.list_by_path(repos.name, repos.vcs_type, path) usernames = [] if 'userlist' in req.post: usernames = user.list(asking_user) groupnames = [] if 'grouplist' in req.post: groupnames = group.list(asking_user) templatevars = {'perms': perms, 'repository': repos.name, 'path': branch_or_path, 'usernames': usernames, 'groupnames': groupnames} return XMLTemplateResponse('ajax/repositoryperms.xml', templatevars)
u"Ч": "CH", u"Ш": "SH", u"Щ": "SHCH", u"Ы": "Y", u"Э": "E", u"Ю": "IU", u"Я": "IA" } not_allowed_characters = re.compile('[^a-zA-Z0-9\-\/]') permission_to_name = {'rw': 'rw', 'r': 'ro', '': 'no'} report = len(sys.argv) > 0 and 'report' in sys.argv verbose = len(sys.argv) > 0 and 'verbose' in sys.argv verboseprint = print if verbose else lambda *a, **k: None groups = group.list(user.FakeAdminUser()) def get_correct_groupname(permission_by_group): """Returns correct groupname""" permission = permission_to_name[permission_by_group['permission']] path = '%s%s' % (permission_by_group['repository'], permission_by_group['path'] if permission_by_group['path'] != '/' else '') path = path.lower() for key in ru_lat: path = path.replace(key, ru_lat[key]) path = re.sub(not_allowed_characters, '', path) path = re.sub('/', '_', path)
def testNonEmptyList(self): group.add("test") fake_admin = Mock() fake_admin.is_admin = True self.assertEquals([g for g in group.list(fake_admin)], ["test"])
def testEmptyList(self): fake_admin = Mock() fake_admin.is_admin = True self.assertEquals(group.list(fake_admin), [])