Пример #1
0
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)
Пример #2
0
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!"