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()
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))
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()
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()
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()
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()
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])
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])
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])
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)