diff --git a/scrapy/spider/models.py b/scrapy/spider/models.py index 094cd5077..615e920a6 100644 --- a/scrapy/spider/models.py +++ b/scrapy/spider/models.py @@ -34,13 +34,14 @@ class BaseSpider(object_ref): self.__dict__.update(kwargs) # XXX: SEP-12 backward compatibility (remove for 0.10) if hasattr(self, 'domain_name'): - warnings.warn("Spider.domain_name attribute is deprecated, use Spider.name instead", \ + warnings.warn("Spider.domain_name attribute is deprecated, use Spider.name instead and Spider.allowed_domains", \ DeprecationWarning, stacklevel=4) self.name = self.domain_name - if hasattr(self, 'extra_domain_names'): - warnings.warn("Spider.extra_domain_names attribute is deprecated - user Spider.allowed_domains instead", \ - DeprecationWarning, stacklevel=4) - self.allowed_domains = [self.name] + list(self.extra_domain_names) + self.allowed_domains = [self.name] + if hasattr(self, 'extra_domain_names'): + warnings.warn("Spider.extra_domain_names attribute is deprecated - user Spider.allowed_domains instead", \ + DeprecationWarning, stacklevel=4) + self.allowed_domains += list(self.extra_domain_names) if name is not None: self.name = name @@ -50,13 +51,13 @@ class BaseSpider(object_ref): self.start_urls = [] if not self.allowed_domains: self.allowed_domains = [] - if not getattr(self, 'domain_name', None): - self.domain_name = self.name - if not getattr(self, 'extra_domain_names', None): - self.extra_domain_names = self.allowed_domains if not self.name: self.name = 'default' + # XXX: SEP-12 forward compatibility (remove for 0.10) + self.domain_name = self.name + self.extra_domain_names = self.allowed_domains + def log(self, message, level=log.DEBUG): """Log the given messages at the given log level. Always use this method to send log messages from your spider diff --git a/scrapy/tests/test_spider.py b/scrapy/tests/test_spider.py index 7d93db5b5..9a618e720 100644 --- a/scrapy/tests/test_spider.py +++ b/scrapy/tests/test_spider.py @@ -11,6 +11,7 @@ from scrapy.contrib.spiders.crawl import CrawlSpider from scrapy.contrib.spiders.feed import XMLFeedSpider, CSVFeedSpider from scrapy.contrib.dupefilter import RequestFingerprintDupeFilter, NullDupeFilter + class BaseSpiderTest(unittest.TestCase): spider_class = BaseSpider @@ -20,6 +21,12 @@ class BaseSpiderTest(unittest.TestCase): domain_name = 'example.com' extra_domain_names = ('example.org', 'example.net') + + class OldSpiderWithoutExtradomains(spider_class): + + domain_name = 'example.com' + + class NewSpider(spider_class): name = 'example.com' @@ -48,6 +55,10 @@ class BaseSpiderTest(unittest.TestCase): self.assert_('example.org' in spider.allowed_domains, spider.allowed_domains) self.assert_('example.net' in spider.allowed_domains, spider.allowed_domains) + spider = self.OldSpiderWithoutExtradomains() + self.assertEqual(spider.name, 'example.com') + self.assert_('example.com' in spider.allowed_domains, spider.allowed_domains) + spider = self.NewSpider() self.assertEqual(spider.domain_name, 'example.com') self.assert_('example.org' in spider.extra_domain_names, spider.extra_domain_names)