add timestamps to invoice worker
This commit is contained in:
parent
0f6d8944a0
commit
61b8c21572
|
@ -1,6 +1,7 @@
|
|||
from django.core.management.base import BaseCommand
|
||||
from django.core.files import File
|
||||
from django.conf import settings
|
||||
from django.utils import timezone
|
||||
from shop.pdf import generate_pdf_letter
|
||||
from shop.email import send_invoice_email
|
||||
from shop.models import Order, Invoice
|
||||
|
@ -11,17 +12,20 @@ class Command(BaseCommand):
|
|||
args = 'none'
|
||||
help = 'Send out invoices that have not been sent yet'
|
||||
|
||||
def output(self, message):
|
||||
self.stdout.write('%s: %s' % (timezone.now().strftime("%Y-%m-%d %H:%M:%S"), message))
|
||||
|
||||
def handle(self, *args, **options):
|
||||
self.stdout.write('Invoice worker running...')
|
||||
self.output('Invoice worker running...')
|
||||
while True:
|
||||
# check if we need to generate any invoices
|
||||
for order in Order.objects.filter(paid=True, invoice__isnull=True):
|
||||
# generate invoice for this Order
|
||||
Invoice.objects.create(order=order)
|
||||
self.stdout.write('Generated Invoice object for order %s' % order)
|
||||
self.output('Generated Invoice object for order %s' % order)
|
||||
|
||||
# check if we need to generate any pdf invoices
|
||||
for invoice in Invoice.objects.filter(pdf__isnull=True):
|
||||
for invoice in Invoice.objects.filter(pdf=''):
|
||||
# put the dict with data for the pdf together
|
||||
formatdict = {
|
||||
'invoice': invoice,
|
||||
|
@ -34,14 +38,14 @@ class Command(BaseCommand):
|
|||
template='invoice.html',
|
||||
formatdict=formatdict,
|
||||
)
|
||||
self.stdout.write('Generated pdf for invoice %s' % invoice)
|
||||
self.output('Generated pdf for invoice %s' % invoice)
|
||||
except Exception as E:
|
||||
self.stdout.write('ERROR: Unable to generate PDF file for invoice #%s. Error: %s' % (invoice.pk, E))
|
||||
self.output('ERROR: Unable to generate PDF file for invoice #%s. Error: %s' % (invoice.pk, E))
|
||||
continue
|
||||
|
||||
# so, do we have a pdf?
|
||||
if not pdffile:
|
||||
self.stdout.write('ERROR: Unable to generate PDF file for invoice #%s' % invoice.pk)
|
||||
self.output('ERROR: Unable to generate PDF file for invoice #%s' % invoice.pk)
|
||||
continue
|
||||
|
||||
# update invoice object with the file
|
||||
|
@ -52,11 +56,11 @@ class Command(BaseCommand):
|
|||
for invoice in Invoice.objects.filter(sent_to_customer=False).exclude(pdf=''):
|
||||
# send the email
|
||||
if send_invoice_email(invoice=invoice):
|
||||
self.stdout.write('OK: Invoice email sent to %s' % invoice.order.user.email)
|
||||
self.output('OK: Invoice email sent to %s' % invoice.order.user.email)
|
||||
invoice.sent_to_customer=True
|
||||
invoice.save()
|
||||
else:
|
||||
self.stdout.write('ERROR: Unable to send invoice email for order %s to %s' % (invoice.order.pk, invoice.order.user.email))
|
||||
self.output('ERROR: Unable to send invoice email for order %s to %s' % (invoice.order.pk, invoice.order.user.email))
|
||||
|
||||
# pause for a bit
|
||||
sleep(60)
|
||||
|
|
Loading…
Reference in a new issue