Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

oscar_import_stock.py 1.4KB

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