Various group fixes.
This commit is contained in:
parent
729c32a54d
commit
b875f4e1ff
2 changed files with 18 additions and 9 deletions
|
@ -141,17 +141,14 @@ def canApplyGroup(person, group, applicant):
|
||||||
# This is bypassed for people already in the group and for the
|
# This is bypassed for people already in the group and for the
|
||||||
# owner of the group (when they initially make it).
|
# owner of the group (when they initially make it).
|
||||||
prerequisite = group.prerequisite
|
prerequisite = group.prerequisite
|
||||||
# TODO: Make this return more useful info.
|
# TODO: Make this raise more useful info.
|
||||||
if prerequisite:
|
if prerequisite:
|
||||||
if prerequisite in person.approved_memberships:
|
if prerequisite not in applicant.approved_memberships:
|
||||||
pass
|
|
||||||
else:
|
|
||||||
turbogears.flash(_('%s membership required before application to this group is allowed') % prerequisite.name)
|
turbogears.flash(_('%s membership required before application to this group is allowed') % prerequisite.name)
|
||||||
return False
|
return False
|
||||||
# A user can apply themselves, and FAS admins can apply other people.
|
# A user can apply themselves, and group sponsors can apply other people.
|
||||||
|
|
||||||
if (person == applicant) or \
|
if (person == applicant) or \
|
||||||
canAdminGroup(person, group):
|
canSponsorGroup(person, group):
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
turbogears.flash(_('%s membership required before application to this group is allowed') % prerequisite.name)
|
turbogears.flash(_('%s membership required before application to this group is allowed') % prerequisite.name)
|
||||||
|
|
|
@ -34,6 +34,16 @@ class UnknownGroup(validators.FancyValidator):
|
||||||
else:
|
else:
|
||||||
raise validators.Invalid(_("The group '%s' already exists.") % value, value, state)
|
raise validators.Invalid(_("The group '%s' already exists.") % value, value, state)
|
||||||
|
|
||||||
|
class ValidGroupType(validators.FancyValidator):
|
||||||
|
'''Make sure that a group type is valid'''
|
||||||
|
def _to_python(self, value, state):
|
||||||
|
return value.strip()
|
||||||
|
def validate_python(self, value, state):
|
||||||
|
if value not in ('system', 'bugzilla','cvs', 'bzr', 'git', \
|
||||||
|
'hg', 'mtn', 'svn', 'shell', 'torrent', 'tracker', \
|
||||||
|
'tracking', 'user'):
|
||||||
|
raise validators.Invalid(_("Invalid group type.") % value, value, state)
|
||||||
|
|
||||||
class GroupCreate(validators.Schema):
|
class GroupCreate(validators.Schema):
|
||||||
|
|
||||||
name = validators.All(
|
name = validators.All(
|
||||||
|
@ -47,14 +57,14 @@ class GroupCreate(validators.Schema):
|
||||||
validators.NotEmpty,
|
validators.NotEmpty,
|
||||||
)
|
)
|
||||||
prerequisite = KnownGroup
|
prerequisite = KnownGroup
|
||||||
#group_type = something
|
group_type = ValidGroupType
|
||||||
|
|
||||||
class GroupSave(validators.Schema):
|
class GroupSave(validators.Schema):
|
||||||
groupname = validators.All(KnownGroup, validators.String(max=32, min=3))
|
groupname = validators.All(KnownGroup, validators.String(max=32, min=3))
|
||||||
display_name = validators.NotEmpty
|
display_name = validators.NotEmpty
|
||||||
owner = KnownUser
|
owner = KnownUser
|
||||||
prerequisite = KnownGroup
|
prerequisite = KnownGroup
|
||||||
#group_type = something
|
group_type = ValidGroupType
|
||||||
|
|
||||||
class GroupApply(validators.Schema):
|
class GroupApply(validators.Schema):
|
||||||
groupname = KnownGroup
|
groupname = KnownGroup
|
||||||
|
@ -231,6 +241,8 @@ class Group(controllers.Controller):
|
||||||
if prerequisite:
|
if prerequisite:
|
||||||
prerequisite = Groups.by_name(prerequisite)
|
prerequisite = Groups.by_name(prerequisite)
|
||||||
group.prerequisite = prerequisite
|
group.prerequisite = prerequisite
|
||||||
|
else:
|
||||||
|
group.prerequisite = None
|
||||||
group.joinmsg = joinmsg
|
group.joinmsg = joinmsg
|
||||||
# Log here
|
# Log here
|
||||||
session.flush()
|
session.flush()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue