mirror of
https://github.com/scrapy/scrapy.git
synced 2025-02-26 16:44:22 +00:00
newitem: fix itemadaptor inheritance
--HG-- extra : convert_revision : svn%3Ab85faa78-f9eb-468e-a121-7cced6da292c%40924
This commit is contained in:
parent
1fa5c7bade
commit
cf3afb9490
@ -14,6 +14,11 @@ class ItemAdaptor(object):
|
|||||||
def _get_field_adaptors(self):
|
def _get_field_adaptors(self):
|
||||||
fa = {}
|
fa = {}
|
||||||
for field in self.item_instance._fields.keys():
|
for field in self.item_instance._fields.keys():
|
||||||
|
try:
|
||||||
|
fa[field] = object.__getattribute__(self, field)
|
||||||
|
except AttributeError:
|
||||||
|
pass
|
||||||
|
|
||||||
if self.__class__.__dict__.has_key(field):
|
if self.__class__.__dict__.has_key(field):
|
||||||
fa[field] = self.__class__.__dict__[field]
|
fa[field] = self.__class__.__dict__[field]
|
||||||
return fa
|
return fa
|
||||||
|
@ -1,6 +1,27 @@
|
|||||||
|
|
||||||
import unittest
|
import unittest
|
||||||
from scrapy.contrib_exp.newitem.adaptors import adaptor, ItemAdaptor
|
from scrapy.contrib_exp.newitem.adaptors import adaptor, ItemAdaptor
|
||||||
|
from scrapy.contrib_exp.newitem import Item, StringField
|
||||||
|
|
||||||
|
|
||||||
|
class TestItem(Item):
|
||||||
|
name = StringField()
|
||||||
|
url = StringField()
|
||||||
|
|
||||||
|
|
||||||
|
class ItemAdaptorTest(unittest.TestCase):
|
||||||
|
|
||||||
|
def test_inheritance(self):
|
||||||
|
class TestAdaptor(ItemAdaptor):
|
||||||
|
item_class = TestItem
|
||||||
|
name = lambda v, adaptor_args: v.title()
|
||||||
|
|
||||||
|
class ChildTestAdaptor(TestAdaptor):
|
||||||
|
url = lambda v, adaptor_args: v.lower()
|
||||||
|
|
||||||
|
ia = ChildTestAdaptor()
|
||||||
|
assert 'url' in ia._field_adaptors
|
||||||
|
assert 'name' in ia._field_adaptors
|
||||||
|
|
||||||
|
|
||||||
class TreeadaptTest(unittest.TestCase):
|
class TreeadaptTest(unittest.TestCase):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user