sobjects/parsers.py
changeset 7478 9e213becdcf4
parent 7474 7dc405ad7bf3
child 7481 23ae090fc6a4
equal deleted inserted replaced
7476:4be45b64d755 7478:9e213becdcf4
    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]