From ee40aa1223bf1fe54d90d3e47f6ba0308a78f8c1 Mon Sep 17 00:00:00 2001 From: Pablo Hoffman Date: Tue, 16 Aug 2011 11:16:35 -0300 Subject: [PATCH] added from_crawler class method to SpiderManager --- scrapy/commands/list.py | 6 +----- scrapy/crawler.py | 2 +- scrapy/spidermanager.py | 6 +++++- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/scrapy/commands/list.py b/scrapy/commands/list.py index beb4d2ab0..906a3f801 100644 --- a/scrapy/commands/list.py +++ b/scrapy/commands/list.py @@ -1,6 +1,4 @@ from scrapy.command import ScrapyCommand -from scrapy.utils.misc import load_object -from scrapy.conf import settings class Command(ScrapyCommand): @@ -11,7 +9,5 @@ class Command(ScrapyCommand): return "List available spiders" def run(self, args, opts): - spman_cls = load_object(settings['SPIDER_MANAGER_CLASS']) - spiders = spman_cls.from_settings(settings) - for s in spiders.list(): + for s in self.crawler.spiders.list(): print s diff --git a/scrapy/crawler.py b/scrapy/crawler.py index 4386e7c64..d54bc84c9 100644 --- a/scrapy/crawler.py +++ b/scrapy/crawler.py @@ -33,7 +33,7 @@ class Crawler(object): self.configured = True self.extensions = ExtensionManager.from_crawler(self) spman_cls = load_object(self.settings['SPIDER_MANAGER_CLASS']) - self.spiders = spman_cls.from_settings(self.settings) + self.spiders = spman_cls.from_crawler(self) self.engine = ExecutionEngine(self, self._spider_closed) def crawl(self, spider, requests=None): diff --git a/scrapy/spidermanager.py b/scrapy/spidermanager.py index 25f984aa0..5dde93d88 100644 --- a/scrapy/spidermanager.py +++ b/scrapy/spidermanager.py @@ -5,7 +5,7 @@ spiders from zope.interface import implements -from scrapy import log, signals +from scrapy import signals from scrapy.interfaces import ISpiderManager from scrapy.utils.misc import walk_modules from scrapy.utils.spider import iter_spider_classes @@ -32,6 +32,10 @@ class SpiderManager(object): def from_settings(cls, settings): return cls(settings.getlist('SPIDER_MODULES')) + @classmethod + def from_crawler(cls, crawler): + return cls.from_settings(crawler.settings) + def create(self, spider_name, **spider_kwargs): try: return self._spiders[spider_name](**spider_kwargs)