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
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
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
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, )
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, )
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)
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, )
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, )
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
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
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)