예제 #1
0
def email_opened(params):
    try:
        url = '%s/%s' % (EMAIL_OPEN_URL, params)
        app.logger.info(PYTRACKING_SECRET_KEY)
        full_url = url
        tracking_result = pytracking.get_open_tracking_result(
            full_url, base_open_tracking_url=EMAIL_OPEN_URL)

        campaign_id = tracking_result.metadata['campaign_id']
        ab_campaign_id = tracking_result.metadata['ab_campaign_id']
        template_id = tracking_result.metadata['template_id']
        segment_id = tracking_result.metadata['segment_id']

        hostname = socket.gethostname()

        IPAddress = socket.gethostbyname(hostname)

        campaign_stats_helper.\
            add_campaign_open_stats(segment_id,
                                    template_id,
                                    tracking_result.is_open_tracking,
                                    0,
                                    '',
                                    IPAddress,
                                    campaign_id=campaign_id,
                                    ab_campaign_id=ab_campaign_id)

        return "OK"
    except Exception as e:
        app.logger.warning(e)
        return e
예제 #2
0
def _test_open_tracking(tree):
    pixel_img = tree.xpath("//img")[-1]
    open_url_path = get_open_tracking_url_path(pixel_img.attrib["src"],
                                               **DEFAULT_SETTINGS)
    open_result = get_open_tracking_result(open_url_path, **DEFAULT_SETTINGS)

    assert open_result.metadata == EXPECTED_METADATA
예제 #3
0
def test_minimal_encrypted_get_open_tracking_url():
    url = get_open_tracking_url(
        base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL,
        metadata=DEFAULT_METADATA,
        encryption_bytestring_key=DEFAULT_ENCRYPTION_KEY,
    )
    path = get_open_tracking_url_path(
        url, base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL)

    tracking_result = get_open_tracking_result(
        path,
        request_data=DEFAULT_REQUEST_DATA,
        default_metadata=DEFAULT_DEFAULT_METADATA,
        webhook_url=DEFAULT_WEBHOOK_URL,
        encryption_bytestring_key=DEFAULT_ENCRYPTION_KEY,
    )

    expected_metadata = copy.copy(DEFAULT_DEFAULT_METADATA)
    expected_metadata.update(DEFAULT_METADATA)

    assert tracking_result.tracked_url is None
    assert tracking_result.webhook_url == DEFAULT_WEBHOOK_URL
    assert tracking_result.request_data == DEFAULT_REQUEST_DATA
    assert tracking_result.metadata == expected_metadata
    assert tracking_result.is_open_tracking
    assert not tracking_result.is_click_tracking
예제 #4
0
def _test_open_tracking(tree):
    pixel_img = tree.xpath("//img")[-1]
    open_url_path = get_open_tracking_url_path(
        pixel_img.attrib["src"], **DEFAULT_SETTINGS)
    open_result = get_open_tracking_result(
        open_url_path, **DEFAULT_SETTINGS)

    assert open_result.metadata == EXPECTED_METADATA
    def email_decoding(self, full_url):
        try:
            tracking_result = pytracking.get_open_tracking_result(
                full_url,
                base_open_tracking_url=EMAIL_OPEN_URL,
                encryption_bytestring_key=self.key)

            return tracking_result
        except Exception as e:
            logging.warning(
                '[EmailTracking] :: email_decoding() :: Got exception: ' % e)
            logging.warning(traceback.format_exc())
예제 #6
0
    def email_decoding(self, full_url):
        try:
            tracking_result = pytracking.get_open_tracking_result(
                full_url,
                base_open_tracking_url=EMAIL_OPEN_URL,
                encryption_bytestring_key=self.key)

            app.logger.info(tracking_result)

            return tracking_result
        except Exception as exp:
            app.logger.warning(exp)
            app.logger.warning(traceback.format_exc())
