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)