Source code for uw.local.teaching.bin.crowdmark_save_qr_codes

"""Manual QR codes download and import process.

Python procedure to download the QR codes PDF associated with a specified
Crowdmark callback response and save it to the appropriate examination.
"""

import argparse
import datetime
from sys import exit

from uw.sql.wrap import open_psycopg2_db_service_cursor
from ..db.cursor import Cursor

from ..db.crowdmark import crowdmark_process_pdf, crowdmark_save_raw_pdf

[docs]def main (): parser = argparse.ArgumentParser () group = parser.add_mutually_exclusive_group (required=True) group.add_argument ('--response-time', default=argparse.SUPPRESS, metavar='response_time') group.add_argument ('--exam', type=int, default=argparse.SUPPRESS, metavar='exam_id') args = parser.parse_args () cursor = open_psycopg2_db_service_cursor (cursor_class=Cursor) if 'exam' in args: crowdmark_process_pdf (cursor, args.exam) exit () response_time = datetime.datetime.strptime (args.response_time, '%Y%m%d%H%M%S%f') request_time, pdf_url = cursor.execute_required_tuple ("select request_time, pdf_url from crowdmark_qr_response where response_time = %(response_time)s", response_time=response_time) exam = cursor.execute_optional_tuple ("select ee.* from crowdmark_create_request join exam_exam ee using (exam_id) where request_time = %(request_time)s", request_time=request_time) if exam is None: exit ('No such examination found') crowdmark_save_raw_pdf (cursor, pdf_url, exam.exam_id)