UnderCover/writing.py

85 lines
2.6 KiB
Python

# Copyright Sage Vaillancourt 2021
from flask import (Blueprint, render_template, request, make_response)
from wtforms import Form, BooleanField, StringField, TextAreaField, validators
from latty import (CLData, generate)
writing_blueprint = Blueprint('writing', __name__,)
class CLForm(Form):
username = StringField('Username:',
[validators.Length(min=4, max=99)],
default="Sage Bernerner"
)
company = StringField('Company:',
[validators.Length(min=4, max=99)],
default="BananaCorp"
)
jobandpronoun = StringField('Job and Pronoun (a/an):',
[validators.Length(min=4, max=99)],
default="a banana stocker"
)
skilltypes = StringField('Skill Type:',
[validators.Length(min=4, max=99)],
default="practical"
)
myskills = StringField('My Skills:',
[validators.Length(min=4, max=99)],
default="stocking bananas"
)
closingtext = TextAreaField('Closing Text:',
[validators.Length(min=4, max=99)],
default="I look forward to hearing from you"
)
body_string = ("My name is \\username. I would like to work as "
"\\jobandpronoun with your company. I think my \\skilltypes knowledge "
"of \\myskills will contribute well to your team.\n\n"
"I am passionate about my work, and think we would work well together.\n\n"
"Thank you for your consideration.")
body = TextAreaField('Body:',
[validators.Length(min=4, max=9999)],
default=body_string
)
def get_unique():
import uuid
unique = str(uuid.uuid1().hex)
print("Unique ID: " + unique)
return unique
@writing_blueprint.route('/', methods=('GET', 'POST'))
def index():
import urllib.parse
form = CLForm(request.form)
if request.method == 'POST' and form.validate():
data = CLData(
username=form.username.data,
company=form.company.data,
jobandpronoun=form.jobandpronoun.data,
skilltypes=form.skilltypes.data,
myskills=form.myskills.data,
closingtext=form.closingtext.data,
body=form.body.data,
)
resp = generate(data, get_unique())
# Save entered data as cookies on user's machine
if not resp:
resp = make_response(render_template('writing.html',
form=form,
unique=get_unique(),
))
for pair in data.get_pairs():
resp.set_cookie(pair[0], urllib.parse.quote(pair[1]))
return resp
return render_template('writing.html',
form=form,
unique=get_unique(),
)