def get_student_profile_sub_unsub_link(handler, student, unused_course): email = student.email is_unsubscribed = unsubscribe.has_unsubscribed(email) # I18N: Control allowing user to subscribe/unsubscribe from email invitation sub_unsub_title = handler.gettext('Subscribe/Unsubscribe') sub_unsub_message = safe_dom.NodeList() if is_unsubscribed: resubscribe_url = unsubscribe.get_resubscribe_url(handler, email) sub_unsub_message.append( safe_dom.Text( # I18N: Message - user has unsubscribed from email invitations. handler.gettext( 'You are currently unsubscribed from course-related emails.' ))) sub_unsub_message.append( safe_dom.A(resubscribe_url).add_text( # I18N: Control allowing user to re-subscribe to email invitations. handler.gettext('Click here to re-subscribe.'))) else: unsubscribe_url = unsubscribe.get_unsubscribe_url(handler, email) sub_unsub_message.append( safe_dom.Text( # I18N: Text indicating user has opted in to email invitations. handler.gettext( 'You are currently receiving course-related emails. '))) sub_unsub_message.append( safe_dom.A(unsubscribe_url).add_text( # I18N: Control allowing user to unsubscribe from email invitations. handler.gettext('Click here to unsubscribe.'))) return (sub_unsub_title, sub_unsub_message)
def test_unsubscribe_and_resubscribe(self): self.assertSubscribed(self.email, self.namespace) unsubscribe_url = unsubscribe.get_unsubscribe_url(self.handler, self.email) response = self.get(unsubscribe_url) # Confirm the user has unsubscribed self.assertUnsubscribed(self.email, self.namespace) # Confirm the page content of the response root = self.parse_html_string(response.body).find('.//*[@id="unsubscribe-message"]') confirm_elt = root.find("./p[1]") self.assertTrue("has been unsubscribed" in confirm_elt.text) email_elt = root.find(".//div[1]") self.assertEquals(self.email, email_elt.text.strip()) resubscribe_url = root.find(".//div[2]/button").attrib["data-resubscribe-url"] response = self.get(resubscribe_url) # Confirm the user has now resubscribed self.assertSubscribed(self.email, self.namespace) # Confirm the page content of the response root = self.parse_html_string(response.body).find('.//*[@id="resubscribe-message"]') confirm_elt = root.find("./p[1]") self.assertTrue("has been subscribed" in confirm_elt.text) email_elt = root.find(".//div[1]") self.assertEquals(self.email, email_elt.text.strip())
def get_student_profile_sub_unsub_link(handler, student, unused_course): email = student.email is_unsubscribed = unsubscribe.has_unsubscribed(email) # I18N: Control allowing user to subscribe/unsubscribe from email invitation sub_unsub_title = handler.gettext('Subscribe/Unsubscribe') sub_unsub_message = safe_dom.NodeList() if is_unsubscribed: resubscribe_url = unsubscribe.get_resubscribe_url(handler, email) sub_unsub_message.append(safe_dom.Text( # I18N: Message - user has unsubscribed from email invitations. handler.gettext( 'You are currently unsubscribed from course-related emails.'))) sub_unsub_message.append(safe_dom.A(resubscribe_url).add_text( # I18N: Control allowing user to re-subscribe to email invitations. handler.gettext('Click here to re-subscribe.'))) else: unsubscribe_url = unsubscribe.get_unsubscribe_url(handler, email) sub_unsub_message.append(safe_dom.Text( # I18N: Text indicating user has opted in to email invitations. handler.gettext( 'You are currently receiving course-related emails. '))) sub_unsub_message.append(safe_dom.A(unsubscribe_url).add_text( # I18N: Control allowing user to unsubscribe from email invitations. handler.gettext('Click here to unsubscribe.'))) return ( sub_unsub_title, sub_unsub_message)
def test_get_unsubscribe_url(self): handler = actions.MockHandler(app_context=actions.MockAppContext(slug="new_course")) url = unsubscribe.get_unsubscribe_url(handler, "*****@*****.**") parsed_url = urlparse.urlparse(url) self.assertEquals("http", parsed_url.scheme) self.assertEquals("mycourse.appspot.com", parsed_url.netloc) self.assertEquals("/new_course/modules/unsubscribe", parsed_url.path) query_dict = urlparse.parse_qs(parsed_url.query) self.assertEquals(["*****@*****.**"], query_dict["email"]) self.assertRegexpMatches(query_dict["s"][0], r"[0-9a-f]{32}")
def test_get_unsubscribe_url(self): handler = actions.MockHandler(app_context=actions.MockAppContext( slug='new_course')) url = unsubscribe.get_unsubscribe_url(handler, '*****@*****.**') parsed_url = urlparse.urlparse(url) self.assertEquals('http', parsed_url.scheme) self.assertEquals('mycourse.appspot.com', parsed_url.netloc) self.assertEquals('/new_course/modules/unsubscribe', parsed_url.path) query_dict = urlparse.parse_qs(parsed_url.query) self.assertEquals(['*****@*****.**'], query_dict['email']) self.assertRegexpMatches(query_dict['s'][0], r'[0-9a-f]{32}')
def test_get_unsubscribe_url(self): handler = actions.MockHandler( app_context=actions.MockAppContext(slug='new_course')) url = unsubscribe.get_unsubscribe_url(handler, '*****@*****.**') parsed_url = urlparse.urlparse(url) self.assertEquals('http', parsed_url.scheme) self.assertEquals('mycourse.appspot.com', parsed_url.netloc) self.assertEquals('/new_course/modules/unsubscribe', parsed_url.path) query_dict = urlparse.parse_qs(parsed_url.query) self.assertEquals(['*****@*****.**'], query_dict['email']) self.assertRegexpMatches(query_dict['s'][0], r'[0-9a-f]{32}')
def __init__(self, handler, recipient_email, sender_name): self.recipient_email = recipient_email env = handler.app_context.get_environ() email_env = env['course'].get(INVITATION_EMAIL_KEY) self.sender_email = email_env[SENDER_EMAIL_KEY] self.subject_template = email_env[SUBJECT_TEMPLATE_KEY] self.body_template = email_env[BODY_TEMPLATE_KEY] self.email_vars = { 'sender_name': sender_name, 'unsubscribe_url': unsubscribe.get_unsubscribe_url( handler, recipient_email) }
def test_unsubscribe_and_resubscribe(self): self.assertSubscribed(self.email, self.namespace) unsubscribe_url = unsubscribe.get_unsubscribe_url( self.handler, self.email) response = self.get(unsubscribe_url) # Confirm the user has unsubscribed self.assertUnsubscribed(self.email, self.namespace) # Confirm the page content of the response root = self.parse_html_string( response.body).find('.//*[@id="unsubscribe-message"]') confirm_elt = root.find('./p[1]') self.assertTrue('has been unsubscribed' in confirm_elt.text) email_elt = root.find('.//div[1]') self.assertEquals(self.email, email_elt.text.strip()) resubscribe_url = root.find( './/div[2]/button').attrib['data-resubscribe-url'] response = self.get(resubscribe_url) # Confirm the user has now resubscribed self.assertSubscribed(self.email, self.namespace) # Confirm the page content of the response root = self.parse_html_string( response.body).find('.//*[@id="resubscribe-message"]') confirm_elt = root.find('./p[1]') self.assertTrue('has been subscribed' in confirm_elt.text) email_elt = root.find('.//div[1]') self.assertEquals(self.email, email_elt.text.strip())