server/sources/datafeed.py
changeset 8434 39c5bb4dcc59
parent 8430 5bee87a14bb1
child 8435 5064b6e0d6f4
equal deleted inserted replaced
8433:ff9d6d269877 8434:39c5bb4dcc59
   376                 self.warning('delete %s %s entities', len(eids), etype)
   376                 self.warning('delete %s %s entities', len(eids), etype)
   377                 session.execute('DELETE %s X WHERE X eid IN (%s)'
   377                 session.execute('DELETE %s X WHERE X eid IN (%s)'
   378                                 % (etype, ','.join(eids)))
   378                                 % (etype, ','.join(eids)))
   379 
   379 
   380     def update_if_necessary(self, entity, attrs):
   380     def update_if_necessary(self, entity, attrs):
   381         self.notify_updated(entity)
       
   382         entity.complete(tuple(attrs))
   381         entity.complete(tuple(attrs))
   383         # check modification date and compare attribute values to only update
   382         # check modification date and compare attribute values to only update
   384         # what's actually needed
   383         # what's actually needed
   385         mdate = attrs.get('modification_date')
   384         mdate = attrs.get('modification_date')
   386         if not mdate or mdate > entity.modification_date:
   385         if not mdate or mdate > entity.modification_date:
   387             attrs = dict( (k, v) for k, v in attrs.iteritems()
   386             attrs = dict( (k, v) for k, v in attrs.iteritems()
   388                           if v != getattr(entity, k))
   387                           if v != getattr(entity, k))
   389             if attrs:
   388             if attrs:
   390                 entity.set_attributes(**attrs)
   389                 entity.set_attributes(**attrs)
   391 
   390                 self.notify_updated(entity)
   392 
   391 
   393 class DataFeedXMLParser(DataFeedParser):
   392 class DataFeedXMLParser(DataFeedParser):
   394 
   393 
   395     def process(self, url, raise_on_error=False):
   394     def process(self, url, raise_on_error=False):
   396         """IDataFeedParser main entry point"""
   395         """IDataFeedParser main entry point"""