Add email notifications.

This commit is contained in:
Ricky Zhou (周家杰) 2007-10-17 12:08:07 -07:00
parent ed90fe2333
commit 795976909c
4 changed files with 88 additions and 5 deletions

View file

@ -3,10 +3,15 @@
# Settings that are the same for both development and production
# (such as template engine, encodings, etc.) all go in
# fas/config/app.cfg
mail.on = True
#mail.on = True
#mail.server = 'bastion.fedora.phx.redhat.com'
#base_url_filter.base_url = "http://192.168.2.101:8080"
mail.server = 'localhost'
mail.on = False
mail.server = 'bastion.fedora.phx.redhat.com'
mail.debug = False
mail.encoding = 'utf-8'
base_url_filter.use_x_forwarded_host = True
# DATABASE

View file

@ -131,6 +131,8 @@ identity.provider='safas2'
# identity.soprovider.encryption_algorithm=None
accounts_mail = "accounts@fedoraproject.org"
gpghome = "/home/fedora/ricky/fedora-infrastructure/fas/gnupg"
gpg_fingerprint = "C199 1E25 D00A D200 2D2E 54D1 BF7F 1647 C54E 8410"
gpg_passphrase = "m00!s@ysth3c0w"

View file

@ -15,6 +15,8 @@ from fas.auth import *
from fas.user import knownUser, userNameExists
from textwrap import dedent
class knownGroup(validators.FancyValidator):
'''Make sure that a group already exists'''
def _to_python(self, value, state):
@ -157,7 +159,7 @@ class Group(controllers.Controller):
p.upgrade(groupName) # Sponsor...
p.upgrade(groupName) # Admin!
except:
turbogears.flash(_("The group: '%(group)s' has been created, but '%(user)' could not be added as a group administrator.") % {'group': groupName, 'user': fedoraGroupOwner})
turbogears.flash(_("The group: '%(group)s' has been created, but '%(user)s' could not be added as a group administrator.") % {'group': groupName, 'user': fedoraGroupOwner})
else:
turbogears.flash(_("The group: '%s' has been created.") % groupName)
turbogears.redirect('/group/view/%s' % groupName)
@ -243,6 +245,20 @@ class Group(controllers.Controller):
turbogears.flash(_('%(user)s has already applied to %(group)s!') % \
{'user': userName, 'group': groupName})
else:
import turbomail
message = turbomail.Message(config.get('accounts_mail'), '%s-sponsors@fedoraproject.org' % groupName, \
"Fedora '%(group)s' sponsor needed for %(user)s" % {'user': userName, 'group': groupName})
user = Person.byUserName(userName)
name = user.givenName
email = user.mail
url = config.get('base_url') + turbogears.url('/group/edit/%s' % groupName)
message.plain = dedent('''
Fedora user %(user)s, aka %(name)s <%(email)s> has requested
membership in the web group and needs a sponsor.
Please go to %(url)s to take action.
''') % {'user': userName, 'name': name, 'email': email, 'url': url}
turbomail.enqueue(message)
turbogears.flash(_('%(user)s has applied to %(group)s!') % \
{'user': userName, 'group': groupName})
turbogears.redirect('/group/view/%s' % groupName)
@ -267,6 +283,21 @@ class Group(controllers.Controller):
turbogears.flash(_("'%s' could not be sponsored!") % p.cn)
turbogears.redirect('/group/view/%s' % groupName)
else:
user = Person.byUserName(sponsor)
group = Groups.groups(groupName)[groupName]
import turbomail
message = turbomail.Message(config.get('accounts_mail'), p.mail, "Your Fedora '%s' membership has been sponsored" % groupName)
user = Person.byUserName(userName)
name = user.givenName
email = user.mail
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': groupName, 'name': name, 'email': email, 'joinmsg': group.fedoraGroupJoinMsg}
turbomail.enqueue(message)
turbogears.flash(_("'%s' has been sponsored!") % p.cn)
turbogears.redirect('/group/view/%s' % groupName)
return dict()
@ -291,6 +322,19 @@ class Group(controllers.Controller):
{'name': userName, 'group': groupName})
turbogears.redirect('/group/view/%s' % groupName)
else:
user = Person.byUserName(sponsor)
import turbomail
message = turbomail.Message(config.get('accounts_mail'), p.mail, "Your Fedora '%s' membership has been removed" % groupName)
user = Person.byUserName(userName)
name = user.givenName
email = user.mail
message.plain = dedent('''
%(name)s <%(email)s> has removed you from the '%(group)s'
group of the Fedora Accounts System This change is effective
immediately for new operations, and should propagate into the e-mail
aliases within an hour.
''') % {'group': groupName, 'name': name, 'email': email}
turbomail.enqueue(message)
turbogears.flash(_('%(name)s has been removed from %(group)s!') % \
{'name': userName, 'group': groupName})
turbogears.redirect('/group/view/%s' % groupName)
@ -318,6 +362,22 @@ class Group(controllers.Controller):
turbogears.flash(_('%(name)s could not be upgraded!') % {'name' : userName})
turbogears.redirect('/group/view/%s' % groupName)
else:
user = Person.byUserName(sponsor)
group = Groups.groups(groupName)[groupName]
import turbomail
message = turbomail.Message(config.get('accounts_mail'), p.mail, "Your Fedora '%s' membership has been upgraded" % groupName)
user = Person.byUserName(userName)
name = user.givenName
email = user.mail
g = Groups.byUserName(userName)
status = g[groupName].fedoraRoleType.lower()
message.plain = dedent('''
%(name)s <%(email)s> has upgraded you to %(status)s status in the
'%(group)s' group of the Fedora Accounts System This change is
effective immediately for new operations, and should propagate
into the e-mail aliases within an hour.
''') % {'group': groupName, 'name': name, 'email': email, 'status': status}
turbomail.enqueue(message)
turbogears.flash(_('%s has been upgraded!') % userName)
turbogears.redirect('/group/view/%s' % groupName)
return dict()
@ -344,6 +404,22 @@ class Group(controllers.Controller):
turbogears.flash(_('%(name)s could not be downgraded!') % {'name': userName})
turbogears.redirect('/group/view/%s' % groupName)
else:
user = Person.byUserName(sponsor)
group = Groups.groups(groupName)[groupName]
import turbomail
message = turbomail.Message(config.get('accounts_mail'), p.mail, "Your Fedora '%s' membership has been downgraded" % groupName)
user = Person.byUserName(userName)
name = user.givenName
email = user.mail
g = Groups.byUserName(userName)
status = g[groupName].fedoraRoleType.lower()
message.plain = dedent('''
%(name)s <%(email)s> has downgraded you to %(status)s status in the
'%(group)s' group of the Fedora Accounts System This change is
effective immediately for new operations, and should propagate
into the e-mail aliases within an hour.
''') % {'group': groupName, 'name': name, 'email': email, 'status': status}
turbomail.enqueue(message)
turbogears.flash(_('%s has been downgraded!') % p.cn)
turbogears.redirect('/group/view/%s' % groupName)
return dict()

View file

@ -241,7 +241,7 @@ class User(controllers.Controller):
postalAddress,)
p = Person.byUserName(cn)
newpass = p.generatePassword()
message = turbomail.Message('accounts@fedoraproject.org', p.mail, _('Fedora Project Password Reset'))
message = turbomail.Message(config.get('accounts_mail'), p.mail, _('Fedora Project Password Reset'))
message.plain = _(dedent('''
You have created a new Fedora account!
Your new password is: %s
@ -303,7 +303,7 @@ class User(controllers.Controller):
turbogears.flash(_("username + email combo unknown."))
return dict()
newpass = p.generatePassword()
message = turbomail.Message('accounts@fedoraproject.org', p.mail, _('Fedora Project Password Reset'))
message = turbomail.Message(config.get('accounts_mail'), p.mail, _('Fedora Project Password Reset'))
email = _(dedent('''
You have requested a password reset!
Your new password is - %s