コード例 #1
0
def prepare_new_conflict_resolution_email_to_affected_user(issue):
    created_by = issue.created_by
    conversation = Conversation.objects.get_for_target(issue)
    voting = issue.latest_voting()
    user = issue.affected_user

    reply_to_name = created_by.display_name

    local_part = make_local_part(conversation, user)
    reply_to = formataddr(
        (reply_to_name, '{}@{}'.format(local_part,
                                       settings.SPARKPOST_RELAY_DOMAIN)))
    from_email = formataddr(
        (created_by.display_name, settings.DEFAULT_FROM_EMAIL))

    this_issue_url = issue_url(issue)

    return prepare_email(
        template='new_conflict_resolution_affected_user',
        from_email=from_email,
        user=user,
        tz=issue.group.timezone,
        reply_to=[reply_to],
        context={
            'created_by': created_by,
            'topic': issue.topic_rendered(),
            'conversation_url': this_issue_url,
            'issue_url': this_issue_url,
            'expires_at': voting.expires_at,
            'group': issue.group,
        },
        stats_category='new_conflict_resolution',
    )
コード例 #2
0
ファイル: emails.py プロジェクト: teemukaaria/karrot-backend
def prepare_group_conversation_message_notification(user, message):
    conversation = message.conversation
    group = conversation.target

    from_text = message.author.display_name
    reply_to_name = group.name
    conversation_name = group.name

    local_part = make_local_part(conversation, user, message)
    reply_to = formataddr(
        (reply_to_name, '{}@{}'.format(local_part,
                                       settings.SPARKPOST_RELAY_DOMAIN)))
    from_email = formataddr((from_text, settings.DEFAULT_FROM_EMAIL))

    unsubscribe_url = conversation_unsubscribe_url(user,
                                                   group=group,
                                                   conversation=conversation)

    return prepare_email(
        template='conversation_message_notification',
        from_email=from_email,
        user=user,
        tz=group.timezone,
        reply_to=[reply_to],
        unsubscribe_url=unsubscribe_url,
        context={
            'messages': [message],
            'conversation_name': conversation_name,
            'conversation_url': group_wall_url(group),
            'mute_url': unsubscribe_url,
        },
        stats_category='group_conversation_message',
    )
コード例 #3
0
ファイル: emails.py プロジェクト: inktrap/karrot-backend
def prepare_thread_message_notification(user, messages):
    first_message = messages[0]
    conversation = first_message.conversation
    group = conversation.find_group()
    thread = first_message.thread

    thread_text_beginning = Truncator(thread.content).chars(num=60)

    from_text = author_names(messages)
    reply_to_name = thread.author.display_name
    conversation_name = thread_text_beginning

    local_part = make_local_part(conversation, user, thread)
    reply_to = formataddr((reply_to_name, '{}@{}'.format(local_part, settings.SPARKPOST_RELAY_DOMAIN)))
    from_email = formataddr((from_text, settings.DEFAULT_FROM_EMAIL))

    unsubscribe_url = thread_unsubscribe_url(user, group, thread)

    return prepare_email(
        template='thread_message_notification',
        from_email=from_email,
        user=user,
        tz=group.timezone,
        reply_to=[reply_to],
        unsubscribe_url=unsubscribe_url,
        context={
            'messages': messages,
            'conversation_name': conversation_name,
            'thread_author': thread.author,
            'thread_message_content': thread.content_rendered(truncate_words=40),
            'thread_url': thread_url(thread),
            'mute_url': unsubscribe_url,
        },
        stats_category='thread_message',
    )
コード例 #4
0
ファイル: emails.py プロジェクト: teemukaaria/karrot-backend
def prepare_private_user_conversation_message_notification(user, messages):
    first_message = messages[0]
    conversation = first_message.conversation
    author = first_message.author
    reply_to_name = author.display_name

    local_part = make_local_part(conversation, user)
    reply_to = formataddr(
        (reply_to_name, '{}@{}'.format(local_part,
                                       settings.SPARKPOST_RELAY_DOMAIN)))
    from_email = formataddr((author.display_name, settings.DEFAULT_FROM_EMAIL))

    unsubscribe_url = conversation_unsubscribe_url(author,
                                                   conversation=conversation)

    return prepare_email(
        template='conversation_message_notification',
        from_email=from_email,
        user=user,
        # TODO: which timezone? maybe the user needs a timezone?
        reply_to=[reply_to],
        unsubscribe_url=unsubscribe_url,
        context={
            'messages': messages,
            'conversation_name': author.display_name,
            'conversation_url': user_detail_url(author),
            'mute_url': unsubscribe_url,
        },
        stats_category='private_conversation_message',
    )
