Get more group stuff working.
This commit is contained in:
parent
2824c189a3
commit
9471dcb5d7
5 changed files with 39 additions and 49 deletions
|
@ -37,7 +37,7 @@ def canAdminGroup(person, group):
|
|||
return True
|
||||
else:
|
||||
try:
|
||||
role = PersonRoles.query.filter_by(group_id=group.id, person_id=person.id).one()
|
||||
role = PersonRoles.query.filter_by(group=group, member=person).one()
|
||||
except IndexError:
|
||||
''' Not in the group '''
|
||||
return False
|
||||
|
@ -57,7 +57,7 @@ def canSponsorGroup(person, group):
|
|||
return True
|
||||
else:
|
||||
try:
|
||||
role = PersonRoles.query.filter_by(group_id=g.id, person_id=p.id).one()
|
||||
role = PersonRoles.query.filter_by(group=group, member=person).one()
|
||||
except IndexError:
|
||||
''' Not in the group '''
|
||||
return False
|
||||
|
@ -71,7 +71,7 @@ def isApproved(person, group):
|
|||
Returns True if the user is an approved member of a group
|
||||
'''
|
||||
try:
|
||||
role = PersonRoles.query.filter_by(group_id=group.id, person_id=person.id).one()
|
||||
role = PersonRoles.query.filter_by(group=group, member=person).one()
|
||||
except IndexError:
|
||||
''' Not in the group '''
|
||||
return False
|
||||
|
@ -167,13 +167,11 @@ def canApplyGroup(person, group, applicant):
|
|||
# owner of the group (when they initially make it).
|
||||
prerequisite = group.prerequisite
|
||||
# TODO: Make this return more useful info.
|
||||
|
||||
if prerequisite:
|
||||
|
||||
if prerequisite in person.approved_memberships:
|
||||
pass
|
||||
else:
|
||||
print "GOT HERE %s" % prerequisite
|
||||
print "GOT HERE, prereq: %s" % prerequisite
|
||||
turbogears.flash(_('%s membership required before application to this group is allowed' % prerequisite.name))
|
||||
return False
|
||||
# A user can apply themselves, and FAS admins can apply other people.
|
||||
|
|
|
@ -154,7 +154,7 @@ class CLA(controllers.Controller):
|
|||
else:
|
||||
try:
|
||||
clickgroup = Groups.by_name(config.get('cla_click_group'))
|
||||
clickgroup.remove_person(person, person)
|
||||
person.remove(cilckgroup, person)
|
||||
except:
|
||||
pass
|
||||
turbogears.flash(_("You have successfully signed the CLA. You are now in the '%s' group.") % group.name)
|
||||
|
|
|
@ -204,7 +204,7 @@ class Group(controllers.Controller):
|
|||
@identity.require(turbogears.identity.not_anonymous())
|
||||
@validate(validators=editGroup())
|
||||
@error_handler(error)
|
||||
@expose()
|
||||
@expose(template="fas.templates.group.edit")
|
||||
def save(self, groupname, display_name, owner, group_type, needs_sponsor=0, user_can_remove=1, prerequisite='', joinmsg=''):
|
||||
'''Edit a group'''
|
||||
username = turbogears.identity.current.user_name
|
||||
|
@ -232,8 +232,8 @@ class Group(controllers.Controller):
|
|||
turbogears.flash(_('The group details could not be saved.'))
|
||||
else:
|
||||
turbogears.flash(_('The group details have been saved.'))
|
||||
turbogears.redirect('/group/view/%s' % groupname)
|
||||
return dict()
|
||||
turbogears.redirect('/group/view/%s' % group.name)
|
||||
return dict(group=group)
|
||||
|
||||
@identity.require(turbogears.identity.not_anonymous())
|
||||
@expose(template="fas.templates.group.list", allow_json=True)
|
||||
|
@ -306,26 +306,26 @@ class Group(controllers.Controller):
|
|||
target = People.by_username(targetname)
|
||||
group = Groups.by_name(groupname)
|
||||
|
||||
if not canSponsorUser(sponsor, group, target):
|
||||
if not canSponsorUser(person, group, target):
|
||||
turbogears.flash(_("You cannot sponsor '%s'") % target.username)
|
||||
turbogears.redirect('/group/view/%s' % group.name)
|
||||
return dict()
|
||||
else:
|
||||
try:
|
||||
group.sponsor_person(person, target)
|
||||
target.sponsor(group, person)
|
||||
except:
|
||||
turbogears.flash(_("'%s' could not be sponsored!") % target.username)
|
||||
turbogears.redirect('/group/view/%s' % group.name)
|
||||
else:
|
||||
import turbomail
|
||||
message = turbomail.Message(config.get('accounts_mail'), p.mail, "Your Fedora '%s' membership has been sponsored" % group.name)
|
||||
message = turbomail.Message(config.get('accounts_mail'), target.emails['primary'].email, "Your Fedora '%s' membership has been sponsored" % group.name)
|
||||
message.plain = dedent('''
|
||||
%(name)s <%(email)s> has sponsored you for membership in the %(group)s
|
||||
group of the Fedora account system. If applicable, this change should
|
||||
propagate into the e-mail aliases and CVS repository within an hour.
|
||||
|
||||
%(joinmsg)s
|
||||
''') % {'group': group.name, 'name': user.human_name, 'email': user.emails['primary'].email, 'joinmsg': group.joinmsg}
|
||||
''') % {'group': group.name, 'name': person.human_name, 'email': person.emails['primary'].email, 'joinmsg': group.joinmsg}
|
||||
turbomail.enqueue(message)
|
||||
turbogears.flash(_("'%s' has been sponsored!") % person.human_name)
|
||||
turbogears.redirect('/group/view/%s' % group.name)
|
||||
|
@ -340,23 +340,23 @@ class Group(controllers.Controller):
|
|||
# TODO: Add confirmation?
|
||||
username = turbogears.identity.current.user_name
|
||||
person = People.by_username(username)
|
||||
requester = People.by_username(targetname)
|
||||
target = People.by_username(targetname)
|
||||
group = Groups.by_name(groupname)
|
||||
|
||||
if not canRemoveUser(person, group, requester):
|
||||
if not canRemoveUser(person, group, target):
|
||||
turbogears.flash(_("You cannot remove '%s'.") % target.username)
|
||||
turbogears.redirect('/group/view/%s' % group.name)
|
||||
return dict()
|
||||
else:
|
||||
try:
|
||||
person.remove(group, requester)
|
||||
target.remove(group, target)
|
||||
except KeyError:
|
||||
turbogears.flash(_('%(name)s could not be removed from %(group)s!') % \
|
||||
{'name': requester.username, 'group': group.name})
|
||||
{'name': target.username, 'group': group.name})
|
||||
turbogears.redirect('/group/view/%s' % group.name)
|
||||
else:
|
||||
import turbomail
|
||||
message = turbomail.Message(config.get('accounts_mail'), requester.emails['primary'].email, "Your Fedora '%s' membership has been removed" % group.name)
|
||||
message = turbomail.Message(config.get('accounts_mail'), target.emails['primary'].email, "Your Fedora '%s' membership has been removed" % group.name)
|
||||
message.plain = dedent('''
|
||||
%(name)s <%(email)s> has removed you from the '%(group)s'
|
||||
group of the Fedora Accounts System This change is effective
|
||||
|
@ -365,7 +365,7 @@ class Group(controllers.Controller):
|
|||
''') % {'group': group.name, 'name': person.human_name, 'email': person.emails['primary'].email}
|
||||
turbomail.enqueue(message)
|
||||
turbogears.flash(_('%(name)s has been removed from %(group)s!') % \
|
||||
{'name': requester.username, 'group': group.name})
|
||||
{'name': target.username, 'group': group.name})
|
||||
turbogears.redirect('/group/view/%s' % group.name)
|
||||
return dict()
|
||||
|
||||
|
@ -386,7 +386,7 @@ class Group(controllers.Controller):
|
|||
return dict()
|
||||
else:
|
||||
try:
|
||||
group.upgrade_person(person, target)
|
||||
target.upgrade(group, person)
|
||||
except TypeError, e:
|
||||
turbogears.flash(e)
|
||||
turbogears.redirect('/group/view/%s' % group.name)
|
||||
|
@ -396,9 +396,7 @@ class Group(controllers.Controller):
|
|||
else:
|
||||
import turbomail
|
||||
message = turbomail.Message(config.get('accounts_mail'), target.emails['primary'].email, "Your Fedora '%s' membership has been upgraded" % group.name)
|
||||
user = Person.byUsername(username)
|
||||
g = Groups.byUsername(username)
|
||||
# Should we make upgrade_person return this?
|
||||
# Should we make person.upgrade return this?
|
||||
role = PersonRoles.query.filter_by(group=group, member=target).one()
|
||||
status = role.role_type
|
||||
message.plain = dedent('''
|
||||
|
@ -408,7 +406,7 @@ class Group(controllers.Controller):
|
|||
into the e-mail aliases within an hour.
|
||||
''') % {'group': group.name, 'name': person.human_name, 'email': person.emails['primary'].email, 'status': status}
|
||||
turbomail.enqueue(message)
|
||||
turbogears.flash(_('%s has been upgraded!') % person.username)
|
||||
turbogears.flash(_('%s has been upgraded!') % target.username)
|
||||
turbogears.redirect('/group/view/%s' % group.name)
|
||||
return dict()
|
||||
|
||||
|
@ -416,7 +414,7 @@ class Group(controllers.Controller):
|
|||
@validate(validators=usernameGroupnameExists())
|
||||
@error_handler(error)
|
||||
@expose(template='fas.templates.group.view')
|
||||
def downgrade(self, groupname, username):
|
||||
def downgrade(self, groupname, targetname):
|
||||
'''Upgrade user in group'''
|
||||
username = turbogears.identity.current.user_name
|
||||
person = People.by_username(username)
|
||||
|
@ -429,7 +427,7 @@ class Group(controllers.Controller):
|
|||
return dict()
|
||||
else:
|
||||
try:
|
||||
group.downgrade_person(person, target)
|
||||
target.downgrade(group, person)
|
||||
except:
|
||||
turbogears.flash(_('%(username)s could not be downgraded!') % {'username': target.username})
|
||||
turbogears.redirect('/group/view/%s' % group.name)
|
||||
|
@ -471,7 +469,7 @@ class Group(controllers.Controller):
|
|||
@expose(template='fas.templates.group.invite')
|
||||
def invite(self, groupname):
|
||||
username = turbogears.identity.current.user_name
|
||||
person = Person.byUsername(username)
|
||||
person = People.by_username(username)
|
||||
group = Groups.by_name(groupname)
|
||||
|
||||
return dict(person=person, group=group)
|
||||
|
@ -483,7 +481,7 @@ class Group(controllers.Controller):
|
|||
def sendinvite(self, groupname, target):
|
||||
import turbomail
|
||||
username = turbogears.identity.current.user_name
|
||||
person = Person.byUsername(username)
|
||||
person = People.by_username(username)
|
||||
group = Groups.by_name(groupname)
|
||||
|
||||
if isApproved(person, group):
|
||||
|
|
|
@ -32,8 +32,8 @@
|
|||
<input py:if="not group.user_can_remove" type="checkbox" id="user_can_remove" name="user_can_remove" value="1" />
|
||||
</div>
|
||||
<div class="field">
|
||||
<label for="prerequisite">${_('Must Belong To:')}</label>
|
||||
<input type="text" id="prerequisite" name="prerequisite" value="${group.prerequisite}" />
|
||||
<label for="prerequisite">${_('Group Prerequisite:')}</label>
|
||||
<input type="text" id="prerequisite" name="prerequisite" value="${group.prerequisite.name}" />
|
||||
</div>
|
||||
<div class="field">
|
||||
<label for="joinmsg">${_('Group Join Message:')}</label>
|
||||
|
|
|
@ -70,32 +70,26 @@
|
|||
from datetime import datetime
|
||||
from pytz import timezone
|
||||
?>
|
||||
<td>${role.member.creation}<!--${datetime.fromtimestamp(float(role.member.creation), timezone(role.member.timezone)).strftime('%F %R %Z')}--></td>
|
||||
<td py:if="role.approval == 'none'">${role.member.creation}</td>
|
||||
<td py:if="role.approval != 'none'">${role.member.timezone}<!--${datetime.fromtimestamp(float(role.member.creation), timezone(role.member.timezone)).strftime('%F %R %Z')}--></td>
|
||||
<td>${role.creation}</td>
|
||||
<td>${role.approval}</td>
|
||||
<td>${role.role_status}</td>
|
||||
<td>${role.role_type}</td>
|
||||
<!--<td>${groups[user].fedoraRoleDomain}</td>-->
|
||||
<!-- This section includes all action items -->
|
||||
<td py:if="auth.canSponsorGroup(role.member, group)">
|
||||
<td py:if="auth.canSponsorGroup(person, group)">
|
||||
<ul>
|
||||
|
||||
<li py:if="group in role.member.memberships">
|
||||
<a py:if="group in role.member.unapproved_memberships"
|
||||
href="${tg.url('/group/sponsor/%s/%s' % (group.name, role.member.username))}">${_('Sponsor')}</a>
|
||||
<!--<a py:if="not group.fedoraGroupNeedsSponsor.upper() == 'TRUE'"
|
||||
href="${tg.url('/group/sponsor/%s/%s' % (groups[user].cn, user))}">${_('Approve')}</a>
|
||||
<li py:if="group in role.member.unapproved_memberships">
|
||||
<a py:if="group.needs_sponsor" href="${tg.url('/group/sponsor/%s/%s' % (group.name, role.member.username))}">${_('Sponsor')}</a>
|
||||
<a py:if="not group.needs_sponsor" href="${tg.url('/group/sponsor/%s/%s' % (group.name, role.member.username))}">${_('Approve')}</a>
|
||||
</li>
|
||||
<li py:if="auth.canRemoveUser(tg.identity.user.user_name, group.cn, userName)">
|
||||
<a href="${tg.url('/group/remove/%s/%s' % (groups[user].cn, user))}">${_('Remove')}</a>
|
||||
<li py:if="auth.canRemoveUser(person, group, role.member)">
|
||||
<a href="${tg.url('/group/remove/%s/%s' % (group.name, role.member.username))}">${_('Remove')}</a>
|
||||
</li>
|
||||
<li py:if="auth.canUpgradeUser(tg.identity.user.user_name, group.cn, userName)">
|
||||
<a href="${tg.url('/group/upgrade/%s/%s' % (groups[user].cn, user))}">${_('Upgrade')}</a>
|
||||
<li py:if="auth.canUpgradeUser(person, group, role.member)">
|
||||
<a href="${tg.url('/group/upgrade/%s/%s' % (group.name, role.member.username))}">${_('Upgrade')}</a>
|
||||
</li>
|
||||
<li py:if="auth.canDowngradeUser(tg.identity.user.user_name, group.cn, userName)">
|
||||
<a href="${tg.url('/group/downgrade/%s/%s' % (groups[user].cn, user))}">${_('Downgrade')}</a>-->
|
||||
<li py:if="auth.canDowngradeUser(person, group, role.member)">
|
||||
<a href="${tg.url('/group/downgrade/%s/%s' % (group.name, role.member.username))}">${_('Downgrade')}</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue