Exemplo n.º 1
0
def test_queue_mail_message_and_send_via_mandrill(settings):
    settings.EMAIL_BACKEND = "djrill.mail.backends.djrill.DjrillBackend"
    with mock.patch('django.core.mail.EmailMultiAlternatives') as mock_mail:
        mock_mail.return_value.mandrill_response = [{
            "email": "*****@*****.**",
            "status": "sent",
            "_id": "123",
            "reject_reason": None,
        }]
        email_address = get_env_variable('TEST_EMAIL_ADDRESS_2')
        enquiry = make_enquiry(
            email_address,
            "Welcome",
            'Can I join your club?',
        )
        template = _create_goodbye_mandrill_template()
        content_data = {
            email_address: {
                "name": "Fred",
                "title": "SpaceX",
                "question": enquiry.description
            }
        }
        queue_mail_template(enquiry, template.slug, content_data)
        m = _mail(enquiry)
        assert m.sent is None
        assert m.sent_response_code is None
        assert m.message.subject == 'Goodbye *|name|*'
        # test the send facility using djrill mail backend
        # temp_email_backend = settings.EMAIL_BACKEND
        send_mail()
        m = _mail(enquiry)
        assert m.sent is not None
        assert m.sent_response_code is not None
Exemplo n.º 2
0
 def form_valid(self, form):
     selection = form.cleaned_data['send_email']
     use_template = selection == 'template'
     with transaction.atomic():
         result = super().form_valid(form)
         if use_template:
             context = {
                 self.object.email: {
                     "SUBJECT": "Re: " + self.object.subject,
                     "BODY": self.object.description,
                     "DATE": self.object.created.strftime("%d-%b-%Y %H:%M:%S"),
                 },
             }
             queue_mail_template(
                 self.object,
                 'enquiry_acknowledgement',
                 context,
             )
         else:
             attachments = []
             if self.object.document:
                 attachments.append(self.object.document.file.name)
             queue_mail_message(
                 self.object,
                 [self.object.email],
                 self.object.subject,
                 self.object.description,
                 attachments=attachments,
             )
         transaction.on_commit(lambda: process_mail.delay())
         return result
Exemplo n.º 3
0
 def update_card_expiry(self, email):
     """Find the customer, get the expiry date from Stripe and update."""
     try:
         obj = self._get_customer(email)
         year, month = self._stripe_get_card_expiry(obj.customer_id)
         if year and month:
             # last day of the month
             obj.expiry_date = date(year, month, 1) + relativedelta(
                 months=+1, day=1, days=-1
             )
             # is the card expiring soon?
             is_expiring = obj.is_expiring
             if obj.refresh == is_expiring:
                 pass
             else:
                 with transaction.atomic():
                     obj.refresh = is_expiring
                     # save the details
                     obj.save()
                     # email the customer
                     queue_mail_template(
                         obj,
                         self.model.MAIL_TEMPLATE_CARD_EXPIRY,
                         {obj.email: dict(name=obj.name)}
                     )
     except Customer.DoesNotExist:
         pass
Exemplo n.º 4
0
def queue_enquiry_goodbye(enq=None):
    if not enq:
        enq = create_enquiry()
    context = {enq.email: {'name': 'Fred Bloggs', 'title': 'Okehampton'}}
    queue_mail_template(
        enq,
        'goodbye',
        context,
    )
Exemplo n.º 5
0
def queue_enquiry_hello(enq=None):
    if not enq:
        enq = create_enquiry()
    content_data = {enq.email: {'name': 'Fred Bloggs', 'title': 'Okehampton'}}
    queue_mail_template(
        enq,
        'hello',
        content_data,
    )
Exemplo n.º 6
0
Arquivo: views.py Projeto: pkimber/pay
def pay_later_view(request, pk):
    payment = Payment.objects.get(pk=pk)
    _check_perm(request, payment)
    payment.check_can_pay
    payment.set_pay_later()
    queue_mail_template(
        payment,
        payment.mail_template_name,
        payment.mail_template_context(),
    )
    _send_notification_email(payment, request)
    process_mail.delay()
    return HttpResponseRedirect(payment.url)
Exemplo n.º 7
0
def queue_enquiry_acknowledgement(enq=None):
    if not enq:
        enq = create_enquiry()
    context = {
        enq.email: {
            "SUBJECT": "Re: " + enq.subject,
            "BODY": enq.description,
            "DATE": enq.created.strftime("%d-%b-%Y %H:%M:%S"),
        },
    }
    queue_mail_template(
        enq,
        'enquiry_acknowledgement',
        context,
    )