コード例 #5
0
def prepare_new_offer_notification_email(user, offer):
    conversation = Conversation.objects.get_for_target(offer)

    reply_to_name = offer.user.display_name

    local_part = make_local_part(conversation, user)
    reply_to = formataddr(
        (reply_to_name, '{}@{}'.format(local_part,
                                       settings.EMAIL_REPLY_DOMAIN)))
    from_email = formataddr(
        (offer.user.display_name, settings.DEFAULT_FROM_EMAIL))

    unsubscribe_url = new_offer_unsubscribe_url(user, offer)

    return prepare_email(
        template='new_offer',
        from_email=from_email,
        user=user,
        tz=offer.group.timezone,
        reply_to=[reply_to],
        unsubscribe_url=unsubscribe_url,
        context={
            'user_name': offer.user.display_name,
            'offer_photo': offer_image_url(offer),
            'offer_name': offer.name,
            'offer_description': offer.description,
            'group': offer.group,
            'offer_url': offer_url(offer),
            'mute_url': unsubscribe_url,
            'new_offer_unsubscribe_url': unsubscribe_url,
        },
        stats_category='new_offer',
    )
コード例 #6
0
def prepare_new_application_notification_email(user, application):
    applicant = application.user
    conversation = Conversation.objects.get_for_target(application)

    reply_to_name = applicant.display_name

    local_part = make_local_part(conversation, user)
    reply_to = formataddr(
        (reply_to_name, '{}@{}'.format(local_part,
                                       settings.EMAIL_REPLY_DOMAIN)))
    from_email = formataddr(
        (applicant.display_name, settings.DEFAULT_FROM_EMAIL))

    unsubscribe_url = new_application_unsubscribe_url(user, application)

    return prepare_email(
        template='new_application',
        from_email=from_email,
        user=user,
        tz=application.group.timezone,
        reply_to=[reply_to],
        unsubscribe_url=unsubscribe_url,
        context={
            'applicant': applicant,
            'group': application.group,
            'questions': application.questions_rendered(),
            'answers': application.answers_rendered(),
            'conversation_url': application_url(application),
            'mute_url': unsubscribe_url,
            'new_application_unsubscribe_url': unsubscribe_url,
            'applications_url': applications_url(application.group),
            'group_edit_url': group_edit_url(application.group),
        },
        stats_category='new_application',
    )
コード例 #7
0
def prepare_message_notification(
    user,
    messages,
    *,
    conversation_name,
    conversation_url,
    stats_category,
    group=None,
    reply_to_name=None,
):
    first_message = messages[0]
    conversation = first_message.conversation
    author = first_message.author

    if group:
        tz = group.timezone
    elif user.current_group:
        tz = user.current_group.timezone
    else:
        # default, I guess most groups are not so far from this timezone...
        tz = pytz.timezone('Europe/Berlin')

    if reply_to_name is None:
        reply_to_name = author.display_name

    with translation.override(language_for_user(user)):
        from_text = author_names(messages)

        # If the conversation supports threads, replies should go into a thread, not the main conversation
        thread = first_message if conversation.target and conversation.target.conversation_supports_threads else None

        local_part = make_local_part(conversation, user, thread)
        reply_to = formataddr(
            (reply_to_name, '{}@{}'.format(local_part,
                                           settings.EMAIL_REPLY_DOMAIN)))
        from_email = formataddr((from_text, settings.DEFAULT_FROM_EMAIL))

        unsubscribe_url = conversation_unsubscribe_url(
            user, group=group, conversation=conversation)

        return prepare_email(
            template='conversation_message_notification',
            from_email=from_email,
            user=user,
            tz=tz,
            reply_to=[reply_to],
            unsubscribe_url=unsubscribe_url,
            context={
                'messages': messages,
                'conversation_name': conversation_name,
                'conversation_url': conversation_url,
                'mute_url': unsubscribe_url,
            },
            stats_category=stats_category,
        )
