equal
deleted
inserted
replaced
276 def __init__(self, session, source, sourceuris=None, import_log=None, **kwargs): |
276 def __init__(self, session, source, sourceuris=None, import_log=None, **kwargs): |
277 super(DataFeedParser, self).__init__(session, **kwargs) |
277 super(DataFeedParser, self).__init__(session, **kwargs) |
278 self.source = source |
278 self.source = source |
279 self.sourceuris = sourceuris |
279 self.sourceuris = sourceuris |
280 self.import_log = import_log |
280 self.import_log = import_log |
281 self.stats = {'created': set(), |
281 self.stats = {'created': set(), 'updated': set(), 'checked': set()} |
282 'updated': set()} |
|
283 |
282 |
284 def normalize_url(self, url): |
283 def normalize_url(self, url): |
285 from cubicweb.sobjects import URL_MAPPING # available after registration |
284 from cubicweb.sobjects import URL_MAPPING # available after registration |
286 for mappedurl in URL_MAPPING: |
285 for mappedurl in URL_MAPPING: |
287 if url.startswith(mappedurl): |
286 if url.startswith(mappedurl): |
357 return entity.eid in self.stats['updated'] |
356 return entity.eid in self.stats['updated'] |
358 |
357 |
359 def notify_updated(self, entity): |
358 def notify_updated(self, entity): |
360 return self.stats['updated'].add(entity.eid) |
359 return self.stats['updated'].add(entity.eid) |
361 |
360 |
|
361 def notify_checked(self, entity): |
|
362 return self.stats['checked'].add(entity.eid) |
|
363 |
362 def is_deleted(self, extid, etype, eid): |
364 def is_deleted(self, extid, etype, eid): |
363 """return True if the entity of given external id, entity type and eid |
365 """return True if the entity of given external id, entity type and eid |
364 is actually deleted. Always return True by default, put more sensible |
366 is actually deleted. Always return True by default, put more sensible |
365 stuff in sub-classes. |
367 stuff in sub-classes. |
366 """ |
368 """ |
379 |
381 |
380 def update_if_necessary(self, entity, attrs): |
382 def update_if_necessary(self, entity, attrs): |
381 entity.complete(tuple(attrs)) |
383 entity.complete(tuple(attrs)) |
382 # check modification date and compare attribute values to only update |
384 # check modification date and compare attribute values to only update |
383 # what's actually needed |
385 # what's actually needed |
|
386 self.notify_checked(entity) |
384 mdate = attrs.get('modification_date') |
387 mdate = attrs.get('modification_date') |
385 if not mdate or mdate > entity.modification_date: |
388 if not mdate or mdate > entity.modification_date: |
386 attrs = dict( (k, v) for k, v in attrs.iteritems() |
389 attrs = dict( (k, v) for k, v in attrs.iteritems() |
387 if v != getattr(entity, k)) |
390 if v != getattr(entity, k)) |
388 if attrs: |
391 if attrs: |