Roblox22r's picture
Duplicate from postbot/autocomplete-emails
f590842
"""
utils.py - Utility functions for the project.
"""
import logging
import re
def postprocess(text: str):
"""
postprocess - remove common values in scraped dataset
Args:
text (str): the text to postprocess
"""
replacements = {
"ENA": "COMPANY",
"Enron": "COMPANY",
"Enron Corporation": "COMPANY",
"Sony Pictures Entertainment": "COMPANY",
"Columbia Pictures": "COMPANY",
"Sony": "COMPANY",
"Columbia": "COMPANY",
"Hillary": "Jane",
"Clinton": "Smith",
"Amy": "Jane",
"Sara": "Jane",
"Harambe": "Jane",
"Pascal": "PERSON",
}
# replace common values, also check lowercase
for k, v in replacements.items():
text = text.replace(k, v)
text = text.replace(k.lower(), v)
return text
def clear(text, verbose=False, **kwargs):
"""for use with buttons"""
if verbose:
logging.info(f"Clearing text: {text}")
return ""
def make_email_link(
subject: str = "Email subject - This was generated by Postbot",
link_text: str = "click to open in your email client",
body: str = None,
tag_placeholder: str = "PLACEHOLDER",
):
"""
email_link - generate an email link
Args:
subject (str, optional): the subject of the email. Defaults to "Email subject - This was generated by Postbot".
link_text (str, optional): the text of the link. Defaults to "click to open in your email client".
body (str, optional): the body of the email. Defaults to None.
tag_placeholder (str, optional): the placeholder for the tag. Defaults to "PLACEHOLDER".
Returns:
str: the email link, in the form of an html link
"""
if body is None:
body = "hmm - no body. replace me"
# strip brackets and other HTML-tag characters from body with regex
body = re.sub(r"<[^>]*>", tag_placeholder, body)
# replace all newline chars with a whitespace
body = body.replace("\n", " ")
nice_html_button = f"""<!DOCTYPE html>
<html>
<head>
<title>Generated Email</title>
<style>
body {{
font-family: sans-serif;
font-size: 1.2em;
}}
.button {{
background-color: #6CCEC6;
border: none;
color: white;
padding: 15px 32px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
margin: 4px 2px;
cursor: pointer;
value: "Send Email";
}}
</style>
<button class="button" onclick="window.location.href='mailto:?subject={subject}&body={body}'">{link_text} value="Open in Email client"</button>
</html>"""
# return f'<a href="mailto:%20?subject={subject}&body={body}">{link_text}</a>'
return nice_html_button
def make_mailto_form(
body: str = None,
subject: str = "This email was generated by Postbot with AI!",
cc_email: str = "",
):
"""Returns a mailto link with the given parameters"""
if body is None:
body = "hmm - no body. Replace me or try rerunning the model."
template = f"""<!DOCTYPE html>
<html>
<head>
<title>Generated Email</title>
<style>
body {{
font-family: sans-serif;
font-size: 1.2em;
}}
.button {{
background-color: #6CCEC6;
border: none;
color: white;
padding: 15px 32px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
margin: 4px 2px;
cursor: pointer;
value: "Send Email";
}}
</style>
</head>
<body>
<h1>Adjust and Open in your mail client:</h1>
<form action="mailto:" method="get" enctype="text/plain">
<div>
<label for="cc">CC Email:
<input type="text" name="cc" id="cc" value="{cc_email}"/>
</label>
</div>
<div>
<label for="subject">Subject:
<input type="text" name="subject" id="subject" value="{subject}"/>
</label>
</div>
<div>
<label>Email Body:</label>
<br />
<textarea name="body" id="body" rows="12" cols="35">{body}</textarea>
</div>
<div>
<input type="submit" name="submit" value="Open in Email App" class="button"/>
</div>
</form>
</body>
</html>"""
return template