def send_application_invoice_email_notification(application, invoice_ref, request): # An email with application invoice to submitter email = ApplicationInvoiceNotificationEmail() url = request.build_absolute_uri( reverse('external-application-detail', kwargs={'application_pk': application.id})) invoice_url = request.build_absolute_uri( reverse('payments:invoice-pdf', kwargs={'reference': invoice_ref})) filename = 'invoice-{}-{}({}).pdf'.format( application.id, application.licence_type_short_name.replace(" ", "-"), application.lodgement_date) references = [a.invoice_reference for a in application.invoices.all()] invoice = Invoice.objects.filter( reference__in=references).order_by('-created')[0] invoice_pdf = create_invoice_pdf_bytes(filename, invoice) context = { 'application': application, 'url': url, 'invoice_url': invoice_url } recipients = [application.submitter.email] msg = email.send(recipients, context=context, attachments=[(filename, invoice_pdf, 'application/pdf')]) sender = request.user if request else settings.DEFAULT_FROM_EMAIL _log_application_email(msg, application, sender=sender)
def send_booking_invoice(booking): log_hash = int( hashlib.sha1(str(datetime.datetime.now()).encode('utf-8')).hexdigest(), 16) % (10**8) email_obj = TemplateEmailBase() email_obj.subject = 'Your booking invoice for {}'.format( booking.campground.name) email_obj.html_template = 'ps/email/invoice.html' email_obj.txt_template = 'ps/email/invoice.txt' email = booking.customer.email context = {'booking': booking} filename = 'invoice-{}({}-{}).pdf'.format(booking.campground.name, booking.arrival, booking.departure) references = [b.invoice_reference for b in booking.invoices.all()] invoice = Invoice.objects.filter( reference__in=references).order_by('-created')[0] invoice_pdf = create_invoice_pdf_bytes(filename, invoice) campground_email = booking.campground.email if booking.campground.email else default_campground_email email_obj.send([email], from_address=default_campground_email, reply_to=campground_email, context=context, attachments=[(filename, invoice_pdf, 'application/pdf')]) email_log(str(log_hash) + ' : ' + str(email) + ' - ' + email_obj.subject) booking.send_invoice = True booking.save()
def send_return_invoice_notification(returns, invoice_ref, request): # An email with return invoice to submitter email = ReturnInvoiceNotificationEmail() url = request.build_absolute_uri( reverse('external-return-detail', kwargs={'return_pk': returns.id})) invoice_url = request.build_absolute_uri( reverse('payments:invoice-pdf', kwargs={'reference': invoice_ref})) filename = 'invoice-{}-{}({}).pdf'.format( returns.id, returns.licence_type_short_name.replace(" ", "-"), returns.lodgement_date.date()) references = [a.invoice_reference for a in returns.invoices.all()] invoice = Invoice.objects.filter( reference__in=references).order_by('-created')[0] invoice_pdf = create_invoice_pdf_bytes(filename, invoice) context = { 'return': returns, 'url': remove_url_internal_request(request, url), 'invoice_url': invoice_url } recipients = [returns.submitter.email] msg = email.send(recipients, context=context, attachments=[(filename, invoice_pdf, 'returns/pdf')]) sender = request.user if request else settings.DEFAULT_FROM_EMAIL _log_return_email(msg, returns, sender=sender)
def get(self, request, *args, **kwargs): invoice = get_object_or_404(Invoice, reference=self.kwargs['reference']) response = HttpResponse(content_type='application/pdf') response.write(create_invoice_pdf_bytes('invoice.pdf', invoice)) return response
def send_booking_invoice(booking): email_obj = TemplateEmailBase() email_obj.subject = 'Your booking invoice for {}'.format( booking.mooringarea.name) email_obj.html_template = 'mooring/email/invoice.html' email_obj.txt_template = 'mooring/email/invoice.txt' email = booking.customer.email context = {'booking': booking} filename = 'invoice-{}({}-{}).pdf'.format(booking.mooringarea.name, booking.arrival, booking.departure) references = [b.invoice_reference for b in booking.invoices.all()] invoice = Invoice.objects.filter( reference__in=references).order_by('-created')[0] invoice_pdf = create_invoice_pdf_bytes(filename, invoice) # campground_email = booking.mooringarea.email if booking.mooringarea.email else default_campground_email campground_email = default_from_email email_obj.send([email], from_address=campground_email, context=context, attachments=[(filename, invoice_pdf, 'application/pdf')])
def send_dcv_permit_mail(dcv_permit, invoice, request): # 26 # email to applicant upon successful payment of dcv permit application with details of issued dcv permit email = TemplateEmailBase( subject='Dcv Permit.', # html_template='mooringlicensing/emails/dcv_permit_mail.html', # txt_template='mooringlicensing/emails/dcv_permit_mail.txt', html_template='mooringlicensing/emails_2/email_26.html', txt_template='mooringlicensing/emails_2/email_26.txt', ) context = { 'public_url': get_public_url(request), 'dcv_permit': dcv_permit, 'recipient': dcv_permit.submitter, } attachments = [] # attach invoice contents = create_invoice_pdf_bytes( 'invoice.pdf', invoice, ) attachments.append(('invoice#{}.pdf'.format(invoice.reference), contents, 'application/pdf')) # attach DcvPermit dcv_permit_doc = dcv_permit.permits.first() filename = str(dcv_permit_doc) content = dcv_permit_doc._file.read() mime = mimetypes.guess_type(dcv_permit_doc.filename)[0] attachments.append((filename, content, mime)) to = dcv_permit.submitter.email cc = [] bcc = [] # Update bcc if dcv_group = Group.objects.get(name=settings.GROUP_DCV_PERMIT_ADMIN) users = dcv_group.user_set.all() if users: bcc = [user.email for user in users] msg = email.send( to, context=context, attachments=attachments, cc=cc, bcc=bcc, ) sender = get_user_as_email_user(msg.from_email) email_data = _extract_email_headers(msg, sender=sender) return email_data
def send_dcv_admission_mail(dcv_admission, invoice, request): # 27 # email to external user upon payment of dcv admission fees email = TemplateEmailBase( subject='DCV Admission fees', # html_template='mooringlicensing/emails/dcv_admission_mail.html', # txt_template='mooringlicensing/emails/dcv_admission_mail.txt', html_template='mooringlicensing/emails_2/email_27.html', txt_template='mooringlicensing/emails_2/email_27.txt', ) summary = dcv_admission.get_summary() context = { 'public_url': get_public_url(request), 'dcv_admission': dcv_admission, 'recipient': dcv_admission.submitter, 'summary': summary, } attachments = [] # attach invoice if invoice: contents = create_invoice_pdf_bytes( 'invoice.pdf', invoice, ) attachments.append(('invoice#{}.pdf'.format(invoice.reference), contents, 'application/pdf')) # attach DcvPermit if dcv_admission.admissions: dcv_admission_doc = dcv_admission.admissions.first() if dcv_admission_doc: filename = str(dcv_admission_doc) content = dcv_admission_doc._file.read() mime = mimetypes.guess_type(dcv_admission_doc.filename)[0] attachments.append((filename, content, mime)) to = dcv_admission.submitter.email cc = [] bcc = [] msg = email.send( to, context=context, attachments=attachments, cc=cc, bcc=bcc, ) sender = get_user_as_email_user(msg.from_email) email_data = _extract_email_headers(msg, sender=sender) return email_data
def send_sticker_replacement_email(request, sticker, invoice): # 36 # email to licence/permit holder when sticker replacement request has been submitted (with payment) approval = sticker.approval proposal = approval.current_proposal email = TemplateEmailBase( subject='Sticker Replacement for {} - Rottnest Island Authority'. format(approval.description), html_template='mooringlicensing/emails_2/email_36.html', txt_template='mooringlicensing/emails_2/email_36.txt', ) # Attach invoice attachments = [] invoice_bytes = create_invoice_pdf_bytes( 'invoice.pdf', invoice, ) attachment = ('invoice#{}.pdf'.format(invoice.reference), invoice_bytes, 'application/pdf') attachments.append(attachment) context = { 'public_url': get_public_url(request), 'recipient': approval.submitter, 'sticker': sticker, 'dashboard_external_url': get_public_url(request), } all_ccs = [] if proposal.org_applicant and proposal.org_applicant.email: cc_list = proposal.org_applicant.email if cc_list: all_ccs = [cc_list] msg = email.send(proposal.submitter.email, cc=all_ccs, context=context, attachments=attachments) sender = request.user if request else settings.DEFAULT_FROM_EMAIL _log_approval_email(msg, approval, sender=sender) if approval.org_applicant: _log_org_email(msg, approval.org_applicant, proposal.submitter, sender=sender) else: _log_user_email(msg, approval.submitter, proposal.submitter, sender=sender)
def get(self, request, *args, **kwargs): try: invoice = get_object_or_404(Invoice, reference=self.kwargs['reference']) # url_var = apiary_url(request) # Assume the invoice has been issued for the application(proposal) # proposal = Proposal.objects.get(fee_invoice_reference=invoice.reference) # proposal = Proposal.objects.get(invoice_references__contains=[invoice.reference]) # application_fee = ApplicationFee.objects.get(invoice_reference=invoice.reference) # proposal = application_fee.proposal response = HttpResponse(content_type='application/pdf') # response.write(create_invoice_pdf_bytes('invoice.pdf', invoice, url_var, proposal)) response.write(create_invoice_pdf_bytes( 'invoice.pdf', invoice, )) return response # if proposal.relevant_applicant_type == 'organisation': # organisation = proposal.applicant.organisation.organisation_set.all()[0] # if self.check_owner(organisation): # response = HttpResponse(content_type='application/pdf') # response.write(create_invoice_pdf_bytes('invoice.pdf', invoice, url_var, proposal)) # return response # raise PermissionDenied # else: # response = HttpResponse(content_type='application/pdf') # response.write(create_invoice_pdf_bytes('invoice.pdf', invoice, url_var, proposal)) # return response # except Proposal.DoesNotExist: # # The invoice might be issued for the annual site fee # # annual_rental_fee = AnnualRentalFee.objects.get(invoice_reference=invoice.reference) # # approval = annual_rental_fee.approval # response = HttpResponse(content_type='application/pdf') # # response.write(create_invoice_pdf_bytes('invoice.pdf', invoice, url_var, None)) # response.write(create_invoice_pdf_bytes('invoice.pdf', invoice,)) # return response except Invoice.DoesNotExist: raise except Exception as e: logger.error('Error accessing the Invoice :{}'.format(e)) raise
def send_application_invoice_email_notification(application,invoice_ref,request): # An email with application invoice to submitter email = ApplicationInvoiceNotificationEmail() url = request.build_absolute_uri(reverse('external-application-detail',kwargs={'application_pk': application.id})) invoice_url = request.build_absolute_uri(reverse('payments:invoice-pdf',kwargs={'reference': invoice_ref})) filename = 'invoice-{}-{}({}).pdf'.format(application.id,application.licence_type_short_name.replace(" ", "-"),application.lodgement_date) references = [a.invoice_reference for a in application.invoices.all()] invoice = Invoice.objects.filter(reference__in=references).order_by('-created')[0] invoice_pdf = create_invoice_pdf_bytes(filename,invoice) context = { 'application': application, 'url': url, 'invoice_url': invoice_url } recipients=[application.submitter.email] msg = email.send(recipients, context=context, attachments=[(filename, invoice_pdf, 'application/pdf')]) sender = request.user if request else settings.DEFAULT_FROM_EMAIL _log_application_email(msg, application, sender=sender)
def send_booking_invoice(booking): email_obj = TemplateEmailBase() email_obj.subject = 'Your booking invoice for {}'.format(booking.campground.name) email_obj.html_template = 'ps/email/invoice.html' email_obj.txt_template = 'ps/email/invoice.txt' email = booking.customer.email context = { 'booking': booking } filename = 'invoice-{}({}-{}).pdf'.format(booking.campground.name,booking.arrival,booking.departure) references = [b.invoice_reference for b in booking.invoices.all()] invoice = Invoice.objects.filter(reference__in=references).order_by('-created')[0] invoice_pdf = create_invoice_pdf_bytes(filename,invoice) campground_email = booking.campground.email if booking.campground.email else default_campground_email email_obj.send([email], from_address=default_campground_email, reply_to=campground_email, context=context, attachments=[(filename, invoice_pdf, 'application/pdf')])
def send_dcv_permit_fee_invoice(dcv_permit, invoice, to_email_addresses): email = DcvPermitFeeInvoiceEmail() context = { 'dcv_permit': dcv_permit, } attachments = [] # attach invoice contents = create_invoice_pdf_bytes( 'invoice.pdf', invoice, ) attachments.append(('invoice#{}.pdf'.format(invoice.reference), contents, 'application/pdf')) # attach DcvPermit dcv_permit_doc = dcv_permit.permits.first() filename = str(dcv_permit_doc) # content = dcv_permit_doc.file.read() content = dcv_permit_doc._file.read() mime = mimetypes.guess_type(dcv_permit_doc.filename)[0] attachments.append((filename, content, mime)) to_address = to_email_addresses cc = [] bcc = [] msg = email.send( to_address, context=context, attachments=attachments, cc=cc, bcc=bcc, ) # sender = request.user if request else settings.DEFAULT_FROM_EMAIL sender = settings.DEFAULT_FROM_EMAIL email_data = _extract_email_headers(msg, sender=sender) return email_data
def get(self, request, *args, **kwargs): invoice = get_object_or_404(Invoice, reference=self.kwargs['reference']) response = HttpResponse(content_type='application/pdf') response.write(create_invoice_pdf_bytes('invoice.pdf',invoice)) return response