def process_submission(config, id): # Downloads the submission with the specified ID and creates the PDF of # their medical form. Note that in order for version numbers to work # properly, submissions should be processed in oldest-to-newest order. # config.userlines is used to track medical forms and verisons, # config.submissions is used to track submission IDs. details = api_query("submission/" + str(id), {"oauth_token": config.oauth_token, "encryption_password": config.enckey}) values = dict() values_escaped = dict() for v in config.shortnames: values[v] = search_details_list(details, config.shortnames[v]) values_escaped[v] = texutil.latex_escape(values[v]) esp_id = int(values["esp_id_number"]) if esp_id not in config.userlines: config.userlines[esp_id] = dict() version = 1 else: version = config.userlines[esp_id]["next"] config.userlines[esp_id]["next"] = version + 1 userline = values["esp_id_number"] + " - " + \ values["full_legal_name"] + " - " + values["esp_username"] userline = userline.encode("ascii", "ignore") # TODO: this is sub-optimal because it removes weird characters filename = sanitize_filename(userline + " (v" + str(version) + ")") config.userlines[esp_id][str(version)] = filename values_escaped["version"] = str(version) values_escaped["formatted_date"] = \ time.strftime("%B %d, %Y", time.strptime(details["timestamp"], "%Y-%m-%d %H:%M:%S")) values_escaped["program_name"] = texutil.latex_escape(config.program) interpolated_template = config.template for ve in values_escaped: interpolated_template = \ interpolated_template.replace( "[[" + ve + "]]", values_escaped[ve]) report_tex = open(os.path.join(config.folder, filename + ".tex"), "w") report_tex.write(interpolated_template.encode("utf8", "ignore")) # TODO: this is sub-optimal because it removes weird characters report_tex.close() subprocess.call(["pdflatex", filename + ".tex", "-output-directory=" + config.folder], cwd=config.folder) config.submissions.append(id)
def blank(): config = initialize() program = raw_input("Program Name and Year: ") folder = raw_input("Folder to Place Blank.pdf: ") print "" interpolated_template = config.template replacements = dict() for field in REQUIRED_FIELDS: if field in ["full_legal_name", "esp_username"]: replacements[field] = "" else: replacements[field] = "\\\\" replacements["version"] = "X" replacements["formatted_date"] = "---" replacements["program_name"] = texutil.latex_escape(program) for k, v in replacements.iteritems(): interpolated_template = interpolated_template.replace("[[" + k + "]]", v) report_tex = open(os.path.join(folder, "Blank.tex"), "w") report_tex.write(interpolated_template.encode("utf8", "ignore")) # TODO: this is sub-optimal because it removes weird characters report_tex.close() subprocess.call(["pdflatex", os.path.join(folder, "Blank.tex"), "-output-directory=" + folder]) for ext in [".tex", ".aux", ".log"]: os.remove(os.path.join(folder, "Blank" + ext)) print "Done!"