From 795976909c99a50033265da572f8d373b2279211 Mon Sep 17 00:00:00 2001 From: Ricky Zhou Date: Wed, 17 Oct 2007 12:08:07 -0700 Subject: [PATCH] Add email notifications. --- fas/dev.cfg | 9 +++-- fas/fas/config/app.cfg | 2 ++ fas/fas/group.py | 78 +++++++++++++++++++++++++++++++++++++++++- fas/fas/user.py | 4 +-- 4 files changed, 88 insertions(+), 5 deletions(-) diff --git a/fas/dev.cfg b/fas/dev.cfg index 4dfe5b9..cf029d2 100644 --- a/fas/dev.cfg +++ b/fas/dev.cfg @@ -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 diff --git a/fas/fas/config/app.cfg b/fas/fas/config/app.cfg index c69bdfd..051b6b7 100644 --- a/fas/fas/config/app.cfg +++ b/fas/fas/config/app.cfg @@ -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" diff --git a/fas/fas/group.py b/fas/fas/group.py index 1c8a906..323bc02 100644 --- a/fas/fas/group.py +++ b/fas/fas/group.py @@ -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() diff --git a/fas/fas/user.py b/fas/fas/user.py index 4224940..c95be91 100644 --- a/fas/fas/user.py +++ b/fas/fas/user.py @@ -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