1
0

refactor: make it cli friendly

This commit is contained in:
Rokas Puzonas 2021-12-17 20:39:12 +02:00
parent 4451519229
commit 86b21e5bf4

45
main.py
View File

@ -1,38 +1,41 @@
#!/usr/bin/env python #!/usr/bin/env python
from selenium import webdriver from selenium import webdriver
import click
from selenium.webdriver.firefox.options import Options from selenium.webdriver.firefox.options import Options
from selenium.webdriver.common.by import By from selenium.webdriver.common.by import By
from dotenv import load_dotenv from dotenv import load_dotenv
import time import time
import os
from os import path from os import path
load_dotenv()
LOGIN_URL = "https://moodle.ktu.edu/login/index.php" LOGIN_URL = "https://moodle.ktu.edu/login/index.php"
EDIT_ASSIGNMENT_URL = "https://moodle.ktu.edu/mod/assign/view.php?id=1499&action=editsubmission" EDIT_ASSIGNMENT_URL = "https://moodle.ktu.edu/mod/assign/view.php?id={id}&action=editsubmission"
moodle_filename = "IF-1-1_Rokas_Puzonas.pdf"
filename = "report.pdf"
def main():
load_dotenv()
def create_driver():
options = Options() options = Options()
# options.headless = True options.headless = True
driver = webdriver.Firefox(options=options) return webdriver.Firefox(options=options)
def login(driver, username, password):
driver.get(LOGIN_URL) driver.get(LOGIN_URL)
driver.find_element(By.ID, "username").send_keys(os.environ["KTU_USERNAME"])
driver.find_element(By.ID, "password").send_keys(os.environ["KTU_PASSWORD"]) driver.find_element(By.ID, "username").send_keys(username)
driver.find_element(By.ID, "password").send_keys(password)
driver.find_element(By.XPATH, "//input[@type='submit']").click() driver.find_element(By.XPATH, "//input[@type='submit']").click()
time.sleep(1) time.sleep(1)
driver.find_element(By.ID, "yesbutton").click() driver.find_element(By.ID, "yesbutton").click()
time.sleep(1) time.sleep(1)
driver.get(EDIT_ASSIGNMENT_URL) def upload_file_to_assignment(driver, assignment, filename, upload_filename):
if not upload_filename:
upload_filename = path.basename(filename)
driver.get(EDIT_ASSIGNMENT_URL.format(id=assignment))
time.sleep(1) time.sleep(1)
file = driver.find_element(By.XPATH, f"//*[text()='{moodle_filename}']") file = driver.find_element(By.XPATH, f"//*[text()='{upload_filename}']")
if file: if file:
file.click() file.click()
time.sleep(1) time.sleep(1)
@ -45,12 +48,24 @@ def main():
time.sleep(1) time.sleep(1)
driver.find_element(By.XPATH, "//input[@type='file']").send_keys(path.abspath(filename)) driver.find_element(By.XPATH, "//input[@type='file']").send_keys(path.abspath(filename))
driver.find_element(By.XPATH, "//input[@name='title']").send_keys(moodle_filename) driver.find_element(By.XPATH, "//input[@name='title']").send_keys(upload_filename)
driver.find_element(By.CLASS_NAME, "fp-upload-btn").click() driver.find_element(By.CLASS_NAME, "fp-upload-btn").click()
time.sleep(1) time.sleep(1)
driver.find_element(By.ID, "id_submitbutton").click() driver.find_element(By.ID, "id_submitbutton").click()
@click.command()
@click.argument("assignment")
@click.argument("filename", type=click.Path(exists=True, readable=True, dir_okay=False))
@click.argument("upload_filename", required=False, type=click.Path())
@click.option("--username", "-u", required=True, envvar="KTU_USERNAME")
@click.option("--password", "-p", required=True, envvar="KTU_PASSWORD")
def main(assignment, filename, upload_filename, username, password):
driver = create_driver()
login(driver, username, password)
upload_file_to_assignment(driver, assignment, filename, upload_filename)
driver.close() driver.close()
if __name__ == "__main__": if __name__ == "__main__":