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"> - ${_('Edit Group')} + ${_('View Group')}

${group.display_name} (${group.name})

@@ -29,7 +31,7 @@ ${_('Remove me')} -

Group Details ${_('(edit)')}

+

Group Details ${_('(edit)')}

${_('Name:')}
${group.name} 
@@ -49,14 +51,16 @@
${group.prerequisite.name} 
 
${_('Created:')}
${group.creation} 
-
${_('Add User:')}
-
+ +
${_('Add User:')}
+
+
- +