31 |
31 |
32 """ |
32 """ |
33 |
33 |
34 import os.path as osp |
34 import os.path as osp |
35 from datetime import datetime, timedelta |
35 from datetime import datetime, timedelta |
|
36 import urllib |
36 |
37 |
37 from logilab.common.date import todate, totime |
38 from logilab.common.date import todate, totime |
38 from logilab.common.textutils import splitstrip, text_to_dict |
39 from logilab.common.textutils import splitstrip, text_to_dict |
39 |
40 |
40 from yams.constraints import BASE_CONVERTERS |
41 from yams.constraints import BASE_CONVERTERS |
302 |
303 |
303 def _complete_item(self, item, add_relations=True): |
304 def _complete_item(self, item, add_relations=True): |
304 try: |
305 try: |
305 return self._parsed_urls[(item['cwuri'], add_relations)] |
306 return self._parsed_urls[(item['cwuri'], add_relations)] |
306 except KeyError: |
307 except KeyError: |
307 itemurl = item['cwuri'] + '?vid=xml' |
308 query = [('vid','xml')] |
308 if add_relations: |
309 if add_relations: |
309 for rtype, role, _ in self.source.mapping.get(item['cwtype'], ()): |
310 for rtype, role, _ in self.source.mapping.get(item['cwtype'], ()): |
310 itemurl += '&relation=%s_%s' % (rtype, role) |
311 query.append(('relation','%s-%s' % (rtype, role))) |
|
312 itemurl = item['cwuri'] + '?' + urllib.urlencode(query) |
311 item_rels = list(self.parse(itemurl)) |
313 item_rels = list(self.parse(itemurl)) |
312 assert len(item_rels) == 1, 'url %s expected to bring back one '\ |
314 assert len(item_rels) == 1, 'url %s expected to bring back one '\ |
313 'and only one entity, got %s' % (itemurl, len(item_rels)) |
315 'and only one entity, got %s' % (itemurl, len(item_rels)) |
314 self._parsed_urls[(item['cwuri'], add_relations)] = item_rels[0] |
316 self._parsed_urls[(item['cwuri'], add_relations)] = item_rels[0] |
315 return item_rels[0] |
317 return item_rels[0] |