Example #1
0
    def send_summary_emails(cls, mm):
        """Send summary emails for all pending notifications with the given
        mail_mode `mm`.

        """
        qs = cls.objects.filter(sent__isnull=True)
        qs = qs.exclude(user__email='')
        qs = qs.filter(mail_mode=mm).order_by('user')
        if qs.count() == 0:
            return
        from lino.core.renderer import MailRenderer
        ar = rt.login(renderer=MailRenderer())
        context = ar.get_printable_context()
        sender = settings.SERVER_EMAIL
        template = rt.get_template('notify/summary.eml')
        users = dict()
        for obj in qs:
            lst = users.setdefault(obj.user, [])
            lst.append(obj)
        dd.logger.debug("Send out %s summaries for %d users.", mm, len(users))
        for user, messages in users.items():
            with translation.override(user.language):
                if len(messages) == 1:
                    subject = messages[0].subject
                else:
                    subject = _("{} notifications").format(len(messages))
                subject = settings.EMAIL_SUBJECT_PREFIX + subject
                context.update(user=user, messages=messages)
                body = template.render(**context)
                # dd.logger.debug("20170112 %s", body)
                rt.send_email(subject, sender, body, [user.email])
                for msg in messages:
                    msg.sent = timezone.now()
                    msg.save()
Example #2
0
    def __init__(self,
                 model=None,
                 watched_fields=None,
                 created_tpl=None,
                 updated_tpl=None,
                 deleted_tpl=None,
                 master_field=None):
        """

        """
        if model:
            self.model = model
        if watched_fields:
            self.watched_fields = watched_fields
        self.model = resolve_model(self.model, strict=True)
        self.watched_fields = fields_list(self.model, self.watched_fields)
        if master_field:
            self.master_field = master_field

        for k in ('created_tpl', 'updated_tpl', 'deleted_tpl'):
            v = locals().get(k)
            if v:
                setattr(self, k, v)
            v = getattr(self, k)
            if v:
                setattr(self, k, rt.get_template(v))
Example #3
0
    def unused_send_individual_email(self):
        """"""
        if not self.user.email:
            # debug level because we don't want to see this message
            # every 10 seconds:
            dd.logger.debug("User %s has no email address", self.user)
            return
        # dd.logger.info("20151116 %s %s", ar.bound_action, ar.actor)
        # ar = ar.spawn_request(renderer=dd.plugins.bootstrap3.renderer)
        # sar = BaseRequest(
        #     # user=self.user, renderer=dd.plugins.bootstrap3.renderer)
        #     user=self.user, renderer=settings.SITE.kernel.text_renderer)
        # tpl = dd.plugins.notify.email_subject_template
        # subject = tpl.format(obj=self)
        if self.owner is None:
            subject = str(self)
        else:
            subject = pgettext("notification",
                               "{} in {}").format(self.message_type,
                                                  self.owner)
        subject = settings.EMAIL_SUBJECT_PREFIX + subject
        # template = rt.get_template('notify/body.eml')
        # context = dict(obj=self, E=E, rt=rt, ar=sar)
        # body = template.render(**context)

        template = rt.get_template('notify/individual.eml')
        context = dict(obj=self, E=E, rt=rt)
        body = template.render(**context)

        sender = settings.SERVER_EMAIL
        rt.send_email(subject, sender, body, [self.user.email])
        self.sent = timezone.now()
        self.save()
Example #4
0
 def send_summary_emails(cls, mm):
     qs = cls.objects.filter(sent__isnull=True)
     qs = qs.exclude(user__email='')
     qs = qs.filter(mail_mode=mm).order_by('user')
     if qs.count() == 0:
         return
     from lino.core.renderer import MailRenderer
     ar = rt.login(renderer=MailRenderer())
     context = ar.get_printable_context()
     sender = settings.SERVER_EMAIL
     template = rt.get_template('notify/summary.eml')
     users = dict()
     for obj in qs:
         lst = users.setdefault(obj.user, [])
         lst.append(obj)
     dd.logger.debug(
         "Send out %s summaries for %d users.", mm, len(users))
     for user, messages in users.items():
         with translation.override(user.language):
             if len(messages) == 1:
                 subject = messages[0].subject
             else:
                 subject = _("{} notifications").format(len(messages))
             subject = settings.EMAIL_SUBJECT_PREFIX + subject
             context.update(user=user, messages=messages)
             body = template.render(**context)
             # dd.logger.debug("20170112 %s", body)
             rt.send_email(subject, sender, body, [user.email])
             for msg in messages:
                 msg.sent = timezone.now()
                 msg.save()
Example #5
0
def send_summary_email(user, messages):
    """"""
    if not user.email:
        # debug level because we don't want to see this message
        # every 10 seconds:
        dd.logger.debug("User %s has no email address", user)
        return
    # dd.logger.info("20151116 %s %s", ar.bound_action, ar.actor)
    # ar = ar.spawn_request(renderer=dd.plugins.bootstrap3.renderer)
    # sar = BaseRequest(
    #     # user=self.user, renderer=dd.plugins.bootstrap3.renderer)
    #     user=self.user, renderer=settings.SITE.kernel.text_renderer)
    # tpl = dd.plugins.notify.email_subject_template
    # subject = tpl.format(obj=self)
    subject = _("{} unseen notifications").format(len(messages))
    subject = settings.EMAIL_SUBJECT_PREFIX + subject

    template = rt.get_template('notify/summary.eml')
    context = dict(user=user, E=E, rt=rt, messages=messages)
    body = template.render(**context)

    sender = settings.SERVER_EMAIL
    rt.send_email(subject, sender, body, [user.email])
    for msg in messages:
        msg.sent = timezone.now()
        msg.save()
