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