Beispiel #1
0
    def _send_balance_invitations(self):
        db = request.environ['sqlalchemy.session']
        model = request.environ['sqlalchemy.model']
        output = StringIO()

        invitations = db.query(model.BalanceInvitation).filter_by(sent=False).all()

        for invitation in invitations:
            try:
                c.invitation_link = h.site_url() + h.url_for(controller='balances', action='invitation', id=invitation.token)
                c.invitation = invitation
                body = render_jinja('messages/balance_invitation.jinja')
                message = MIMEText(body.encode('utf-8'), 'plain', 'utf-8')
                message['Subject'] = _("Invitation to work on a balance from %s") % h.site_name()
                message['To'] = invitation.to_address
                message['From'] = config['from_address']
                
                ms = EmailSender(to_addresses = message['To'])
                ms.send_mime(message)

                invitation.sent = True
                db.commit()
                
                output.write(_("Sending balance invitation e-mail to %s\n") % message['To'])
            except:
                output.write(_("Can't send balance invitation e-mail: %s\n") % format_exc())
        return output.getvalue()
Beispiel #2
0
    def _send_invitations(self):
        model = request.environ["sqlalchemy.model"]
        db = request.environ["sqlalchemy.session"]
        output = StringIO()

        invitations = db.query(model.Invitation).filter_by(sent=False).all()

        for invitation in invitations:
            try:
                c.invitation_link = h.site_url() + h.url_for(controller='signup', action='create', id=invitation.token)
                c.invitation = invitation
                body = render_jinja('messages/invitation_mail.jinja')
                message = MIMEText(body.encode('utf-8'), 'plain', 'utf-8')
                message['Subject'] = _("You have been invited to %s") % h.site_name()
                message['To'] = invitation.to_address
                message['From'] = config['from_address']

                ms = EmailSender(to_addresses = message['To'])
                ms.send_mime(message)

                invitation.sent = True
                db.commit()
                
                output.write(_("Sending invitation e-mail to %s\n") % message['To'])
            except:
                output.write(_("Can't send invitation e-mail: %s\n") % format_exc())
        return output.getvalue()
Beispiel #3
0
    def _send_password_resets(self):
        db = request.environ['sqlalchemy.session']
        model = request.environ['sqlalchemy.model']
        output = StringIO()

        resets = db.query(model.PasswordResetRequest).filter_by(sent_on=null()).all()

        for reset in resets:
            try:
                c.password_reset_link = h.site_url() + h.url_for(controller='password', action='reset', token=reset.token)
                c.password_reset_code = reset.token
                body = render_jinja('messages/password_reset.jinja')
                message = MIMEText(body.encode('utf-8'), 'plain', 'utf-8')
                message['Subject'] = _("Password reset instruction from %s") % h.site_name()
                message['To'] = reset.user.email
                message['From'] = config['from_address']
                
                ms = EmailSender(to_addresses = message['To'])
                ms.send_mime(message)

                reset.sent_on = datetime.utcnow()
                db.commit()

                output.write(_("Sending password reset e-mail to %s\n") % message['To'])
            except:
                output.write(_("Can't send password reset e-mail: %s\n") % format_exc())
        return output.getvalue()
Beispiel #4
0
    def _send_invitations(self):
        """
        Sends invitations to create an account.
        """

        model = self.get_sa_model()
        db = self.get_sa_session()
        output = StringIO()

        invitations = db.query(model.Invitation).filter_by(sent=False).all()

        ms = EmailSender()
        for invitation in invitations:
            try:
                c.invitation_link = h.site_url() + h.url_for(controller='signup', action='create', id=invitation.token)
                c.invitation = invitation
                body = render_jinja2('messages/invitation_mail.jinja')
                message = MIMEText(body.encode('utf-8'), 'plain', 'utf-8')
                message['Subject'] = _("You have been invited to %s") % h.site_name()
                message['To'] = invitation.to_address
                message['From'] = config['from_address']

                ms.send_mime(message['To'], message['From'], message)

                invitation.sent = True
                db.commit()
               
                if invitation.sender is not None:
                    output.write(_("Sending invitation e-mail to %s (%s invitation)\n") % (message['To'], invitation.sender.username))
                else:
                    output.write(_("Sending invitation e-mail to %s\n") % message['To'])
            except:
                output.write(_("Can't send invitation e-mail: %s\n") % format_exc())
        return output.getvalue()
Beispiel #5
0
    def _send_emails(self):
        """
        Sends emails.
        """

        dbFacade = self.dbFacade()
        output = StringIO()

        emails = dbFacade.db.query(dbFacade.model.Email).all()
        if emails is None:
            return

        ms = EmailSender()
        for email in emails:
            try:
                ms.send_raw(email.to_address, email.from_address, email.body)
                
                dbFacade.db.delete(email)
                dbFacade.db.commit()
                
                output.write(_("Sent e-mail to %(to_address)s\n") % { 'to_address': email.to_address })
            except:
                output.write(_("Can't send e-mail to %(to_address)s: %(exception)s\n") % { 'to_address': email.to_address, 'exception': format_exc() })
                try:
                    dbFacade.db.rollback()
                except:
                    pass

        return output.getvalue()