예제 #7
0
def test_in_config_open_tracking_url_to_json():
    url = get_open_tracking_url(
        base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL,
        metadata=DEFAULT_METADATA)
    path = get_open_tracking_url_path(
        url, base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL)

    tracking_result = get_open_tracking_result(
        path, webhook_url=DEFAULT_WEBHOOK_URL).to_json_dict()
    assert tracking_result.tracked_url is None
    assert tracking_result.webhook_url == DEFAULT_WEBHOOK_URL
    assert tracking_result.request_data is None
    assert tracking_result.metadata == DEFAULT_METADATA
    assert tracking_result.is_open_tracking
    assert not tracking_result.is_click_tracking
예제 #8
0
def test_in_config_open_tracking_full_url():
    url = get_open_tracking_url(
        base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL,
        metadata=DEFAULT_METADATA)

    tracking_result = get_open_tracking_result(
        url, webhook_url=DEFAULT_WEBHOOK_URL,
        base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL)

    assert tracking_result.tracked_url is None
    assert tracking_result.webhook_url == DEFAULT_WEBHOOK_URL
    assert tracking_result.request_data is None
    assert tracking_result.metadata == DEFAULT_METADATA
    assert tracking_result.is_open_tracking
    assert not tracking_result.is_click_tracking
예제 #9
0
def test_in_config_open_tracking_url_to_json():
    url = get_open_tracking_url(
        base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL,
        metadata=DEFAULT_METADATA)
    path = get_open_tracking_url_path(
        url, base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL)

    tracking_result = get_open_tracking_result(
        path, webhook_url=DEFAULT_WEBHOOK_URL).to_json_dict()
    assert tracking_result.tracked_url is None
    assert tracking_result.webhook_url == DEFAULT_WEBHOOK_URL
    assert tracking_result.request_data is None
    assert tracking_result.metadata == DEFAULT_METADATA
    assert tracking_result.is_open_tracking
    assert not tracking_result.is_click_tracking
예제 #10
0
def test_in_config_open_tracking_full_url():
    url = get_open_tracking_url(
        base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL,
        metadata=DEFAULT_METADATA)

    tracking_result = get_open_tracking_result(
        url,
        webhook_url=DEFAULT_WEBHOOK_URL,
        base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL)

    assert tracking_result.tracked_url is None
    assert tracking_result.webhook_url == DEFAULT_WEBHOOK_URL
    assert tracking_result.request_data is None
    assert tracking_result.metadata == DEFAULT_METADATA
    assert tracking_result.is_open_tracking
    assert not tracking_result.is_click_tracking
예제 #11
0
def test_send_webhook_open():
    url = get_open_tracking_url(base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL, metadata=DEFAULT_METADATA)
    path = get_open_tracking_url_path(url, base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL)

    tracking_result = get_open_tracking_result(path, webhook_url=DEFAULT_WEBHOOK_URL)

    payload = {
        "is_open_tracking": True,
        "is_click_tracking": False,
        "metadata": DEFAULT_METADATA,
        "request_data": None,
        "timestamp": tracking_result.timestamp,
    }

    with patch("pytracking.webhook.requests.post") as mocked_post:
        pytracking.webhook.send_webhook(tracking_result)

        mocked_post.assert_called_once_with(DEFAULT_WEBHOOK_URL, json=payload, timeout=DEFAULT_TIMEOUT_SECONDS)
예제 #12
0
def test_embedded_open_tracking_url():
    url = get_open_tracking_url(
        base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL,
        webhook_url=DEFAULT_WEBHOOK_URL,
        include_webhook_url=True,
        default_metadata=DEFAULT_DEFAULT_METADATA,
        include_default_metadata=True,
        metadata=DEFAULT_METADATA)
    path = get_open_tracking_url_path(
        url, base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL)

    tracking_result = get_open_tracking_result(
        path, request_data=DEFAULT_REQUEST_DATA,
        include_default_metadata=True,
        include_webhook_url=True)

    assert tracking_result.tracked_url is None
    assert tracking_result.webhook_url == DEFAULT_WEBHOOK_URL
    assert tracking_result.request_data == DEFAULT_REQUEST_DATA
    assert tracking_result.metadata == EXPECTED_METADATA
    assert tracking_result.is_open_tracking
    assert not tracking_result.is_click_tracking