コード例 #8
0
ファイル: emails.py プロジェクト: teemukaaria/karrot-backend
def prepare_application_message_notification(user, messages):
    first_message = messages[0]
    conversation = first_message.conversation
    application = conversation.target

    language = user.language

    if not translation.check_for_language(language):
        language = 'en'

    with translation.override(language):
        reply_to_name = application.user.display_name
        conversation_name = _(
            'New message in application of %(user_name)s to %(group_name)s'
        ) % {
            'user_name': application.user.display_name,
            'group_name': application.group.name,
        }
        if application.user == user:
            conversation_name = _(
                'New message in your application to %(group_name)s') % {
                    'group_name': application.group.name
                }

        from_text = author_names(messages)

        local_part = make_local_part(conversation, user)
        reply_to = formataddr(
            (reply_to_name, '{}@{}'.format(local_part,
                                           settings.SPARKPOST_RELAY_DOMAIN)))
        from_email = formataddr((from_text, settings.DEFAULT_FROM_EMAIL))

        unsubscribe_url = conversation_unsubscribe_url(
            user, group=application.group, conversation=conversation)

        return prepare_email(
            template='conversation_message_notification',
            from_email=from_email,
            user=user,
            tz=application.group.timezone,
            reply_to=[reply_to],
            unsubscribe_url=unsubscribe_url,
            context={
                'messages': messages,
                'conversation_name': conversation_name,
                'conversation_url': application_url(application),
                'mute_url': unsubscribe_url,
            },
            stats_category='application_message',
        )
コード例 #9
0
ファイル: emails.py プロジェクト: cstefanj/karrot-backend
def prepare_issue_message_notification(user, messages):
    first_message = messages[0]
    conversation = first_message.conversation
    author = first_message.author
    reply_to_name = author.display_name
    issue = conversation.target

    language = user.language

    if not translation.check_for_language(language):
        language = 'en'

    with translation.override(language):
        conversation_name = _(
            'New message in conflict resolution in %(group_name)s') % {
                'group_name': issue.group.name,
            }

        from_text = author_names(messages)

        local_part = make_local_part(conversation, user)
        reply_to = formataddr(
            (reply_to_name, '{}@{}'.format(local_part,
                                           settings.SPARKPOST_RELAY_DOMAIN)))
        from_email = formataddr((from_text, settings.DEFAULT_FROM_EMAIL))

        unsubscribe_url = conversation_unsubscribe_url(
            user, group=issue.group, conversation=conversation)

        return prepare_email(template='conversation_message_notification',
                             from_email=from_email,
                             user=user,
                             tz=issue.group.timezone,
                             reply_to=[reply_to],
                             unsubscribe_url=unsubscribe_url,
                             context={
                                 'messages': messages,
                                 'conversation_name': conversation_name,
                                 'conversation_url': issue_url(issue),
                                 'mute_url': unsubscribe_url,
                             })
コード例 #10
0
ファイル: emails.py プロジェクト: teemukaaria/karrot-backend
def prepare_pickup_conversation_message_notification(user, messages):
    first_message = messages[0]
    conversation = first_message.conversation
    pickup = conversation.target
    group_tz = pickup.place.group.timezone

    language = user.language

    if not translation.check_for_language(language):
        language = 'en'

    with translation.override(language):
        with timezone.override(group_tz):
            weekday = format_date(
                pickup.date.start.astimezone(timezone.get_current_timezone()),
                'EEEE',
                locale=translation.to_locale(language),
            )
            time = format_time(
                pickup.date.start,
                format='short',
                locale=translation.to_locale(language),
                tzinfo=timezone.get_current_timezone(),
            )
            date = format_date(
                pickup.date.start.astimezone(timezone.get_current_timezone()),
                format='long',
                locale=translation.to_locale(language),
            )

            long_date = '{} {}, {}'.format(weekday, time, date)
            short_date = '{} {}'.format(weekday, time)

            reply_to_name = _('Pickup %(date)s') % {
                'date': short_date,
            }
            conversation_name = _('Pickup %(date)s') % {
                'date': long_date,
            }

            from_text = author_names(messages)

            local_part = make_local_part(conversation, user)
            reply_to = formataddr(
                (reply_to_name,
                 '{}@{}'.format(local_part, settings.SPARKPOST_RELAY_DOMAIN)))
            from_email = formataddr((from_text, settings.DEFAULT_FROM_EMAIL))

            unsubscribe_url = conversation_unsubscribe_url(
                user, group=pickup.place.group, conversation=conversation)

            return prepare_email(
                template='conversation_message_notification',
                from_email=from_email,
                user=user,
                tz=group_tz,
                reply_to=[reply_to],
                unsubscribe_url=unsubscribe_url,
                context={
                    'messages': messages,
                    'conversation_name': conversation_name,
                    'conversation_url': pickup_detail_url(pickup),
                    'mute_url': unsubscribe_url,
                },
                stats_category='pickup_conversation_message',
            )