Exemplo n.º 8
0
def queue_enquiry_ack_with_copy(enq=None):
    copy_email = get_env_variable('TEST_EMAIL_ADDRESS_2')
    if not enq:
        enq = create_enquiry()
    context = {
        enq.email: {
            "SUBJECT": "Re: " + enq.subject,
            "BODY": enq.description,
            "DATE": enq.created.strftime("%d-%b-%Y %H:%M:%S")
        },
        copy_email: {
            "SUBJECT": "Copy: " + enq.subject,
            "BODY": "<h1>Copy of Message sent to '" + 
            enq.email + "':</h1>" + enq.description,
            "DATE": enq.created.strftime("%d-%b-%Y %H:%M:%S")
        }
    }
    queue_mail_template(
        enq,
        'enquiry_acknowledgement',
        context,
    )
Exemplo n.º 9
0
def test_queue_mail_message():
    email_address = get_env_variable('TEST_EMAIL_ADDRESS_2')
    if not email_address:
        raise MailError("Cannot test without a 'TEST_EMAIL_ADDRESS_2'")
    enquiry = make_enquiry(
        email_address,
        "Welcome",
        'Can I join your club?',
    )
    template = _create_welcome_template()
    content_data = {
        email_address: {
            "name": "Fred",
            "title": "SpaceX",
            "question": enquiry.description
        }
    }
    queue_mail_template(enquiry, template.slug, content_data)
    message = Message.objects.get(subject='Welcome {{name}}')
    mail_item = Mail.objects.get(email=email_address)
    assert message == mail_item.message
    assert enquiry == mail_item.message.content_object
Exemplo n.º 10
0
Arquivo: views.py Projeto: pkimber/pay
 def form_valid(self, form):
     self.object = form.save(commit=False)
     # Create the charge on Stripe's servers - this will charge the user's card
     token = form.cleaned_data['stripeToken']
     self.object.save_token(token)
     # Set your secret key: remember to change this to your live secret key
     # in production.  See your keys here https://manage.stripe.com/account
     stripe.api_key = settings.STRIPE_SECRET_KEY
     try:
         customer_id = self._init_stripe_customer(
             self.object.name, self.object.email, token
         )
         stripe.Charge.create(
             amount=self.object.total_as_pennies(), # amount in pennies, again
             currency=CURRENCY,
             customer=customer_id,
             description=', '.join(self.object.description),
         )
         with transaction.atomic():
             self.object.set_paid()
         queue_mail_template(
             self.object,
             self.object.mail_template_name,
             self.object.mail_template_context(),
         )
         _send_notification_email(self.object, self.request)
         process_mail.delay()
         result = super(StripeFormViewMixin, self).form_valid(form)
     except stripe.CardError as e:
         self.object.set_payment_failed()
         self._log_card_error(e, self.object.pk)
         result = HttpResponseRedirect(self.object.url_failure)
     except stripe.StripeError as e:
         self.object.set_payment_failed()
         self._log_stripe_error(e, 'payment: {}'.format(self.object.pk))
         result = HttpResponseRedirect(self.object.url_failure)
     return result
Exemplo n.º 11
0
def test_queue_mail_message():
    email_address = get_env_variable('TEST_EMAIL_ADDRESS_2')
    if not email_address:
        raise MailError("Cannot test without a 'TEST_EMAIL_ADDRESS_2'")
    enquiry = make_enquiry(
        email_address,
        "Welcome",
        'Can I join your club?',
    )
    template = _create_welcome_template()
    content_data = {
        email_address: {
            "name": "Fred",
            "title": "SpaceX",
            "question": enquiry.description,
            "dict": {'age': 52, 'colour': 'blue'},
            "list": [1, 3, 9],
        }
    }
    queue_mail_template(enquiry, template.slug, content_data)
    message = Message.objects.get(subject='Welcome {{name}}')
    mail_item = Mail.objects.get(email=email_address)
    assert message == mail_item.message
    assert enquiry == mail_item.message.content_object
    # name
    obj = MailField.objects.get(key='name')
    assert 'Fred' == obj.value
    assert obj.is_json is False
    # dict
    obj = MailField.objects.get(key='dict')
    assert obj.is_json is True
    assert {'age': 52, 'colour': 'blue'} == json.loads(obj.value)
    # list
    obj = MailField.objects.get(key='list')
    assert obj.is_json is True
    assert [1, 3, 9] == json.loads(obj.value)