| """ |
| 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", |
| } |
|
|
| |
| 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" |
|
|
| |
| body = re.sub(r"<[^>]*>", tag_placeholder, body) |
|
|
| |
| 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 nice_html_button |
|
|
|
|
| def make_mailto_form( |
| body: str = None, |
| subject: str = "This email was generated by Postbot! tiny.cc/postbot-demo", |
| 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 |
|
|