Beispiel #6
0
    def send_email(self):
        if not authorized(ValidAuthKitUser()):
            return { "failure" : Messages.invalidSession() }

        try:
            to_address = request.params['to_address']
            subject = request.params['subject']
            body = request.params['body']
        except:
            return { "failure" : Messages.invalidArguments() }

        if to_address == "" or subject == "" or body == "":
            return { "failure" : Messages.invalidArguments() }

        from email.MIMEText import MIMEText

        message = MIMEText(body.encode('utf-8'), 'plain', 'utf-8')
        message['Subject'] = subject
        message['From'] = config['from_address']
        message['To'] = to_address
        try:
            from fivecents.lib.mail import EmailSender
            ms = EmailSender(to_addresses = to_address)
            ms.send_mime(message)
        except Exception, e:
            return { "failure" : Messages.failedToSendEmail(exception=e) } 
Beispiel #7
0
    def _send_balance_invitations(self):
        db = request.environ['sqlalchemy.session']
        model = request.environ['sqlalchemy.model']

        invitations = db.query(model.BalanceInvitation).filter_by(sent=False).all()
        from email.MIMEText import MIMEText
        from fivecents.lib.mail import EmailSender

        for invitation in invitations:
            try:
                c.invitation_link = h.site_url() + h.url_for(controller='balances', action='invitation', id=invitation.token)
                c.invitation = invitation
                body = render_jinja('messages/balance_invitation.jinja')
                message = MIMEText(body.encode('utf-8'), 'plain', 'utf-8')
                message['Subject'] = _("Balance invitation from %s") % h.site_name()
                message['To'] = invitation.to_address
                message['From'] = config['from_address']
                
                log.info(_("Sending balance invitation e-mail to %s") % message['To'])
                ms = EmailSender(to_addresses = message['To'])
                ms.send_mime(message)

                invitation.sent = True
                db.commit()
            except:
                log.error("Can't send balance invitation e-mail", exc_info=1)
Beispiel #8
0
    def _send_password_resets(self):
        db = request.environ['sqlalchemy.session']
        model = request.environ['sqlalchemy.model']

        resets = db.query(model.PasswordResetRequest).filter_by(sent_on=null()).all()
        from email.MIMEText import MIMEText
        from fivecents.lib.mail import EmailSender

        for reset in resets:
            try:
                c.password_reset_link = h.site_url() + h.url_for(controller='password', action='reset', token=reset.token)
                c.password_reset_code = reset.token
                body = render_jinja('messages/password_reset.jinja')
                message = MIMEText(body.encode('utf-8'), 'plain', 'utf-8')
                message['Subject'] = _("Password reset instruction from %s") % h.site_name()
                message['To'] = reset.user.email
                message['From'] = config['from_address']
                
                log.info(_("Sending password reset e-mail to %s") % message['To'])
                ms = EmailSender(to_addresses = message['To'])
                ms.send_mime(message)

                reset.sent_on = datetime.utcnow()
                db.commit()
            except:
                log.error("Can't send password reset e-mail", exc_info=1)
Beispiel #9
0
    def send_feedback(self):
        from_address = request.params.get('from_address')
        subject = _("Feedback about %s ") % h.site_name()
        body = request.params.get('body')

        if not from_address or not subject or not body:
            return { "failure" : Messages.invalidArguments() }

        from email.MIMEText import MIMEText
        message = MIMEText(body.encode('utf-8'), 'plain', 'utf-8') 
        message['Subject'] = subject
        message['From'] = from_address
        message['To'] = config['email_to']
        try:
            from fivecents.lib.mail import EmailSender
            ms = EmailSender(to_addresses = message['To'])
            ms.send_mime(message)
        except Exception, e:
            return { "failure" : Messages.failedToSendEmail(exception=e) } 
Beispiel #10
0
    def send_invitation(self):
        model = request.environ["sqlalchemy.model"]
        db = request.environ["sqlalchemy.session"]

        if not authorized(ValidAuthKitUser()):
            return { "failure" : Messages.invalidSession() }

        try:
            to_address = request.params['to_address']
            subject = _("You have been invited to %s " % h.site_name())
            body = request.params['body']
        except:
            return { "failure" : Messages.invalidArguments() }

        if to_address == "" or subject == "" or body == "":
            return { "failure" : Messages.invalidArguments() }

        invitation = model.Invitation(
            sender_uid = h.authenticated_user().uid, 
            to_address = to_address,
        )

        db.save(invitation)
        db.commit()

        c.invitation_link = h.site_url() + h.url_for(controller='signup', action='invitation', id=invitation.token)

        from email.MIMEText import MIMEText
        body = body + render_jinja('messages/invitation_footer.jinja')
        message = MIMEText(body.encode('utf-8'), 'plain', 'utf-8') 
        message['Subject'] = subject
        message['From'] = config['from_address']
        message['To'] = to_address
        try:
            from fivecents.lib.mail import EmailSender
            ms = EmailSender(to_addresses = to_address)
            ms.send_mime(message)
        except Exception, e:
            return { "failure" : Messages.failedToSendEmail(exception=e) }