""" 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