125 super(DataFeedSource, self).init(activated, source_entity) |
125 super(DataFeedSource, self).init(activated, source_entity) |
126 self.parser_id = source_entity.parser |
126 self.parser_id = source_entity.parser |
127 self.load_mapping(source_entity._cw) |
127 self.load_mapping(source_entity._cw) |
128 |
128 |
129 def _get_parser(self, cnx, **kwargs): |
129 def _get_parser(self, cnx, **kwargs): |
|
130 if self.parser_id is None: |
|
131 self.warning('No parser defined on source %r', self) |
|
132 raise ObjectNotFound() |
130 return self.repo.vreg['parsers'].select( |
133 return self.repo.vreg['parsers'].select( |
131 self.parser_id, cnx, source=self, **kwargs) |
134 self.parser_id, cnx, source=self, **kwargs) |
132 |
135 |
133 def load_mapping(self, cnx): |
136 def load_mapping(self, cnx): |
134 self.mapping = {} |
137 self.mapping = {} |
199 self.release_synchronization_lock(cnx) |
202 self.release_synchronization_lock(cnx) |
200 |
203 |
201 def _pull_data(self, cnx, force=False, raise_on_error=False): |
204 def _pull_data(self, cnx, force=False, raise_on_error=False): |
202 importlog = self.init_import_log(cnx) |
205 importlog = self.init_import_log(cnx) |
203 myuris = self.source_cwuris(cnx) |
206 myuris = self.source_cwuris(cnx) |
204 parser = self._get_parser(cnx, sourceuris=myuris, import_log=importlog) |
207 try: |
|
208 parser = self._get_parser(cnx, sourceuris=myuris, import_log=importlog) |
|
209 except ObjectNotFound: |
|
210 return {} |
205 if self.process_urls(parser, self.urls, raise_on_error): |
211 if self.process_urls(parser, self.urls, raise_on_error): |
206 self.warning("some error occurred, don't attempt to delete entities") |
212 self.warning("some error occurred, don't attempt to delete entities") |
207 else: |
213 else: |
208 parser.handle_deletion(self.config, cnx, myuris) |
214 parser.handle_deletion(self.config, cnx, myuris) |
209 self.update_latest_retrieval(cnx) |
215 self.update_latest_retrieval(cnx) |