adding users to csc-general

This commit is contained in:
Jeremy Roman 2010-09-25 01:00:27 -04:00
parent e33c483d3a
commit 9ebd8d910f
5 changed files with 40 additions and 2 deletions

View File

@ -595,3 +595,10 @@ def expired_accounts():
def send_account_expired_email(name, email): def send_account_expired_email(name, email):
args = [ cfg['expire_hook'], name, email ] args = [ cfg['expire_hook'], name, email ]
os.spawnv(os.P_WAIT, cfg['expire_hook'], args) os.spawnv(os.P_WAIT, cfg['expire_hook'], args)
def subscribe_to_mailing_list(name):
member = get(name)
if member is not None:
return remote.run_remote('mailman', name)
else:
return 'Error: member does not exist'

View File

@ -1,5 +1,5 @@
import ldap, urwid #, re import ldap, urwid #, re
from ceo import members, terms, uwldap from ceo import members, terms, remote, uwldap
from ceo.urwid.widgets import * from ceo.urwid.widgets import *
from ceo.urwid.window import * from ceo.urwid.window import *
@ -209,6 +209,10 @@ class EndPage(WizardPanel):
if self.utype == 'member': if self.utype == 'member':
members.create_member( self.state['userid'], self.state['password'], self.state['name'], self.state['program'], self.state['email'] ) members.create_member( self.state['userid'], self.state['password'], self.state['name'], self.state['program'], self.state['email'] )
members.register( self.state['userid'], self.state['terms'] ) members.register( self.state['userid'], self.state['terms'] )
mailman_result = members.subscribe_to_mailing_list( self.state['userid'] )
if mailman_result.split(': ',1)[0] not in ('Subscribed', 'Already a member'):
problem = mailman_result
elif self.utype == 'clubuser': elif self.utype == 'clubuser':
members.create_member( self.state['userid'], self.state['password'], self.state['name'], self.state['program'], self.state['email'] ) members.create_member( self.state['userid'], self.state['password'], self.state['name'], self.state['program'], self.state['email'] )
members.register_nonmember( self.state['userid'], self.state['terms'] ) members.register_nonmember( self.state['userid'], self.state['terms'] )
@ -222,6 +226,8 @@ class EndPage(WizardPanel):
problem = str(e) problem = str(e)
except members.MemberException, e: except members.MemberException, e:
problem = str(e) problem = str(e)
except remote.RemoteException, e:
problem = str(e)
clear_status() clear_status()

1
etc/ops/mailman Normal file
View File

@ -0,0 +1 @@
caffeine mailman list 0x04

View File

@ -5,6 +5,6 @@ from distutils.core import setup
setup( setup(
name='ceod', name='ceod',
description='CSC Electronic Office Daemon', description='CSC Electronic Office Daemon',
scripts=['src/op-mysql'], scripts=['src/op-mysql','src/op-mailman'],
) )

24
src/op-mailman Executable file
View File

@ -0,0 +1,24 @@
#!/usr/bin/python
import os, syslog
from subprocess import Popen, PIPE, STDOUT
from ceo.ops import get_ceo_user, check_group
def main():
remote_user = get_ceo_user()
user_to_add = raw_input()
if remote_user == user_to_add or check_group(remote_user, 'office') or check_group(remote_user, 'syscom'):
mailman = Popen(["/var/lib/vmailman/csclub/bin/add_members", "-r", "-", "csc-general"],
stdin=PIPE, stdout=PIPE, stderr=STDOUT)
out, err = mailman.communicate("%s@csclub.uwaterloo.ca\n" % user_to_add)
syslog.syslog(syslog.LOG_INFO, out)
print out
else:
message = "Access denied: user '%s' cannot subscribe users to csc-general" % remote_user
syslog.syslog(syslog.LOG_NOTICE, message)
print message
if __name__ == '__main__':
syslog.openlog('op-mailman', syslog.LOG_PID, syslog.LOG_DAEMON)
main()