diff --git a/fas/client/fasClient.py b/fas/client/fasClient.py
index edf2b0d..e8d42df 100755
--- a/fas/client/fasClient.py
+++ b/fas/client/fasClient.py
@@ -201,7 +201,7 @@ class MakeShellAccounts(BaseClient):
return '/sbin/nologin'
def install_aliases_txt(self):
- move(self.temp + '/aliases', '/tmp/aliases')
+ move(self.temp + '/aliases', '/etc/aliases')
def passwd_text(self, people=None):
i = 0
@@ -397,15 +397,21 @@ class MakeShellAccounts(BaseClient):
for group in self.groups:
name = group['name']
members = {}
+ members['member'] = []
for membership in self.memberships[name]:
role_type = membership['role_type']
person = usernames[membership['person_id']]
+ if role_type == 'user':
+ ''' Legacy support '''
+ members['member'].append(person)
+ continue
+ members['member'].append(person)
try:
members[role_type].append(person)
except KeyError:
members[role_type] = [person]
for role in members:
- print "%s-%s: %s" % (name, role, members[role])
+ email_file.write("%s-%ss: %s\n" % (name, role, ','.join(members[role])))
email_file.close()
def enable():
diff --git a/fas/dev.cfg b/fas/dev.cfg
index 1347860..5488681 100644
--- a/fas/dev.cfg
+++ b/fas/dev.cfg
@@ -3,9 +3,6 @@
# 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.server = 'bastion.fedora.phx.redhat.com'
-#base_url_filter.base_url = "http://192.168.2.101:8080"
mail.on = True
mail.server = 'localhost'
@@ -13,8 +10,6 @@ mail.server = 'localhost'
mail.debug = False
mail.encoding = 'utf-8'
-base_url_filter.use_x_forwarded_host = True
-
# DATABASE
# pick the form for your database
@@ -25,7 +20,7 @@ base_url_filter.use_x_forwarded_host = True
# If you have sqlite, here's a simple default to get you started
# in development
sqlalchemy.dburi="postgres://fedora:bunbunbun@localhost/fas2"
-
+sqlalchemy.echo=True
# if you are using a database or table type without transactions
# (MySQL default, for example), you should turn off transactions
@@ -53,8 +48,9 @@ autoreload.package="fas"
tg.strict_parameters = True
server.webpath='/accounts'
-base_url_filter.on=True
-base_url_filter.base_url = "https://publictest10.fedoraproject.org"
+base_url_filter.on = True
+base_url_filter.use_x_forwarded_host = True
+base_url_filter.base_url = "http://localhost:8088/accounts"
# Make the session cookie only return to the host over an SSL link
# Disabled for testing.
diff --git a/fas/fas/cla.py b/fas/fas/cla.py
index 46c4694..8782df6 100644
--- a/fas/fas/cla.py
+++ b/fas/fas/cla.py
@@ -9,6 +9,7 @@ import re
import gpgme
import StringIO
import subprocess
+import turbomail
from fas.auth import *
@@ -176,7 +177,14 @@ class CLA(controllers.Controller):
person.remove(cilckgroup, person)
except:
pass
- # TODO: Email legal-cla-archive@fedoraproject.org
+ message = turbomail.Message(config.get('accounts_email'), config.get('legal_cla_email'), 'Fedora ICLA completed')
+ message.plain = '''
+Fedora user %(username)s has signed a completed ICLA using their published GPG key, ID %(gpg_keyid)s,
+that is associated with e-mail address %(email)s. The full signed ICLA is attached.
+''' % {'username': person.username, 'gpg_keyid': person.gpg_keyid, 'email': person.emails['primary']}
+ signature.file.seek(0) # For another read()
+ message.attach(signature.file, signature.filename)
+ turbomail.enqueue(message)
turbogears.flash(_("You have successfully signed the CLA. You are now in the '%s' group.") % group.name)
turbogears.redirect('/cla/')
return dict()
diff --git a/fas/fas/config/app.cfg b/fas/fas/config/app.cfg
index 87c6abf..0e7f69d 100644
--- a/fas/fas/config/app.cfg
+++ b/fas/fas/config/app.cfg
@@ -153,9 +153,14 @@ identity.saprovider.model.group="fas.model.Groups"
# identity.saprovider.encryption_algorithm=None
-accounts_mail = "accounts@fedoraproject.org"
-#email_host = "fedoraproject.org"
-email_host = "publictest10.fedoraproject.org"
+# CHANGE ME:
+accounts_email = "nobody@fedoraproject.org"
+#accounts_email = "accounts@fedoraproject.org"
+legal_cla_email = "nobody@fedoraproject.org"
+#legal_cla_email = "legal-cla-archive@fedoraproject.org"
+
+#email_host = "bastion.fedora.phx.redhat.com"
+email_host = "localhost"
gpgexec = "/usr/bin/gpg"
gpghome = "/srv/fedora-infrastructure/fas/gnupg"
diff --git a/fas/fas/group.py b/fas/fas/group.py
index 19c1285..909a070 100644
--- a/fas/fas/group.py
+++ b/fas/fas/group.py
@@ -9,6 +9,7 @@ from fas.auth import *
from fas.user import KnownUser
import re
+import turbomail
class KnownGroup(validators.FancyValidator):
'''Make sure that a group already exists'''
@@ -287,11 +288,10 @@ class Group(controllers.Controller):
{'user': target.username, 'group': group.name, 'error': e})
turbogears.redirect('/group/view/%s' % group.name)
else:
- import turbomail
# TODO: How do we handle gettext calls for these kinds of emails?
# TODO: CC to right place, put a bit more thought into how to most elegantly do this
# TODO: Maybe that @fedoraproject.org (and even -sponsors) should be configurable somewhere?
- message = turbomail.Message(config.get('accounts_mail'), '%(group)s-sponsors@%(host)s' % {'group': group.name, 'host': config.get('email_host')}, \
+ message = turbomail.Message(config.get('accounts_email'), '%(group)s-sponsors@%(host)s' % {'group': group.name, 'host': config.get('email_host')}, \
"Fedora '%(group)s' sponsor needed for %(user)s" % {'user': target.username, 'group': group.name})
url = config.get('base_url_filter.base_url') + turbogears.url('/group/edit/%s' % groupname)
@@ -331,7 +331,7 @@ Please go to %(url)s to take action.
turbogears.redirect('/group/view/%s' % group.name)
else:
import turbomail
- message = turbomail.Message(config.get('accounts_mail'), target.emails['primary'], "Your Fedora '%s' membership has been sponsored" % group.name)
+ message = turbomail.Message(config.get('accounts_email'), target.emails['primary'], "Your Fedora '%s' membership has been sponsored" % group.name)
message.plain = _('''
%(name)s <%(email)s> has sponsored you for membership in the %(group)s
group of the Fedora account system. If applicable, this change should
@@ -357,7 +357,7 @@ propagate into the e-mail aliases and CVS repository within an hour.
group = Groups.by_name(groupname)
if not canRemoveUser(person, group, target):
- turbogears.flash(_("You cannot remove '%s'.") % target.username)
+ turbogears.flash(_("You cannot remove '%(user)s' from '%(group)s'.") % {'user': target.username, 'group': group.name})
turbogears.redirect('/group/view/%s' % group.name)
return dict()
else:
@@ -368,8 +368,7 @@ propagate into the e-mail aliases and CVS repository within an hour.
{'user': target.username, 'group': group.name, 'error': e})
turbogears.redirect('/group/view/%s' % group.name)
else:
- import turbomail
- message = turbomail.Message(config.get('accounts_mail'), target.emails['primary'], "Your Fedora '%s' membership has been removed" % group.name)
+ message = turbomail.Message(config.get('accounts_email'), target.emails['primary'], "Your Fedora '%s' membership has been removed" % group.name)
message.plain = _('''
%(name)s <%(email)s> has removed you from the '%(group)s'
group of the Fedora Accounts System This change is effective
@@ -406,7 +405,7 @@ aliases within an hour.
turbogears.redirect('/group/view/%s' % group.name)
else:
import turbomail
- message = turbomail.Message(config.get('accounts_mail'), target.emails['primary'], "Your Fedora '%s' membership has been upgraded" % group.name)
+ message = turbomail.Message(config.get('accounts_email'), target.emails['primary'], "Your Fedora '%s' membership has been upgraded" % group.name)
# Should we make person.upgrade return this?
role = PersonRoles.query.filter_by(group=group, member=target).one()
status = role.role_type
@@ -445,7 +444,7 @@ into the e-mail aliases within an hour.
turbogears.redirect('/group/view/%s' % group.name)
else:
import turbomail
- message = turbomail.Message(config.get('accounts_mail'), target.emails['primary'], "Your Fedora '%s' membership has been downgraded" % group.name)
+ message = turbomail.Message(config.get('accounts_email'), target.emails['primary'], "Your Fedora '%s' membership has been downgraded" % group.name)
role = PersonRoles.query.filter_by(group=group, member=target).one()
status = role.role_type
message.plain = _('''
diff --git a/fas/fas/templates/group/view.html b/fas/fas/templates/group/view.html
index 416139d..8b52457 100644
--- a/fas/fas/templates/group/view.html
+++ b/fas/fas/templates/group/view.html
@@ -4,7 +4,7 @@
xmlns:xi="http://www.w3.org/2001/XInclude">