adding users to csc-general
This commit is contained in:
parent
e33c483d3a
commit
9ebd8d910f
|
@ -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'
|
||||||
|
|
|
@ -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()
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
caffeine mailman list 0x04
|
|
@ -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'],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -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()
|
Loading…
Reference in New Issue