Beispiel #1
0
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}")
Beispiel #5
0
 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}')
Beispiel #7
0
    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)
        }
Beispiel #8
0
    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())