def canApplyGroup(userName, groupName, applyUserName, g=None):
if not g:
g = Groups.byUserName(userName)
# User must satisfy all dependencies to join.
# This is bypassed for people already in the group and for the
# owner of the group (when they initially make it).
group = Groups.groups(groupName)[groupName]
requirements = group.fedoraGroupRequires.split()
for req in requirements:
try:
g[req].cn
except KeyError:
return
# A user can apply themselves, and FAS admins can apply other people.
if (userName == applyUserName) or \
isAdmin(userName, g):
return True
else:
return False