Spaces:
Runtime error
Runtime error
""" | |
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 | |