示例#1
0
def send_register_user_mail(request, user, preset_password=False, password=None):
    current_site = get_current_site(request)
    context = {
        'site_name': current_site.name,
        'absolute_base_uri': request.build_absolute_uri('/'),
        'email': user.email,
        'password': password,
        'preset_password': preset_password,
        'user': user,
        'activation_key': user.customer.activation.activation_key
    }
    subject_template = select_template([
        '{}/email/register-user-subject.txt'.format(app_settings.APP_LABEL),
        'shop/email/register-user-subject.txt',
    ])
    # Email subject *must not* contain newlines
    subject = ''.join(subject_template.render(context).splitlines())
    body_text_template = select_template([
        '{}/email/register-user-body.txt'.format(app_settings.APP_LABEL),
        'shop/email/register-user-body.txt',
    ])
    body_html_template = select_template([
        '{}/email/register-user-body.html'.format(app_settings.APP_LABEL),
        'shop/email/register-user-body.html',
    ], using='post_office')
    message = body_text_template.render(context)
    html_message = body_html_template.render(context)
    mail.send(
        user.email,
        settings.WELTLADEN_EMAIL_ADDRESS,
        subject=subject,
        message=message,
        html_message=html_message
    )
    email_queued()
示例#2
0
 def _send_password(self, request, user, password):
     current_site = get_current_site(request)
     context = {
         'site_name': current_site.name,
         'absolute_base_uri': request.build_absolute_uri('/'),
         'email': user.email,
         'password': password,
         'user': user,
     }
     subject_template = select_template([
         '{}/email/register-user-subject.txt'.format(app_settings.APP_LABEL),
         'shop/email/register-user-subject.txt',
     ])
     # Email subject *must not* contain newlines
     subject = ''.join(subject_template.render(context).splitlines())
     body_text_template = select_template([
         '{}/email/register-user-body.txt'.format(app_settings.APP_LABEL),
         'shop/email/register-user-body.txt',
     ])
     body_html_template = select_template([
         '{}/email/register-user-body.html'.format(app_settings.APP_LABEL),
         'shop/email/register-user-body.html',
     ], using='post_office')
     message = body_text_template.render(context)
     html_message = body_html_template.render(context)
     from_email = getattr(settings, 'DEFAULT_FROM_EMAIL')
     user.email_user(subject, message, from_email=from_email, html_message=html_message)
     email_queued()
示例#3
0
 def _send_password(self, request, user, password):
     current_site = get_current_site(request)
     context = {
         'site_name': current_site.name,
         'absolute_base_uri': request.build_absolute_uri('/'),
         'email': user.email,
         'password': password,
         'user': user,
     }
     subject_template = select_template([
         '{}/email/register-user-subject.txt'.format(app_settings.APP_LABEL),
         'shop/email/register-user-subject.txt',
     ])
     # Email subject *must not* contain newlines
     subject = ''.join(subject_template.render(context).splitlines())
     body_text_template = select_template([
         '{}/email/register-user-body.txt'.format(app_settings.APP_LABEL),
         'shop/email/register-user-body.txt',
     ])
     body_html_template = select_template([
         '{}/email/register-user-body.html'.format(app_settings.APP_LABEL),
         'shop/email/register-user-body.html',
     ], using='post_office')
     message = body_text_template.render(context)
     html_message = body_html_template.render(context)
     from_email = getattr(settings, 'DEFAULT_FROM_EMAIL')
     user.email_user(subject, message, from_email=from_email, html_message=html_message)
     email_queued()
示例#4
0
def order_event_notification(sender, instance=None, target=None, **kwargs):
    from shop.serializers.order import OrderDetailSerializer

    if not isinstance(instance, BaseOrder):
        return
    for notification in Notification.objects.filter(transition_target=target):
        recipient = notification.get_recipient(instance)
        if recipient is None:
            continue

        # emulate a request object which behaves similar to that one, when the customer submitted its order
        emulated_request = EmulateHttpRequest(instance.customer, instance.stored_request)
        customer_serializer = app_settings.CUSTOMER_SERIALIZER(instance.customer)
        order_serializer = OrderDetailSerializer(instance, context={'request': emulated_request})
        language = instance.stored_request.get('language')
        context = {
            'customer': customer_serializer.data,
            'data': order_serializer.data,
            'ABSOLUTE_BASE_URI': emulated_request.build_absolute_uri().rstrip('/'),
            'render_language': language,
        }
        try:
            template = notification.mail_template.translated_templates.get(language=language)
        except EmailTemplate.DoesNotExist:
            template = notification.mail_template
        attachments = {}
        for notiatt in notification.notificationattachment_set.all():
            attachments[notiatt.attachment.original_filename] = notiatt.attachment.file.file
        mail.send(recipient, template=template, context=context,
                  attachments=attachments, render_on_delivery=True)
    email_queued()
示例#5
0
    def send_mail(self,
                  subject_template_name,
                  email_template_name,
                  context,
                  from_email,
                  to_email,
                  html_email_template_name=None):
        try:
            email_template = EmailTemplate.objects.get(
                name='password-reset-inform')
        except EmailTemplate.DoesNotExist:
            subject = render_to_string(subject_template_name, context)
            # Email subject *must not* contain newlines
            subject = ''.join(subject.splitlines())
            body = render_to_string(email_template_name, context)

            email_message = EmailMultiAlternatives(subject, body, from_email,
                                                   [to_email])
            if html_email_template_name:
                template = get_template(html_email_template_name,
                                        using='post_office')
                html = template.render(context)
                email_message.attach_alternative(html, 'text/html')
                template.attach_related(email_message)
            email_message.send()
        else:
            context['user'] = str(context['user'])
            context['uid'] = context['uid'].decode('utf-8')
            post_office_mail.send(to_email,
                                  template=email_template,
                                  context=context,
                                  render_on_delivery=True)
        email_queued()
