1 #!/usr/bin/env python 2 3 """ 4 Add users to a MoinMoin wiki. 5 6 User details are read from standard input as a tab-separated sequence using the 7 following format: 8 9 USERNAME FULLNAME EMAIL IMAGE-URL 10 11 User details are written to standard output in a tab-separated sequence using 12 the following format: 13 14 USERNAME FULLNAME EMAIL IMAGE-URL PASSWORD 15 """ 16 17 from os.path import split 18 from subprocess import call 19 import random, string 20 import sys 21 22 def randompass(): 23 return "".join(random.sample(string.ascii_letters, 10)) 24 25 def add_user(wiki, username, fullname, email, password): 26 cmd = ["moin", "--config-dir=%s" % wiki, "account", "create", 27 "--name=%s" % username, 28 "--email=%s" % email, 29 "--password=%s" % password] + \ 30 (fullname and ["--alias=%s" % fullname] or []) 31 call(cmd) 32 33 def main(): 34 progname = split(sys.argv[0])[-1] 35 36 try: 37 wiki = sys.argv[1] 38 except (IndexError, ValueError): 39 print >>sys.stderr, "%s <wiki configuration directory>" % progname 40 print >>sys.stderr 41 print >>sys.stderr, "Example: %s wiki" % progname 42 sys.exit(1) 43 44 line = sys.stdin.readline() 45 while line: 46 username, fullname, email, image = line.strip("\n ").split("\t") 47 password = randompass() 48 add_user(wiki, username, fullname, email, password) 49 print "\t".join([username, fullname, email, image, password]) 50 51 line = sys.stdin.readline() 52 53 if __name__ == "__main__": 54 main() 55 56 # vim: tabstop=4 expandtab shiftwidth=4