Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python2.5
- import sys
- import getopt
- from getpass import getpass
- from ZSI import ServiceProxy
- import csv
- import xml.dom.minidom
- ###################################################
- # set default values
- port=8080
- host="drop2.lms.gatech.edu"
- proto="http"
- file="populate.csv"
- ####################################################
- # Handle command line options
- def usage(rcode=1):
- print "usage: ", sys.argv[0], " [--file,-f=<file> --host=<hostname> --port=,-p<port> --help,-h --ssl,-s]"
- sys.exit(rcode)
- try:
- optlist, args = getopt.getopt(sys.argv[1:], "f:sh:p:", ['help', 'port=', 'host=', 'ssl', 'file='])
- except getopt.GetoptError:
- usage()
- for opt, arg in optlist:
- if opt in ["-h", "--help"]:
- usage(0)
- elif opt in ["--host"]:
- host=arg
- continue
- elif opt in ["-p", "--port"]:
- port=int(arg)
- continue
- elif opt in ["-s", "--ssl"]:
- proto='https'
- continue
- elif opt in ["-f", "--file"]:
- file=arg
- continue
- ############################################
- # Log into the web service
- login_wsdl = proto + '://' + host + ':' + str(port) + '/sakai-axis/SakaiLogin.jws?wsdl'
- login = ServiceProxy.ServiceProxy(login_wsdl)
- user=raw_input("username: ")
- password=getpass("password: ")
- session=login.login(id=user, pw=password)['loginReturn']
- ############################################
- # XML Helper Methods
- def getText(nodelist):
- rc = ""
- for node in nodelist:
- if node.nodeType == node.TEXT_NODE:
- rc = rc + node.data
- return rc
- ############################################
- # Scripted actions below
- script = ServiceProxy.ServiceProxy(script_wsdl)
- reader = csv.reader(open(file, "rb"))
- def addpage(siteid, title):
- print "Adding page to \"" + siteid + "\" called \"" + title + "\": ",
- result=script.addNewPageToSite(sessionid=session, siteid=siteid, pagetitle=title, pagelayout=0)["addNewPageToSiteReturn"]
- print result
- def addtool(siteid, pagetitle, toolid):
- print "Adding \"" + toolid + "\" to \"" + siteid + ": ",
- result=script.addNewToolToPage(sessionid=session, siteid=siteid, pagetitle=pagetitle, tooltitle=pagetitle, toolid=toolid, layouthints="")["addNewToolToPageReturn"]
- print result
- def addsite(siteid, title, joinable, joinerrole, published, publicview, type):
- print "Adding site \"" + siteid + "\": ",
- result=script.addNewSite(sessionid=session, siteid=siteid, title=title, description="", shortdesc="", iconurl="", infourl="", joinable=joinable, joinerrole=joinerrole, published=published, publicview=publicview, skin="", type=type)["addNewSiteReturn"]
- print result
- def adduser(eid, firstname, lastname, email, type, password):
- print "Adding user \"" + eid + "\": ",
- result=script.addNewUser(sessionid=session, eid=eid, id=eid, firstname=firstname, lastname=lastname, email=email, type=type, password=password)["addNewUserReturn"]
- print result
- def addutos(siteid, eid, roleid):
- print "Adding user \"" + eid + "\" to site \"" + siteid + "\": ",
- result=script.addMemberToSiteWithRole(sessionid=session, siteid=siteid, eid=eid, roleid=roleid)["addMemberToSiteWithRoleReturn"]
- print result
- for row in reader:
- #print "Processing line", str(reader.line_num) + ": ",
- action = row[0]
- if (action == "addUserToSite"):
- siteid = row[1]
- eid = row[2]
- roleid = row[3]
- addutos(siteid, eid, roleid)
- elif (action == "addSite"):
- siteid = row[1]
- title = row[2]
- joinable = row[3]
- joinerrole = row[4]
- published = row[5]
- publicview = row[6]
- type = row[7]
- addsite(siteid, title, joinable, joinerrole, published, publicview, type)
- addpage(siteid, "Site Info")
- addtool(siteid, "Site Info", "sakai.siteinfo")
- elif (action == "addTool"):
- siteid = row[1]
- pagetitle = row[2]
- toolid = row[3]
- addpage(siteid, pagetitle)
- addtool(siteid, pagetitle, toolid)
- elif (action == "addUser"):
- eid = row[1]
- firstname = row[2]
- lastname = row[3]
- email = row[4]
- type = row[5]
- password = row[6]
- adduser(eid, firstname, lastname, email, type, password)
- elif (action == "comment"):
- continue
- else:
- print "I don't know how to \"" + action + "\" skipping."
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement