Ejemplo n.º 1
0
    def send_confirmation_message(self):
        """Sends an email confirmation message to the user."""
        username = self.request.POST.get('username', '').strip()
        redirect_url = route_url('reset_password', self.request)
        log = logging.getLogger('nuorisovaalitadmin')

        if not username:
            self.request.session.flash(u'Anna käyttäjätunnus.')
        else:
            user = self.session.query(User).filter(User.username == username).first()
            if user is None:
                self.request.session.flash(u'Annettua käyttäjätunnusta ei löydy.')
            else:
                # Create a password reset request that is valid for 24 hours
                reset = PasswordReset(user.id, datetime.now() + timedelta(hours=24))
                self.session.add(reset)
                message = self.create_message(user, reset)
                from_address = self.request.registry.settings['nuorisovaalitadmin.from_address'].strip()
                # TODO add sendmail to project to include it here
                send_mail(from_address, [user.email], message)
                self.request.session.flash(u'Ohjeet salasanan vaihtamiseen on lähetetty sähköpostissa.')
                redirect_url = self.request.application_url
                log.info('Sending password reset instructions to {0}.'.format(user.email))

        return HTTPFound(location=redirect_url)
    def test_send_mail__create_delivery_on_demand(self):
        from nuorisovaalitadmin import sendmail

        sendmail._delivery = None
        self.failUnless(sendmail._delivery is None)
        # Call the method to force the delivery to be instansiated.
        sendmail.send_mail()
        self.failIf(sendmail._delivery is None)
    def test_send_mail__call_delegates_with_params(self):
        from nuorisovaalitadmin import sendmail

        self.failUnless(sendmail._delivery is None)
        sendmail._delivery = sendmail._setup_delivery()
        self.failIf(sendmail._delivery is None)

        # Assert that calls to function delegate get passed to the delivery object.
        sendmail._delivery.send = mock.Mock()
        sendmail.send_mail(u'foo', u'bar', foo=1, bar=2)
        sendmail._delivery.send.assert_called_once_with(u'foo', u'bar', foo=1, bar=2)