示例#6
0
 def save(self, request=None):
     '''
     send mail and so
     '''
     email = self.cleaned_data['email']
     subject = self.cleaned_data['subject']
     body = self.cleaned_data['body']
     mail.send(settings.WELTLADEN_EMAIL_ADDRESS,
               email,
               subject=subject,
               message=body)
     email_queued()
示例#7
0
def transition_change_notification(order):
    """
    This function shall be called, after an Order object performed a transition change.

    """
    if not isinstance(order, BaseOrder):
        raise TypeError("Object order must inherit from class BaseOrder")
    emails_in_queue = False
    for notification in Notification.objects.filter(
            transition_target=order.status):
        recipient = notification.get_recipient(order)
        if recipient is None:
            continue

        # emulate a request object which behaves similar to that one, when the customer submitted its order
        emulated_request = EmulateHttpRequest(order.customer,
                                              order.stored_request)
        customer_serializer = app_settings.CUSTOMER_SERIALIZER(order.customer)
        render_context = {'request': emulated_request, 'render_label': 'email'}
        order_serializer = OrderDetailSerializer(order, context=render_context)
        language = order.stored_request.get('language')
        context = {
            'customer': customer_serializer.data,
            'order': order_serializer.data,
            'ABSOLUTE_BASE_URI':
            emulated_request.build_absolute_uri().rstrip('/'),
            'render_language': language,
        }
        try:
            latest_delivery = order.delivery_set.latest()
            context['latest_delivery'] = DeliverySerializer(
                latest_delivery, context=render_context).data
        except (AttributeError, models.ObjectDoesNotExist):
            pass
        try:
            template = notification.mail_template.translated_templates.get(
                language=language)
        except EmailTemplate.DoesNotExist:
            template = notification.mail_template
        attachments = {}
        for notiatt in notification.notificationattachment_set.all():
            attachments[notiatt.attachment.
                        original_filename] = notiatt.attachment.file.file
        mail.send(recipient,
                  template=template,
                  context=context,
                  attachments=attachments,
                  render_on_delivery=True)
        emails_in_queue = True
    if emails_in_queue:
        email_queued()
示例#8
0
    def post(self, request, *args, **kwargs):
        form_data = request.data.get('form_data', {})
        serializer = self.get_serializer(data=form_data)
        if not serializer.is_valid():
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
        serializer.save()

        # trigger async email queue
        email_queued()

        # Return the success message with OK HTTP status
        msg = _("Instructions on how to reset the password have been sent to '{email}'.")
        response_data = {'reset_form': {
            'success_message': msg.format(**serializer.data),
        }}
        return Response(response_data)
示例#9
0
    def post(self, request, *args, **kwargs):
        form_data = request.data.get('form_data', {})
        serializer = self.get_serializer(data=form_data)
        if not serializer.is_valid():
            return Response({self.form_name: serializer.errors}, status=status.HTTP_422_UNPROCESSABLE_ENTITY)

        # send email containing a reset link
        serializer.save()

        # trigger async email queue
        email_queued()

        # Return the success message with OK HTTP status
        msg = _("Instructions on how to reset the password have been sent to '{email}'.")
        response_data = {self.form_name: {
            'success_message': msg.format(**serializer.data),
        }}
        return Response(response_data)
示例#10
0
def send_activate_user_mail(request, email):
    context = {
        'absolute_base_uri': request.build_absolute_uri('/'),
        'email': email
    }

    subject = 'Weltladen Baden: Aktivierung Ihre Accounts erfolgreich'
    body_html_template = select_template([
        '{}/email/activate-user-body.html'.format(app_settings.APP_LABEL),
        'shop/email/activate-user-body.html',
    ], using='post_office')
    html_message = body_html_template.render(context)
    mail.send(
        email,
        settings.WELTLADEN_EMAIL_ADDRESS,
        subject=subject,
        html_message=html_message
    )
    email_queued()
示例#11
0
    def send_mail(self, subject_template_name, email_template_name,
                  context, from_email, to_email, html_email_template_name=None):
        try:
            email_template = EmailTemplate.objects.get(name='password-reset-inform')
        except EmailTemplate.DoesNotExist:
            subject = render_to_string(subject_template_name, context)
            # Email subject *must not* contain newlines
            subject = ''.join(subject.splitlines())
            body = render_to_string(email_template_name, context)

            email_message = EmailMultiAlternatives(subject, body, from_email, [to_email])
            if html_email_template_name:
                template = get_template(html_email_template_name, using='post_office')
                html = template.render(context)
                email_message.attach_alternative(html, 'text/html')
                template.attach_related(email_message)
            email_message.send()
        else:
            context['user'] = str(context['user'])
            context['uid'] = context['uid'].decode('utf-8')
            post_office_mail.send(to_email, template=email_template, context=context, render_on_delivery=True)
        email_queued()
示例#12
0
    def post(self, request, *args, **kwargs):
        form_data = request.data.get('form_data', {})
        serializer = self.get_serializer(data=form_data)
        if not serializer.is_valid():
            return Response({self.form_name: serializer.errors},
                            status=status.HTTP_422_UNPROCESSABLE_ENTITY)

        # send email containing a reset link
        serializer.save()

        # trigger async email queue
        email_queued()

        # Return the success message with OK HTTP status
        msg = _(
            "Instructions on how to reset the password have been sent to '{email}'."
        )
        response_data = {
            self.form_name: {
                'success_message': msg.format(**serializer.data),
            }
        }
        return Response(response_data)