Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

generate_email.py 1.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import logging
  2. import sys
  3. from optparse import make_option
  4. from django.core.management.base import BaseCommand, CommandError
  5. from django.contrib.auth.models import User
  6. from oscar.core.loading import import_module
  7. import_module('order.models', ['Order'], locals())
  8. import_module('customer.models', ['CommunicationEventType'], locals())
  9. import_module('customer.utils', ['Dispatcher'], locals())
  10. class Command(BaseCommand):
  11. args = '<communication_event_type> <order number>'
  12. help = 'For testing the content of order emails'
  13. def handle(self, *args, **options):
  14. logger = self._get_logger()
  15. if len(args) != 2:
  16. raise CommandError("Please select a event type and order number")
  17. try:
  18. order = Order.objects.get(number=args[1])
  19. except Order.DoesNotExist:
  20. raise CommandError("No order found with number %s" % args[1])
  21. try:
  22. event_type = CommunicationEventType.objects.get(code=args[0])
  23. except CommunicationEventType.DoesNotExist:
  24. raise CommandError("No event type found with code %s" % args[0])
  25. messages = event_type.get_messages({'order': order})
  26. dispatcher = Dispatcher(logger)
  27. user = User(username='dummy', email='user@example.com')
  28. email = dispatcher.send_email_messages(user, messages)
  29. print "Subject: %s\nBody:\n\n%s"% (email.subject, email.body)
  30. def _get_logger(self):
  31. logger = logging.getLogger(__name__)
  32. stream = logging.StreamHandler(self.stdout)
  33. logger.addHandler(stream)
  34. logger.setLevel(logging.DEBUG)
  35. return logger