def uploadHWPages(bundle_name, skip_list, student_id, question, server=None, password=None): """Upload the hw pages to the server. hwpages uploaded to given student_id and question. Skips pages-image with orders in the skip-list (ie the page number within the bundle.pdf) Bundle must already be created. We will upload the files and then send a 'please trigger an update' message to the server. """ if server and ":" in server: s, p = server.split(":") msgr = ScanMessenger(s, port=p) else: msgr = ScanMessenger(server) msgr.start() # get the password if not specified if password is None: try: pwd = getpass.getpass("Please enter the 'scanner' password:"******"ERROR", error) else: pwd = password # get started try: msgr.requestAndSaveToken("scanner", pwd) except PlomExistingLoginException: print( "You appear to be already logged in!\n\n" " * Perhaps a previous session crashed?\n" " * Do you have another scanner-script running,\n" " e.g., on another computer?\n\n" 'In order to force-logout the existing authorisation run "plom-hwscan clear"' ) exit(10) file_list = [] # files are sitting in "bundles/submittedHWByQ/<bundle_name>" os.chdir(os.path.join("bundles", "submittedHWByQ", bundle_name)) # Look for pages in pageImages for ext in PlomImageExts: file_list.extend( sorted(glob(os.path.join("pageImages", "*.{}".format(ext))))) HWUP = sendHWFiles(msgr, file_list, skip_list, student_id, question, bundle_name) updates = msgr.triggerUpdateAfterHWUpload() # go back to original dir os.chdir("..") os.chdir("..") os.chdir("..") # close down messenger msgr.closeUser() msgr.stop() return [HWUP, updates]
def checkStatus(server=None, password=None): if server and ":" in server: s, p = server.split(":") scanMessenger = ScanMessenger(s, port=p) else: scanMessenger = ScanMessenger(server) scanMessenger.start() # get the password if not specified if password is None: try: pwd = getpass.getpass("Please enter the 'scanner' password:"******"ERROR", error) exit(1) else: pwd = password # get started try: scanMessenger.requestAndSaveToken("scanner", pwd) except PlomExistingLoginException as e: print( "You appear to be already logged in!\n\n" " * Perhaps a previous session crashed?\n" " * Do you have another scanner-script running,\n" " e.g., on another computer?\n\n" 'In order to force-logout the existing authorisation run "plom-scan clear"' ) exit(10) spec = scanMessenger.get_spec() ST = (scanMessenger.getScannedTests() ) # returns pairs of [page,version] - only display pages UT = scanMessenger.getUnusedTests() IT = scanMessenger.getIncompleteTests() scanMessenger.closeUser() scanMessenger.stop() print("Test papers unused: [{}]".format(format_int_list_with_runs(UT))) print("Scanned tests in the system:") for t in ST: scannedTPages = [] scannedHWPages = [] for x in ST[t]: if x[0][0] == "t": # is a test page = "t.p" p = int(x[0].split(".")[1]) scannedTPages.append(p) elif x[0][0] == "h": # is a hw page = "h.q.o" q = int(x[0].split(".")[1]) if q not in scannedHWPages: scannedHWPages.append(q) print("\t{}: testPages [{}] hwPages [{}]".format( t, format_int_list_with_runs(scannedTPages), format_int_list_with_runs(scannedHWPages), )) print("Incomplete scans - listed with their missing pages: ") for t in IT: missingPagesT = [] missingPagesH = [] for x in IT[t]: # each entry is [page, version, scanned?] if x[0][0] == "t": # is a test page p = int(x[0].split(".")[1]) if x[2] is False: missingPagesT.append(p) elif x[0][0] == "h": # is a w page q = int(x[0].split(".")[1]) if x[2] is False: missingPagesH.append(q) print("\t{}: t[{}] h[{}]".format( t, format_int_list_with_runs(missingPagesT), format_int_list_with_runs(missingPagesH), ))