def challenge_role(data): """Given an email address, this will send out a message to allow the user to then register an account.""" signature = Role.SIGNATURE.dumps(data['email']) url = '{}activate/{}'.format(settings.APP_UI_URL, signature) role = Role(email=data['email'], name=data['email']) params = dict(url=url, role=role, ui_url=settings.APP_UI_URL, app_title=settings.APP_TITLE) plain = render_template('email/registration_code.txt', **params) html = render_template('email/registration_code.html', **params) log.info("Challenge: %s", plain) email_role(role, gettext('Registration'), html=html, plain=plain)
def generate_role_digest(role): """Generate notification digest emails for the given user.""" # TODO: get and use the role's locale preference. since = datetime.utcnow() - timedelta(hours=25) q = Notification.by_role(role, since=since) total_count = q.count() if total_count == 0: return notifications = [render_notification(role, n) for n in q.limit(30)] notifications = [n for n in notifications if n is not None] params = dict(notifications=notifications, role=role, total_count=total_count, manage_url=ui_url('notifications'), ui_url=settings.APP_UI_URL, app_title=settings.APP_TITLE) plain = render_template('email/notifications.txt', **params) html = render_template('email/notifications.html', **params) log.info("Notification: %s", plain) subject = '%s notifications' % total_count email_role(role, subject, html=html, plain=plain)
def generate_role_digest(role): """Generate notification digest emails for the given user.""" # TODO: get and use the role's locale preference. since = datetime.utcnow() - timedelta(hours=25) q = Notification.by_channels(get_role_channels(role), since=since, exclude_actor_id=role.id) total_count = q.count() if total_count == 0: return notifications = [render_notification(role, n) for n in q.limit(30)] notifications = [n for n in notifications if n is not None] params = dict(notifications=notifications, role=role, total_count=total_count, manage_url=ui_url('notifications'), ui_url=settings.APP_UI_URL, app_title=settings.APP_TITLE) plain = render_template('email/notifications.txt', **params) html = render_template('email/notifications.html', **params) log.info("Notification: %s", plain) subject = '%s notifications' % total_count email_role(role, subject, html=html, plain=plain)
def generate_role_digest(role): """Generate notification digest emails for the given user.""" # TODO: get and use the role's locale preference. since = datetime.utcnow() - timedelta(hours=26) result = get_notifications(role, since=since) hits = result.get('hits', {}) total_count = hits.get('total', {}).get('value') log.info("Daily digest: %r (%s notifications)", role, total_count) if total_count == 0: return notifications = [render_notification(role, n) for n in hits.get('hits')] notifications = [n for n in notifications if n is not None] params = dict(notifications=notifications, role=role, total_count=total_count, manage_url=ui_url('notifications'), ui_url=settings.APP_UI_URL, app_title=settings.APP_TITLE) plain = render_template('email/notifications.txt', **params) html = render_template('email/notifications.html', **params) log.info("Notification: %s", plain) subject = '%s notifications' % total_count email_role(role, subject, html=html, plain=plain)