You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

import_stock.py 1.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import logging
  2. import sys
  3. import os
  4. from optparse import make_option
  5. from django.core.management.base import BaseCommand, CommandError
  6. from oscar.core.loading import import_module
  7. import_module('partner.utils', ['StockImporter'], locals())
  8. import_module('partner.exceptions', ['ImportError'], locals())
  9. class Command(BaseCommand):
  10. args = '<partner> /path/to/file1.csv'
  11. help = 'For updating stock for a partner based on a CSV file'
  12. option_list = BaseCommand.option_list + (
  13. make_option('--delimiter',
  14. dest='delimiter',
  15. default=",",
  16. help='Delimiter used within CSV file(s)'),
  17. )
  18. def handle(self, *args, **options):
  19. if len(args) != 2:
  20. raise CommandError('Command requires a partner and a path to a csv file')
  21. logger = self._get_logger()
  22. try:
  23. importer = StockImporter(logger, partner=args[0], delimiter=options.get('delimiter'))
  24. logger.info("Starting stock import")
  25. logger.info(" - Importing records from '%s'" % args[1])
  26. importer.handle(args[1])
  27. except ImportError, e:
  28. raise CommandError(str(e))
  29. def _get_logger(self):
  30. logger = logging.getLogger('oscar.apps.partner.import_stock')
  31. stream = logging.StreamHandler(self.stdout)
  32. logger.addHandler(stream)
  33. logger.setLevel(logging.DEBUG)
  34. return logger