aboutsummaryrefslogtreecommitdiffstats
path: root/python/report_ops
diff options
context:
space:
mode:
Diffstat (limited to 'python/report_ops')
-rw-r--r--python/report_ops/scotia.py77
1 files changed, 77 insertions, 0 deletions
diff --git a/python/report_ops/scotia.py b/python/report_ops/scotia.py
new file mode 100644
index 00000000..82a52075
--- /dev/null
+++ b/python/report_ops/scotia.py
@@ -0,0 +1,77 @@
+import os
+import time
+from selenium import webdriver
+from selenium.webdriver.firefox.options import Options
+from selenium.webdriver.support.ui import WebDriverWait
+from report_ops.logger import get_logger
+
+from serenitas.utils.env import DAILY_DIR
+
+logger = get_logger(__name__)
+
+
+def wait(driver):
+ WebDriverWait(driver, 10).until(
+ lambda driver: driver.execute_script("return document.readyState") == "complete"
+ )
+
+
+def download_report(account_username, password, report_dir):
+ driver = create_driver(report_dir)
+ login(driver, account_username, password)
+ navigate_to_inbox(driver)
+ attachment_element = get_attachment_element(driver)
+ fname = attachment_element.text.split()[0]
+ if not os.path.exists(os.path.join(report_dir, fname)):
+ attachment_element.click()
+ else:
+ logger.info(f"{fname} already exists in {report_dir}")
+ driver.quit()
+
+
+def login(driver, account_username, password):
+ driver.get("https://web1.mail.scotiabank.com/webmail/do/Home")
+ wait(driver)
+ username_element = driver.find_element_by_id("username")
+ username_element.send_keys(account_username)
+ password_element = driver.find_element_by_id("passwordid")
+ password_element.send_keys(password)
+ login_button = driver.find_element_by_id("loginbutton")
+ login_button.click()
+ wait(driver)
+
+
+def navigate_to_inbox(driver):
+ time.sleep(1)
+ login_button = driver.find_element_by_id("leftNavFolderLink")
+ login_button.click()
+ time.sleep(1)
+ login_button = driver.find_element_by_id("leftNavInboxFolderLink")
+ login_button.click()
+ time.sleep(1)
+ elements = driver.find_elements_by_class_name("zfolder-msg-clickable")[0]
+ elements.click()
+ time.sleep(1)
+
+
+def get_attachment_element(driver):
+ return driver.find_elements_by_class_name("zmessage-attachment-link")[0]
+
+
+def create_driver(download_dir):
+ options = Options()
+ options.add_argument("--headless")
+ fp = webdriver.FirefoxProfile()
+ fp.set_preference("browser.download.dir", str(download_dir))
+ fp.set_preference("browser.download.folderList", 2)
+ fp.set_preference(
+ "browser.helperApps.neverAsk.saveToDisk", "application/octet-stream"
+ )
+ return webdriver.Firefox(firefox_profile=fp, options=options)
+
+
+def download_scotia_report():
+ scotia_login = {"selene-ops@lmcg.com": "oeujG*UF!53o"}
+ for username, password in scotia_login.items():
+ REPORT_DIR = DAILY_DIR / "Selene" / "Scotia_reports"
+ download_report(username, password, REPORT_DIR)