Advertisement
Guest User

Untitled

a guest
May 3rd, 2017
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.83 KB | None | 0 0
  1. #!/usr/bin/python2.5
  2.  
  3. import sys
  4. import getopt
  5. from getpass import getpass
  6. from ZSI import ServiceProxy
  7.  
  8. import csv
  9. import xml.dom.minidom
  10. from time import time
  11. import pickle
  12.  
  13. ###################################################
  14. # set default values
  15.  
  16. port=8080
  17. host="drop2.lms.gatech.edu"
  18. proto="http"
  19.  
  20. ####################################################
  21. # Handle command line options
  22.  
  23. def usage(rcode=1):
  24.   print "usage: ", sys.argv[0], " [--file,-f=<file> --host=<hostname> --port=,-p<port> --help,-h --ssl,-s]"
  25.   sys.exit(rcode)
  26. try:
  27.   optlist, args = getopt.getopt(sys.argv[1:], "f:sh:p:", ['help', 'port=', 'host=', 'ssl', 'file='])
  28. except getopt.GetoptError:
  29.   usage()
  30. for opt, arg in optlist:
  31.   if opt in ["-h", "--help"]:
  32.     usage(0)
  33.   elif opt in ["--host"]:
  34.     host=arg
  35.     continue
  36.   elif opt in ["-p", "--port"]:
  37.     port=int(arg)
  38.     continue
  39.   elif opt in ["-s", "--ssl"]:
  40.     proto='https'
  41.     continue
  42.  
  43. ############################################
  44. # Log into the web service
  45.  
  46. login_wsdl = proto + '://' + host + ':' + str(port) + '/sakai-axis/SakaiLogin.jws?wsdl'
  47. login = ServiceProxy.ServiceProxy(login_wsdl)
  48.  
  49. user=raw_input("username: ")
  50. password=getpass("password: ")
  51. session=login.login(id=user, pw=password)['loginReturn']
  52.  
  53. ############################################
  54. # XML Helper Methods
  55.  
  56. def getText(nodelist):
  57.   rc = ""
  58.   for node in nodelist:
  59.     if node.nodeType == node.TEXT_NODE:
  60.       rc = rc + node.data
  61.   return rc
  62.  
  63. ############################################
  64. # Scripted actions below
  65.  
  66. def save(filename):
  67.   save_data = open(filename, 'wb')
  68.   pickle.dump(sites, save_data, -1)
  69.   save_data.close()
  70.  
  71. file='/tmp/'+host+'.data.pkl'
  72.  
  73. script_wsdl = proto + '://' + host + ':' + str(port) + '/sakai-axis/SakaiScript.jws?wsdl'
  74. script = ServiceProxy.ServiceProxy(script_wsdl)
  75.  
  76. gtscript_wsdl = proto + '://' + host + ':' + str(port) + '/sakai-axis/GaTechScript.jws?wsdl'
  77. gtscript = ServiceProxy.ServiceProxy(gtscript_wsdl)
  78.  
  79. sites = []
  80. try:
  81.   pkl_file = open(file, 'rb')
  82.   sites = pickle.load(pkl_file)
  83.   pkl_file.close()
  84. except:
  85.   allSites = gtscript.getAllSites(sessionid=session)
  86.  
  87.   print(allSites["getAllSitesReturn"])
  88.   dom = xml.dom.minidom.parseString(allSites["getAllSitesReturn"])
  89.  
  90.   items = dom.getElementsByTagName("item")
  91.   for item in items:
  92.     siteId = getText(item.getElementsByTagName("siteId")[0].childNodes)
  93.     type = getText(item.getElementsByTagName("siteType")[0].childNodes)
  94.     term = getText(item.getElementsByTagName("siteTerm")[0].childNodes)
  95.     sites.append((siteId, type, term))
  96.   save(file)
  97.  
  98. last_saved = time()
  99. count = 0
  100.  
  101. while len(sites)>0:
  102.   mysite = sites.pop()
  103.   siteId = mysite[0]
  104.   type = mysite[1]
  105.   term = mysite[2]
  106.   if (type == "course" and term == "FALL 2008"):
  107.     try:
  108.       #print "Removing Search tool from", mysite[0], ":\t",
  109.       #result = script.removePageFromSite(sessionid=session, siteid=siteId, pagetitle=u'Search')['removePageFromSiteReturn']
  110.       #print result
  111.       print "Adding Sitestats tool to", mysite[0], ":\t",
  112.       result = script.removePageFromSite(sessionid=session, siteid=siteId, pagetitle=u'Site Stats')['removePageFromSiteReturn']
  113.       result += " " + script.addNewPageToSite(sessionid=session, siteid=siteId, pagetitle="Site Stats", pagelayout=0)['addNewPageToSiteReturn']
  114.       result += " " + script.addNewToolToPage(sessionid=session, siteid=siteId, pagetitle="Site Stats", tooltitle="Site Stats", toolid="sakai.sitestats", layouthints="")['addNewToolToPageReturn']
  115.       print result
  116.     except:
  117.       print "caught exception retrying"
  118.       sites.append(mysite)
  119.   if time() - last_saved > 60:
  120.     print "A minute has passed, saving progress"
  121.     save(file)
  122.     print "Avg speed", count/(time()-last_saved), "records per second"
  123.     last_saved = time()
  124.     count = 0
  125.   count += 1
  126. save(file)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement