#!/usr/bin/env python # CCS Computer Science # Add User # # Douglas Thrift # # $Id$ import admin import common import ldap import MySQLdb import psycopg2 import users from unidecode import unidecode if __name__ == '__main__': parser = admin.parser(description = 'Add a new CCS CS Lab user') parser.add_option('-u', '--user', default = '', help = 'set the user name to USER') parser.add_option('-n', '--name', default = '', help = 'set the full name to NAME') options = parser.parse_args()[0] try: user = options.user while admin.USER.match(user) is None: if options.user: admin.error(admin.INVALID_USER % user) elif user: admin.warn(admin.INVALID_USER % user) user = raw_input('User Name: ') if users.user(user): admin.error('User exists: "%s"' % user) name = options.name while admin.NAME.match(name) is None: if options.name: admin.error(admin.INVALID_NAME % name) elif name: admin.warn(admin.INVALID_NAME % name) name = str(unidecode(raw_input('Full Name: ').decode('utf8'))) password = common.new_password() if admin.master(): admin.adduser(user, name, password) admin.run(common.add_all(user, name, password)) except (common.PasswordError, IOError, ldap.LDAPError, OSError, MySQLdb.MySQLError, psycopg2.Error, psycopg2.Warning), error: admin.error(error) except (EOFError, KeyboardInterrupt): admin.eof() # vim: noexpandtab tabstop=4