Example #6
0
    def send_individual_email(self):
        """"""
        if not self.user.email:
            # debug level because we don't want to see this message
            # every 10 seconds:
            dd.logger.debug("User %s has no email address", self.user)
            return
        # dd.logger.info("20151116 %s %s", ar.bound_action, ar.actor)
        # ar = ar.spawn_request(renderer=dd.plugins.bootstrap3.renderer)
        # sar = BaseRequest(
        #     # user=self.user, renderer=dd.plugins.bootstrap3.renderer)
        #     user=self.user, renderer=settings.SITE.kernel.text_renderer)
        # tpl = dd.plugins.notify.email_subject_template
        # subject = tpl.format(obj=self)
        if self.owner is None:
            subject = str(self)
        else:
            subject = pgettext("notification", "{} in {}").format(
                self.message_type, self.owner)
        subject = settings.EMAIL_SUBJECT_PREFIX + subject
        # template = rt.get_template('notify/body.eml')
        # context = dict(obj=self, E=E, rt=rt, ar=sar)
        # body = template.render(**context)

        template = rt.get_template('notify/individual.eml')
        context = dict(obj=self, E=E, rt=rt)
        body = template.render(**context)

        sender = settings.SERVER_EMAIL
        rt.send_email(subject, sender, body, [self.user.email])
        self.sent = timezone.now()
        self.save()
Example #7
0
    def send_welcome_email(self):
        """"""
        if not self.email:
            # debug level because we don't want to see this message
            # every 10 seconds:
            dd.logger.debug("User %s has no email address", self)
            return
        subject = settings.EMAIL_SUBJECT_PREFIX + str(_("Welcome"))

        template = rt.get_template('users/welcome_email.eml')
        context = dict(obj=self, E=E, rt=rt)
        body = template.render(**context)

        sender = settings.SERVER_EMAIL
        rt.send_email(subject, sender, body, [self.email])
Example #8
0
 def send_email(self, ar):
     if not self.user.email:
         dd.logger.info("User %s has no email address", self.user)
         return
     # dd.logger.info("20151116 %s %s", ar.bound_action, ar.actor)
     # ar = ar.spawn_request(renderer=dd.plugins.bootstrap3.renderer)
     sar = BaseRequest(
         # user=self.user, renderer=dd.plugins.bootstrap3.renderer)
         user=self.user,
         renderer=settings.SITE.kernel.text_renderer)
     tpl = dd.plugins.notifier.email_subject_template
     subject = tpl.format(obj=self)
     subject = settings.EMAIL_SUBJECT_PREFIX + subject
     template = rt.get_template('notifier/body.eml')
     context = dict(obj=self, E=E, rt=rt, ar=sar)
     body = template.render(**context)
     sender = ar.get_user().email or settings.SERVER_EMAIL
     rt.send_email(subject, sender, body, [self.user.email])
Example #9
0
 def send_email(self, ar):
     if not self.user.email:
         dd.logger.info("User %s has no email address", self.user)
         return
     # dd.logger.info("20151116 %s %s", ar.bound_action, ar.actor)
     # ar = ar.spawn_request(renderer=dd.plugins.bootstrap3.renderer)
     sar = BaseRequest(
         # user=self.user, renderer=dd.plugins.bootstrap3.renderer)
         user=self.user, renderer=settings.SITE.kernel.text_renderer)
     tpl = dd.plugins.notifier.email_subject_template
     subject = tpl.format(obj=self)
     subject = settings.EMAIL_SUBJECT_PREFIX + subject
     template = rt.get_template('notifier/body.eml')
     context = dict(obj=self, E=E, rt=rt, ar=sar)
     body = template.render(**context)
     sender = ar.get_user().email or settings.SERVER_EMAIL
     rt.send_email(
         subject, sender, body, [self.user.email])
Example #10
0
    def __init__(self, model=None, watched_fields=None,
                 created_tpl=None, updated_tpl=None, deleted_tpl=None,
                 master_field=None):
        """

        """
        if model:
            self.model = model
        if watched_fields:
            self.watched_fields = watched_fields
        self.model = resolve_model(self.model, strict=True)
        self.watched_fields = fields_list(self.model, self.watched_fields)
        if master_field:
            self.master_field = master_field

        for k in ('created_tpl', 'updated_tpl', 'deleted_tpl'):
            v = locals().get(k)
            if v:
                setattr(self, k, v)
            v = getattr(self, k)
            if v:
                setattr(self, k, rt.get_template(v))
Example #11
0
 def get_welcome_email_body(self, ar):
     template = rt.get_template('users/welcome_email.eml')
     context = self.get_printable_context(ar)
     # dict(obj=self, E=E, rt=rt)
     return template.render(**context)
Example #12
0
 def get_welcome_email_body(self, ar):
     template = rt.get_template('users/welcome_email.eml')
     context = self.get_printable_context(ar)
     # dict(obj=self, E=E, rt=rt)
     return template.render(**context)