added file missed in previous commit

This commit is contained in:
Pablo Hoffman 2012-08-29 11:26:52 -03:00
parent 70f8e517a1
commit 280d9d4094
1 changed files with 33 additions and 0 deletions

View File

@ -0,0 +1,33 @@
from scrapy.item import Field, Item, ItemMeta
class DjangoItemMeta(ItemMeta):
def __new__(mcs, class_name, bases, attrs):
cls = super(DjangoItemMeta, mcs).__new__(mcs, class_name, bases, attrs)
cls.fields = cls.fields.copy()
if cls.django_model:
cls._model_fields = []
cls._model_meta = cls.django_model._meta
for model_field in cls._model_meta.fields:
if model_field.auto_created == False:
if model_field.name not in cls.fields:
cls.fields[model_field.name] = Field()
cls._model_fields.append(model_field.name)
return cls
class DjangoItem(Item):
__metaclass__ = DjangoItemMeta
django_model = None
def save(self, commit=True):
modelargs = dict((k, self.get(k)) for k in self._values
if k in self._model_fields)
model = self.django_model(**modelargs)
if commit:
model.save()
return model