Skip to content

Commit fdc3869

Browse files
committed
Typed namespace for args
1 parent 549a4ee commit fdc3869

File tree

1 file changed

+40
-35
lines changed

1 file changed

+40
-35
lines changed

uoy_assessment_uploader/__init__.py

Lines changed: 40 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
# todo: re-implement with saml auth and requests, as alternative to selenium
2121

2222

23-
__version__ = "0.2.0"
23+
__version__ = "0.2.1"
2424

2525
# timeout for selenium waits, in seconds
2626
TIMEOUT = 10
@@ -60,7 +60,7 @@ def get_parser() -> ArgumentParser:
6060
# selenium cookies
6161
parser.add_argument("--cookie-file", type=Path, default=DEFAULT_ARG_COOKIE_FILE)
6262
parser.add_argument(
63-
"--no-save-cookies", dest="do_save_cookies", action="store_false"
63+
"--no-save-cookies", dest="save_cookies", action="store_false"
6464
)
6565
parser.add_argument(
6666
"--delete-cookies",
@@ -81,6 +81,20 @@ def get_parser() -> ArgumentParser:
8181
return parser
8282

8383

84+
class Args:
85+
username: str
86+
password: str
87+
exam_number: str
88+
submit_url: str
89+
file: Path
90+
dry_run: bool
91+
cookie_file: Path
92+
save_cookies: bool
93+
delete_cookies: bool
94+
headless: bool
95+
chromium: bool
96+
97+
8498
def save_cookies(driver: WebDriver, fp: Path):
8599
cookies = driver.get_cookies()
86100
with open(fp, "w") as f:
@@ -123,7 +137,9 @@ def upload(driver: WebDriver, file_name: str, dry_run: bool):
123137
input_checkbox.submit()
124138

125139

126-
def ensure_details(current: str, prompt: Optional[str] = None, hide: bool = False) -> str:
140+
def ensure_details(
141+
current: str, prompt: Optional[str] = None, hide: bool = False
142+
) -> str:
127143
if current is not None:
128144
return current
129145

@@ -151,7 +167,7 @@ def do(
151167
# username/password login page
152168
if driver.current_url == URL_LOGIN:
153169
print("Logging in..")
154-
username = ensure_details(username, 'Enter username: ')
170+
username = ensure_details(username, "Enter username: ")
155171
password = ensure_details(password, hide=True)
156172
login(driver, username, password)
157173
wait.until(
@@ -160,7 +176,7 @@ def do(
160176
# exam number login page
161177
elif driver.current_url == URL_EXAM_NUMBER:
162178
print("Entering exam number..")
163-
exam_number = ensure_details(exam_number, 'Enter exam number: ')
179+
exam_number = ensure_details(exam_number, "Enter exam number: ")
164180
enter_exam_number(driver, exam_number)
165181
wait.until(ec.url_to_be(submit_url))
166182
# logged in, upload page
@@ -191,38 +207,27 @@ def resolve_submit_url(submit_url: str) -> str:
191207
def main():
192208
# load arguments
193209
parser = get_parser()
194-
args = parser.parse_args()
195-
196-
username: str = args.username
197-
password: str = args.password
198-
exam_number: str = args.exam_number
199-
submit_url: str = args.submit_url
200-
fp: Path = args.file
201-
dry_run: bool = args.dry_run
202-
cookie_path: Path = args.cookie_file
203-
do_save_cookies: bool = args.do_save_cookies
204-
delete_cookies: bool = args.delete_cookies
205-
headless: bool = args.headless
206-
chromium: bool = args.chromium
210+
args = Args()
211+
parser.parse_args(namespace=args)
207212

208213
# check zip to be uploaded exists
209-
if not fp.is_file():
210-
print(f"File doesn't exist '{fp}'.")
214+
if not args.file.is_file():
215+
print(f"File doesn't exist '{args.file}'.")
211216
sys.exit(1)
212-
print(f"Found file '{fp}'.")
213-
file_name = str(fp.resolve())
217+
print(f"Found file '{args.file}'.")
218+
file_name = str(args.file.resolve())
214219

215220
# verify arguments
216-
submit_url = resolve_submit_url(submit_url)
221+
submit_url = resolve_submit_url(args.submit_url)
217222

218223
# webdriver setup
219224
# options
220225
driver_options = webdriver.ChromeOptions()
221-
if headless:
226+
if args.headless:
222227
driver_options.add_argument("--headless")
223228

224229
# auto installer
225-
if chromium:
230+
if args.chromium:
226231
chrome_type = ChromeType.CHROMIUM
227232
else:
228233
chrome_type = ChromeType.GOOGLE
@@ -233,26 +238,26 @@ def main():
233238
driver.implicitly_wait(TIMEOUT)
234239

235240
# load cookies
236-
if delete_cookies:
237-
cookie_path.unlink(missing_ok=True)
238-
elif do_save_cookies:
239-
load_cookies(driver, cookie_path)
241+
if args.delete_cookies:
242+
args.cookie_file.unlink(missing_ok=True)
243+
elif args.save_cookies:
244+
load_cookies(driver, args.cookie_file)
240245

241246
# run
242247
do(
243248
driver=driver,
244249
submit_url=submit_url,
245-
username=username,
246-
password=password,
247-
exam_number=exam_number,
250+
username=args.username,
251+
password=args.password,
252+
exam_number=args.exam_number,
248253
file_name=file_name,
249-
dry_run=dry_run,
254+
dry_run=args.dry_run,
250255
)
251256

252257
# save cookies
253-
if do_save_cookies:
258+
if args.save_cookies:
254259
print("Saving cookies.")
255-
save_cookies(driver, cookie_path)
260+
save_cookies(driver, args.cookie_file)
256261

257262

258263
if __name__ == "__main__":

0 commit comments

Comments
 (0)