Advertisement
Guest User

Untitled

a guest
May 4th, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.08 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. usage(0)
  43.   elif opt in ["--host"]:
  44.     host=arg
  45.     continue
  46.   elif opt in ["-p", "--port"]:
  47.     port=int(arg)
  48.     continue
  49.   elif opt in ["-s", "--ssl"]:
  50.     proto='https'
  51.     continue
  52.   elif opt in ["-f", "--file"]:
  53.     file=arg
  54.     continue
  55.  
  56. ############################################
  57. # Log into the web service
  58.  
  59. login_wsdl = proto + '://' + host + ':' + str(port) + '/sakai-axis/SakaiLogin.jws?wsdl'
  60. login = ServiceProxy.ServiceProxy(login_wsdl)
  61.  
  62. user=raw_input("username: ")
  63. password=getpass("password: ")
  64. session=login.login(id=user, pw=password)['loginReturn']
  65.  
  66. ############################################
  67. # XML Helper Methods
  68.  
  69. def getText(nodelist):
  70.   rc = ""
  71.   for node in nodelist:
  72.     if node.nodeType == node.TEXT_NODE:
  73.       rc = rc + node.data
  74.   return rc
  75.  
  76. ############################################
  77. # Scripted actions below
  78.  
  79. def save(filename):
  80.   save_data = open(filename, 'wb')
  81.   pickle.dump(sites, save_data, -1)
  82.   save_data.close()
  83.  
  84. file='/tmp/'+host+'.data.pkl'
  85.  
  86. script_wsdl = proto + '://' + host + ':' + str(port) + '/sakai-axis/SakaiScript.jws?wsdl'
  87. script = ServiceProxy.ServiceProxy(script_wsdl)
  88.  
  89. gtscript_wsdl = proto + '://' + host + ':' + str(port) + '/sakai-axis/GaTechScript.jws?wsdl'
  90. gtscript = ServiceProxy.ServiceProxy(gtscript_wsdl)
  91.  
  92. sites = []
  93. try:
  94.   pkl_file = open(file, 'rb')
  95.   sites = pickle.load(pkl_file)
  96.   pkl_file.close()
  97. except:
  98.   allSites = gtscript.getAllSites(sessionid=session)
  99.  
  100.   print(allSites["getAllSitesReturn"])
  101.   dom = xml.dom.minidom.parseString(allSites["getAllSitesReturn"])
  102.  
  103.   items = dom.getElementsByTagName("item")
  104.   for item in items:
  105.     siteId = getText(item.getElementsByTagName("siteId")[0].childNodes)
  106.     type = getText(item.getElementsByTagName("siteType")[0].childNodes)
  107.     term = getText(item.getElementsByTagName("siteTerm")[0].childNodes)
  108.     sites.append((siteId, type, term))
  109.   save(file)
  110.  
  111. last_saved = time()
  112. count = 0
  113.  
  114. while len(sites)>0:
  115.   mysite = sites.pop()
  116.   siteId = mysite[0]
  117.   type = mysite[1]
  118.   term = mysite[2]
  119.   if (type == "course" and term == "FALL 2008"):
  120.     try:
  121.       #print "Removing Search tool from", mysite[0], ":\t",
  122.       #result = script.removePageFromSite(sessionid=session, siteid=siteId, pagetitle=u'Search')['removePageFromSiteReturn']
  123.       #print result
  124.       print "Adding Sitestats tool to", mysite[0], ":\t",
  125.       result = script.removePageFromSite(sessionid=session, siteid=siteId, pagetitle=u'Site Stats')['removePageFromSiteReturn']
  126.       result += " " + script.addNewPageToSite(sessionid=session, siteid=siteId, pagetitle="Site Stats", pagelayout=0)['addNewPageToSiteReturn']
  127.       result += " " + script.addNewToolToPage(sessionid=session, siteid=siteId, pagetitle="Site Stats", tooltitle="Site Stats", toolid="sakai.sitestats", layouthints="")['addNewToolToPageReturn']
  128.       print result
  129.     except:
  130.       print "caught exception retrying"
  131.       sites.append(mysite)
  132.   if time() - last_saved > 60:
  133.     print "A minute has passed, saving progress"
  134.     save(file)
  135.     print "Avg speed", count/(time()-last_saved), "records per second"
  136.     last_saved = time()
  137.     count = 0
  138.   count += 1
  139. save(file)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement