SHARE
TWEET

Untitled

a guest Apr 27th, 2016 60 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. '''
  2. Created on Feb 16, 2012
  3. '''
  4. import json
  5. import time
  6. from selenium import selenium
  7. import logging
  8. from psuproperties import Property
  9.  
  10. #Suppose all parameters were stripped
  11. class Building:
  12.     def __init__(self,LCode,Name,Address1,City,State,Zip,Campus):
  13.         self.LCode = LCode
  14.         self.Name = Name
  15.         self.Address1 = Address1
  16.         self.City = City
  17.         self.State = State
  18.         self.Zip = Zip
  19.         self.Campus = Campus
  20.  
  21. #Suppose all parameters were stripped
  22. class StudentGroup:
  23.     def __init__(self,AgencyName,AgencyVendorID,
  24.                  AgencyFedTaxID,AgencyACode,AgencyAddressLine1,
  25.                  AgencyAddressLine2,AgencyAddressCity,AgencyAddressState,
  26.                  AgencyAddressZipCode,AgencyPhoneArea,AgencyPhone,AgencyPhoneExtension,
  27.                  AgencyFaxArea,AgencyFax,
  28.                  AgencyPhContactPersPHArea,AgencyPhContactPersPH,
  29.                  AgencyPhContactPersFaxArea,AgencyPhContactPersFax,
  30.                  AgencyPhoneContactPersEmail,
  31.                  AgencyPhContactPerson,AgencyWWWHomePage,AgencyRegContactName,AgencyRegistrationPhrase,AgencyNotes):
  32.        
  33.         self.AgencyName = AgencyName
  34.         self.AgencyVendorID = AgencyVendorID
  35.         self.AgencyFedTaxID = AgencyFedTaxID
  36.         self.AgencyACode = AgencyACode
  37.         self.AgencyAddressLine1 = AgencyAddressLine1
  38.         self.AgencyAddressLine2 = AgencyAddressLine2
  39.         self.AgencyAddressCity = AgencyAddressCity
  40.         self.AgencyAddressState = AgencyAddressState
  41.        
  42.         self.AgencyAddressZip = AgencyAddressZipCode
  43.        
  44.         self.AgencyPhoneArea = AgencyPhoneArea
  45.         self.AgencyPhone = AgencyPhone
  46.         self.AgencyPhoneExtension = AgencyPhoneExtension
  47.        
  48.         self.AgencyFaxArea = AgencyFaxArea
  49.         self.AgencyFax = AgencyFax
  50.        
  51.         self.AgencyPhContactPersPHArea = AgencyPhContactPersPHArea
  52.         self.AgencyPhContactPersPH = AgencyPhContactPersPH
  53.  
  54.         self.AgencyPhContactPersFaxArea = AgencyPhContactPersFaxArea
  55.         self.AgencyPhContactPersFax = AgencyPhContactPersFax
  56.        
  57.         self.AgencyPhoneContactPersEmail = AgencyPhoneContactPersEmail
  58.        
  59.         self.Comment = ""
  60.         if AgencyPhContactPerson != "":
  61.             self.Comment = "AgencyPhContactPerson: " + AgencyPhContactPerson + "\n"
  62.         if AgencyWWWHomePage != "":
  63.             self.Comment += "AgencyWWWHomePage: " + AgencyWWWHomePage + "\n"
  64.         if AgencyRegContactName != "":
  65.             self.Comment += "AgencyRegContactName: " + AgencyRegContactName + "\n"
  66.         if AgencyRegistrationPhrase != "":
  67.             self.Comment += "AgencyRegistrationPhrase" + AgencyRegistrationPhrase + "\n"
  68.         if AgencyRegistrationPhrase != "":
  69.             self.Comment += "AgencyNotes: " + AgencyNotes + "\n"
  70.        
  71. #Suppose all parameters were stripped  
  72. class Instructor:
  73.     def __init__(self,
  74.                  InstructorRankRCode,InstructorNameLast,InstructorNameFirst,InstructorNameMI,
  75.                  InstructorBirthdate,InstructorActiveFlag,InstructorPSUID,InstructorTCode,
  76.                  InstructorEmplName,InstructorPosition,InstructorAgencyACode,InstructorHomeAddress1,InstructorHomeAddress2,
  77.                  InstructorHomeCity,InstructorHomeState,InstructorHomeCountry,InstructorHomeZipCode,
  78.                  InstructorWorkAddr1,InstructorWorkAddr2,InstructorWorkAddrCity,
  79.                  InstructorWorkAddrState,InstructorWorkCountry,InstructorWorkAddrZIPCode,
  80.                  InstructorHomePhoneArea,InstructorHomePhone,InstructorHomeFAXArea,InstructorHomeFAX,InstructorWorkPhoneNoArea,InstructorWorkPhoneNo,InstructorWorkFAXArea,InstructorWorkFAX,
  81.                  InstructorHomeEMailAddr,InstructorWorkEMailAddr,InstructorBio,InstructorDistinctiveQual,
  82.                  InstructorDegree,InstructorWWWHomePage,InstructorMiscInfo):
  83.        
  84.         self.InstructorRankRCode = InstructorRankRCode
  85.         self.InstructorNameLast = InstructorNameLast
  86.         self.InstructorNameFirst = InstructorNameFirst
  87.         self.InstructorNameMI = InstructorNameMI
  88.         self.InstructorBirthdate = InstructorBirthdate
  89.         self.InstructorActiveFlag = "Inactive"
  90.         if InstructorActiveFlag == "1":
  91.             self.InstructorActiveFlag = "Active"        
  92.         self.InstructorPSUID = InstructorPSUID
  93.         self.InstructorTCode = InstructorTCode
  94.         self.InstructorEmplName = InstructorEmplName
  95.         self.InstructorPosition = InstructorPosition
  96.         self.InstructorAgencyACode = InstructorAgencyACode
  97.        
  98.         self.InstructorHomeAddress1 = InstructorHomeAddress1
  99.         self.InstructorHomeAddress2 = InstructorHomeAddress2
  100.         self.InstructorHomeCity = InstructorHomeCity
  101.         self.InstructorHomeState = InstructorHomeState
  102.         self.InstructorHomeCountry = InstructorHomeCountry
  103.         self.InstructorHomeZipCode = InstructorHomeZipCode
  104.        
  105.         self.InstructorHomeZip = InstructorHomeZipCode
  106.        
  107.         self.InstructorWorkAddr1 = InstructorWorkAddr1
  108.         self.InstructorWorkAddr2 = InstructorWorkAddr2
  109.         self.InstructorWorkAddrCity = InstructorWorkAddrCity
  110.         self.InstructorWorkAddrState = InstructorWorkAddrState
  111.         self.InstructorWorkCountry = InstructorWorkCountry
  112.         self.InstructorWorkAddrZIPCode = InstructorWorkAddrZIPCode
  113.        
  114.         self.InstructorWorkZip = InstructorWorkAddrZIPCode
  115.        
  116.         self.InstructorHomePhoneArea = InstructorHomePhoneArea
  117.         self.InstructorHomePhone = InstructorHomePhone
  118.  
  119.         self.InstructorHomeFAXArea = InstructorHomeFAXArea
  120.         self.InstructorHomeFAX = InstructorHomeFAX
  121.            
  122.         self.InstructorWorkPhoneNoArea = InstructorWorkPhoneNoArea
  123.         self.InstructorWorkPhoneNo = InstructorWorkPhoneNo
  124.            
  125.         self.InstructorWorkFAXArea = InstructorWorkFAXArea
  126.         self.InstructorWorkFAX = InstructorWorkFAX
  127.        
  128.         if InstructorHomePhone == "" and InstructorHomeFAX=="" and InstructorWorkPhoneNo=="" and InstructorWorkFAX=="":
  129.             self.InstructorHomePhoneArea = "999"
  130.             self.InstructorHomePhone = "9999999"
  131.        
  132.         self.InstructorHomeEMailAddr = InstructorHomeEMailAddr.strip()
  133.        
  134.         self.InstructorWorkEMailAddr = InstructorWorkEMailAddr.strip()
  135.        
  136.         if self.InstructorHomeEMailAddr == "" and self.InstructorWorkEMailAddr == "":
  137.             self.InstructorHomeEMailAddr = "unknown@pdx.edu"
  138.            
  139.         self.InstructorBio = InstructorBio
  140.         self.InstructorDistinctiveQual = InstructorDistinctiveQual
  141.        
  142.         InstructorDegree = InstructorDegree.upper()
  143.         while True:
  144.             found = False
  145.             for c in InstructorDegree:
  146.                 if ord(c)<65 or ord(c)>90:
  147.                     InstructorDegree = InstructorDegree.replace(c,'')
  148.                     found = True
  149.                     break
  150.             if not found:
  151.                 break
  152.        
  153.        
  154.        
  155.         self.InstructorDegree = InstructorDegree
  156.        
  157.         self.InstructorWWWHomePage = InstructorWWWHomePage
  158.         self.InstructorMiscInfo = InstructorMiscInfo
  159.        
  160.     def extractArea(self,phone):
  161.         return phone[0:2]
  162.    
  163.     def extractPhone(self,phone):
  164.         return phone[3:]
  165.  
  166. class DAgent:
  167.     def __init__(self,host,username,password):
  168.         self.log = logging.getLogger('ragve.destiny_agent.ceed')
  169.         self.log.setLevel(logging.DEBUG)
  170.         # create console handler and set level to debug
  171.         ch = logging.StreamHandler()
  172.         ch.setLevel(logging.DEBUG)
  173.         # create formatter
  174.         formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
  175.         # add formatter to ch
  176.         ch.setFormatter(formatter)
  177.         # add ch to logger
  178.         self.log.addHandler(ch)
  179.         self.host = host
  180.         self.username = username
  181.         self.password = password
  182.         self.success = False
  183.    
  184.     def createGroup(self,sg):
  185.         if self.success <> True:
  186.             self.destiny_web_agent = DestinyWebAgent(self.log,self.host)
  187.         loginSuccess = self.destiny_web_agent.login(self.username, self.password)
  188.        
  189.         if loginSuccess == False:
  190.             self.success = False
  191.             return False
  192.         self.log.info("Logged in successfully")
  193.        
  194.         createGroup = self.destiny_web_agent.createGroup(sg)
  195.         if createGroup == False:
  196.             self.success = False
  197.             return False
  198.         time.sleep(5)
  199.        
  200.         logoutSuccess = self.destiny_web_agent.logout()
  201.         if logoutSuccess == False:
  202.             self.success = False
  203.             return False
  204.         self.log.info("Logged out successfully")
  205.        
  206.         self.success = True
  207.         return True
  208.    
  209.     def createBuilding(self,loc):
  210.         if self.success <> True:
  211.             self.destiny_web_agent = DestinyWebAgent(self.log,self.host)
  212.         loginSuccess = self.destiny_web_agent.login(self.username, self.password)
  213.        
  214.         if loginSuccess == False:
  215.             self.success = False
  216.             return False
  217.         self.log.info("Logged in successfully")
  218.  
  219.         updateCampusSuccess = self.destiny_web_agent.createBuilding(loc)
  220.         if updateCampusSuccess == False:
  221.             self.success = False
  222.             return False
  223.         time.sleep(5)
  224.        
  225.         logoutSuccess = self.destiny_web_agent.logout()
  226.         if logoutSuccess == False:
  227.             self.success = False
  228.             return False
  229.         self.log.info("Logged out successfully")
  230.        
  231.         self.success = True
  232.         return True
  233.    
  234.     def createInstructor(self,inst):
  235.         if self.success <> True:
  236.             self.destiny_web_agent = DestinyWebAgent(self.log,self.host)
  237.  
  238.         loginSuccess = self.destiny_web_agent.login(self.username, self.password)
  239.         if loginSuccess == False:
  240.             self.success = False
  241.             return False
  242.         self.log.info("Logged in successfully")
  243.        
  244.         createInstructor = self.destiny_web_agent.createInstructor(inst)
  245.         if createInstructor == False:
  246.             self.success = False
  247.             return False
  248.        
  249.         time.sleep(5)
  250.        
  251.         logoutSuccess = self.destiny_web_agent.logout()
  252.         if logoutSuccess == False:
  253.             self.success = False
  254.             return False
  255.         self.log.info("Logged out successfully")
  256.  
  257.         self.success = True
  258.         return True
  259.  
  260. class DestinyWebAgent:
  261.     def __init__(self, log, host):
  262.         self.log = log
  263.         self.selenium = selenium("localhost", 4444, "*firefox", host)
  264.         self.log.info("Initialize the selenium")
  265.         self.selenium.start()
  266.         self.selenium.open("/")
  267.         self.selenium.window_maximize()
  268.         self.selenium.wait_for_page_to_load("30000")
  269.        
  270.     def login(self, login, password):
  271.         sel = self.selenium
  272.         try:
  273.             sel.type("id=loginId", login)
  274.             sel.type("id=password", password)
  275.             time.sleep(3)
  276.             sel.click("css=input[type=\"image\"]")
  277.             sel.wait_for_page_to_load("30000")
  278.  
  279.         except Exception as inst:
  280.             self.log.debug("Encounter exception " + str(inst))
  281.             self.tearDown()
  282.             return False
  283.        
  284.         return True
  285.    
  286.     def createGroup(self,sg):
  287.         sel = self.selenium
  288.         try:
  289.             sel.click("name=menuOpen")
  290.             time.sleep(3)
  291.             sel.click("name=menuenrolment")
  292.             sel.wait_for_page_to_load("30000")
  293.             time.sleep(3)
  294.  
  295.             sel.click("id=createGroup")
  296.             sel.wait_for_page_to_load("30000")
  297.             time.sleep(3)
  298.             #update the student group
  299.            
  300.             sel.type("name=companyName",sg.AgencyName)
  301.             time.sleep(1)
  302.             sel.type("name=businessLicenseNum",sg.AgencyVendorID)
  303.             time.sleep(1)
  304.             sel.type("name=taxRegNum",sg.AgencyFedTaxID)
  305.             time.sleep(1)
  306.             sel.type("name=accountNumber",sg.AgencyACode)
  307.             time.sleep(5)
  308.            
  309.             sel.select("name=addressType","Agency")
  310.             time.sleep(1)
  311.             sel.type("name=street1",sg.AgencyAddressLine1)
  312.             time.sleep(1)
  313.             sel.type("name=street2",sg.AgencyAddressLine2)
  314.             time.sleep(1)
  315.             sel.type("name=city",sg.AgencyAddressCity)
  316.             time.sleep(1)
  317.             sel.select("name=provinceState",sg.AgencyAddressState)
  318.             time.sleep(1)
  319.             sel.type("name=zipCode",sg.AgencyAddressZip)
  320.             time.sleep(1)
  321.            
  322.             if sg.AgencyPhone != "":
  323.                 sel.select("name=telephoneType","Agency")
  324.                 time.sleep(1)
  325.                 if sel.is_element_present("//form/div/table/tbody/tr/td/table[6]/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td[.='Agency']"):
  326.                     sel.click("//form/div/table/tbody/tr/td/table[6]/tbody/tr/td/table/tbody/tr/td/table/tbody/tr[td[.='Agency']]/td[4]/div/a")
  327.                 sel.type("name=areaCode",sg.AgencyPhoneArea)
  328.                 time.sleep(1)
  329.                 sel.type("name=telephoneNumber",sg.AgencyPhone)
  330.                 time.sleep(1)
  331.                 sel.type("name=telephoneExt",sg.AgencyPhoneExtension)
  332.                 time.sleep(1)
  333. #                sel.click("css=a[name=\"add_phone_button\"] > img")
  334.            
  335.             if sg.AgencyFax != "":
  336.                 sel.select("name=telephoneType","Agency Fax")
  337.                 time.sleep(1)
  338.                 if sel.is_element_present("//form/div/table/tbody/tr/td/table[6]/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td[.='AgencyFax']"):
  339.                     sel.click("//form/div/table/tbody/tr/td/table[6]/tbody/tr/td/table/tbody/tr/td/table/tbody/tr[td[.='AgencyFax']]/td[4]/div/a")
  340.                 sel.type("name=areaCode",sg.AgencyFaxArea)
  341.                 time.sleep(1)
  342.                 sel.type("name=telephoneNumber",sg.AgencyFax)
  343.                 time.sleep(1)
  344.                 sel.type("name=telephoneExt","")
  345.                 time.sleep(1)
  346.                 #sel.click("css=a[name=\"add_phone_button\"] > img")
  347.            
  348.             if sg.AgencyPhContactPersPH != "":
  349.                 sel.select("name=telephoneType","Contact")
  350.                 time.sleep(3)
  351.                 if sel.is_element_present("//form/div/table/tbody/tr/td/table[6]/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td[.='Contact']"):
  352.                     sel.click("//form/div/table/tbody/tr/td/table[6]/tbody/tr/td/table/tbody/tr/td/table/tbody/tr[td[.='Contact']]/td[4]/div/a")
  353.                 time.sleep(3)
  354.                 sel.type("name=areaCode",sg.AgencyPhContactPersPHArea)
  355.                 time.sleep(1)
  356.                 sel.type("name=telephoneNumber",sg.AgencyPhContactPersPH)
  357.                 time.sleep(1)
  358.                 sel.type("name=telephoneExt","")
  359.                 time.sleep(1)
  360.                 #sel.click("css=a[name=\"add_phone_button\"] > img")
  361.            
  362.             if sg.AgencyPhContactPersFax != "":
  363.                 sel.select("name=telephoneType","Fax")
  364.                 time.sleep(3)
  365.                 if sel.is_element_present("//form/div/table/tbody/tr/td/table[6]/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td[.='Fax']"):
  366.                     sel.click("//form/div/table/tbody/tr/td/table[6]/tbody/tr/td/table/tbody/tr/td/table/tbody/tr[td[.='Fax']]/td[4]/div/a")
  367.                 time.sleep(3)
  368.                 sel.type("name=areaCode",sg.AgencyPhContactPersFaxArea)
  369.                 time.sleep(1)
  370.                 sel.type("name=telephoneNumber",sg.AgencyPhContactPersFax)
  371.                 time.sleep(1)
  372.                 sel.type("name=telephoneExt","")
  373.                 time.sleep(1)
  374.                 #sel.click("css=a[name=\"add_phone_button\"] > img")
  375.            
  376.             if sg.AgencyPhoneContactPersEmail != "":
  377.                 if sel.is_element_present("//body/form/div/table/tbody/tr/td/table[6]/tbody/tr/td/table/tbody/tr/td[3]/table/tbody/tr/td/a[text()='"+sg.AgencyPhoneContactPersEmail+"']") == False:
  378.                     sel.type("name=emailAddress",sg.AgencyPhoneContactPersEmail)
  379.     #                sel.click("css=a[name="add_email_button"] > img")
  380.     #                sel.wait_for_page_to_load("30000")
  381. #                    time.sleep(3)
  382.             if sg.Comment != "":
  383.                 sel.type("name=comment",sg.Comment)
  384. #                sel.click("css=a[name=\"add_comments_button\"] > img")
  385. #                sel.wait_for_page_to_load("30000")
  386. #            sel.click("id=savePage")
  387. #            if sel.is_element_present("//table[5]/tbody/tr/td/table/tbody/tr/td/div/table/tbody/tr/td/h2/font") :
  388. #                self.tearDown()
  389. #                return False  
  390.         except Exception as inst:
  391.             self.log.debug("Encounter exception " + str(inst))
  392.             self.tearDown()
  393.             return False
  394.         return True
  395.    
  396.     def createBuilding(self,loc):
  397.         sel = self.selenium
  398.         try:
  399.             sel.click("name=curriculumLocations")
  400.             sel.wait_for_page_to_load("30000")
  401.  
  402.             sel.click("link=Buildings")
  403.             sel.wait_for_page_to_load("30000")
  404.            
  405.             sel.type("name=helper.building.code",loc.LCode)
  406.             time.sleep(3)
  407.             sel.type("name=helper.building.name",loc.Name)
  408.             time.sleep(3)
  409.            
  410.             if loc.Campus == "Off Campus":
  411.                 sel.select("name=selectedCampusId","Off Campus - CA0003")
  412.             else:
  413.                 sel.select("name=selectedCampusId","Portland State University - CA0001")
  414.            
  415.             sel.type("name=helper.building.address1",loc.Address1)
  416.             time.sleep(3)
  417.             sel.type("name=helper.building.city",loc.City)
  418.             time.sleep(3)
  419.             if loc.State <> "":
  420.                 sel.select("name=helper.building.provinceCode",loc.State)
  421.                 time.sleep(3)
  422.             sel.type("name=helper.building.zip",loc.Zip)
  423.             time.sleep(3)
  424.            
  425. #            sel.click("id=savePage")
  426. #            sel.wait_for_page_to_load("30000")
  427.            
  428. #            if sel.is_element_present("//table[5]/tbody/tr/td/table/tbody/tr/td/div/table/tbody/tr/td/h2/font") :
  429. #                self.tearDown()
  430. #                return False  
  431.         except Exception as inst:
  432.             self.log.debug("Encounter exception " + str(inst))
  433.             self.tearDown()
  434.             return False
  435.        
  436.         return True
  437.  
  438.     def createInstructor(self,instructor):
  439.         sel = self.selenium
  440.         try:
  441.             sel.click("name=curriculumInstructors")
  442.             sel.wait_for_page_to_load("30000")
  443.            
  444. #            sel.type("name=instructorNumber","T000001")
  445. #            sel.click("id=search")
  446. #            sel.wait_for_page_to_load("30000")
  447. #            sel.click("link=Aasheim, Lisa")
  448.             sel.click("id=createNewInstructor")
  449.             sel.wait_for_page_to_load("30000")
  450.            
  451.             time.sleep(3)
  452.             InstructorRankRCode = {"A":"Professor",
  453.                                    "B":"Associate Professor",
  454.                                    "C":"Assistant Professor",
  455.                                    "D":"Adjunct Assistant Professor",
  456.                                    "E":"Instructor",
  457.                                    "F":"Adjunct Instructor",
  458.                                    "G":"Adjunct Associate Professor",
  459.                                    "I":"Adjunct Professor",
  460.                                    "K":"Research Assistant",
  461.                                    "N":"No Rank Assigned",
  462.                                    "P":"Class Presenter"}
  463.            
  464.             sel.select("name=instructorKind",InstructorRankRCode[instructor.InstructorRankRCode])
  465.             time.sleep(1)
  466.            
  467.             sel.type("name=surname",instructor.InstructorNameLast)
  468.             time.sleep(1)
  469.            
  470.             sel.type("name=givenName",instructor.InstructorNameFirst)
  471.             time.sleep(1)
  472.  
  473.             sel.type("name=secondGivenName",instructor.InstructorNameMI)
  474.             time.sleep(1)
  475.            
  476.             sel.type("name=nameToAppearInPrint",instructor.InstructorNameFirst+" "+instructor.InstructorNameLast+" "+instructor.InstructorNameMI)
  477.             time.sleep(1)
  478.            
  479.             if instructor.InstructorBirthdate != "":
  480.                 sel.type("id=birthDateString",instructor.InstructorBirthdate)
  481.                 time.sleep(1)
  482.            
  483.             sel.select("name=status",instructor.InstructorActiveFlag)
  484.             time.sleep(1)
  485.            
  486.             sel.type("id=personnelNumber",instructor.InstructorPSUID)
  487.             time.sleep(1)
  488.            
  489.             sel.type("name=netId",instructor.InstructorTCode)
  490.             time.sleep(1)
  491.            
  492.             sel.type("name=employer",instructor.InstructorEmplName)
  493.             time.sleep(1)
  494.            
  495.             sel.type("name=jobTitle",instructor.InstructorPosition)
  496.             time.sleep(1)
  497.            
  498.             sel.type("name=firm",instructor.InstructorAgencyACode)
  499.             time.sleep(1)
  500.            
  501. #            if instructor home address exists, make a change, otherwise add new one
  502.             if instructor.InstructorHomeAddress1 != "" and instructor.InstructorHomeCity != "":
  503.                 sel.type("name=street1",instructor.InstructorHomeAddress1)
  504.                 time.sleep(1)
  505.                
  506.                 sel.type("name=street2",instructor.InstructorHomeAddress2)
  507.                 time.sleep(1)
  508.                
  509.                 sel.type("name=city",instructor.InstructorHomeCity)
  510.                 time.sleep(1)
  511.                
  512.                 if instructor.InstructorHomeState != "":
  513.                     sel.select("name=provinceState",instructor.InstructorHomeState)
  514.                     time.sleep(1)
  515.                
  516.                 if instructor.InstructorHomeCountry != "":
  517.                     sel.select("name=country",instructor.InstructorHomeCountry)
  518.                     time.sleep(1)
  519.                
  520.                 sel.type("name=zipCode",instructor.InstructorHomeZip)
  521.                 time.sleep(1)
  522.            
  523.                 sel.click("//table[@id='Table2']/tbody/tr/td/table/tbody/tr/td/table[3]/tbody/tr/td[4]/a/img")
  524.                 sel.wait_for_page_to_load("30000")
  525.                 time.sleep(1)
  526.            
  527.             if instructor.InstructorWorkAddr1 != "" and instructor.InstructorWorkAddrCity != "":
  528.                 sel.select("name=addressType","Office")
  529.                 time.sleep(1)
  530.                    
  531.                 sel.type("name=street1",instructor.InstructorWorkAddr1)
  532.                 time.sleep(1)
  533.                
  534.                 sel.type("name=street2",instructor.InstructorWorkAddr2)
  535.                 time.sleep(1)
  536.                
  537.                 sel.type("name=city",instructor.InstructorWorkAddrCity)
  538.                 time.sleep(1)
  539.                
  540.                 if instructor.InstructorWorkAddrState != "":
  541.                     sel.select("name=provinceState",instructor.InstructorWorkAddrState)
  542.                     time.sleep(1)
  543.                
  544.                 if instructor.InstructorWorkCountry != "":
  545.                     sel.select("name=country",instructor.InstructorWorkCountry)
  546.                     time.sleep(1)
  547.                
  548.                 sel.type("name=zipCode",instructor.InstructorWorkZip)
  549.                 time.sleep(1)
  550.                
  551.                 sel.click("//table[@id='Table2']/tbody/tr/td/table/tbody/tr/td/table[3]/tbody/tr/td[4]/a/img")
  552.                 sel.wait_for_page_to_load("30000")
  553.                 time.sleep(1)
  554.            
  555.            
  556. #            if instructor home phone exists, make a change, otherwise add new one
  557.             if instructor.InstructorHomePhone != "":
  558.                 sel.type("name=areaCode",instructor.InstructorHomePhoneArea)
  559.                 time.sleep(1)
  560.                
  561.                 sel.type("name=telephoneNumber",instructor.InstructorHomePhone)
  562.                 time.sleep(1)
  563.                 sel.click("//table[@id='Table4']/tbody/tr/td/table/tbody/tr[2]/td/table/tbody/tr/td[5]/a/img")
  564.                 sel.wait_for_page_to_load("30000")
  565.                 time.sleep(1)
  566.  
  567.  
  568. #            if instructor home fax exists, make a change, otherwise add new one
  569.             if instructor.InstructorHomeFAX != "":
  570.                 sel.select("name=telephoneType","Fax")
  571.                 time.sleep(1)
  572.                          
  573.                 sel.type("name=areaCode",instructor.InstructorHomeFAXArea)
  574.                 time.sleep(1)
  575.                
  576.                 sel.type("name=telephoneNumber",instructor.InstructorHomeFAX)
  577.                 sel.click("//table[@id='Table4']/tbody/tr/td/table/tbody/tr[2]/td/table/tbody/tr/td[5]/a/img")
  578.                 sel.wait_for_page_to_load("30000")
  579.                 time.sleep(1)
  580.  
  581. #             if instructor work phone exists, make a change, otherwise add new one
  582.             if instructor.InstructorWorkPhoneNo != "":
  583.                 sel.select("name=telephoneType","Office")
  584.                 time.sleep(1)
  585.                
  586.                 sel.type("name=areaCode",instructor.InstructorWorkPhoneNoArea)
  587.                 time.sleep(1)
  588.    
  589.                 sel.type("name=telephoneNumber",instructor.InstructorWorkPhoneNo)
  590.                 sel.click("//table[@id='Table4']/tbody/tr/td/table/tbody/tr[2]/td/table/tbody/tr/td[5]/a/img")
  591.                 sel.wait_for_page_to_load("30000")
  592.                 time.sleep(1)
  593.            
  594. #            if instructor work fax exists, make a change, otherwise add new one
  595.             if instructor.InstructorWorkFAX != "":
  596.                 sel.select("name=telephoneType","Fax 2")
  597.                 time.sleep(1)
  598.                
  599.                 sel.type("name=areaCode",instructor.InstructorWorkFAXArea)
  600.                 time.sleep(1)
  601.            
  602.                 sel.type("name=telephoneNumber",instructor.InstructorWorkFAX)
  603.                 sel.click("//table[@id='Table4']/tbody/tr/td/table/tbody/tr[2]/td/table/tbody/tr/td[5]/a/img")
  604.                 sel.wait_for_page_to_load("30000")
  605.                 time.sleep(1)
  606.  
  607. #            if instructor home email doesn't exist, add a new one                
  608.             if instructor.InstructorHomeEMailAddr != "":
  609.                 sel.type("name=emailAddress",instructor.InstructorHomeEMailAddr)
  610.                 sel.click("//table[@id='Table4']/tbody/tr/td/table/tbody/tr[2]/td/table/tbody/tr/td[2]/a/img")
  611.                 sel.wait_for_page_to_load("30000")
  612.                 time.sleep(1)
  613.  
  614. #            if instructor work email doesn't exist, add a new one
  615.             if instructor.InstructorWorkEMailAddr != "":
  616.                 sel.type("name=emailAddress",instructor.InstructorWorkEMailAddr)
  617.                 sel.click("//table[@id='Table4']/tbody/tr/td/table/tbody/tr[2]/td[3]/table/tbody/tr/td[2]/a/img")
  618.                 sel.wait_for_page_to_load("30000")
  619.                 time.sleep(1)
  620.  
  621. #            #create new Prof table[5]
  622. #            #update Prof table[6]
  623.  
  624.             sel.select_frame("//p[3]/table[5]/tbody/tr/td/table/tbody/tr/td/iframe[@id=\"biographies_0__description_pinedit\"]")
  625.             sel.select_frame("//table/tbody/tr[3]/td/div/table/tbody/tr[2]/td/iframe[@id=\"pinEdit\"]")
  626.             for c in instructor.InstructorBio:
  627.                 sel.key_press("//","\\"+str(ord(c)))
  628.                
  629. #            sel.get_eval("window.document.body.innerHTML=\""+instructor.InstructorBio+"\"")
  630.             time.sleep(3)
  631.             sel.select_frame("relative=top")
  632.  
  633.             sel.select_frame("//p[3]/table[5]/tbody/tr/td/table/tbody/tr/td/iframe[@id=\"biographies_1__description_pinedit\"]")
  634.             sel.select_frame("//table/tbody/tr[3]/td/div/table/tbody/tr[2]/td/iframe[@id=\"pinEdit\"]")
  635.             for c in instructor.InstructorDistinctiveQual:
  636.                 sel.key_press("//","\\"+str(ord(c)))
  637.            
  638.             time.sleep(3)
  639.             sel.select_frame("relative=top")
  640.  
  641.            
  642.             DegreeMap = {
  643.                         'BA':'BA',
  644.                         'BS':'BS',
  645.                         'CRC':'CRC',
  646.                         'DMA':'DMA',
  647.                         'DMIN':'DMin',
  648.                         'EDD':'EdD',
  649.                         'EdS':'EDS',
  650.                         'JD':'JD',
  651.                         'LPC':'LPC',
  652.                         'MA':'MA',
  653.                         'MAIS':'MAIS',
  654.                         'MAT':'MAT',
  655.                         'MBA':'MBA',
  656.                         'MD':'MD',
  657.                         'MDIV':'MDiv',
  658.                         'ME':'ME',
  659.                         'MED':'MEd',
  660.                         'MEDL':'MEdL',
  661.                         'MFA':'MFA',
  662.                         'MHS':'MHS',
  663.                         'MLIS':'MLIS',
  664.                         'MLS':'MLS',
  665.                         'MMUS':'MMus',
  666.                         'MOT':'MOT',
  667.                         'MPA':'MPA',
  668.                         'MPH':'MPH',
  669.                         'MS':'MS',
  670.                         'MSE':'MSE',
  671.                         'MSSA':'MSSA',
  672.                         'MST':'MST',
  673.                         'MSW':'MSW',
  674.                         'MTESL':'MTESL',
  675.                         'PHD':'PhD',
  676.                         'PSYD':'PsyD'
  677.                         }
  678.            
  679.             if instructor.InstructorDegree != "":
  680.                 if instructor.InstructorDegree in DegreeMap.keys():
  681.                     self.InstructorDegree = DegreeMap[instructor.InstructorDegree]
  682.                     sel.select("name=credential",instructor.InstructorDegree)
  683.                     sel.click("//p[3]/table[7]/tbody/tr[2]/td/input")
  684.                     sel.wait_for_page_to_load("30000")
  685.                     time.sleep(1)
  686.                 else:
  687.                     self.log.debug("Encounter invalid degree " + instructor.InstructorDegree)
  688.                     self.tearDown()
  689.                     return False
  690.            
  691.             comment = instructor.InstructorWWWHomePage+instructor.InstructorMiscInfo
  692.             if comment != "":
  693.                 sel.type("name=comment",instructor.InstructorWWWHomePage+"\n"+instructor.InstructorMiscInfo)
  694.                 sel.click("//p[3]/table[9]/tbody/tr/td/table[2]/tbody/tr/td/table/tbody/tr[2]/td[3]/a/img")
  695.                 sel.wait_for_page_to_load("30000")
  696.                 time.sleep(1)
  697. #            click to save the information
  698.             sel.click("id=savePage")
  699.             sel.wait_for_page_to_load("30000")
  700.             time.sleep(5)
  701.             if sel.is_element_present("//table[5]/tbody/tr/td/table/tbody/tr/td/div/table/tbody/tr/td/h2/font") :
  702.                 self.tearDown()
  703.                 return False    
  704.         except Exception as inst:
  705.             self.log.debug("Encounter exception " + str(inst))
  706.             self.tearDown()
  707.             return False
  708.        
  709.         return True
  710.    
  711.     def logout(self):
  712.         sel = self.selenium
  713.  
  714.         try:
  715.             sel.click("//div[2]/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td[7]/a/img")
  716.             time.sleep(3)
  717.         except Exception as inst:
  718.             self.log.debug("Encounter exception " + str(inst))
  719.             self.tearDown()
  720.             return False
  721.        
  722.         return True
  723.    
  724.     def tearDown(self):
  725.         self.selenium.stop()
  726.         self.log.info("Turn off the selenium")
  727.  
  728. def CreateNewInstructors(prop,host,username,password):
  729.     f_success = open('/home/locngo/Documents/ktraks/instructors_success.txt','w')
  730.     f_errors = open('/home/locngo/Documents/ktraks/instructors_errors.txt','w')
  731.        
  732.     json_data=open('/home/locngo/Documents/ktraks/instructor.json')
  733.     body = json.loads(json_data.read())
  734.     json_data.close()
  735.        
  736.     insts = body["items"]
  737.     da = DAgent(host,username,password)
  738.        
  739.     for key in insts.keys():
  740.         inst = insts[key]
  741.         da.log.info("Ready to add new instructor: " + key + " - " + str(inst))
  742.         instructor = Instructor(inst["type"],inst["lastname"],inst["firstname"],inst["minitial"],
  743.                                 inst["birthdate"],inst["active"],inst["psuid"],inst["tcode"],
  744.                                 inst["employer"],inst["position"],inst["acode"],inst["home"]["street1"],inst["home"]["street2"],
  745.                                 inst["home"]["city"],inst["home"]["state"],inst["home"]["country"],inst["home"]["zipcode"],
  746.                                 inst["office"]["street1"],inst["office"]["street2"],inst["office"]["city"],
  747.                                 inst["office"]["state"],inst["office"]["country"],inst["office"]["zipcode"],
  748.                                 inst["home"]["phone_area"],inst["home"]["phone_number"],inst["home"]["fax_area"],inst["home"]["fax_number"],inst["office"]["phone_area"],inst["office"]["phone_number"],inst["office"]["fax_area"],inst["office"]["fax_number"],
  749.                                 inst["home"]["email"],inst["office"]["email"],inst["bio"],inst["dist_qual"],
  750.                                 inst["degree"],inst["www_home"],inst["miscinfo"])
  751.            
  752.         createInstructor = da.createInstructor(instructor)
  753.         if(createInstructor):
  754.             f_success.write("Successfully created instructor " + key+"\n")
  755.             f_success.flush()
  756.             da.log.info("Successfully created instructor " + key)
  757.         else:
  758.             f_errors.write("Couldn't create instructor " + key+"\n")
  759.             f_errors.flush()
  760.             da.log.info("Couldn't create instructor " + key)
  761.     f_success.close()
  762.     f_errors.close()
  763.     if da.success == True:
  764.         da.destiny_web_agent.tearDown()
  765.     da.log.info("End of adding instructors")
  766.  
  767. def CreateNewStudentGroups(prop,host,username,password):
  768.     f_success = open('/home/locngo/Documents/ktraks/groups_success.txt','w')
  769.     f_errors = open('/home/locngo/Documents/ktraks/groups_errors.txt','w')
  770.  
  771.     json_data=open('/home/locngo/Documents/ktraks/group.json')
  772.     body = json.loads(json_data.read())
  773.     json_data.close()
  774.        
  775.     grs = body["items"]
  776.     da = DAgent(host,username,password)
  777.        
  778.     for key in grs.keys():
  779.         gr = grs[key]
  780.         da.log.info("Ready to add new group: " + key + " - " + str(gr))
  781.         sg = StudentGroup(gr["name"],gr["vendor_id"],gr["fed_tax_id"],gr["acode"],
  782.                           gr["addr1"],gr["addr2"],gr["city"],gr["state"],gr["zip"],
  783.                           gr["agency_phone_area"],gr["agency_phone_num"],gr["agency_phone_extn"],
  784.                           gr["agency_fax_area"],gr["agency_fax_num"],
  785.                           gr["person_phone_area"],gr["person_phone_num"],
  786.                           gr["person_fax_area"],gr["person_fax_num"],
  787.                           gr["person_email"],
  788.                           gr["person_name"],gr["www_home"],"",gr["reg_phrase"],gr["notes"])
  789.            
  790.         createGroup = da.createGroup(sg)
  791.         if(createGroup):
  792.             f_success.write("Successfully created student group " + key+"\n")
  793.             f_success.flush()
  794.             da.log.info("Successfully created student group " + key)
  795.         else:
  796.             f_errors.write("Couldn't create student group " + key+"\n")
  797.             f_errors.flush()
  798.             da.log.info("Couldn't create student group " + key)
  799.     f_success.close()
  800.     f_errors.close()
  801.     if da.success == True:
  802.         da.destiny_web_agent.tearDown()
  803.     da.log.info("End of adding groups")
  804.  
  805. def CreateNewBuildings(prop,host,username,password):
  806.     f_success = open('/home/locngo/Documents/ktraks/buildings_success.txt','w')
  807.     f_errors = open('/home/locngo/Documents/ktraks/buildings_errors.txt','w')
  808.    
  809.     json_data=open('/home/locngo/Documents/ktraks/building.json')
  810.     body = json.loads(json_data.read())
  811.     json_data.close()
  812.        
  813.     blds = body["items"]
  814.     da = DAgent(host,username,password)        
  815.    
  816.     for key in blds.keys():
  817.         bld = blds[key]
  818.         da.log.info("Ready to add new building: " + key + " - " + str(bld))
  819.         sg = Building(bld["lcode"],bld["name"],bld["addr"],bld["city"],bld["state"],bld["zip"],bld["campus"])
  820.            
  821.         createBuilding = da.createBuilding(sg)
  822.         if(createBuilding):
  823.             f_success.write("Successfully created building " + key+"\n")
  824.             f_success.flush()
  825.             da.log.info("Successfully created building " + key)
  826.         else:
  827.             f_errors.write("Couldn't create builing " + key+"\n")
  828.             f_errors.flush()
  829.             da.log.info("Couldn't create building " + key)
  830.     f_success.close()
  831.     f_errors.close()
  832.     if da.success == True:
  833.         da.destiny_web_agent.tearDown()
  834.     da.log.info("End of adding buildings")
  835.  
  836. if __name__ == '__main__':
  837.     prop = Property()
  838.     host = prop.getProperty('destinyAgent.web_host')
  839.     username = prop.getProperty('destinyAgent.web_login')
  840.     password = prop.getProperty('destinyAgent.web_password')
  841. #    CreateNewInstructors(prop,host,username,password)
  842. #    CreateNewStudentGroups(prop,host,username,password)
  843.     CreateNewBuildings(prop,host,username,password)
  844.     exit(0)
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top