Advertisement
Guest User

Untitled

a guest
Apr 27th, 2016
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 36.01 KB | None | 0 0
  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)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement