Example #1
0
 def test_confirm(self):
     subscribe.register('*****@*****.**', {'foo': 'bar'})
     subscriber = subscribe.get_subscriber('*****@*****.**')
     self.request.form.update({
         'confirmed_email': u'*****@*****.**',
         'confirmed_code': subscriber['code']
     })
     form = SubscribeForm(self.portal, self.request)
     form()
     self.assertTrue(form.subscribed)
     mailhost = self.portal.MailHost
     self.assertEqual(len(mailhost.messages), 0)
     self.assertEquals(len([i for i in subscribe.all()]), 1)
     subscriber = subscribe.get_subscriber('*****@*****.**')
     self.assertTrue(subscriber['confirmed'])
Example #2
0
 def test_user_exists(self):
     subscribe.register('*****@*****.**', {'foo': 'bar'})
     responses.add(responses.POST, "https://www.google.com/recaptcha/api/siteverify",
                   body='{"success": true}',
                   content_type="application/json")
     self.request.form.update({
         'form.widgets.name': u'Foobar',
         'form.widgets.email': u'*****@*****.**',
         'g-recaptcha-response': u'foobar',
         'form.buttons.subscribe': 'Subscribe'
     })
     form = SubscribeForm(self.portal, self.request)
     form()
     mailhost = self.portal.MailHost
     self.assertEqual(len(mailhost.messages), 0)
     self.assertEquals(len(subscribe.SubscriptionStorage()._data), 1)
Example #3
0
 def test_get_phone_numbers(self):
     data = subscribe.register('*****@*****.**', {
         'foo': 'bar',
         'phone_number': '15555555555'
     })
     subscribe.confirm('*****@*****.**', data['code'])
     subscribe.confirm_phone_number('*****@*****.**', data['code'])
     self.assertEquals(len(subscribe.get_phone_numbers()), 1)
Example #4
0
 def handle_export(self, action):
     data, errors = self.extractData()
     if not errors:
         lines = data['csv_upload'].split('\n')
         columns = lines[0].split(',')
         categoryindex = columns.index('categories')
         emailindex = columns.index('email')
         for line in lines[1:]:
             cols = line.split(',')
             if len(cols) <= 1:
                 continue
             subscriber = {
                 'categories':
                 map(safe_unicode,
                     cols[categoryindex].strip('"').split(';')),
                 'email':
                 cols[emailindex]
             }
             match = subscribe.get_subscriber(subscriber['email'])
             if match is not None:
                 for cat in subscriber['categories']:
                     if cat not in match['categories']:
                         match['categories'].append(cat)
             else:
                 for index, col in enumerate(cols):
                     if (index == categoryindex):
                         continue
                     if col == '':
                         subscriber[columns[index]] = None
                     elif col == 'True' or col == 'False':
                         subscriber[columns[index]] = col == 'True'
                     else:
                         try:
                             subscriber[columns[index]] = float(col)
                         except ValueError:
                             subscriber[columns[index]] = col
                 subscribe.register(subscriber['email'], subscriber)
             allcategories = api.portal.get_registry_record(reg_key)
             for cat in subscriber['categories']:
                 if cat not in allcategories:
                     allcategories.append(cat)
             api.portal.set_registry_record(reg_key, allcategories)
Example #5
0
 def test_category_match(self):
     subscribe.register('*****@*****.**', {'categories': [u'A']})
     subscriber = subscribe.get('*****@*****.**')
     subscribe.confirm('*****@*****.**', subscriber['code'])
     responses.add(responses.POST,
                   "https://www.google.com/recaptcha/api/siteverify",
                   body='{"success": true}',
                   content_type="application/json")
     self.request.form.update({
         'form.widgets.subject': u'TEST',
         'form.widgets.send_to_categories': [u'A'],
         'form.widgets.body': 'Words words words',
         'form.widgets.body_plain': 'Words words words',
         'form.buttons.send2': 'Send'
     })
     form = SendEmailSubscribersForm(self.portal, self.request)
     form()
     mailhost = self.portal.MailHost
     self.assertEqual(len(mailhost.messages), 1)
     self.assertEquals(len(subscribe.SubscriptionStorage()._data), 1)
Example #6
0
    def action_subscribe(self, action):
        data, errors = self.extractData()

        if self.has_captcha and self.isAnon:
            if not verify_recaptcha(self.request):
                notify(
                    ActionErrorOccurred(
                        action,
                        WidgetActionExecutionError('captcha', Invalid('Invalid Recaptcha'))))
                return

        subsciber = subscribe.get_subscriber(data.get('email'))
        if subsciber:
            notify(
                ActionErrorOccurred(
                    action,
                    WidgetActionExecutionError('email', Invalid('User already subscribed'))))
            return

        if not errors:
            item = subscribe.register(data['email'], data)
            self.send_mail(data['email'], item)
            self.sent = True
            api.portal.show_message(
                'Verification email has been sent to your email', request=self.request, type='info')
            if self.has_texting and data.get('phone_number'):
                if not self.send_text_message(item):
                    api.portal.show_message('Error sending code', request=self.request,
                                            type='error')
                else:
                    api.portal.show_message('Code texted to your number to verify',
                                            request=self.request, type='info')
                self.request.response.redirect('%s/@@subscribe-phone?%s' % (
                    self.context.absolute_url(),
                    urlencode({
                        'form.widgets.email': item['email'],
                        'form.widgets.phone_number': item.get('phone_number', '')
                        })
                    ))
Example #7
0
 def test_categories(self):
     data = subscribe.register('*****@*****.**', {'categories': [u'A']})
     subscribe.confirm('*****@*****.**', data['code'])
     user = subscribe.get('*****@*****.**')
     self.assertEquals(user['categories'], [u'A'])
     self.assertFalse(user['categories'] == [])
Example #8
0
 def test_get_email_address(self):
     data = subscribe.register('*****@*****.**', {'foo': 'bar'})
     subscribe.confirm('*****@*****.**', data['code'])
     self.assertEquals(len(subscribe.get_email_addresses()), 1)
Example #9
0
 def test_adds_code(self):
     subscribe.register('*****@*****.**', {'foo': 'bar'})
     item = subscribe.get_subscriber('*****@*****.**')
     self.assertTrue('code' in item)
Example #10
0
 def test_add_subscriber(self):
     data = subscribe.register('*****@*****.**', {'foo': 'bar'})
     subscribe.confirm('*****@*****.**', data['code'])
     self.assertEquals(len([i for i in subscribe.all()]), 1)