예제 #13
0
def test_embedded_open_tracking_url():
    url = get_open_tracking_url(
        base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL,
        webhook_url=DEFAULT_WEBHOOK_URL,
        include_webhook_url=True,
        default_metadata=DEFAULT_DEFAULT_METADATA,
        include_default_metadata=True,
        metadata=DEFAULT_METADATA)
    path = get_open_tracking_url_path(
        url, base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL)

    tracking_result = get_open_tracking_result(
        path,
        request_data=DEFAULT_REQUEST_DATA,
        include_default_metadata=True,
        include_webhook_url=True)

    assert tracking_result.tracked_url is None
    assert tracking_result.webhook_url == DEFAULT_WEBHOOK_URL
    assert tracking_result.request_data == DEFAULT_REQUEST_DATA
    assert tracking_result.metadata == EXPECTED_METADATA
    assert tracking_result.is_open_tracking
    assert not tracking_result.is_click_tracking
예제 #14
0
def test_minimal_encrypted_get_open_tracking_url():
    url = get_open_tracking_url(
        base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL,
        metadata=DEFAULT_METADATA,
        encryption_bytestring_key=DEFAULT_ENCRYPTION_KEY)
    path = get_open_tracking_url_path(
        url, base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL)

    tracking_result = get_open_tracking_result(
        path,
        request_data=DEFAULT_REQUEST_DATA,
        default_metadata=DEFAULT_DEFAULT_METADATA,
        webhook_url=DEFAULT_WEBHOOK_URL,
        encryption_bytestring_key=DEFAULT_ENCRYPTION_KEY)

    expected_metadata = copy.copy(DEFAULT_DEFAULT_METADATA)
    expected_metadata.update(DEFAULT_METADATA)

    assert tracking_result.tracked_url is None
    assert tracking_result.webhook_url == DEFAULT_WEBHOOK_URL
    assert tracking_result.request_data == DEFAULT_REQUEST_DATA
    assert tracking_result.metadata == expected_metadata
    assert tracking_result.is_open_tracking
    assert not tracking_result.is_click_tracking
예제 #15
0
htmlBody = ""
for line in emailCont:
    htmlBody = htmlBody + "<p>" + line + "</p> "
htmlBody = htmlBody + webhook

root = etree.HTML(htmlBody)
htmlText = etree.tostring(root)
pytrackHtml = adapt_html(htmlText,
                         extra_metadata={"customer_id": 1},
                         click_tracking=True,
                         open_tracking=True)
emailBod = MIMEText(pytrackHtml, 'html')
open_tracking_url = pytracking.get_open_tracking_url(
    {"customer_id": 1}, configuration=configuration)
tracking_result = pytracking.get_open_tracking_result(
    open_tracking_url,
    base_open_tracking_url="http://mehltrej.pythonanywhere.com/")
msg.attach(emailBod)

#Send email

try:
    print("Attempting to connect")
    smtpObj = smtplib.SMTP(emailHost, emailPort)
    print("Successful connection")
    print("Attemping to connect to email")
    try:
        smtpObj.ehlo()
        smtpObj.starttls()
        smtpObj.login(uName, passWord)
        print("Successful connection")
예제 #16
0
msg['Subject'] = "grande"
body = "bla bla bla"
msg.attach(MIMEText(body, 'plain'))

server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
server.ehlo()
server.login('*****@*****.**', 'xxxxxx')
text = msg.as_string()
server.sendmail(fromaddr, toaddr, text)

print('DONE')

# Pytracking Implementation
open_tracking_url = pytracking.get_open_tracking_url(
    {"customer_id": 1},
    base_open_tracking_url="https://trackingdomain.com/path/",
    webhook_url="http://requestb.in/123",
    include_webhook_url=True)

print("open_tracking_url : ", open_tracking_url)

tracking_result = pytracking.get_open_tracking_result(
    open_tracking_url,
    base_open_tracking_url="https://trackingdomain.com/path/")
print("tracking_result : ", tracking_result)

from pytracking.webhook import send_webhook
send_webhook(tracking_result)