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

47
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
LOGIN_URL = "https://moodle.ktu.edu/login/index.php"
EDIT_ASSIGNMENT_URL = "https://moodle.ktu.edu/mod/assign/view.php?id=1499&action=editsubmission"
moodle_filename = "IF-1-1_Rokas_Puzonas.pdf"
filename = "report.pdf"
def main():
load_dotenv() load_dotenv()
options = Options() LOGIN_URL = "https://moodle.ktu.edu/login/index.php"
# options.headless = True EDIT_ASSIGNMENT_URL = "https://moodle.ktu.edu/mod/assign/view.php?id={id}&action=editsubmission"
driver = webdriver.Firefox(options=options)
def create_driver():
options = Options()
options.headless = True
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__":