File size: 4,624 Bytes
0601dad
 
 
cd45d79
dfd722b
b1deccc
cad1c1a
74f30e9
0601dad
 
 
 
 
 
 
 
48b9215
 
 
 
 
 
 
74f30e9
 
 
 
 
48b9215
0601dad
 
 
 
 
 
 
 
 
74f30e9
b97cc67
74f30e9
b97cc67
 
74f30e9
b1deccc
 
 
0c18028
 
 
dfd722b
b1deccc
 
 
 
 
 
 
dfd722b
 
b1deccc
 
dfd722b
b1deccc
 
 
 
dfd722b
 
 
 
6f102ed
 
 
bcaf9e5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a0d66c9
 
71fd45b
 
ef9c299
71fd45b
 
a0d66c9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
71fd45b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
"""
    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! 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