From e189861b46ae5ebd2ef7f1d900046322887e2d72 Mon Sep 17 00:00:00 2001 From: Pablo Hoffman Date: Sun, 22 Aug 2010 22:07:44 -0300 Subject: [PATCH] Fixed Item Loader bug that was preventing values that evaluate to False from being loaded. Patch contributed by Anibal Pacheco. Closes #174 --- scrapy/contrib/loader/__init__.py | 4 ++-- scrapy/tests/test_contrib_loader.py | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/scrapy/contrib/loader/__init__.py b/scrapy/contrib/loader/__init__.py index 445d72d57..a9fc8f011 100644 --- a/scrapy/contrib/loader/__init__.py +++ b/scrapy/contrib/loader/__init__.py @@ -29,7 +29,7 @@ class ItemLoader(object): def add_value(self, field_name, value, *processors, **kw): value = self.get_value(value, *processors, **kw) - if not value: + if value is None: return if not field_name: for k,v in value.iteritems(): @@ -39,7 +39,7 @@ class ItemLoader(object): def replace_value(self, field_name, value, *processors, **kw): value = self.get_value(value, *processors, **kw) - if not value: + if value is None: return if not field_name: for k,v in value.iteritems(): diff --git a/scrapy/tests/test_contrib_loader.py b/scrapy/tests/test_contrib_loader.py index 201362140..8a730e543 100644 --- a/scrapy/tests/test_contrib_loader.py +++ b/scrapy/tests/test_contrib_loader.py @@ -68,6 +68,11 @@ class ItemLoaderTest(unittest.TestCase): il.add_value(None, u'Jim', lambda x: {'name': x}) self.assertEqual(il.get_collected_values('name'), [u'Marta', u'Pepe', u'Jim']) + def test_add_zero(self): + il = NameItemLoader() + il.add_value('name', 0) + self.assertEqual(il.get_collected_values('name'), [0]) + def test_replace_value(self): il = TestItemLoader() il.replace_value('name', u'marta')