UnderCover/latty.py

71 lines
1.9 KiB
Python
Raw Normal View History

# Copyright Sage Vaillancourt 2021
import os
import subprocess
2021-07-23 23:09:08 -04:00
from dataclasses import dataclass
from flask import send_from_directory
@dataclass
class CLData():
username: str
company: str
jobandpronoun: str
skilltypes: str
myskills: str
closingtext: str
body: str
2021-07-24 01:08:18 -04:00
def get_pairs(self):
return [
2021-07-24 01:08:18 -04:00
("username", self.username),
("company", self.company),
("jobandpronoun", self.jobandpronoun),
("skilltypes", self.skilltypes),
("myskills", self.myskills),
("closingtext", self.closingtext),
("body", self.body),
]
def get_unique():
import uuid
unique = str(uuid.uuid1().hex)
print("Unique ID: " + unique)
return unique
def generate(data: CLData):
import threading
unique = get_unique()
2021-07-23 23:09:08 -04:00
proj_dir = os.path.dirname(os.getcwd()) + '/undercover/'
output_dir = proj_dir + 'outputs/'
unique_file = output_dir + unique + ".tex"
2021-07-23 23:09:08 -04:00
f = open(unique_file, "w")
for pair in data.get_pairs():
2021-07-27 07:09:26 -04:00
f.write("\\def \\" + pair[0] + "{" + pair[1] + "}\n")
2021-07-23 23:09:08 -04:00
f.write(open(proj_dir + "/writing_templates/base.tex", "r").read())
f.close()
base_tex = output_dir + unique + ".tex"
com = "pdflatex -halt-on-error -jobname=outputs/" + unique + " " + base_tex
2021-07-23 23:09:08 -04:00
print("COM: '" + com + "'")
try:
subprocess.check_call(['bash', '-c', com])
2021-07-23 23:09:08 -04:00
root_dir = os.path.dirname(os.getcwd())
download = root_dir + '/undercover/outputs/'
2021-07-23 23:09:08 -04:00
threading.Timer(60 * 30, cleanup, [output_dir + unique]).start()
return send_from_directory(
download,
unique + ".pdf",
attachment_filename=data.username.replace(" ", "") + "_CoverLetter.pdf",
as_attachment=True
)
except subprocess.CalledProcessError:
return None
def cleanup(unique):
print(unique)
subprocess.run(['bash', '-c', "rm " + unique + ".*"])