Exemplo n.º 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'])
Exemplo n.º 2
0
    def action_subscribe(self, action):
        data, errors = self.extractData()

        subscriber = subscribe.get_subscriber(data['email'])
        if errors:
            return

        if subscriber.get('phone_number') != data['phone_number']:
            subscriber['phone_number'] = data['phone_number']
            if not self.send_text_message(subscriber):
                api.portal.show_message('Error sending code', request=self.request, type='error')
            else:
                api.portal.show_message('Phone number changed, code re-sent',
                                        request=self.request, type='info')

        if not data.get('phone_number_code'):
            ActionErrorOccurred(
                action,
                WidgetActionExecutionError('phone_number_code', Invalid('No code specified')))

        if not errors:
            try:
                alsoProvides(self.request, IDisableCSRFProtection)
                subscribe.confirm_phone_number(data['email'], data['phone_number_code'])
                self.confirmed = True
                api.portal.show_message(
                    'Phone number successfully confirmed', request=self.request, type='info')
            except subscribe.InvalidEmailException:
                api.portal.show_message('Invalid Email', request=self.request, type='error')
            except subscribe.InvalidCodeException:
                api.portal.show_message('Invalid Code', request=self.request, type='error')
Exemplo n.º 3
0
    def action_resend(self, action):
        data, errors = self.extractData()

        subscriber = subscribe.get_subscriber(data['email'])
        if errors:
            return

        if subscriber.get('phone_number') != data['phone_number']:
            subscriber['phone_number'] = data['phone_number']

        if not self.send_text_message(subscriber):
            api.portal.show_message('Error sending code', request=self.request, type='error')
        else:
            api.portal.show_message('Code sent', request=self.request, type='info')
Exemplo n.º 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)
Exemplo n.º 5
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', '')
                        })
                    ))
Exemplo n.º 6
0
 def test_adds_code(self):
     subscribe.register('*****@*****.**', {'foo': 'bar'})
     item = subscribe.get_subscriber('*****@*****.**')
     self.assertTrue('code' in item)