Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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()
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
    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
Exemplo n.º 5
0
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')])
Exemplo n.º 6
0
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
Exemplo n.º 7
0
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
Exemplo n.º 8
0
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)
Exemplo n.º 9
0
    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
Exemplo n.º 10
0
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)
Exemplo n.º 11
0
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')])
Exemplo n.º 12
0
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
Exemplo n.º 13
0
    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